c语言课程设计--学生成绩管理系统.doc
《c语言课程设计--学生成绩管理系统.doc》由会员分享,可在线阅读,更多相关《c语言课程设计--学生成绩管理系统.doc(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、中国地质大学C语言课程设计院 系: 工程学院 姓 名: 、俊 学 号: 班 号: 051163 指导老师 : 日 期: 2016-12-4 目录一、 题目要求二、 需求分析三、总体设计四、详细设计1.菜单函数和主函数 2.各功能模块设计 (1)输入模块 (2)追加模块 (3)修改模块 (4)删除模块 (5)修改成绩模块 (6)排序模块 (7)浏览模块 3.公共函数 (1)保存函数 (2)加载函数 (3)学号输入函数 (4)输入三科成绩函数 (5)求总分函数 (6)输入一个记录的函数 (7)修改成绩函数 (8)修改记录函数 (9)显示数据结构项目函数 (10)显示一个记录的函数五、上机操作六、总
2、结 学生成绩管理系统一 题目要求对在校某班学生几门课程的考试成绩进行统一管理。每个学生记录包括学号、姓名、年龄、数学、英语、物理成绩,默认以学号为序存放。(1)建立一个文件,以班为单位存储学生记录。(2)将允许的操作分为四种,以A、B、C、D、E、F为标志(若设置菜单操作更佳): A:插入一个新的学生记录(录入学生信息);B:修改学生记录;C:删除一个学生记录;D:登记成绩;E:修改成绩;F:浏览全班成绩。(3)计算学生的总成绩。(4)按学号排序输出全班成绩表。二需求分析学生记录用文件存储,因而要提供文件的输入、输出等操作;要实现插入一个新生的学生记录,因而要提供文件的插入操作;要实现学生记录
3、的修改和删除,以及登记成绩修改成绩,因而要提供文件记录的修改和删除操作;要浏览全班成绩,故要提供显示操作;计算学生总成绩需要提供简单的统计操作;要按学号排序输出全班成绩表,因而要提供排序操作;另外还应提供键盘式选择菜单实现功能选择。三 总体设计 根据上面的需求分析,可以将这个系统的设计分为8个模块,数据输入,添加数据,修改数据,删除数据,修改成绩,学号排序,浏览成绩,退出模块.学生成绩管理系统数据输入添加数据修改数据删除数据修改成绩学号排序浏览成绩退出模块四.详细设计1.菜单函数和主函数 将各个功能模块设置为菜单选项,方便调用,且执行完每部分功能模块后能够方便返回到系统界面.流程图显示一系列功
4、能选项 N 输入n,判断n是否是A-H Y 根据n的值调用各功能模块函数 void menu() /*主界面*/int w1; char n; /*.变量n保存选择菜单数字,w1判断输入的数字是否在功能菜单对应数字范围*/ do puts(tt*MENU*nn); puts(ttttA.Enter new data); puts(ttttB.Addition data); puts(ttttC.Modify data); puts(ttttD.Delete data); puts(ttttE.Modify score); puts(ttttF.Order by number); puts(tt
5、ttG.Browse all); puts(ttttH.Exit); puts(nntt*n); printf(Choice your number(A-H): bb); n=getchar(); printf(n); if(nH) w1=1; /*对选择的数字作判断*/ else w1=0; while(w1=1); switch(n) /*选择功能*/ case A:enter();break; /*输入模块*/ case B:add();break; /*添加模块*/ case C:modify();break; /*修改数据模块*/ case D:del ();break; /*删除模
6、块*/ case E:modify_score();break; /*修改成绩模块*/ case F:order();break; /*排序模块*/ case G:browse();break; /*浏览模块*/ case H:exit(0); /*退出模块*/ main() /*主函数*/ menu();2.各功能模块设计 (1) 输入模块数据分析单看各数据信息,学号年龄以及数学英语物理各科成绩和总分均是整型,姓名可以采用字符型数组.数据信息存放在文件中,一条记录对应一个学生,既符合习惯也方便信息管理.把学生的学号姓名年龄各科成绩及总分作为结构体成员,存放若干个学生信息就用结构体数组.str
7、uct student int num; char name20; int age; int Math; int English; int Physical; long int sum;stuN;/*stuN中每个数组元素对应一个学生*/ 注意stuN中的N为学生个数,程序中采用宏定义的方式,可以随时在源程序宏定义中修改,本程序宏定义#define N 30流程图输入用户要输入学生记录的个数n i从0到n-1调用输入函数input(i) i!=0 Y调用保存函数save(n)程序/*输入模块*/void enter() /*输入模块*/int i,n; printf(How many stud
8、ents(1-%d)?:,N); scanf(%d,&n); /*要输入的记录个数*/ printf(nEnter data nownn); for(i=0;in;i+) printf(n Input %dth student record.n,i+1); input(i); /*调用输入函数*/ if(i!=0) save(n); /*调用保存函数*/ printf_back(); /*一个任务结束时让用户选择是浏览还是返回*/ (2)追加模块需求分析 该模块的功能是用户需要增加新的学生记录, 请从键盘输入并逐条写到原来的输入文件中.流程图调用加载函数n=load();并计算可以记录个数n输
9、入用户要添加学生记录的个数mK=m+ni从n到k调用输入函数input(i)保存添加的记录程序/*添加模块*/void add() /*添加模块*/int i,n,m,k; FILE *fp; n=load(); printf(How many students are you want to add(1-%d)?:,N-n); scanf(%d,&m); /*输入要添加的记录个数*/ k=m+n; for(i=n;ik;i+) printf(n Input %dth student record.n,i+1); input(i); /*调用输入函数*/ if(fp=fopen(score.t
10、xt,ab)=NULL) /*以ab方式打开文件,添加保存*/ printf(Cannot open file.n); for(i=n;ik;i+) /*输出到文件*/ if(fwrite(&stui,sizeof(struct student),1,fp)!=1) printf(file write error.n); fclose(fp); printf_back(); /*一个任务结束时的选择浏览还是返回*/ (3)修改模块需求分析该模块的功能是显示所有学生信息,考虑到记录很多,故采用分屏显示。显示完所有记录后,用户输入要修改学生的学号,根据学号查找学生记录,并提示用户修改该记录的哪部分
11、信息,是学号、姓名、年龄或某科成绩、总分还是所有信息都修改,根据用户选择修改相应信息。流程图显示所有记录,让用户看哪个要修改输入要修改的学号是否找到此学生记录显示找到的记录调用修改函数提示没有找到继续修改?YNYYYYY N返回主菜单程序/*修改模块*/void modify() /*修改模块*/struct student s; FILE *fp; int i,n,k,w0=1,w1,w2=0; n=load(); do k=-1; /*给用户看全部记录以便确认要修改的记录*/ printf_face(); /*调用显示数据结构项目函数*/ for(i=0;in;i+) if(i!=0)&(
12、i%10=0) /*目的是分屏显示*/ printf(nnRemember NO.051163h needed modify.Pass any key to continue .); getch(); puts(nn); printf_one(i); /*调用显示一个记录的函数*/ printf(n); do printf(nnEnter NO.051163 you want to modify! NO.:051163-); scanf(%d,&s.num); /*输入要修改的数据的学号*/ for(i=0;in;i+) /*查找要修改的数据*/ if(s.num=stui.num) k=i;
13、 /*找到要修改的记录*/s=stui; /* 把stui备份给s,以便用户反悔时恢复*/ if(k=-1) printf(nnNO exist!please again); while(k=-1); /*当k=-1表示没有找到*/ printf_face(); /*调用显示一个记录的函数*/ printf_one(k); w1=modify_data(k,n); /*修改学生记录并且返回保存控制值w1,w1=1则表示用户已确认修改*/ if(w1=1) /*确认修改*/ printf(nSuccessful _.nnAre you modify another?nnt1.Yes2.Back
14、with savet bb); scanf(%d,&w0); w2=1; /*来控制保存,使w2=1是标记已有过修改*/ else w0=0; /* end */ if(w2=1) stuk=s; /*没有修改,把备份的s恢复,使w0=0是为了让循环终止*/ if(w0!=1&w2=1) save(n); /*正常返回,且有过修改 */ while(w0=1); menu(); (4)删除模块需求分析该模块的功能是与修改模块一样先显示所有的学生信息,同样考虑到记录很多,采用分屏显示。显示完所有记录后,用户输入要删除学生的学号,根据学号查找学生记录并删除。删除一般的做法是将数据从文件中删除,删除
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 学生 成绩管理系统
限制150内