c语言程序设计学生成绩管理系统.doc

上传人:土8路 文档编号:9952573 上传时间:2021-04-06 格式:DOC 页数:38 大小:618.50KB
返回 下载 相关 举报
c语言程序设计学生成绩管理系统.doc_第1页
第1页 / 共38页
c语言程序设计学生成绩管理系统.doc_第2页
第2页 / 共38页
c语言程序设计学生成绩管理系统.doc_第3页
第3页 / 共38页
c语言程序设计学生成绩管理系统.doc_第4页
第4页 / 共38页
c语言程序设计学生成绩管理系统.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《c语言程序设计学生成绩管理系统.doc》由会员分享,可在线阅读,更多相关《c语言程序设计学生成绩管理系统.doc(38页珍藏版)》请在三一文库上搜索。

1、高级语言程序设计课程设计报告题目: 学生成绩管理学系统 专 业 : 班 级 : 学 号 : 姓 名 : 指导教师 : 日 期: 1、程序基本功能要求(1) 用户登录(2) 录入学生信息(3) 显示学生总成绩信息(4) 对总成绩排序(5) 显示学生单科成绩排序(6) 添加学生信息(7) 删除学生信息(8) 修改学生信息(9) 查询学生信息(10) 从文件读入学信息(11) 删除文件中学生信息(12) 保存学生信息(13) 退出2、总体设计(功能模块说明,如函数功能、参数说明,函数调用关系描述等,并注明各模块的具体成员分工)2.1函数功能(1)主函数main():定义学生结构体数组,调用录入、统计

2、等函数对成绩表进行处理;(2)输入函数input():输入学生的学号、性别、姓名、成绩等各种信息;(3)读出函数read():读出学生的信息;(4)排序函数sort():排序学生的各门成绩;(5)显示函数display():显示学生的学号、性别、姓名、成绩等各种信息;(6)插入函数insert():插入学生的学号、性别、姓名、成绩等各种信息;(7)删除函数delete():删除指定学号学生记录;(8)平均值函数average():计算学生的平均成绩;(9)查找函数find():查找指定学生的信息;(10)保存函数save():保存输入的学生信息;(11)删除文件函数del_file():删除指

3、定文件信息;(12)修改函数modify():修改指定学生信息;(13)退出。2.2参数说明、函数调用(1)数据输入:数据输入的功能是将需要的数据进行录入,用于后面的各项操作。实现:用输入函数对数据进行录入,先确定学生的个数,再用一个循环进行输入。(2) 数据插入: 数据插入的主要功能是在数据录入之后,为防止数据输入的遗漏,实现:分为两个部分,第一个是插入第一个位置,第二是插入第一个位置之后,把当前的位置赋给后面的加以实现。(3)数据查找:数据查询的主要功能是在数据输入之后进行分类再现,实现:分为输出所有数据,按学号查询,按姓名查询,当输入的数据满足条件时即输出所要求的。(4)数据删除:数据删

4、除的主要功能是在数据录入、数据插入和数据修改完成之后对无用数据进行删除,实现:输入学号,满足条件时即把后一个数值赋 给前一个数值,达到删除的目的。(5)平均值计算:平均值计算的主要功能是求平均值,再对其进行排序,实现:用公式进行计算求平均值,之后便是排序问题,求最大值,然后依次输出各最大值,即实现了排序功能。2.3模块分工读出函数、排序函数、插入函数、删除函数模块主函数、输入函数、显示函数、平均值函数模块查找函数、保存函数、删除文件函数、修改函数3、详细设计(程序设计组成框图、流程图)3.1系统功能模块描述学生成绩管理系统统计学生信息查找学生信息浏览学生信息录入学生信息更新学生信息从文件录入从

