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;i 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;i 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;i 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;i if((fp=fopen(filepath,\"w\"))==NULL) { printf(\"保存失败,请检查输入路径是否有误!\\n\"); return; } fprintf(fp,\"学号\姓名\数学\英语\c语言\\n\"); for(i=0;i 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;i 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;i 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;i printf(\"学生信息如下:\\n\"); display_1(i); flag=1; } } if(!flag) { printf(\"查询学生不存在,请检查学号输入是否正确!\\n\"); return; } } void display() { int i; printf(\"学生信息如下:\\n\"); printf(\"名次\学号\姓名\数学\英语\c语言\平均分\\n\"); for(i=0;i 因篇幅问题不能全部显示,请点此查看更多更全内容