C语言课程设计报告 学生成绩管理系统.docx
《C语言课程设计报告 学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告 学生成绩管理系统.docx(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言课程设计报告院系:机械与电子信息学院姓名:王 鹏 飞班号:学号:指导教师:龚文引日期:2011年7月学生成绩管理系统一、 题目要求设计一个学生成绩管理程序,对在校某班学生几门课程的考试成绩进行统一管理。每个学生记录包括学号、姓名、年龄、数学、英语、物理成绩,默认以学号为序存放。(1)一个文件按以班为单位存储学生记录。(2)将允许的操作分为四种,以A、B、C、D、E、F为标志(若设置菜单操作更佳): A:插入一个新的学生记录(录入学生信息);B:修改学生记录;C:删除一个学生记录;D:登记成绩;E:修改成绩;F:浏览全班成绩。(3)计算学生的总成绩。(4)按学号排序输出全班成绩表。二、需求
2、分析根据题目要求,由于学生信息是存放在文件中,所以应提供文件的输入、输出等操作;在程序中需要浏览学生的信息,应提供添加、修改、删除、排序等操作;另外还应提供键盘式选择菜单实现功能选择。三、总体设计根据上面的需求分析,可以将这个系统的设计分为8个模块,数据输入,添加数据,修改数据,删除数据,修改成绩,学号排序,浏览成绩,退出模块.学生成绩管理系统数据输入添加数据修改数据删除数据修改成绩学号排序浏览成绩退出模块四.详细设计1、主函数【分析】 将各个功能模块设置为菜单选项,方便调用,且执行完每部分功能模块后能够方便返回到系统界面.【流程图】:开 始 显示一系列功能选项 N输入n,判断n是否是A-H间
3、的字母 Y根据n的值调用各功能模块函数 结束【程序代码】:menu() /*主界面*/int w1; char n; /*.变量n保存选择菜单数字,w1判断输入的数字是否在功能菜单对应数字范围内*/ do puts(tt*菜单*nn); puts(ttttA. 录入学生信息); puts(ttttB.修改学生记录); puts(ttttC.删除一个学生记录); puts(ttttD.登记成绩); puts(ttttE.修改成绩); puts(ttttF.浏览全班成绩); puts(ttttG.退出); puts(nntt*n); printf(操作选择(A-H): bb); n=getchar
4、(); printf(n); if(nH) w1=1; /*对选择的数字作判断*/ else w1=0; while(w1=1); switch(n) /*选择功能*/ case A:enter();break; /*输入模块*/ case B: modify ();break; /*修改模块*/ case C: delete ();break; /*删除模块*/ case D: add();break; /*登记成绩模块*/ case E: modify_score ();break; /*修改成绩模块*/ case F:browse ();break; /*浏览模块*/ case G:ex
5、it (0); /*退出模块*/ main() /*主函数*/ menu();2、各功能模块设计(1) 输入模块【数据分析】:单看各数据信息,学号年龄以及数学英语物理各科成绩和总分均是整型,姓名可以采用字符型数组.数据信息存放在文件中,一条记录对应一个学生,既符合习惯也方便信息管理.把学生的学号姓名年龄各科成绩及总分作为结构体成员,存放若干个学生信息就用结构体数组.【流程图】:输入用户要输入学生记录的个数n i从0到n-1调用输入函数input(i) i!=0 Y调用保存函数save(n)【程序代码】enter() /*输入模块*/int i,n; printf(How many studen
6、ts(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)修改模块【分析】:该模块的功能是显示所有学生信息,考虑到记录很多,故采用分屏显示。显示完所有记录后,用户输入要修改学生的学号,根据学号查找学生记录,并提示用户修改该
7、记录的哪部分信息,是学号、姓名、年龄或某科成绩、总分还是所有信息都修改,根据用户选择修改相应信息。【流程图】: 返回主菜单显示所有记录,让用户看哪个要修改输入要修改的学号显示找到的记录调用修改函数提示没有找到Y继续修改?是否找到此记录YYYYY NYN 【程序代码】:modify() /*修改模块*/struct student s;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();dok=-1;/*给用户看全部记录以便确认要修改的记录*/printf_face(); /*调用显示数据结构项目函数*/for(i=0;in;i+)if(i!=0)&(i%10=0)
8、 /*目的是分屏显示*/printf(nn请输入您要修改的学生编号(No.-).按任意键继续 .);getch();puts(nn);printf_one(i);printf(n);doprintf(nn请输入您要修改的学生编号(No.-)! NO.:-);scanf(%d,&s.num); /*输入要修改的数据的学号*/for(i=0;in;i+)/*查找要修改的数据*/if(s.num=stui.num)k=i;/*找到要修改的记录*/s=stui;/* 把stui备份给s,以便用户反悔时恢复*/ if(k=-1) printf(nn记录不存在,请重新输入!);while(k=-1);/*
9、当k=-1表示没有找到*/printf_face();printf_one(k);/*调用显示一个记录的函数*/w1=modify_data(k,n);/*修改学生记录并且返回保存控制值w1,w1=1则表示用户已确认修改*/if(w1=1) /*确认修改*/printf(n修改成功! _.nn是否继续修改?nnt1.是2.返回并保存t bb);scanf(%d,&w0);w2=1;/*来控制保存,使w2=1是标记已有过修改*/elsew0=0; /*结束*/if(w2=1)stuk=s;/*没有修改,把备份的s恢复,使w0=0是为了让循环终止*/if(w0!=1&w2=1)save(n);/*
10、正常返回,且有过修改 */while(w0=1);menu();(3)删除模块【分析】:该模块的功能是与修改模块一样先显示所有的学生信息,同样考虑到记录很多,采用分屏显示。显示完所有记录后,用户输入要删除学生的学号,根据学号查找学生记录并删除。删除一般的做法是将数据从文件中删除,删除位置后面的记录往前挪。【流程图】:显示所有记录,让用户看哪个要删除输入要删除的学号显示所有记录,让用户看哪个要删除显示所有记录,让用户看哪个要删除 是否找到此学生记录 Y N显示找到的记录 提示没有找到使stuk.sum=0Y继续删除?N返回主菜单【程序代码】:delete() /*删除模块*/struct stu
11、dent s;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();dok=-1;printf_face();for(i=0;in;i+)if(i!=0)&(i%10=0)/*分屏显示*/printf(nn请输入您要删除的学生编号(No.-).按任意键继续.);getch();puts(nn);printf_one(i);printf(n);doprintf(nn请输入您要删除的学生编号(No.-)! NO.:-);scanf(%d,&s.num);for(i=0;in;i+)if(s.num=stui.num)k=i;s=stui;/*将要删除的记录备份给s */
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言课程设计报告 学生成绩管理系统 语言 课程设计 报告 学生 成绩管理系统
限制150内