5、键盘录入对所有学生成绩进行浏 览按学号查找按姓名查找对总分排序分类排序删除学生信息添加学生信息图3-1学生成绩管理系统模块图3.2 录入函数功能设计首先会给定一个要输入的人数界限,根据自己要输入的人数进行输入,系统会提示你输入学生的信息,其中包括姓名、性别、各科目的分数,系统会自动生成一个有序数列,即学号。其执行流程图如下所示:开始按提示进行输入人数是否在1-50之间 否 是 按提示输入学生信息 调用浏览函数显示输入结果 录入函数结束 图3-2录入函数设计3.3 查找函数功能设计查找函数有两种查找方法,分别为按姓名和学号查找,当输入为flag=1时,系统会提示按照姓名查找,当输入为flag=2

6、时,系统则提示按照学号查找,其流程图为: 开始 按提示输入1或者2 判断输入数字 Flag=1 Flag=2 按学号查找按姓名进行查找判断学号是否正确 不 不判断名字是否存在 存 正 在 确 存在 正确结束查找操作 图 3-3查找函数设计3.4统计函数功能设计统计函数会统计各科目的最高分、最低分以及平均分的统计,并且按照操作进行科目统计。会有4中选择,当flag=1时,对数学进行统计;当flag=2时,对英语进行统计,当flag=3时,对c成绩进行统计,当flag=4时,统计函数功能结束。跳出循环。如图3-4所示:开始 选择1.2.3.4四个选择进行操作根据选择进行操作 Flag=4 Flag

7、=1 flag=3 flag=2对c成绩统计进行英语统计进行数学统计结束统计操作 图 3-4 统计函数设计3.5添加函数功能设计添加函数主要是对额外的学生记录进行添加,同前面一样,也是对其信息的输入,并且输入完成之后,再对学生成绩进行排序和统计,如图所示开始输入学生的信息:名字、性别、各科目成绩等等。判断是否继续输入 Flag=Y flag=N停止输入学生信息选择继续输入 结束添加功能 图 3-5 添加函数设计3.6更新函数功能设计开始更新函数包含了两个子函数,分别是修改和删除两项,修改主要是修改录入函数里面错误的内容,而删除主要是删除一些不必要的学生信息,其功能流程如图3-6所示按照提示选择

8、是修改还是删除判断操作和选择 Flag=1 Flag=2进行学生信息的删除进行学生信息的修改 按照提示进行查找按提示进行查找查找后输入修改信息查找后进行信息删除判断是否删除(Y/N)是否确认修改(Y/N) 修改成功 Flag=Y Flag=Y 结束操作 Flag=N Flag=N 图3-6 更新函数设计 3.7执行流程介绍 主要是主函数调用子函数来进行操作和子函数相互之间的调用来完成执行,如图:开始以可读方式打开一个可读文件调用菜单函数进入while(1)循环输入1-6中的各个数值,选择相应操作输入是否为8 否 调用函数,进入操作 是 结束 图3-7流程执行图4、程序运行结果(截图)用户登陆界

9、面 登录失败(共有五次输入机会)登陆成功进入主界面录入学生信息 显示学生总成绩信息对总成绩排序显示学生单科成绩排序添加学生信息添加学生信息后总成绩显示删除学生信息删除学生信息后总成绩显示修改学生信息输入修改学生信息修改后学生总成绩显示查询学生信息从文件读入学生信息从文件读入学生信息后总成绩显示文件信息删除文件中学生信息删除后文件信息保存学生信息保存后文件信息5、源程序代码(代码中注明每段代码的完成人)#include #include /*清屏*/ #include /*显示目录*/ #include #define MAX 1000void menu(); /*登录函数*/ void inp

10、ut(); /*输入数据函数*/ void sort(); /*排序数据函数*/ void display(); /*显示数据函数*/ void display1(); /*显示各科成绩函数*/ void insert(); /*插入数据函数*/ void del(); /*删除数据函数*/ void average(); /*平均值函数*/ void find(); /*查找数据函数*/ void save(); /*保存数据函数*/ void read(); /*读出数据函数*/ void del_file(); /*删除文件函数*/ void modify(); /*修改文件函数*/ i

