学生成绩管理系统报告.docx

上传人:sccc 文档编号:4890867 上传时间:2023-05-21 格式:DOCX 页数:40 大小:411.88KB
返回 下载 相关 举报
学生成绩管理系统报告.docx_第1页
第1页 / 共40页
学生成绩管理系统报告.docx_第2页
第2页 / 共40页
学生成绩管理系统报告.docx_第3页
第3页 / 共40页
学生成绩管理系统报告.docx_第4页
第4页 / 共40页
学生成绩管理系统报告.docx_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《学生成绩管理系统报告.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统报告.docx(40页珍藏版)》请在三一办公上搜索。

1、链表的学生管理系统报告1. 需求分析1.1 开发背景学生信息管理系统是针对学校人事处的大量业务处理工作而开发的管理软件,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除等。学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。随着科学技术的不断提高,计算机科学与技术日渐成熟,计算机应用的普及已进入人类社会生活的各个领域,并发挥着越来越重要的作用。这种传统的手工管理模式必然被以计算机为物质基础的信息管理方法所取代。使用计算

2、机对学生档案进行管理,有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要条件,更是各个高等院校与世界接轨的重要条件。1.2数据需求学生管理系统能实现对大量的学生信息的管理处理,其中记录了学生的学号,姓名,性别,出生日期,各科成绩等。首先学号为字符型长度为十七位,姓名为字符串型长度为十七位,性别为字符型,female为女,male为男,出生年月日为整型,例如出生年为1995,出生月为6,出生日为30,各科成绩为实型。1.3功能性需求本程序可对学生管理系统的学生信息进

3、行增、删、改、查、排序、统计、保存入文件和从文件读取数据等操作。2. 概要设计2.1流程程序执行的命令包括:(1)录入(2)读取信息(3)存入数组(4)平均分或某课成绩排序(5)姓名或学号顺序输出(6)按照年龄和性别查找(7)查找平均分排名及成绩(8)查找某课最高成绩(9)查找某课成绩分数段内(10)统计人数及百分比(11)修改学生信息(12)删除学生信息(13)插入学生信息(0)退出系统菜 单信息查询统计信息录入输出信息维护更新信息修改信息删除信息增加信息录入信息读取入放入数组排序查找图2-1 流程图图2-2 主菜单2.2测试数据学号 姓名性别出生日期数学成绩语文成绩英语成绩1001sufe

4、male199506073456771002kaimale199405097090891003taofemale199304188090701004beimale1995070799100791005bingmale199609099090901006yafemale199308086050661007geefemale1995062488991001008fanfemale199401016655401009lilimale199406309084621010sangmale1994051570801003. 详细设计 3.1平均分或某课成绩输出学生信息分程序菜单选项数学、语文、英语和平均分

5、,选择按哪个科目进行排序,排序时用的是冒泡排序,依据选择的学科成绩由大到小排序,排序好了就将信息输出出来。3.2查找某课最高成绩注意最高成绩可能不止一人。该分程序建立在选择科目对成绩进行从大到小排序的基础上。首先在分程序菜单中选择要查询的科目,然后对该科目的成绩进行从大到小的排序,令第一个为最高成绩,输出学生信息,判断接下来的成绩是否等于最高成绩,若等于最高成绩输出该学生信息。3.3删除学生信息输入需删除的学生学号,输出该学生信息,使当前信息开始被下一学生信息覆盖,存储信息个数减少。3.4插入学生信息 学生信息存储个数增加,将新增信息保存至数组最后。4. 测试运行测试运行1:主菜单界面 图4-

6、1 测试运行2:录入学生信息图4-2测试运行3:读取信息图4-3测试运行4:平均分或某课成绩排序输出图4-4平均分排序输出 测试运行5:姓名或学号顺序输出图4-5 按姓名查找 测试运行:6:按年龄和性别查找图4-6 按年龄查找测试运行7:查找平均分排名及成绩图4-7 测试运行8:查找某课最高成绩图4-8测试运行9:查找某课成绩分数段内图4-9 测试运行11:修改学生信息图4-11 测试运行12:删除学生信息图4-12 测试运行13:插入学生信息图4-13测试运行14:退出系统图4-145. 总结展望5.1总结通过对学生管理系统的设计,我体会到了高级语言的灵活性。并且通过这个作业我了解到自己所掌

7、握的知识是远远不够的!要编出完美的代码需要自己下去看各种参考资料加上自己的思考。5.2展望 该系统还可在多方面加以拓展: (1)登录,可设置用户名和密码。(2) 插入学生信息时,若已有相同的学号存在,则不允许再插入相同的学号的学生信息。(3) 修改学生信息时,可提示,让用户选择要更改姓名、还是学号、还是成绩。而不要默认让用户把这个人的信息全部重新输入。修改学号时同样要注意不能出现重复学号(4) 还可在录入学生信息时增加学院、专业、民族等信息。6. 参考文献1赵致琢.刘坤起等,高级语言程序设计,国防工业出版社,2010年2 赵占芳.刘坤起,高级语言程序设计实验教程,电子工业出版社,2014年7.

