c语言课程设计报告(成绩管理系统)

上传人:第*** 文档编号:56202990 上传时间:2018-10-10 格式:DOC 页数:16 大小:453KB
返回 下载 相关 举报
c语言课程设计报告(成绩管理系统)_第1页
第1页 / 共16页
c语言课程设计报告(成绩管理系统)_第2页
第2页 / 共16页
c语言课程设计报告(成绩管理系统)_第3页
第3页 / 共16页
c语言课程设计报告(成绩管理系统)_第4页
第4页 / 共16页
c语言课程设计报告(成绩管理系统)_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《c语言课程设计报告(成绩管理系统)》由会员分享,可在线阅读,更多相关《c语言课程设计报告(成绩管理系统)(16页珍藏版)》请在金锄头文库上搜索。

1、学 号: C 语言课程设计 设计说明书学生成绩管理系统学生成绩管理系统起止日期: 2016 年 12 月 12 日 至 2016 年 12 月 23 日学生姓名班级成绩指导教师电子信息工程系电子信息工程系年年 月月 日日目录目录:1、 课程设计题目要求3 2、 课程设计应完成的工作3 3、总体设计要求.33.1 总体功能要求.3 3.2 主要模块功能包括.4 4、程序流程图.5 5、 源代码及注释5 6、代码运行效果说明.13 7、总结.15一、课程设计题目要求一、课程设计题目要求:学生信息包括学号、姓名、3 门考试成绩。试设计一学生成绩管理系统,使之能提 供以下功能: 1、学生成绩录入功能(

2、成绩信息用文件保存,也可不用) 2、统计 :1) 输入学生的学号统计该生的总分及平均分;2)输入课程求该门课程的平均分。 3、排序:按学号 4、查找 :输入一个学生学号,输出其姓名及平均成绩 5、修改、删除学生信息 (任选一项) 调试环境:VC+6.0二、课程设计应完成的工作:二、课程设计应完成的工作:(1)编写算法 (2)算法测试,并有具体的测试结果和结果分析 (3)撰写课程设计报告。内容包括: a.封面扉页 b.设计任务书 c.目录 d.设计总体方案(包括流程图) e.使用说明及运行实例(包括界面) f.源程序代码注释三、总体设计三、总体设计总体功能要求:(1)链表的建立,每个节点包括:学

3、号、姓名、性别、语文、数学、英语、总分。(2)节点的插入,按学号的顺序插入。(3)删除链表中的节点,按学号或者姓名。链表的输出。按学号排序、按总分排序 功能模块图、流程图(要求有总体的功能模块图、 各部分流程图):主要功能模块包括:1、成绩录入功能2、成绩输出功能3、成绩查询功能4、删除功能5、排序功能6、统计功能四、程序流程图:四、程序流程图:五、源代码及注释五、源代码及注释:#include #include #include #define LEN sizeof(Student) #define NULL 0typedef struct student int num; /*学号*/ c

