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