11、nt now_no=0; struct student /定义学生信息 int no; / 学号 char name20; /姓名 char sex4; /性别 float score1; /成绩1 float score2; /成绩2 float score3; /成绩3 float sort; /排序成绩 float ave; /平均分 float sum; /总分; void main() int h,flag1,flag2; char name20=xdxy,password10=700619; char person20,password110;printf (tt * 欢迎进入学生

12、成绩管理系统!*nn);printf (ttt 用 户 登 录nn); for(h=0;h!=5;) printf(tttt 用户名:); gets(person); flag1=strcmp(person,name); printf(tttt 密码:); gets(password1); flag2=strcmp(password,password1); if(flag1=0 & flag2=0) printf(tttt 登陆成功!nn); menu(); break; else printf (ttt 用户名或密码错误!nn);printf (ttt 请注意:您还剩%d次机会!nn,4-h

13、); h+;if (h=5) printf (对不起,您输入的用户名或密码有误,已被强制退出。n);struct student stuMAX,*p; void menu() /*主函数*/ int as; char ch; do printf(nnnntt*&*&*&*&*&*&*&*&*&*); start: printf(nnnnttt 欢迎使用学生成绩管理系统n); printf(nnnntt*按任意键继续*); ch=getch(); while(!ch); system(cls); /*以下为功能选择模块*/ do printf(ntttt1.录入学生信息ntttt2.显示学生总成

14、绩信息ntttt3.对总成绩排序ntttt4.显示学生单科成绩排序ntttt5.添加学生信息ntttt6.删除学生信息ntttt7.修改学生信息ntttt8.查询学生信息ntttt9.从文件读入学生信息ntttt10.删除文件中学生信息ntttt11.保存学生信息ntttt12.退出n); printf(tttt选择功能选项(输入所选功能前的数字):); fflush(stdin); /*可用可不用,用于清除缓存防止下次用scanf输入是出现错误*/ scanf(%d,&as); switch(as) case 1:system(cls); input(); break; case 2:sys

15、tem(cls); display(); break; case 3:system(cls); sort(); break; case 4:system(cls); display1(); break; case 5:system(cls); insert(); break; case 6:system(cls); del(); break; case 7:system(cls); modify(); break; case 8:system(cls); find(); break; case 9:system(cls); read(); break; case 10:system(cls);

16、 del_file(); break; case 11:system(cls); save(); break; case 12:system(exit); exit(0); default:system(cls); goto start; while(1); /*while(1),1表示真,所以while(1)表示永远循环下去*/ /*至此功能选择模块结束*/ void input() /*学生信息录入模块*/ int i=0; char ch; do printf(tttt1.录入学生信息n输入第%d个学生的信息n,i+1); printf(n输入8位的学生学号:); scanf(%u,&s

17、tui.no); fflush(stdin); printf(n输入学生姓名:); fflush(stdin); gets(stui.name); printf(n输入学生性别:); fflush(stdin); gets(stui.sex); printf(n输入学生成绩1:); scanf(%f,&stui.score1); printf(n输入学生成绩2:); fflush(stdin); scanf(%f,&stui.score2); printf(n输入学生成绩3:); fflush(stdin); scanf(%f,&stui.score3); printf(nn); i+; no

