《C语言程序设计》-综合性实验实验报告(参考格式).doc
《《C语言程序设计》-综合性实验实验报告(参考格式).doc》由会员分享,可在线阅读,更多相关《《C语言程序设计》-综合性实验实验报告(参考格式).doc(8页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、综合性实验报告 课程名称:C语言程序设计实验题目:班级成绩管理系统的设计与实现姓名学号:(组长)系 别:专业班级:指导教师:实验日期:2012年06月01日06月20日 一、实验目的和要求实验目的1、利用所学的三种程序基本结构以及数组、用户自定义函数进行一个小型程序的设计,进一步理解和掌握C语言的语法以及三种基本程序结构的综合应用。2、通过程序中涉及到的排序、查找、求和等操作加深对算法、程序设计思路、常用程序设计技巧的理解与掌握,逐步培养学生的程序开发能力。实验要求1、根据实验内容,认真编写源程序代码、上机调试程序,书写实验报告。2、分小组协作实验时,要写明每一位学生负责的实验内容。二、设计要
2、求(一)学生信息和程序功能给定的原始数据和程序应实现的功能是该C程序开发的依据,此实验只处理一个班级学生信息,最多学生数为120人。1、学生信息和数据类型最多学生人数和最多课程数定义为全局符号常量:#define Mmax 120#define Nmax 3(1)学生信息学生信息包含:学号,姓名,三门课(语文,数学,英语)成绩和总分。(2)数据类型学号、姓名、课程三个信息为char型,课程分数和总分为float型,其余为int型。其中,假设学号有10位数字字符(注意此时要求存储空间要11个字节),例如表示入学年份为2011年,023是专业编码,102是学生在班级中的排号。2、测试数据测试数据在
3、定义数组时以初值形式提供,其中学生总成绩通过程序计算。学号姓名语文数学英语Zhang73.58567Li8391.587Cheng658278Wang718380.5但是,在用单链表处理学生信息时,要求直接从键盘上接收数据。3、程序功能(1)学生信息(学号、姓名、成绩等)的显示(数据结构要求用数组);(2)按姓名查找学生(数据结构要求用数组);(3)计算各门课程的平均分(数据结构要求用数组);(4)计算学生总成绩,并按总成绩进行排序(数据结构要求用数组);(5)按总成绩降序显示学生信息;(6)学生记录的插入;(7)用单链表(结构体)处理班级学生信息(学号、姓名、成绩等),包括学生信息输入(添加
4、)、学生信息浏览、学生总成绩计算和将学生信息存入文件。其中第(7)为选作内容,如果学生能够做出来,实验成绩应给予加分奖励。(二)程序总体设计1、数据结构依据给定的学生信息和数据类型,定义相应的数组和结构体类型分别如下: 课程名称定义为全局数组:char courseNmax50 = Chinese,Mathematic,English; 学生结构体类型如下:struct studentchar code11; /* 学号 */char name20; /* 姓名 */float scoreNmax; /* 各课程成绩 */float total; /* 总分 */struct student
5、*next;以下的数组或变量均为局部类型的(可放在main函数中加以定义): sno数组存储学生学号,可事先加入初始数据若干条:char snoMmax11=,; name数组存储学生姓名,可事先加入初始数据若干条; namesearch数组用于存储要查找的学生姓名:char nameMmax20=Zhang,Li,Cheng,Wang, namesearch20; score数组存储学生成绩;假设至多有M名学生,N门课程,可事先加入初始数据若干条; avecourse数组存储每门课程的平均分,实际计算时可事先初始化:float scoreMmaxNmax= 73.5,85,67, 83,91
6、.5,87,65, 82, 78,71,83,80.5;float avecourseNmax=0; tscore数组存储每位学生成绩的总分:float tscoreMmax=0; index数组为排名索引(约定为降序),存储每位学生总成绩在tscore 数组中的名次(即index0存放了总分第一的学生在tscore数组中的下标, index1存放了总分第二的学生在tscore数组中的下标,依次类推):int indexMmax; M为实际学生数; N为实际课程数; M、N的值要根据插入或删除学生记录情况加以适时修改:int M=4, N=3;2、模块划分依据程序的数据结构和功能,遵照“自顶向
7、下”原则,采用基于函数的逐步求精法,描述该程序的层次结构。该程序可按给定的程序功能直接描述模块层次结构。该程序要求保留一种排序状态:按总分排序。1-1计算所有课程的平均分1-2计算每位学生所修课程总分1-5按总分降序浏览全部学生信息1-6添加新的学生记录1-4浏览全部学生信息1-7用单链表进行班级成绩管理1-3按姓名查找学生记录main2-2输入和添加学生信息2-3浏览学生信息2-4保存学生信息2-1按总分递减排序图1 模块层次结构在C语言中,模块用函数实现,函数原型清单如下(注意:以下各函数原型中很多地方用到了指向一维数组的指针变量或指向二维数组的指针变量,也可以将之对应的定义为形参数组的形
8、式进行处理):1-1 计算所有课程的平均分void averagemark(float (*pscore)Nmax, float *pavecourse, int m, int n)1-2 计算每位学生所修课程总分void totalmark(float (*pscore)Nmax, float *ptscore, int m, int n)1-3 按姓名查找学生记录int retrievebyn(char (*pname)20, char *pnamesearch, int m)1-4 浏览全部学生信息void displaystu(char (*psno)11, char (*pname)
9、20, float (*pscore)Nmax, float *ptscore, int m, int n)1-5 按总分降序浏览全部学生信息void displaystusort(char (*psno)11, char (*pname)20, float (*pscore)Nmax, float *ptscore, int *pindex, int m, int n)1-6 添加新的学生记录void insert(char (*psno)11, char (*pname)20, float (*pscore)Nmax, float *ptscore, int *pm, int n)1-7
10、用单链表进行班级成绩管理void linkprocess()2-1 按总分递减排序void sortscore(float *ptscore, int *pindex, int m)2-2 输入和添加学生信息struct student *appendstuinfo(struct student *head)2-3 浏览学生信息void displaylist(struct student *head)2-4 保存学生信息void savestuinfo(struct student *head)模块层次结构只是确定模块之间的关系和函数原型,不是程序的执行步骤。程序总体框架是该程序的总体流程图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 综合性 实验 报告 参考 格式
限制150内