8、 源代码清单* Auther:sunxiaoying Number:413109030111 Name:Studentmanagement Function:学生成绩管理系统(数组) Date:2014_12_25 *program stumanagement;$APPTYPE CONSOLEuses definition in definition.pas, inputoutput in inputoutput.pas, sortfind in sortfind.pas, service in service.pas, menu in menu.pas; begin /主程序 mainmen

9、u; readln;end. /定义unit definition;interfacetype subject=(math,chinese,english,average); /成绩类型 inf=(name,number); student=record infor:arrayname.numberof string17; sex:string10; year:integer; month:integer; day:integer; score:arraymath.average of real; end; stuarr=array 1.30of student ; sfile=file of

10、 student;Var stu:stuarr; stufile:sfile; /文件变量 n,result,counter:integer;implementationEnd./菜单 unit menu;interface uses definition,inputoutput,sortfind,service; procedure mainmenu;implementationprocedure mainmenu;begin /主程序 writeln(*欢迎使用学生成绩管理系统*); while true do begin writeln(*); writeln( ); writeln(

11、菜单: ); writeln( ); writeln( 1 录入 ); writeln( 2 读取信息 ); writeln( 3 存入数组 ); writeln( 4 平均分或某课成绩排序 ); writeln( 5 姓名或学号顺序输出 ); writeln( 6 按照年龄和性别查找 ); writeln( 7 查找平均分排名及成绩 ); writeln( 8 查找某课最高成绩 ); writeln( 9 查找某课成绩分数段内 ); writeln( 10 统计人数及百分比 ); writeln( 11 修改学生信息 ); writeln( 12 删除学生信息 ); writeln( 13

12、插入学生信息 ); writeln( 0 结束 ); writeln(请用户输入选项:); readln(n); case n of 1: savetofile(stufile); 2: outfromfile(stufile); 3: setuparray(stufile,stu,counter); 4: sortbyscore(stu); 5: sortbyorder(stu); 6: findbyns(stu,counter); 7: findbyranking(stu,counter); 8: findbyhighest(stu); 9: findbyrange(stu); 10: c

13、ount(stu,counter); 11: revise(stu,counter); 12: delete(stu,counter); 13: append(stu,counter); /追加 0:begin ending; break; end; end; end; readln;end;End./录入输出 unit inputoutput;interface uses definition; procedure savetofile(Var stufile:sfile); procedure outfromfile(Var stufile:sfile); procedure setupa

14、rray(var stufile:sfile;var stu:stuarr;var counter:integer);implementation功能:将输入的学生信息保存到文件中 便于多次运行 参数:变参stufile表示学生信息保存地址 procedure savetofile(Var stufile:sfile);Var i,n:integer; sum:real; s:student;begin TODO -oUser -cConsole Main : Insert code here assign(stufile,student.dat); rewrite(stufile); /以写

15、状态打开文件 writeln(请输入班级人数:); readln(n); writeln(请输入学生的信息); writeln(提示:女:female 男:male); for i:=1 to n do begin sum:=0; writeln(学号:); readln(s.infornumber); writeln(姓名:); readln(s.inforname); writeln(性别:); readln(s.sex); writeln(出生日期:); readln(s.year); readln(s.month); readln(s.day); if 2014-s.year30 th

16、en /判断日期是否正确 begin writeln(年龄超范围 输入错误 请重新输入学生信息); readln(s.year,s.month,s.day); end else begin case s.month of 1,3,5,7,8,10,12:result:=31; 4,6,9,11:result:=30; 2:if (s.year mod 4=0) and (s.year mod 1000) or (s.year mod 400=0) then result:=29 else result:=28; end; if s.dayresult then begin writeln(输入

17、期有误 请重新输入) ; readln(s.year,s.month,s.day); end; end; writeln(数学:); readln(s.scoremath); sum:=sum+s.scoremath; writeln(语文:); readln(s.scorechinese); sum:=sum+s.scorechinese; writeln(英语:); readln(s.scoreenglish); sum:=sum+s.scoreenglish; writeln(平均分:); s.scoreaverage:=sum/3; writeln(s.scoreaverage:4:0

18、); write(stufile,s); end; close(stufile);end;功能:非首次运行 从文件中读取已保存学生信息 参数:变参stufile表示学生信息保存地址 procedure outfromfile(Var stufile:sfile);Var s:student;begin assign(stufile,student.dat); reset(stufile); writeln(学号 姓名 性别 出生日期 数学 语文 英语 平均分); writeln(_); while not eof(stufile) do begin read(stufile,s); write

