目的:
进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,针对数据结构中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
成绩比例:平时成绩40% 期末成绩60%
提交的材料:
(1)纸质的实训结业报告一份。
(2)将源程序、实训结业报告的电子文档放在自己学号姓名所命名的文件夹下,并上传到ftp中。
实训题目: 一、员工管理系统
1. 问题描述
每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。系统能够完成员工信息的查询、更新、插入、删除等功能。
2.基本要求
(1) 查询:按特定条件查找员工。
(2) 更新:按编号对某个员工的某项信息进行修改。 (3) 插入:加入新员工的信息。
(4) 删除:按编号删除已离职的员工的信息。
二、图书管理系统(用双向链表实现)
1.问题描述
设计一个简单的图书管理系统,提供一个简单的人机界面,用户可以根据提示输入操作项,调用对应函数完成系统提供的管理功能。
2.基本要求
(1)用户根据提示输入书籍信息,并存储; (2)可浏览书籍的信息;
(3)可根据用户输入的书名等信息从系统中查询,如果没有查询到任何信息,系统给出提示;
(4)可根据用户输入的书名等信息,将其从系统中删除。
三、学生成绩管理系统
1.问题描述
设计一个简单的学生成绩管理系统,可录入、保存一个班级学生多门课程的成绩,并对成绩进行分析。
2.基本要求
(1)输入各学生多门课程的成绩,并存储; (2)按各门课程成绩排序,并生成相应的文件输出;
(3)计算每人的平均成绩,按平均成绩排序,并生成文件; (4)求出各门课程的平均成绩、最高分、最低分、不及格人数、60-69分人数,70-79分人数、80-89分人数、90分以上人数;
(5)根据姓名或学号查询某人的各门课成绩,重名情况也能处理。
四、一元稀疏多项式简单计算器
1.问题描述
设计一个一元稀疏多项式简单计算器。 2.基本要求
(1)输入并建立多项式;
(2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,…,cn,en,其中n是多项式的项数,ci,ei分别是第i项的系数和指数,序列按指数降序排列;
(3)多项式a和b相加,建立多项式a+b; (4)多项式a和b相减,建立多项式a-b; (5)计算多项式在x处的值。
3.实现提示:用带表头结点的单链表存储多项式,多项式的项数存放在头结点中。
五、内部排序算法的性能分析
1.问题描述
设计一个测试程序,比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。
2.基本要求
(1)对冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序算法进行比较;
(2)待排序表的表长不小于100,表中数据随机产生,至少用5组不同的数据作比较,比较指标有:关键字比较次数和关键字移动次数(关键字交换记为3次移动);
(3)输出比较结果。
六、电话号码查询系统
1.问题描述
设计散列表实现电话号码查找系统。 2.基本要求
(1)设每个记录有下列数据项:电话号码、用户名、地址; (2)从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;
(3)采用一定的方法解决冲突; (4)查找并显示给定电话号码的记录; (5)查找并显示给定用户名的记录。
七、教学计划编制问题
1.问题描述
大学的每个专业都要制订教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值相等。每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。试在这样的前提下设计一个教学计划编制程序。
2.基本要求
(1)输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的课程号;
(2)允许用户指定下列两种编排策略之一:一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中;
(3)若根据给定的条件问题无解,则报告适当的信息;否则,将教学计划输出到用户指定的文件中。
八、停车场管理
1.问题描述
设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道
上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。
2.基本要求
以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表实现。
3.测试数据
设n=2,输入数据为:(‘A’,1,5),(‘A’,2,10),(‘D’,1,15),(‘A’,3, 20), (‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0)。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,其中,‘A’表示到达;‘D’表示离去,‘E’表示输入结束。
4.实现提示
需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有
序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。
九、编写一个杂货店排队模拟程序。
该模拟程序中包含多个队列,可以使用队列数组来模拟这些队列。假设杂货店共5条收银线,顾客可随机进入支付。顾客会进入最短的队伍,如果队伍一样长,那么选择最靠近的一个队伍。每次交易完成所消耗的时间也是随机的。
完成一些额外工作,扩展杂货店排队程序,使得客户可以: 如果所有队伍都一样长,可以选择不排队。 在给定的时间间隔内,检查另一个队伍是否更短。 如果另一个队伍更短,则切换队伍。
十、哈夫曼编码/译码器
1.问题描述:
设字符集为26个英文字母,其出现频度如下表所示。先建哈夫曼树,再利用此树对报文“I love my family”进行编码和译码。
字符 频度 字符 频度 字符 频度
空格 186 j 1 t 80
a 64 k 5 u 23
b 13 l 32 v 8
c 22 m 20 w 18
d 32 n 57 x 1
e 103 o 63 y 16
f 21 p 15 z 1
g 15 q 1
h 47 r 48
i 57 s 51
2.基本要求
(1)初始化。从终端读入字符集大小n及n个字符和m个权值,建立哈夫曼树。
(2)编码。利用已建好的哈夫曼树,对正文进行编码。 (3)解码。利用已建好的哈夫曼树,将代码进行译码。 (4)打印代码。
因篇幅问题不能全部显示,请点此查看更多更全内容