《C语言程序大作业.doc》由会员分享,可在线阅读,更多相关《C语言程序大作业.doc(7页珍藏版)》请在金锄头文库上搜索。
1、大连理工大学C程序设计(大作业)总结报告学生成绩录入处理系统 学生姓名: 罗 专业班级: 学 号 : 联系电话: Email : 完成日期: 2015年 5 月 29日一、 设计任务我的程序设计是一个学生成绩录入及处理的程序,该程序包括多种功能,能够满足大多数的学生成绩管理处理。主要能够实现的目的主要有:第一 学生姓名学号既包括三门成绩等信息的录入,并保存到文件d:/score.txt。第二 对每个学生的成绩进行求平均分及按平均分排序的数字处理。第三 对输入错误的学生信息加以修改重新排序保存。第四 增加学生信息,重新排序,加以保存。第五 按每个学生的平均分进行表格化和图形化处理。第六 实现某位
2、同学的信息查找,包括姓名,学号,每科成绩及平均分。以上功能全都可以实现,但是注意录入信息的要求,下面会有注释。二、 程序设计与实现1. 结构框图下图描述预期实现题目的设计方案或功能设计的组成结构。绘制成框图,如图所示是我设计的成绩信息管理程序设计的结构图示:学生成绩信息管理退 出查找学生信息查看结果查看结果增加录入数据修改录入错误信息学生成绩录入 按姓名查找并输出以平均分柱状图查看表格查看增加学生成绩信息重新排序并修改对输入有误信息修改按平均分排序后存储录入学生成绩2. 功能模块设计及其流程图(1) 数据描述与存储该学生信息统计系统设计一个全局结构体变量,将学生的姓名,学号,各科成绩及平均分保
3、存在结构体,然后供设计各种程序调用,以完成修改,增加,排序和数据显示的功能。学生成绩数据以二进制存储在d:/score.txt文件,可以利用程序随时进行增加和修改,同时它会自动排序。的描述题目所使用的核心数据,如;结构体类型定义及结构体成员含义说明。并说明所使用的数据存储方法,指定文件的路径和文件名,保存数据的格式和读数据的目的。(2) 结构体定义及介绍typedef struct rec /*定义一个结构体类型*/ char name20; /*第一个元素为学生姓名,20个字节*/ short number; /*第一个元素为学生学号,2个字节(输入注意不要超出)*/ short score
4、M; /*(M为全局3)依次定义三门科目分数:数,英,机*/ float average; /*定义浮点型平均数,保留2位小数,有函数计算赋值*/score;score stuN; /*(N为全局100)定义全局总数100个学生信息以录入*/(3)对于该程序的一点说明 1.学号在032768之间,请录入前对学号做好数据处理。2.该系统的成绩满分为一百分制,如有某科成绩不符合应提前处理。3.录入退出后,同样的数据不需两次输入,可直接运行程序处理及查看。4.保存退出后请勿删除文件,数据会丢失。5.柱状图的分辨率在十位数。(4) 主要函数功能基变量说明 项目 函数功能变量void input()输入
5、学生数据,保存在结构体int i,j。以循环将数据输入结构体void stdagy()求平均值,保存在结构体int i,j,sum。循环和求总分。void sort()对输入的数据进行排序i,j,结构体s,用冒泡法排序。void correct()对输错信息修改int i j,char c;循环和接受姓名续表void add()增加几位学生信息int i,j,m,循环和接受增加人数void savescore()保存输入的学生信息int i,char c;File *p;循环,保存viod loadscore()读入保存的学生信息int i,char c;File *p;循环,读入void b
6、rowse()按表格浏览学生信息int i,j;char title30;循环,标题void histograma_all()平均分柱状图浏览学生信息int i,j,a;循环,显示个数。void look_up()按姓名查找某人成绩信息int i,j,s;char c20;循环,姓名void main()调用函数和界面设计char a;接受命令附全局变量给所有函数使用score stuN,N,M;(4) 主要函数及其流程图此处描述所有自定义函数的函数名,函数功能,参数说明及算法描述。画出主要函数规范流程图。例如,将每个函数按如下方式的说明(strcom()流程图如图2所示)。函数原型1void
7、 correct() /*针对输错的学生信息进行重新输入*/假如某位学生信息输入错误,用此功能函数就可以用正确信息将错误信息覆盖,从而获得正确信息。没有参数传递,在函数中利用循环全部信息中查找出该学生,直接利用全局变量,将该学生新信息重输以达目的。函数原型2void add() /*增加信息*/如有想要输入新的学生或漏输,用此功能可以将某些学生的信息录入,当然,增加后总数不得超过100。没有参数的传递,直接在以前的数据后面增加,然后对所有学生排序,做到所有数据同等处理。 函数原型3void loadscore() /*加载学生信息*/这儿之所以提起这个函数,是因为我在刚开始理解利用过程中,有点
8、赘余出错。该函数是加载函数,如果你是输入后不关闭用时是可以不用这个函数的,因为在你关闭之前所有的信息依然保存在全局结构体内。然而,当你关闭以后再利用时必须要用这个函数将你写在文件中的信息读入结构体,再从结构体打印到屏幕。 函数原型4 . (5) 个性化设计 该函数不难,但方法思维较好,进行介绍和结构图示:函数原型 void histograma_all() /*以排序后的平均成绩按柱状图查看*/利用*的连续输入模拟柱状图,求十位数,按每增加1输出两个*,连续输入则组成柱状图。最后在柱状图后面打印学生平均成绩。开始int i,j;i=0;in; F Ti+a=(int)(stui.average
9、)/10)%10;输出2a个*printf(“%.2f”,stui.average);j+结束三、 设计效果下图是录入12个学生后显示的排名结果:下图是柱状图显示排名结果:下图是查找界面:四、 结束语该系统能改顺利完成学生成绩录入,学生成绩排名,学生增修后重新排名,在以表格和柱状图显示,和某同学的信息查询,能够以较好的界面和提示完成录入及数据处理,显示等。在录入,修改,增加,排名,保存,加载,浏览等一系列部分的小问题,但通过多次修改还是能找到错误所在,最终完善整个程序。但该程序也存在卓多局限,例如分数制,输入负数无错误提醒,平均分相同排序相同等,但是,只要继续修改,相信我能突破这些局限。12周课很快,程序这门课,应该以概念加实践平衡学习。最深的感触就是每次找到错误后的顿悟和你作业的成就感。