c语言程序设计综合性设计实验报告,《C语言程序设计》-综合性实验实验报告(参考格式...

《《C语言程序设计》-综合性实验实验报告(参考格式》由会员分享,可在线阅读,更多相关《《C语言程序设计》-综合性实验实验报告(参考格式(9页珍藏版)》请在人人文库网上搜索。

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 *nex。

5、t;以下的数组或变量均为局部类型的(可放在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.5,87,6。

6、5, 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语言中,模块用函数实现,函数原型清单如下(注意:以下各函数原型中很多地方用到了指向一维数组的指针变量或指向二维数组的指针变量,也可以将之对应的定义为形参数组的形式进行处理):1-。

8、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)20, float。

9、 (*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)模块层次结构只是确定模块之间的关系和函数原型,不是程序的执行步骤。程序总体框架是该程序的总体流程图。该程序不是顺序执。

11、行全部功能,而是在某一时刻有选择地执行一种或多种功能。因此,选用菜单方式是较佳的方案。三、小组各成员分工协作情况说明成员: 负责编写的函数是: 成员: 负责编写的函数是: 成员: 负责编写的函数是: 四、编程体会(或是对实验系统做进一步改进的思考)五、程序代码以下给出了程序的基本框架,请完成函数的功能及函数调用等程序代码的编写工作。#include #include #include #include #define Mmax 120 /*记录最大学生数*/#define Nmax 3 /*记录学生选课最大课程数目*/char courseNmax50 = Chinese,Mathematic。

12、,English;/以全局变量的形式给出各门课程的名称/*当使用单链表进行班级成绩管理时,使用如下的结构体类型*/struct studentchar code11; charname20; /* 姓名 */float scoreNmax; /* 各课程成绩 */float total; /* 总分 */struct student *next;/*以下是各函数的声明,其中下面的7个函数和main函数是首先要实现的*/void averagemark(float (*pscore)Nmax, float *pavecourse, int m, int n);void totalmark(flo。

13、at (*pscore)Nmax, float *ptscore, int m, int n);int retrievebyn(char (*pname)20, char *pnamesearch, int m);void displaystu(char (*psno)11, char (*pname)20, float (*pscore)Nmax, float *ptscore, int m, int n);void displaystusort(char (*psno)11, char (*pname)20, float (*pscore)Nmax, float *ptscore, int。

14、 *pindex, int m, int n);void insert(char (*psno)11, char (*pname)20, float (*pscore)Nmax, float *ptscore, int *pm, int n);void sortscore(float *ptscore, int *pindex, int m);/*以下各函数是用单链表进行班级成绩管理时,需要用到函数。实际编程时,先实现以上的7个函数及main函数,而对下面4个函数在具体编程时,可只给出相应空函数形式,等真正要实现时,再具体编写它们*/void linkprocess();/*这是函数的声明*/。

15、struct student *appendstuinfo(struct student *head);void displaylist(struct student *head);void savestuinfo(struct student *head);/*下面是main函数,但需要你完善函数的调用;如果变量不够用,请自行添加*/void main()/*sno数组存储学生学号,可事先加入初始数据若干条*/char snoMmax11=,;/*name数组存储学生姓名; namesearch数组用于存储要查找的学生姓名*/char nameMmax20=Zhang,Li,Cheng,Wa。

16、ng, namesearch20;/*score数组存储学生成绩;avecourse数组存储每门课程的平均分,实际计算时要初始化*/float scoreMmaxNmax= 73.5,85,67, 83,91.5,87,65, 82, 78,71,83,80.5, avecourseNmax=0; /*tscore数组存储每位学生成绩的总分*/float tscoreMmax=0;/*index数组为排名索引(约定为降序)*/int indexMmax;int M=4, N=3; /* M为实际学生数; N为实际课程数; M、N的值可根据情况修改;由赋初值情况知M=4,N=3*/int i,j。

17、;char c;while(1)system(cls);/*清屏操作*/printf(nt 这是班级成绩管理系统,请选择你要的操作:nn);printf(tt 1 : 计算所有课程的平均分n);printf(tt 2 : 计算每位学生所修各门课程的总分n);printf(tt 3 : 按姓名查找学生记录n);printf(tt 4 : 浏览全部学生信息n);printf(tt 5 : 按总分降序浏览全部学生信息n);printf(tt 6 : 添加(插入)新的学生记录n);printf(tt 7 : 用单链表进行班级成绩管理n);printf(tt 8 : 退出系统!n);printf(nn请。

18、输入命令: );scanf(%c,&c);/* 输入选择命令 */if(c=8)puts(n 谢谢使用!);break;/* 结束程序运行 */switch(c)case 1: /* 计算课程平均分 */;/* 调用averagemark函数,计算课程的平均分 */printf(n);for(j=0;jN;j+)/*显示每门课程的平均分*/printf(%s课程的平均分是: %.2f.n, coursej, avecoursej );getchar();getchar();break;case 2: /* 计算每位学生总分 */;/* 调用totalmark函数,计算每位学生总分 */prin。

19、tf(n);for(i=0;iM;i+)/*显示每位学生的总分*/printf(第%d名学生的总分是: %.2f.n, i+1, tscorei);getchar();getchar();break;case 3: /* 按学生的姓名寻找记录 */printf(请输入你想查找的学生姓名: );scanf(%s,namesearch); /* 调用retrievebyn函数 */if(i=-1)printf(学生%s不存在.n, namesearch);elseprintf(n你查找的学生记录是:n);printf(学号: %sn姓名: %sn,snoi, namesearch);for(j=0。

20、;jN;j+)/*显示每门课程成绩*/printf(%s课程成绩是: %.2f.n, coursej, scoreij );printf(所修课程总分是:%.2f.n, tscorei);getchar(); getchar();break;case 4: /* 浏览全部学生信息(包括学号、姓名、各门功课成绩和总成绩) */; /* 调用displaystu函数 */getchar(); getchar();break;case 5: /* 按总分降序浏览全部学生信息(包括学号、姓名、各门功课成绩和总成绩) */; /* 调用displaystusort函数 */getchar();getch。

21、ar();break;case 6: /*添加(插入)新的学生记录*/; /* 调用insert函数 */getchar();getchar();break;case 7: /*用单链表处理班级学生信息*/;/* 调用linkprocess函数 */getchar(); getchar();break;default: printf(nn输入的命令不对,请重新输入!n);getchar(); getchar();break;/*下面请你编写各功能模块对应的函数*/*下面linkprocess 函数是先用空函数实现的实例,它是利用单链表进行班级成绩管理时,需要用到函数,该函数会调用appendstuinfo、displaylist、savestuinfo三个函数,等真正实现时,删掉以下linkprocess空函数对应的两行代码,再具体编写此四个函数*/void linkprocess()/*这是空函数*/*下面请你编写函数声明中的前7个函数*。

CSU 大一上 C语言实验报告 (1)教材第2章编程题第2题:编写计算球体体积的程序。 说明:本题声明适当变量,用户键入数据,运算并输出结果,较简单。 (2)教材第2章编程题第8题:编写程序计算第一、第二、第三月还贷后剩余贷款金额。 说明:本题要求用户输入总额、利率、每月还贷净额,输出每月剩余,对输入输出、类型定义考查。 (3)教材第3章编程题第2题:编写程序实现对用户输入的产品信息进行格式化。 说明:本题考查格式化输入输出、转义字符的运用。 (4)教材第4章编程题第4题:编写程序实现将输入的整数按八进制输出。 说明:本题重在考查简单的运算符和表达式运用。 (5)用户输入一个三位数,输出各位数字之和。 说明:本题重在考查如何从一个整数中取出每一个数字。 (6)教材第5章编程题第5题:编写程序计算用户输入所得额的税金。 说明:本题考查简单的选择结构。 (7)教材第5章编程题第11题:编写程序实现将用户输入的两位数转化为英文。 说明:本题考查switch语句的应用。 (8)教材第6章编程题第8题:编写程序显示单月日历,用户指定这个月的天数和该月起始日是星期几。 说明:本题考查循环结构和选择结构的综合应用,判断是否一个星期最后一天,换行符。 (9)教材第6章编程题第11题:编程序实现利用无穷级数法估计e的值。 说明:本题考查根据公式设计循环结构并实现。 (10)因子之和等于其本身的数称为完数,如28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28为完数。编程序找出2~5000中的完数。 说明:本题利用变量i在2~5000中变化,判断其是否是完数。 (11)教材第7章编程题第12题:编程计算从左至右求值的表达式的值。 说明:本题考查对运算符和操作数的判断。 (12)教材第7章编程题第14题:编程序用牛顿计算法计算浮点数平方根。 说明:本题考查对循环结构的掌握,对表达式的合理运用,对基本类型的理解。 (13)教材第8章编程题第14题:编写程序颠倒句子中单词的顺序。 说明:本题考查对字符数组的处理,对一些循环选择结构的理解。 (14)教材第8章编程题第15题:编写程序实现凯撒密码加密。 说明:本题考查对字符数组的掌握,对字符处理的理解。 (15)编程序实现将用户输入的数字字符串转化为整数输出。 说明:本题考察对字符、整数关系的掌握与理解,对循环结构的熟练运用。 (16)教材第9章编程题第1题:编写选择排序的函数,并递归调用。 说明:本题利用函数简化程序、使得结构更清晰、熟练掌握。 (17)教材第9章编程题第7题:编写计算xn的函数。 说明:本题考查函数定义、调用,并初步考察递归运用。 (18)教材第10章编程题第6题:编写程序实现逆波兰运算。 说明:本题考查对程序每部分的理解、掌握,外部、内部变量,主函数,小函数的编写与应用。初步了解栈的一些实现函数。 (19)编程序找出2~5000中满足条件的数x:x是素数且x的每位数字是素数、每位数字之和是素数,如23、223、2333等。 说明:本题考查函数方法与循环选择结构的综合运用。 (20)教材第11章编程题第3题:用指针变量编写简化一个分数的函数。 说明:本题用来解决函数无法传回传递的实际参数,指针变量。 (21)教材第12章编程题第2题:编写函数读入用户输入的一条消息,检测是否是回文,分别用数组、指针来解决。 说明:本题可以体会到数组与指针的特点,利用指针的便利。 (22)利用指针编写程序,实现从键盘键入字符串,将此字符串从m个字符开始的n个字符复制成另一个字符串。 说明:本题用指针指向字符串,进行跟踪和复制操作。 (23)教材第13章编程题第5题:编写程序实现对输入命令行参数求和。 说明:本题加深对命令行参数的理解、考查知识的综合应用。 (24)教材第16章编程题第5题:用结构变量解决搜索离用户输入时间最近的航班信息,并输出。 说明:本题考查结构与数组的结合运用,有助于理解结构。首先,定义一个存储起飞、到达时间的结构,再定义一个该类型的数组,循环搜索即可。 (25)教材第17章编程题第5题:用指针数组存储键入的字符串,对数组排序。 说明:本题应用动态分配内存、数组排序,考查综合能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值