版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、- -综合性实验报告课程名称:C语言程序设计实验题目:班级成绩管理系统的设计与实现姓名学号:(组长)系别:专业班级:指导教师:实验日期:2012年06月01日06月20日- - -一、实验目的和要求实验目的1、利用所学的三种程序基本结构以及数组、用户自定义函数进行一个小型程序的设计,进一步理解和掌握C语言的语法以及三种基本程序结构的综合应用。2、通过程序中涉及到的排序、查找、求和等操作加深对算法、程序设计思路、常用程序设计技巧的理解与掌握,逐步培养学生的程序开发能力。实验要求1、根据实验内容,认真编写源程序代码、上机调试程序,书写实验报告。2、分小组协作实验时,要写明每一位学生负责的实验内容。
2、二、设计要求(一)学生信息和程序功能给定的原始数据和程序应实现的功能是该C程序开发的依据,此实验只处理一个班级学生信息,最多学生数为120人。1、学生信息和数据类型最多学生人数和最多课程数定义为全局符号常量:#defineMmax120#defineNmax3(1)学生信息学生信息包含:学号,姓名,三门课(语文,数学,英语)成绩和总分。(2)数据类型int型。其2011023102表学号、姓名、课程三个信息为char型,课程分数和总分为float型,其余为中,假设学号有10位数字字符(注意此时要求存储空间要11个字节),例如示入学年份为2011年,023是专业编码,102是学生在班级中的排号。
3、2、测试数据测试数据在定义数组时以初值形式提供,其中学生总成绩通过程序计算。学号姓名语文数学英语2011023001Zhang73.585672011023002Li8391.5872011023003Cheng6582782011023004Wang718380.5但是,在用单链表处理学生信息时,要求直接从键盘上接收数据。3、程序功能(1)学生信息(学号、姓名、成绩等)的显示(数据结构要求用数组)(2)按姓名查找学生(数据结构要求用数组);(3)计算各门课程的平均分(数据结构要求用数组);(4)计算学生总成绩,并按总成绩进行排序(数据结构要求用数组)(5)按总成绩降序显示学生信息;(6)学生
4、记录的插入;(7)用单链表(结构体)处理班级学生信息(学号、姓名、成绩等),包括学生信息输入(添加)、学生信息浏览、学生总成绩计算和将学生信息存入文件。其中第(7)为选作内容,如果学生能够做出来,实验成绩应给予加分奖励。(二)程序总体设计1、数据结构依据给定的学生信息和数据类型,定义相应的数组和结构体类型分别如下:课程名称定义为全局数组:charcourseNmax50=Chinese,Mathematic,English;学生结构体类型如下:structstudentcharcode11;/*学号*/TOC o 1-5 h zcharname20;/*姓名*/floatscoreNmax;/
5、*各课程成绩*/floattotal;/*总分*/structstudent*next;以下的数组或变量均为局部类型的(可放在main函数中加以定义):sno数组存储学生学号,可事先加入初始数据若干条:charsnoMmax11=2011023001,2011023002,2011023003,2011023004;name数组存储学生姓名,可事先加入初始数据若干条;namesearch数组用于存储要查找的学生姓名:charnameMmax20=Zhang,Li,Cheng,Wang,namesearch20;score数组存储学生成绩;假设至多有M名学生,N门课程,可事先加入初始数据若干条;
6、avecourse数组存储每门课程的平均分,实际计算时可事先初始化:floatscoreMmaxNmax=73.5,85,67,83,91.5,87,65,82,78,71,83,80.5;floatavecourseNmax=0;tscore数组存储每位学生成绩的总分:floattscoreMmax=0;index数组为排名索引(约定为降序),存储每位学生总成绩在tscore数组中的名次(即index0存放了总分第一的学生在tscore数组中的下标,index存放了总分第二的学生在tscore数组中的下标,依次类推):intindexMmax;M为实际学生数;N为实际课程数;M、N的值要根据
7、插入或删除学生记录情况加以适时修改:intM=4,N=3;2、模块划分依据程序的数据结构和功能,遵照“自顶向下”原则,采用基于函数的逐步求精法,描述该程序的层次结构。该程序可按给定的程序功能直接描述模块层次结构。该程序要求保留一种排序状态:按总分排序。图1模块层次结构在C语言中,模块用函数实现,函数原型清单如下(注意:以下各函数原型中很多地方用到了指向一维数组的指针变量或指向二维数组的指针变量,也可以将之对应的定义为形参数组的形式进行处理):1-1计算所有课程的平均分voidaveragemark(float(*pscore)Nmax,float*pavecourse,intm,intn)1-
8、2计算每位学生所修课程总分voidtotalmark(float(*pscore)Nmax,float*ptscore,intm,intn)1-3按姓名查找学生记录intretrievebyn(char(*pname)20,char*pnamesearch,intm)1-4浏览全部学生信息voiddisplaystu(char(*psno)11,char(*pname)20,float(*pscore)Nmax,float*ptscore,intm,intn)1-5按总分降序浏览全部学生信息voiddisplaystusort(char(*psno)11,char(*pname)20,floa
9、t(*pscore)Nmax,float*ptscore,int*pindex,intm,intn)1-6添加新的学生记录voidinsert(char(*psno)11,char(*pname)20,float(*pscore)Nmax,float*ptscore,int*pm,intn)1-7用单链表进行班级成绩管理voidlinkprocess()2-1按总分递减排序voidsortscore(float*ptscore,int*pindex,intm)2-2输入和添加学生信息structstudent*appendstuinfo(structstudent*head)2-3浏览学生信息
10、voiddisplaylist(structstudent*head)2-4保存学生信息voidsavestuinfo(structstudent*head)模块层次结构只是确定模块之间的关系和函数原型,不是程序的执行步骤。程序总体框架是该程序的总体流程图。该程序不是顺序执行全部功能,而是在某一时刻有选择地执行一种或多种功能。因此,选用菜单方式是较佳的方案。三、小组各成员分工协作情况说明成员:负责编写的函数是:成员:负责编写的函数是:成员:负责编写的函数是:四、编程体会(或是对实验系统做进一步改进的思考)五、程序代码以下给出了程序的基本框架,请完成函数的功能及函数调用等程序代码的编写工作。#i
11、nclude#include#include#include#defineMmax120/*记录最大学生数*/#defineNmax3/*记录学生选课最大课程数目*/charcourseNmax50=Chinese,Mathematic,English;/以全局变量的形式给出各门课程的名称/*当使用单链表进行班级成绩管理时,使用如下的结构体类型*/structstudentcharcode11;charname20;/*姓名*/floatscoreNmax;/*各课程成绩*/floattotal;/*总分*/structstudent*next;/*以下是各函数的声明,其中下面的7个函数和ma
12、in函数是首先要实现的*/voidaveragemark(float(*pscore)Nmax,float*pavecourse,intm,intn);voidtotalmark(float(*pscore)Nmax,float*ptscore,intm,intn);intretrievebyn(char(*pname)20,char*pnamesearch,intm);voiddisplaystu(char(*psno)11,char(*pname)20,float(*pscore)Nmax,float*ptscore,intm,intn);voiddisplaystusort(char(*
13、psno)11,char(*pname)20,float(*pscore)Nmax,float*ptscore,int*pindex,intm,intn);voidinsert(char(*psno)11,char(*pname)20,float(*pscore)Nmax,float*ptscore,int*pm,intn);voidsortscore(float*ptscore,int*pindex,intm);/*以下各函数是用单链表进行班级成绩管理时,需要用到函数。实际编程时,先实现以上的7个函数及main函数,而对下面4个函数在具体编程时,可只给出相应空函数形式,等真正要实现时,再具体
14、编写它们*/voidlinkprocess();/*这是函数的声明*/structstudent*appendstuinfo(structstudent*head);voiddisplaylist(structstudent*head);voidsavestuinfo(structstudent*head);/*下面是main函数,但需要你完善函数的调用;如果变量不够用,请自行添加*/voidmain()/*sno数组存储学生学号,可事先加入初始数据若干条*/charsnoMmax11=2011023001,2011023002,2011023003,2011023004;/*name数组存储
15、学生姓名;namesearch数组用于存储要查找的学生姓名*/charnameMmax20=Zhang,Li,Cheng,Wang,namesearch20;/*score数组存储学生成绩;avecourse数组存储每门课程的平均分,实际计算时要初始化*/floatscoreMmaxNmax=73.5,85,67,83,91.5,87,65,82,78,71,83,80.5,avecourseNmax=0;/*tscore数组存储每位学生成绩的总分*/floattscoreMmax=0;/*index数组为排名索引(约定为降序)*/intindexMmax;intM=4,N=3;/*M为实际学
16、生数;N为实际课程数;M、N的值可根据情况修改;由赋初值情况知M=4,N=3*/inti,j;charc;while(1)system(cls);/*清屏操作*/printf(nt这是班级成绩管理系统,请选择你要的操作:nn);printf(tt1:计算所有课程的平均分n);printf(tt2:计算每位学生所修各门课程的总分n);printf(tt3:按姓名查找学生记录n);printf(tt4:浏览全部学生信息n);printf(tt5:按总分降序浏览全部学生信息n);printf(tt6:添加(插入)新的学生记录n);printf(tt7:用单链表进行班级成绩管理n);printf(tt
17、8:退出系统!n);printf(nn请输入命令:);scanf(%c,&c);/*输入选择命令*/if(c=8)puts(n谢谢使用!);break;/*结束程序运行*/switch(c)case1:/*计算课程平均分*/;/*调用averagemark函数,计算课程的平均分*/printf(n);for(j=0;jN;j+)/*显示每门课程的平均分*/printf(%s课程的平均分是:%.2f.n,coursej,avecoursej);getchar();getchar();break;case2:/*计算每位学生总分*/;/*调用totalmark函数,计算每位学生总分*/printf
18、(n);for(i=0;iM;i+)/*显示每位学生的总分*/printf(第d名学生的总分是:%.2f.n,i+1,tscorei);getchar();getchar();break;case3:/*按学生的姓名寻找记录*/printf(请输入你想查找的学生姓名:);scanf(%s,namesearch);/*调用retrievebyn函数*/if(i=-1)printf(学生s不存在.n,namesearch);elseprintf(n你查找的学生记录是:n);printf(学号:%sn姓名:%sn,snoi,namesearch);for(j=0;jN;j+)/*显示每门课程成绩*/printf(%s课程成绩是:%.2f.n,coursej,scoreij);printf(所修课程总分是:%.2f.n,tscor
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家具区域合同模板
- 2024年度大学食堂餐饮承包合同3篇
- 2024年度保密协议样本:人员信息保护协议范本2篇
- 餐饮业劳动合同范例
- 2024年度离婚合同:夫妻双方自愿解除婚姻关系5篇
- 租赁矿山开采合同范例
- 2024版二手房买卖房款监管服务合同3篇
- 2024年度重庆商品房预售代理合同2篇
- 2024年交通设施融资租赁合同担保函3篇
- 2024年度人力资源服务合同服务内容与要求详述2篇
- 餐饮行业智能点餐与外卖系统开发方案
- 《中式家具设计》课件
- 24秋国家开放大学《企业信息管理》形考任务1-4参考答案
- 偏微分方程知到智慧树章节测试课后答案2024年秋浙江师范大学
- 2024年共青团入团考试测试题库及答案
- 2022年全国应急普法知识竞赛试题库大全-下(判断题库-共4部分-2)
- 花键计算公式DIN5480
- 《建筑与市政工程施工现场临时用电安全技术标准》JGJT46-2024知识培训
- 2024年事业单位招聘考试公共基础知识模拟试卷及答案(共七套)
- 《燃气安全知识培训》课件
- 高考及人生规划讲座模板
评论
0/150
提交评论