19、ln(s.infornumber,#9,s.inforname,#9,s.sex,#9,s.year:8,s.month:4,s.day:4,s.scoremath:8:0,s.scorechinese:8:0,s.scoreenglish:8:0,s.scoreaverage:8:0); end; close(stufile);end;功能;将原始数据保存到数组stu中 参数:变参stufile表示学生信息保存地址,变参stu表示数组,变参counter表示存储学生信息个数procedure setuparray(var stufile:sfile;var stu:stuarr;var co

20、unter:integer);begin counter:=0; /数组存储学生信息个数 assign(stufile,student.dat); reset(stufile);/以读状态打开文件 while not eof(stufile) do begin counter:=counter+1; read(stufile,stucounter);/每读出一个数据,放入数组中 end; close(stufile);end;End./排序查找统计 unit sortfind;interface uses definition; procedure sortbyscore(var stu:st

21、uarr); procedure sortbyorder(var stu:stuarr ); procedure findbyns(var stu:stuarr;var counter:integer); procedure findbyranking(var stu:stuarr;var counter:integer) ; procedure findbyhighest(Var stu:stuarr); procedure findbyrange(var stu:stuarr); procedure count(var stu:stuarr;var counter:integer);imp

22、lementation功能:按照选项对学生信息进行从高到低排序 参数:变参stu表示数组,枚举变量sortchoice1表示选择的排序方式,变量counter表示数组存储学生信息个数 procedure sort1( var stu:stuarr; sortchoice1:subject;var counter:integer);var i,j:integer; temp:student;begin for i:=1 to counter-1 do for j:=1 to counter-i do begin if stuj.scoresortchoice1stuj+1.inforsortch

23、oice2 then begin temp:=stuj; stuj:=stuj+1; stuj+1:=temp; end; end; writeln(排序结果为:); writeln(学号 姓名 性别 出生日期 数学 语文 英语 平均分); writeln(_); for i:=1 to counter do begin writeln(stui.infornumber,#9,stui.inforname,#9,stui.sex,#9,stui.year:8,stui.month:4,stui.day:4,stui.scoremath:8:0,stui.scorechinese:8:0,stu

24、i.scoreenglish:8:0,stui.scoreaverage:8:0); end;end;功能:按照姓名或者学号排序输出 参数:变参stu表示数组procedure sortbyorder(var stu:stuarr );var sortnumber:integer;begin writeln(选择排序方式:); writeln(1 姓名); writeln(2 学号); readln(sortnumber); case sortnumber of 1: sort2(stu, name, counter); 2: sort2(stu, number, counter); end;

25、end;功能:按照年龄或性别查找学生信息 参数:变参stu表示数组,变量counter表示数组存储学生信息个数procedure findbyns(var stu:stuarr;var counter:integer);var x,findnumber,i:integer; y:string;begin writeln(选择查找方式:); writeln(1 年龄 ); writeln(2 性别); readln(findnumber); case findnumber of 1: begin write(请输入出生年份:); readln(x); writeln(学号 姓名 性别 出生日期

26、数学 语文 英语 平均分); for i:=1 to counter do begin if x=stui.year then begin writeln(stui.infornumber,#9,stui.inforname,#9,stui.sex,#9,stui.year:8,stui.month:4,stui.day:4,stui.scoremath:8:0,stui.scorechinese:8:0,stui.scoreenglish:8:0,stui.scoreaverage:8:0); break; end; end; end; 2: begin write(请输入性别:); rea

27、dln(y); writeln(学号 姓名 性别 出生日期 数学 语文 英语 平均分); for i:=1 to counter do begin if y=stui.sex then begin writeln(stui.infornumber,#9,stui.inforname,#9,stui.sex,#9,stui.year:8,stui.month:4,stui.day:4,stui.scoremath:8:0,stui.scorechinese:8:0,stui.scoreenglish:8:0,stui.scoreaverage:8:0); break; end; end; end

28、; end;end;功能:查找平均分排名及成绩 参数:变参stu表示数组,变量counter表示数组存储学生信息个数 procedure findbyranking(var stu:stuarr;var counter:integer) ;var i,j:integer; temp:student; num:string;begin writeln(请输入需要查找平均分排名和成绩的学生学号:); readln(num); for i:=1 to counter-1 do for j:=1 to counter-i do begin if stuj.scoreaveragestuj+1.scoreaverage then begin temp:=stuj; stuj:=stuj+1; stuj+1:=temp; end; end; writeln(平均分总排名:); writeln(学号 姓名 性别 出生日期 数学 语文 英语 平均分); writeln(_); for i:=1 to counter do begin writeln(stui.infornumber,#9,stui.inforname,#9,stui.sex,#9,stui.year:8,stui.month:4,stui.day:4,stui.sco

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号