“基于链表学生成绩管理系统”实验报告

  • 格式:pdf
  • 大小:456.42 KB
  • 文档页数:29

子菜单





退








图 2-1-2-1 子菜单模块图
2.2.子程序
1.procedure Inputstuinfo(var head:pointer); 2.procedure Outputstuinfo(var head:pointer); 3.procedure Sortinfo(var head:pointer); 4.procedure Sortinfotwo(var head:pointer); 5.procedure Agesexsearch(var head:pointer); 6.procedure Agesexsearch(var head:pointer);
num:string[5]; name:string[15]; sex:string[6]; bir:Date; mathe:integer; chinese:integer; english:integer; average:real; fig:real; next:pointer; End; text=file of student;
write('出生日期:day :');readln(p^.bir.day);
write('
month:');readln(p^.bir.month);
write('
year :');readln(p^.bir.year);
write('数学:');readln(p^.mathe);
write('语文:');readln(p^.chinese);
3.3.按成绩排序输出学生信息
按成绩排序输出学生信息时,采用的插入法排序,因为建立的是不带头结点 的单链表,所以插入排序就要考虑具体插入的位置,将原链表依次拆开,建立新 的有序链表,遍历原链表如果新链表头结点地址域为空则将结点直接插入其后并
将其地址赋值为空,接下来,将新的结点与已经插入链表的数值比较如果有比它 值小的则将其插入该结点之前,如果没有则将其插入到链表尾部,并将其地址赋 值为空。
7. 源代码清单
{***************************************************}
{* 程序名 : StudentManage
*}
{* 版本 : V 3.0 (链表)
*}
{* 功能 : 针对学生成绩开发的管理系统,可以实现学 *}
{*
生信息的增、删、改、排序、等功能
//声明文件类型
var choice:array [1..6] of integer; head,p:pointer;
//定义一个数组,方便菜单选择
stuFile:text;
{*****************************************}
{function :输入学生信息
}
{parameter :head 指针变量
同样,对于我自身,我也需要不断的进步,不断地完善自己的各项技能,不 断地学习新的知识才能让自己不掉队,只有提升自己才能达到更高巅6. 参考文献
[1] 赵致琢,刘坤起,张继红.高级语言程序设计[M].北京:国防工业出版社,2010,7. [2] 赵占芳,刘坤起.高级语言程序设计实验教程[M].北京:电子工业出版社,2014,9.
2.3.主界面和子菜单截图
主菜单如图 2-3-1 所示。
子菜单如图 2-3-2 所示。
图 2-3-1 主菜单截图
图 2-3-2 子菜单截图
3. 详细设计
3.1.数据结构设计
本系统存储学生信息采用是记录类型,具体数据结构如下: Type
pointer=^student; Date=Record
day:1..31; month:1..12; year:1970..2014; End; student=Record
procedure Outputstuinfo(var head:pointer);
begin p:=head; writeln; while p <> nil do begin writeln('--------------------------'); writeln('学号:',p^.num); writeln('姓名:',p^.name); writeln('性别(male/female):',p^.sex); writeln('出生日期:',p^.bir.year,'年',p^.bir.month,'月',p^.bir.day,'日'); writeln('数学:',p^.mathe,'分'); writeln('语文:',p^.chinese,'分'); writeln('英语:',p^.english,'分'); writeln('平均分:',p^.average:6:2,'分'); writeln('--------------------------'); p:=p^.next; end;
write('英语:');readln(p^.english);
p^.average:=(p^.mathe+p^.chinese+p^.english)/3;
//计算平均分
if head=nil then
head:=p
else
tail^.next:=p;
tail:=p;
writeln;
write('学号:');readln(num);
2. 概要分析
2.1. 功能概要
2.1.1.主菜单
主菜单包括学生管理系统的基本功能,主要功能如图 2-1-1-1 所示。
主菜单
信息录入 保存文件 读出文件
排序 查找
增加信息 删除信息 修改信息
退出 系统
图 2-1-1-1 主菜单模块图
2.1.2.二级菜单
修改的子菜单包括姓名,出生日期,数学,英语,语文,退出等选项,具体 如图 2-1-2-1 所示。
4. 测试运行
测试运行 1:主菜单界面运行如图 4-1 所示.
图 4-1 主菜单截图
测试运行 2:英语成绩由高到低排序运行如图 4-2 所示。
图 4-2 英语排序输出截图
测试运行 3:按年龄性别查找运行如图 4-3 所示。
图 4-3 按年龄性别查找截图
测试运行 4:查找数学最高分运行如图 4-4 所示。
1.2.数据需求
该学生管理系统所需要的数据有学生学号,姓名,性别,出生日期,数学, 语文,英语和平均分等数据。
1.3.功能需求
该学生成绩管理系统必须基于 delphi 编译环境采用 pascal 语言开发研制,针 对学生成绩及其数据特点,可以全面实现对学生成绩的插入、查询、修改、排序、 删除和输出等功能。此系统可以大大减轻了工作量,减少人为的工作失误,全面 提高学生成绩管理的效率,从而使学校对于学生成绩的管理水平和技术术水平跃 上一个新的台阶。
此外,实验中我还积极与同学讨论,发现错误的共同点,并尽自己最大的力 量解决问题,这也是我自身学习能力的一种进步。
5.2.展望
这只是一个十分简单的管理系统,以后我还应该更多的学习知识来开发系统 的更多功能,比如学生与老师的分开管理,增加用户名与密码登陆功能等等,增 加考试题目的展示,对于错题的整理等等,只有不断地进步系统才能更加完善, 才能让用户有更好的体验。
writeln;
write('学号:');
readln(num);
while num <> '0' do
//循环输入学生信息
begin
new(p);
//新建结点
P^.num:=num;
write('姓名:');readln(p^.name);
write('性别(male/female):');readln(p^.sex);
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深 刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机 应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟 的优点。这些优点能够极大地提高管理者管理的效率,也是学校走向科学化、正 规化管理,与世界接轨的重要条件。因此,开发设计这样一套学生成绩管理软件 成为很有必要的事情。
7.procedure Modifyinfo(var head:pointer); 8.procedure Changefig; 9.procedure Deleteinfo(var head:pointer); 10.procedure Increaseinfo(var head:pointer); 11.procedure Savetofile(var stuFile:text;var head:pointer); 12.procedure Outfromfile(var stuFile:text;var head:pointer);
图 4-4 数学最高分截图
测试运行 5:修改学生姓名运行如图 4-5 所示。
图 4-5 修改学生信息截图
测试运行 6:增加学生信息运行如图 4-6 所示。
图 4-6 增加学生信息截图
测试运行 7:删除学生信息运行如图 4-7 所示。
图 4-7 删除学生信息截图
5. 总结与展望
5.1.总结