4、har name20; /*姓名*/ char sex2; /*性别*/int score3; /*成绩*/ int sum; /*总成绩*/ struct student *next; Student; int n; /*声明一个全局变量*/Student *cin(void); Student *sort_1(Student *head,int); /*声明按学号排序函数*/ void sort_2(Student *head); /*声明按总分排序函数*/ void print(Student *head); /*声明显示函数*/ Student *sort_all(Student *h

5、ead); /*声明排序函数*/ void find(Student *head); /*声明查询函数*/ Student *add_new(Student *head);Student *cin() int flag; Student *head,*p1,*p2; n=0; head=(Student *)malloc(LEN); p2=head; printf(“n 请输入第%d 名学生的学号,学号为 0 表示结束输入:“,n+1); scanf(“%d“, while(getchar()!=n); for(;flag;) /*输入每个学生的信息*/n+;p1=(Student *)mal

6、loc(LEN);p1-num=flag;printf(“请输入第%d 名学生的姓名:“,n); /*输入姓名*/scanf(“%s“,p1-name);printf(“请输入第%d 学生的性别:“,n); /*输入性别*/scanf(“%s“,p1-sex);printf(“请输入第%d 名学生的语文成绩:“,n); /*输入语文成绩*/scanf(“%d“,printf(“请输入第%d 名学生的数学成绩:“,n); /*输入数学成绩*/scanf(“%d“,printf(“请输入第%d 名学生的英语成绩:“,n); /*输入英语成绩*/scanf(“%d“,p1-sum=p1-score0

7、+p1-score1+p1-score2;p2-next=p1;p2=p1;printf(“n 请输入第%d 名学生的学号,没有此学生则输入 0 表示结束:“,n+1);scanf(“%d“, p2-next=NULL; printf(“nn“); return head; Student *sort_all(Student *head) /*定义排序函数*/ int choose; for(;)printf(“ntt# # # # # 学生成绩统计排序 # # # #n“);printf(“tt#t1.按学生学号排序t #n“);printf(“tt#t2.按学生总分排序t #n“);pri

8、ntf(“tt#t7.单科高分及均分t #n“);printf(“tt#t8.显示当前学生成绩t #n“);printf(“tt#t0.返回上一级菜单t #n“);printf(“请输入你要执行的操作:“);scanf(“%d“,while(getchar()!=n);switch(choose)case 1:case 2:case 3:case 4:case 5:case 6:head=sort_1(head,choose);break;case 7:print(head);sort_2(head);break;case 8:print(head);break;case 0:return h

9、ead;default: printf(“nn 您的输入有误!请重新输入:nn“);break; Student *sort_1(Student *head,int choose) /*定义按学号排序函数*/ Student *p1,*p2=head-next,*pm,*px; Student mid; if (!p2) return head; for(p1=p2;p1-next!=NULL;p1=p1-next)pm=p1;for(p2=p1-next;p2!=NULL;p2=p2-next)switch(choose)case 1:if (pm-nump2-num) pm=p2;brea

10、k;case 2:if (pm-sumsum) pm=p2;break;case 3:if (pm-score0score0) pm=p2;break;case 4:if (pm-score1score1) pm=p2;break;case 5:if (pm-score2score2) pm=p2;break;if (pm!=p1)mid=*pm;*pm=*p1;*p1=mid;px=pm-next;pm-next=p1-next;p1-next=px; printf(“n 排序后的成绩表为:n“); print(head); return head; void sort_2(Student

11、*head) /*定义按总分排序函数*/ Student *p=head-next; int max_1,max_2,max_3,min_1,min_2,min_3; int max_sum,min_sum; int sum_1=0,sum_2=0,sum_3=0; float aver_1,aver_2,aver_3,aver_sum; if (!p) return; max_1=min_1=p-score0;max_2=min_2=p-score1; max_3=min_3=p-score2; max_sum=min_sum=p-sum; for(;p;p=p-next)if (max_1

12、score0) max_1=p-score0;else if (min_1p-score0) min_1=p-score0;if (max_2score1) max_2=p-score1;else if (min_2p-score1) min_2=p-score1;if (max_3score2) max_3=p-score2;else if (min_3p-score2) min_3=p-score2;if (max_sumsum) max_sum=p-sum;else if (min_sump-sum) min_sum=p-sum;sum_1+=p-score0;sum_2+=p-scor

13、e1;sum_3+=p-score2; aver_1=1.0*sum_1/n;aver_2=1.0*sum_2/n;aver_3=1.0*sum_3/n; aver_sum=aver_1+aver_2+aver_3; printf(“总共%d 名学生,具体数据为:n“,n); printf(“总分最高分为%d,最低分位%d,平均分为%.2fn“,max_sum,min_sum,aver_sum); void find(Student *head) /*定义查询函数*/ Student *p; int choose,fnum; char tem20; if (n=0) printf(“n 当前系

14、统没有任何学生数据!n “);return; for(;)printf(“n 请输入您要查询学生的方式:nn“);printf(“1、按学号查询;2、按姓名查询;0、我不查询了。nn“);printf(“请选择:“);scanf(“%d“,while(getchar()!=n);if (choose=1)printf(“n 请输入你要查询的学生的学号,输入 0 退出学号查询:“);scanf(“%d“,for(;fnum;)for(p=head-next;p!=NULLp=p-next);if (!p)printf(“nn 找不到你要查询的学号,请重新输入,输入 0 表示结束:“);scanf

15、(“%d“,else if (p-num=fnum)printf(“n 学号为%d 学生的数据为:n“,p-num);printf(“学号t 姓名t 性别t 语文成绩 数学成绩 英语成绩 总 分n“);/*输出所有的学生信息*/printf(“%dt%st%st %d %d %d %dn“,p- num,p-name,p-sex ,p-score0,p-score1,p-score2,p-sum);printf(“nn 请输入你还要查询的学生的学号,输入 0 表示不按学 号查询了:“);scanf(“%d“, else if (choose=2)printf(“n 请输入你要查询的学生的姓名,输入 0 退出姓名查询:“);scanf(“%s“,tem); for(;strcmp(tem,“0“);)for(p=head-next;p!=NULLp=p-next);if (!p)pri

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号