1、学生姓名_ 指导教师_ _1 系统分析1.1系统性能分析1、操作界面美观、友好,有必要的容错处理(如:能判定学号位数和只能由09数字字符组成、能判定合理的成绩0100等);2、查询应根据查询条件合理选择先进的查询方法3、排序算法要求采用堆排序实现;4、分数段统计结果要求保存在单独的文件中;1.2 系统功能需求分析本系统应具有以下功能:1、提供身份验证,和使用系统的权限设置、判定。2、(教师用户)能实现本班同学各学期各科成绩的录入、编辑,数据必须保存在文件中,以便反复使用。3、(学生用户)提供对学号或姓名,各学科成绩的查询。4、(学生和教师用户)能按各学期、各学科分数排序输出(每一科都要能排序输
2、出)。5、(教师用户)能统计各科成绩分数段的分布(60以下、6070、7080、8090、90100)情况,并输出。1.3 数据分析1.3.1.问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?(而不是怎么做?)限制条件是什么?1.3.2.逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图;1.3.3.详细设计:定义相应的存储结构并写出各函数的伪码算法。
3、在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。详细设计的结果是对数据结构和基本操作作出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架;1.3.4.程序编码:把详细设计的结果进一步求精为程序设计语言程序。同时加入一些注解和断言,使程序中逻辑概念清楚;1.3.5.程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;2
4、系统设计2.1 总体设计按系统分析的功能要求将系统划分为以下几个主要功能模块:1-学生记录录入 2-学生成绩查询:按学号查询、按姓名查询3-删除记录4-排序5-修改数据6-显示全部学生记录7-统计8-更换用户9-保存记录0-退出系统2.2 详细设计2.2.1 界面设计1、菜单设计菜单主要有学生成绩录入、成绩查询、成绩排序、更换用户设计时主要采用switch-case这个结构,从而选择调用相应的函数。子菜单也是利用这个原理方法设计的2、信息显示界面的设计信息显示主要用了for(;)循环,输出信息,并设置好输出格式,运行时如下:2.2.2 各功能模块的设计主函数主要作用是控制调用其它函数协调工作。
5、其流程图如下:查询窗口排序窗口 按总分排序修改窗口删除窗口统计窗口 统计结果2.2.2 系统编码设计3.1 预处理命令及结构体类型的声明#includestdio.hstdlib.hstring.hwindows.h#define M 1003.2 main函数void main() welcome(); IO_ReadInfo(); Login();3.3 程序代码void Login();/*/ typedef struct stu char StuID12; char StudName12; float Score5; float Av; float Sum; int tag;Stud;
6、Stud studM;int num=0;*计算总分*/float sum(Stud stud) int j; float sum=0; for(j=0;jint Student_SearchByIndex(char id) int i; for (i=0;iint Student_SearchByName(char name) if (strcmp(studi.StudName,name)=0) return -1;*解决学号冲突*int ConflictID(Stud stud,int n,char ID) for(i=0;i+) if(i!=n) if(strcmp(studi.StuI
7、D,ID)=0) return TRUE; break; if(i=num)return FALSE;*显示单条学生记录*void Student_DisplaySingle(int index) printf(n*学生成绩单*n);tt姓名:%st学号:,studindex.StudName,studindex.StuID);ntt计算机操作系统:%.2f,(&studindex)-Score0);ntt大学英语 :Score1);ntt基础会计 :Score2);ntt数据结构 :Score3);nttJava语言设计:Score4);ntt总 分:Sum);ntt平均分:nnnAv);*
8、显示学生信息*void Student_Display() n%-4s%st %-8s%-10s%-10s%-10s%-10s%-10s%-9sn,编号 学 号姓 名操作系统大学英语会计基础数据结构Java设计总分-n %-4d%st %-8s%-10.2f%-10.2f%-10.2f%-10.2f%-10.2f%-9.1fn,i+1,(&studi)-StuID,(&StudName,(&Score0,(&Score1,(&Score2,(&Score3,(&Score4,(&*插入学生信息*void Student_Insert() char c;nnnn while(1) printf(请输入学号: scanf(%s,&studnum.StuID); while(ConflictID(stud,num,studnum.StuID) getchar();学号已经存在2n请重新输入学号: scanf(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1