首页 养生问答 疾病百科 养生资讯 女性养生 男性养生
您的当前位置:首页正文

学生成绩

2021-11-03 来源:华佗健康网
#include #include #include #include #define MAX 20

void read_file(); //导入数据 void input();//输入数据

void ave();//求每个学生平均分 void ave_all();//求三科成绩平均分 void save_score();//保存数据 void dis_menu(); //显示菜单

void ave_english();// 计算英语平均分 void ave_math();//计算数学平均分 void ave_c(); //计算c语言平均分

void sort_ave();//按每位同学的平均分排序 void display();//显示全部信息

void display_1(int);//打印学生个人信息 void display_2();//按学号打印学生成绩条 void display_3();//按姓名打印学生成绩条

int changeStrInt(char *ch);//把字符串转化为整型 typedef struct {

int num;//学号 char name[30]; float english; float math; float c; float ave; }Stu;

Stu stu[MAX];

bool tag=true,Tag=true; float sum_eng=0; float sum_math=0; float sum_c=0; int class_num=0; float ave_eng=0; float ave_mat=0; float ave_C=0; //test.cpp void main() {

dis_menu();

}

//test.cpp

void dis_menu() {

int i=0,j=0; char ch,c; do{

printf(\"******** *欢迎使用学生管理系统* ********** ***** *\\n\"); printf(\"****** ****输入要进行的操作****** ******* ***** *\\n\"); printf(\"***** *****1:原始数据导入********** **** ***** **\\n\"); printf(\"**** ******2重新输入学生数据:******* *** **** ****\\n\");

printf(\"*** *******3:信息检索(排序)********** * **** *****\\n\"); printf(\"**** ******4:信息查询<<<>>>>>>>***** *** **** ****\\n\"); printf(\"****** ****5:数据保存(成绩表)****** ***** **** ***\\n\");

printf(\"******* ***6:全班平均成绩显示***** ******* *** **\\n\"); printf(\"******** **0:退出系统*********** ********* *** *\\n\"); fflush(stdin); scanf(\"%d\switch(i) {

case 1:

read_file(); break; case 2: input(); break;

case 3:printf(\"*************按平均分排序*****************\\n\"); sort_ave(); printf(\"是否打印学生成绩信息?(Y or N)\\n\"); fflush(stdin); c=getchar(); switch(c) { case 'Y': case 'y': display(); break; default: break; } break; case 4: printf(\"***********1:按学号查询:******************\\n\");

printf(\"***********2:按姓名查询:******************\\n\"); scanf(\"%d\ switch(j) { case 1: display_2(); break; case 2: display_3(); break; default: break; } break; case 5:

save_score(); break; case 6: ave_all(); printf(\"数学\英语\c语言\\n\"); printf(\"%.2f\%.2f\%.2f\\n\ break; default:

printf(\"感谢使用本系统!\\n\"); system(\"exit\"); exit(0); }

printf(\"是否继续?(Y or N)\\n\"); fflush(stdin); ch=getchar(); system(\"cls\");

}while(ch=='Y'||ch=='y'); }

int changeStrInt(char *ch) { int a=1,b=0,c=0,i;

for (i=strlen(ch)-1;i>=0;i--) { if (ch[i]<='9'&&ch[i]>='0') { b=a*(ch[i]-'0'); a=a*10; c=c+b;

} else

{ printf(\"%c不合法,无法将此字符转化为整形!\\n\ return 0; } }

return c; }

void read_file() {

FILE *fp;

char filepath[20];

long position; char ch;

int i=0; char str_num[20]=\"\\0\";

char str_english[20]=\"\\0\"; char str_c[20]=\"\\0\"; char str_math[20]=\"\\0\";

printf(\"输入原始数据存放路径:\\n\"); fflush(stdin); gets(filepath);

if((fp=fopen(filepath,\"r\"))==NULL) {

printf(\"原始数据导入失败,请检查输入路径是否正确\\n\"); return; }

while(i!=1) {

ch = fgetc(fp); if(ch=='\\n') {

position=ftell(fp); i++; } }

fseek(fp, position,SEEK_SET); //定位 for(i=0;ifscanf(fp,\"\%s\%s\%s\%s\%s\\\n\str_english,str_c,str_math);

stu[i].num=changeStrInt(str_num);

stu[i].english=(float)changeStrInt(str_english); stu[i].math=(float)changeStrInt(str_math);

stu[i].c=(float)changeStrInt(str_c); class_num++; }

fclose(fp); ave();

printf(\"原始数据导入成功!\\n\"); }

void ave_all() { int i;

for(i=0;ivoid ave() { int i; for(i=0;ivoid ave_english() {

ave_eng=sum_eng/class_num; }

void ave_math() {

ave_mat=sum_math/class_num; }

void ave_c() {

ave_C=sum_c/class_num; }

void sort_ave() {

ave(); Stu temp; int i,j;

for(i=1;iif(stu[j-1].avetemp=stu[j-1]; stu[j-1]=stu[j]; stu[j]=temp; } }

if(tag) { printf(\"排序完成!\\n\"); } }

void input() { char ch; int i,num; FILE *fp; char filepath[30]; printf(\"输入学生人数:\\n\"); scanf(\"%d\

printf(\"输入学生信息: 学号 姓名 高等数学 大学英语 c语言\\n\"); for(i=0;iscanf(\"%d%s%f%f%f\[i].c); class_num=num; printf(\"是否保存输入信息?(Y or N)\\n\"); fflush(stdin); ch=getchar(); if(ch=='Y'||ch=='y') { printf(\"输入保存路径:\\n\"); fflush(stdin); gets(filepath);

if((fp=fopen(filepath,\"w\"))==NULL) { printf(\"保存失败,请检查输入路径是否有误!\\n\"); return; } fprintf(fp,\"学号\姓名\数学\英语\c语言\\n\"); for(i=0;ivoid save_score() {

char filepath[30]; FILE *fp; int i; tag=false; sort_ave();

printf(\"输入要保存的路径:\\n\"); //例如C:\\student.dat或.txt .dat是二进制文件

fflush(stdin); gets(filepath);

if((fp=fopen(filepath,\"w+\"))==NULL) {

printf(\"保存失败,请检查文件名,路径是否正确!\\n\"); return; }

fprintf(fp,\"学号\姓名\英语\c语言\高数\平均成绩\\n\"); for(i=0;ifprintf(fp,\"%d\%s\%.2f\%.2f\%.2f\%.2f\\n\stu[i].name,stu[i].english,stu[i].c,stu[i].math,stu[i].ave); }

fclose(fp);

printf(\"学生成绩文件已经保存完毕!\\n\"); }

void display_1(int i) {

if(Tag)

printf(\"学号\姓名\英语\c语言\高数\平均成绩\\n\");

printf(\"%d\%s\%.2f\%.2f\ %.2f\%.2f\\n\stu[i].english,stu[i].c,stu[i].math,stu[i].ave); fflush(stdin); return; }

void display_2() {

int i,no;

volatile int flag=0;

printf(\"请输入你要查询学生的学号:\\n\"); fflush(stdin);

scanf(\"%d\

for(i=0;iif(no==stu[i].num&&!flag) {

printf(\"学生信息如下:\\n\"); fflush(stdin); display_1(i); flag=1; } }

if(!flag) {

printf(\"查询学生不存在,请检查学号输入是否正确!\\n\"); return; } }

void display_3() {

char name[30]; int i;

volatile int flag=0;

printf(\"输入你要查询学生的姓名:\\n\"); fflush(stdin); gets(name);

for(i=0;iif((strcmp(stu[i].name,name)==0)&&!flag) {

printf(\"学生信息如下:\\n\"); display_1(i); flag=1; } }

if(!flag) {

printf(\"查询学生不存在,请检查学号输入是否正确!\\n\"); return; } }

void display() { int i; printf(\"学生信息如下:\\n\"); printf(\"名次\学号\姓名\数学\英语\c语言\平均分\\n\"); for(i=0;iprintf(\"%d\%d\%s\%.2f\%.2f\%.2f\%.2f\\n\math,stu[i].english,stu[i].c,stu[i].ave); }

因篇幅问题不能全部显示,请点此查看更多更全内容