18、w_no=i; printf(是否继续输入?(Y/N); fflush(stdin); ch=getch(); system(cls); while(ch!=n&ch!=N); system(cls); void sort() /*排序数据函数*/ struct student temp; int i,j; average(); for(i=1;inow_no;i+) for(j=1;j=now_no-i;j+) if(stuj-1.avestuj.ave) temp=stuj; stuj=stuj-1; stuj-1=temp; printf(排序已完成进入功能2可进行显示n); syste

19、m(pause); system(cls); void sort1() /*排序数据函数*/ struct student temp; int i,j; for(i=1;inow_no;i+) for(j=1;j=now_no-i;j+) if(stuj-1.score1stuj.score1) temp=stuj; stuj=stuj-1; stuj-1=temp; void sort2() /*排序数据函数*/ struct student temp; int i,j; for(i=1;inow_no;i+) for(j=1;j=now_no-i;j+) if(stuj-1.score2s

20、tuj.score2) temp=stuj; stuj=stuj-1; stuj-1=temp; void sort3() /*排序数据函数*/ struct student temp; int i,j; for(i=1;inow_no;i+) for(j=1;j=now_no-i;j+) if(stuj-1.score3stuj.score3) temp=stuj; stuj=stuj-1; stuj-1=temp; void display() /*显示数据函数*/ int i; char as; average(); do printf(ttt班级学生信息列表n); printf(t学号

21、t姓名t性别t成绩1t成绩2t成绩3t平均值n); for(i=0;inow_no&stui.name0;i+) printf(t%u%st%st%.2ft%.2ft%.2ft%.2fn,stui.no,stui.name,stui.sex,stui.score1,stui.score2,stui.score3,stui.ave); printf(ttt按任意键返回主菜单); fflush(stdin); as=getch(); while(!as); system(cls); void display1() /*显示数据函数*/ int i; char as; do printf(ttt班级

22、学生score1成绩排序n); printf(t学号t姓名t性别t成绩1n); sort1(); for(i=0;inow_no&stui.name0;i+) printf(t%u%st%st%.2ftn,stui.no,stui.name,stui.sex,stui.score1); printf(ttt班级学生score2成绩排序n); printf(t学号t姓名t性别t成绩2n); sort2(); for(i=0;inow_no&stui.name0;i+) printf(t%u%st%st%.2ftn,stui.no,stui.name,stui.sex,stui.score2);

23、printf(ttt班级学生score3成绩排序n); printf(t学号t姓名t性别t成绩3n); sort3(); for(i=0;inow_no&stui.name0;i+) printf(t%u%st%st%.2ftn,stui.no,stui.name,stui.sex,stui.score3); printf(ttt按任意键返回主菜单); fflush(stdin); as=getch(); while(!as); system(cls); void insert() /*插入数据函数*/ char ch; do printf(ntt输入新插入学生信息n); printf(n输入

24、学生学号:); scanf(%u,&stunow_no.no); fflush(stdin); printf(n输入学生姓名:); fflush(stdin); gets(stunow_no.name); printf(n输入学生性别:); fflush(stdin); gets(stunow_no.sex); printf(n输入学生成绩1:); fflush(stdin); scanf(%f,&stunow_no.score1); printf(n输入学生成绩2:); fflush(stdin); scanf(%f,&stunow_no.score2); printf(n输入学生成绩3:)

25、; fflush(stdin); scanf(%f,&stunow_no.score3); printf(nn); now_no=now_no+1; sort(); printf(是否继续输入?(Y/N); fflush(stdin); ch=getch(); system(cls); while(ch!=n&ch!=N); void del() /*删除数据函数*/ unsigned long inum; int i; printf(输入要删除学生的学号:); fflush(stdin); scanf(%u,&inum); for(i=0;inow_no;i+) if(stui.no=inu

26、m) if(i=now_no)now_no-=1; else stui=stunow_no-1; now_no-=1; sort(); break; system(cls); void save() /*保存数据函数*/ FILE *fp; int i; char filepath20; printf(输入要保存的文件路径:); fflush(stdin); gets(filepath); if(fp=fopen(C:学生信息.txt,w)=NULL) printf(n保存失败!); exit(0); for(i=0;inow_no;i+) stui.sum=stui.score1+stui.

27、score2+stui.score3; stui.ave=stui.sum/3; fprintf(fp,t%u%st%st%.2ft%.2ft%.2ft%.2fn,stui.no,stui.name,stui.sex,stui.score1,stui.score2,stui.score3,stui.ave); fclose(fp); printf(学生信息已保存在%s中!n,filepath); system(pause); system(cls); void find() /*查询函数*/ int i; char str20,as; do printf(输入要查询的学生姓名:); fflush(stdin); gets(str); for(i=0;inow_no;i+) if(!strcmp(stui.name,str) printf(t学号tt姓名t性别t成绩1t成

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1