学生管理系统.doc_第1页
学生管理系统.doc_第2页
学生管理系统.doc_第3页
学生管理系统.doc_第4页
学生管理系统.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include#include#include#defineN50#defineOLDFILEscore.dat#defineNUMFILEstd.dat#defineAVEFILEsort.dat#defineNEXTFILEnext.dattypedef struct int number;char name20;int score5;float average;stu;int readfile(char *file, stu *record);void writefile(char *file, stu *record,int stunum);void mycreate();void display(char *file);void stamenu();void numsort();void stagrade();void managemenu();void makeup_note();void leave_note();void new_list();void avesort();void main() char choose = 0;do printf(请选择你需要的服务 n); printf(1. 创建学生记录n); printf(2. 查询菜单n); printf(3. 管理菜单n); printf(4. 文盲慎入n); printf(0. 退出系统n); scanf(%c, &choose); switch(choose) case 1:mycreate();break;case 2:stamenu();break;case 3:managemenu();break;case 4:printf(ntt请自己实现创新功能!);getchar();break;case 0:exit(0);default: printf(ntt%c为非法选项!n,choose);break; while(1);int readfile(char *file, stu *record) int i = 0, j = 0; float ave = 0.0; FILE *fp = NULL;fp = fopen(file, r);if(fp = NULL) printf(Cant open the file!n); return -1;while (feof(fp) = 0) fscanf(fp,%5d%20s, &recordi.number, );for(j = 0; j = N) printf(读取文件出错, 按任意键并关闭系统!/n);getchar(); exit(0);fclose(fp);return i;void writefile(char * file, stu * record, int stunum)int i = 0, j = 0; FILE *fp = NULL;for(i = 0; i stunum; i+)fprintf(fp, %5d%20s, recordi.number, );for(j = 0; j 5; j+)fprintf(fp, %5d, recordi.scorej); fprintf(fp, 6.1Ifn, recordi.average); fclose(fp);void mycreate() int i = 0, j = 0, f = 0, number = 0; char yes_no = 0; stu recordN = 0; i = readfile(OLDFILE, record); if (i = N) printf(超出存储范围, 保存并退出输入. n); break; printf( 第%d个学生n,i+1);do f = 0;printf(n 学号:); scanf(%d, &number);for(j = 0; j = i; j+)if(recordj.number = number) printf(学号有误, 请重新输入. n);f = 1;break; while(f = 1);recordi.number = number;printf(n 姓名:); scanf(%s,);printf(n 数学成绩:); scanf(%d, &recordi.score0);printf(n 英语成绩:); scanf(%d, &recordi.score1);printf(n 物理成绩:); scanf(%d, &recordi.score2);printf(n 编程成绩:); scanf(%d, &recordi.score3);printf(n 马哲成绩:); scanf(%d, &recordi.score4);recordi.average=0;i+;getchar(); do printf(n 要继续吗 (Y/N)?n);scanf(%c, &yes_no); while(yes_no != Y & yes_no != y & yes_no != N & yes_no!=n); while(yes_no = y| yes_no = Y);writefile(OLDFILE, record, i);printf(以下是对已输入学生信息的确认!n); display(OLDFILE);getchar(); void display(char * file) stu student_infoN = 0; int stu_num = 0, i = 0, j = 0; stu_num = readfile(file, student_info); if (stu_num N) printf(读取文件出错, 按任意键并关闭系统!/n);getchar(); exit(0);for (i = 0; i stu_num; i+) printf(学号: %dn, student_infoi.number); printf(姓名: %sn, student_);printf(各门功课的分数如下: %dn);printf( 数学成绩: %d, student_infoi.score0);printf( 英语成绩: %d, student_infoi.score1);printf( 物理成绩: %d, student_infoi.score2);printf( 编程成绩: %d, student_infoi.score3);printf( 马哲成绩: %d, student_infoi.score4);printf(平均分: %d, student_infoi.average);printf(确认完按任意键返回! n);getchar(); void stamenu()char choose=0; do printf(请选择你需要的选项); printf(1. 按学号排序); printf(2. 按平均分并排序); printf(3. 统计分数段); printf(4. 返回上一层); printf(0. 退出系统); switch(choose) case 1: numsort(); break; /*按学号排序*/ case 2: avesort(); break; /*计算平均分并排序*/ case 3: stagrade(); break; /*统计分数段*/ case 4: return; case 0: exit(0); default : printf(ntt%c为非法选项!n, choose); break; while(1);/按学号排列void numsort()stu student_infoN = 0; int stu_num = 0, i = 0, j = 0; int num, min, max; stu temp; stu_num = readfile(OLDFILE, student_info); if (stu_num N) printf(读取文件出错, 按任意键并关闭系统!/n);getchar(); exit(0);max = stu_num; min = 0; for (num = max - min; num 0; num /= 2) for (i = min + num; i = 0 & student_infoj.number temp.number; j -= num) student_infoj + num.average = student_infoj.average;strcpy(student_infoj + , student_); student_infoj + num.number = student_infoj.number;strncpy(char *)student_infoj + num.score, (char *)student_infoj.score, sizeof(student_infoj.score);student_infoj + num.average = temp.average;strcpy(student_infoj + , );student_infoj + num.number = temp.number;strncpy(char *)student_infoj + num.score, (char *)temp.score, sizeof(student_infoj.score); /按平均成绩排列void avesort()stu student_infoN = 0; int stu_num = 0, i = 0, j = 0; int num, min, max; stu temp; stu_num = readfile(OLDFILE, student_info); if (stu_num N) printf(读取文件出错, 按任意键并关闭系统!/n);getchar(); exit(0);max = stu_num; min = 0; for (num = max - min; num 0; num /= 2) for (i = min + num; i = 0 & student_infoj.average temp.average; j -= num) student_infoj + num.average = student_infoj.average;strcpy(student_infoj + , student_); student_infoj + num.number = student_infoj.number;strncpy(char *)student_infoj + num.score, (char *)student_infoj.score, sizeof(student_infoj.score);student_infoj + num.average = temp.average;strcpy(student_infoj + , );student_infoj + num.number = temp.number;strncpy(char *)student_infoj + num.score, (char *)temp.score, sizeof(student_infoj.score);void stagrade() stu record N = 0; int i = 0, j, n = 0, count55 = 0;n = readfile(AVEFILE,record);for(i = 0; i n; i+) /*统计各学科各分数段人数,行表示科目,列表示分数段*/ for(j=0;j=90) countj0+; else if(recordi.scorej=80 & recordi.scorej=70 & recordi.scorej=60 & recordi.scorej70) countj3+; else countj4+;printf(全班数学成绩如下: n);for (i = 0; i 4; i+) printf(%d 分以上的有 %d 人 n, 100 - 10 * i, count0i); printf(不及格 %d 人 n, count0i); printf(全班英语成绩如下: n);for (i = 0; i 4; i+) printf(%d 分以上的有 %d 人 n, 100 - 10 * i, count1i); printf(不及格 %d 人 n, count1i); printf(全班物理成绩如下: n);for (i = 0; i 4; i+) printf(%d 分以上的有 %d 人 n, 100 - 10 * i, count2i); printf(不及格 %d 人 n, count2i); printf(全班编程成绩如下: n);for (i = 0; i 4; i+) printf(%d 分以上的有 %d 人 n, 100 - 10 * i, count3i); printf(不及格 %d 人 n, count3i); printf(全班马哲成绩如下: n);for (i = 0; i 4; i+) printf(%d 分以上的有 %d 人 n, 100 - 10 * i, count4i); printf(不及格 %d 人 n, count4i); void managemenu() char choose=0;do printf(请选择从菜单中选择你需要的选项); printf(1. 生成并打印补考通知单);printf(2. 生成并打印退学通知单);printf(3. 生成并打印新名册);printf(4. 返回上一层);scanf(%c,&choose);switch(choose) case 1: makeup_note();break; /*生成并打印补考通知单*/case 2: leave_note();break; /* 生成并打印退学通知单*/case 3: new_list();break; /*生成并打印新名册*/case 4: return;case 0: exit(0); /*返回*/default: printf(ntt%c为非法选项!n, choose); while(1);void makeup_note() stu recordN=0; int i=0,j=0,n=0,t=0,count=0,time5=0,f=0;char site5; char sl6=0;n = readfile(OLDFILE, record);for(i = 0; i 5; i+) switch(i) case 0: strcpy(sl,数学); break; case 1: strcpy(sl,英语); break; case 2: strcpy(sl,物理); break;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论