12级课程设计题目及要求
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12级数据结构课程设计题目及要求
一、课程设计目的
《数据结构》是计算机专业一门重要的专业技术基础课程,是一门关键性核心课程。
《数据结构》课程的目标是使学生学会分析研究计算机加工对象的特性,选择合适的数据结构和存储表示,以及编制相应的实现算法,培养和提高学生程序设计的能力。
《数据结构》课程也是一门实践性较强的课程,设置实践环节是十分重要的。
本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。
二、课程设计内容
题目一:仓库管理系统(线性表应用)
[问题描述]
建立一个仓库管理程序,可以按顺序和货物名称查询仓库存储情况,也可以增加、修改或删除货物以及建立新的仓库存储系统。
[实现提示]
可以采用双向链表的存储结构,如可定义如下的存储结构:
typedef struct dnode /*定义单向链表结构体*/
{int number; /*货物编号*/
char name[max]; /*货物名称*/
int counter; /*货物数量*/
struct dnode *prior,*next; /*定义指针*/
}dlnode;
题目二:学生成绩管理系统(线性表应用)
[问题描述]
提供身份验证,和使用系统的权限设置、判定。
教师用户能实现本班同学各学期各科成绩的录入、编辑,数据必须保存在文件中,以便反复使用。
学生用户提供对学号或姓名,各学期、各学科成绩的查询。
学生和教师用户能按各学期、各学科分数排序输出。
教师用户能统计各科成绩分数段的分布,并输出。
[实现提示]
1、操作界面美观、友好,有必要的容错处理。
2、分数段统计结果要求保存在单独的文件中。
题目三:员工通讯录管理系统(线性表应用)
[问题描述]
建立一个通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。
其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。
[实现提示]
可以采用单链表的存储结构,如可定义如下的存储结构:
typedef struct { /*员工通讯信息的结构类型定义*/
char num[5]; /*员工编号*/
char name[10]; /*员工姓名*/
char phone[15]; /*办公室电话号码*/
char call[15]; /*手机号码*/
/*通讯录单链表的结点类型*/
typedef struct node
{ DataType data; /*结点的数据域*/
struct node *next; /*结点的指针域*/
}ListNode,*LinkList;
设计功能流程如下:
1)启动运行程序显示菜单界面。
以菜单形式列出各个功能,及对应的序列关键字。
2)提示输入所要进行插入、查找、删除、修改或遍历操作的序号并进行确认。
3)进入所选功能模块根据提示做进一步插入、查找、删除、修改或遍历的操作,并进行确认。
4)确认后返回菜单界面,然后回到第二步或者选择退出,并进行确认。
题目四: 哈夫曼编码/译码系统(树应用)
[问题描述]
利用哈夫曼编码进行通信,可以压缩通信的数据量,提高传输效率,缩短信息的传输时间,还有一定的保密性。
现在要求编写一程序模拟传输过程,实现在发送前将要发送的字符信息进行编码,然后进行发送,接收后将传来的数据进行译码,即将信息还原成发送前的字符信息。
[实现提示]
在本例中设置发送者和接受者两个功能,
发送者的功能包括:
①输入待传送的字符信息;
②统计字符信息中出现的字符种类数和各字符出现的次数(频率);
②根据字符的种类数和各自出现的次数建立哈夫曼树;
③利用以上哈夫曼树求出各字符的哈夫曼编码;
④将字符信息转换成对应的编码信息进行传送。
接受者的功能包括:
①接收发送者传送来的编码信息;
②利用上述哈夫曼树对编码信息进行翻译,即将编码信息还原成发送前的字符信息。
从以上分析可发现,在本例中的主要算法有三个:
(1)哈夫曼树的建立;
(2)哈夫曼编码的生成;
(3)对编码信息的翻译。
题目五:家谱管理系统(树应用)
[问题描述]
家谱是记载各个姓氏家族子孙世系传承之书,为了管理家谱要求编写程序完成如下功能:(1)家谱树的建立;
(2)家族成员信息的录入;
(3)删除家族成员(若其还有后代,则一并删除);
(4)分别按出姓名、出生日期查询成员信息;
(5)修改成员信息;
(6)统计成员人数;
(7)输出全体成员;
[实现提示]
家谱从形状上看像一棵倒长的树,家族中的成员之间存在着一对多的层次结构关系,所以用树结构来
表示家谱比较合适。
可以采用孩子兄弟链表表示法作为其存储结构,左指针指向家庭成员的第一个孩子,右指针指向其兄弟。
系统功能的实现涉及到树以孩子兄弟链表表示形式的建立、树中结点的插入、删除、查找、统计结点数及遍历等操作,可以通过运用本章学过的知识来完成。
题目六:所有顶点对最短路径问题(图的应用)
[问题描述]
医院选址:4个村庄之间的交通图如图1所示,村庄之间的距离为图中各边上的权值。
现在要从这4个村庄中选择一个村庄建一所医院,问这所医院应建在哪个村庄,才能使离医院最远的村庄到医院最近。
图1村庄交通图
[实现提示]
用有向加权图表示的交通图中,有向边<Vi,Vj>表示第i个村庄和第j个村庄之间有道路,边上的权表示这条道路的长度。
该问题实质上是求解任意两顶点间最短路径问题。
解决思想与方案:
1、运用弗洛伊德算法求出有向图中各顶点对的最短距离。
2、根据步骤(1)结果,求出每个顶点到其他顶点的最短距离的最大值。
3、最大值最小的顶点作为医院所在村庄。
结构定义:
typedef char vextype; /*顶点数据类型*/
typedef int edgetype; /*边数据类型*/
typedef struct
{
vextype vex[MANVEX];
edgetype arc[MANVEX][MANVEX];
int vexnum,arcnum; /*顶点数和边数*/
}Mgraph; /*图的邻接矩阵表示结构定义*/
题目七:教学计划编制问题(图的应用)
[问题描述]
大学的每个专业都要制定教学计划。
假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等。
每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先
修关系。
每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。
每门课恰好占一个学期。
试在这样的前提下设计一个教学计划编制程序。
[实现提示]
1、输入参数应包括:学期总数,一学期的学分上限,每门课的课程号(可以是固定占3位的字母数
字串)、学分和直接先修课的课程号。
2、应允许用户指定下列两种编排策略之一:一是使学生在各学期中的学习负担尽量均匀;二是使课
程尽可能地集中在前几个学期中。
3、若根据给定的条件问题无解,则报告适当的信息;否则将教学计划输出到用户指定的文件中。
计
划的表格格式可以自己设计。
4、可设学期总数不超过12,课程总数不超过100。
如果输入的先修课程号不在该专业开设的课程序
列中,则作为错误处理。
题目八:图书管理系统(查找应用)
[问题描述]
图书管理基本业务活动包括:对一本书的采编入库、清除库存、借阅和归还等等。
试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。
[实现提示]
1、每种书的登记内容至少包括书号、书名、著者、现存量和总库存量等五项。
2、系统应实现的基本功能有:
●采编入库:新购入一种书,经分类和确定书号之后登记到图书帐目中去。
如果这两种书在帐中
已有,则只将总库存量增加。
●清除库存:某种书已无保留价值,将它从图书帐目中注销。
●借阅:如果一种书的现存量大于零,则借出一本,登记借阅者的图书证号和归还期限。
●归还:注销对借阅者的登记,改变该书的现存量。
题目九:通信录查询系统(查找应用)
【问题描述】
设计散列表实现通讯录查找系统。
(1) 设每个记录有下列数据项:电话号码、用户名、地址;
(2) 从键盘输入各记录,分别以电话号码为关键字建立散列表;
(3) 采用二次探测再散列法解决冲突;
(4) 查找并显示给定电话号码的记录;
(5) 通讯录信息文件保存;
(6) 要求人机界面友好,使用图形化界面;
【实现提示】
主函数:根据选单的选项调用各函数,并完成相应的功能。
Menu()的功能:显示英文提示选单。
Quit()的功能:退出选单。
Create()的功能:创建新的通讯录。
Append()的功能:在通讯录的末尾写入新的信息,并返回选单。
Find():查询某人的信息,如果找到了,则显示该人的信息,如果没有则提示通讯录中没有此人的信息,并返回选单。
Alter()的功能:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。
Delete()的功能:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
List()的功能:显示通讯录中的所有记录。
Save()的功能:保存通讯录中的所有记录到指定文件中。
Load()的功能:从指定文件中读取通讯录中的记录。
题目十:药店的药品销售统计系统(排序应用)
【问题描述】
设计一系统,实现医药公司定期对销售各药品的记录进行统计,可按药品的编号、单价、销售量或销售额做出排名。
【实现提示】
在本设计中,首先从数据文件中读出各药品的信息记录,存储在顺序表中。
各药品的信息包括:药品编号、药名、药品单价、销出数量、销售额。
药品编号共4位,采用字母和数字混合编号,如:A125,前一位为大写字母,后三位为数字,按药品编号进行排序时,可采用基数排序法。
对各药品的单价、销售量或销售额进行排序时,可采用多种排序方法,如直接插入排序、冒泡排序、快速排序,直接选择排序等方法。
在本设计中,对单价的排序采用冒泡排序法,对销售量的排序采用快速排序法,对销售额的排序采用堆排序法。
药品信息的元素类型定义:
typedef struct node
{ char num[4]; /*药品编号*/
char name[10]; /*药品名称*/
float price; /*药品单价*/
int count; /*销售数量*/
float sale; /*本药品销售额*/
}DataType;
存储药品信息的顺序表的定义:
typedef struct
{ DataType r[MaxSize];
int length;
}SequenList;
题目十一:电视大赛观众投票及排名系统(排序应用)
【问题描述】
在很多的电视大赛中,通常当选手表演结束后,现场观众通过手中的按键对参赛选手进行投票,然后对选手获得的票数进行统计,从高到低进行降序排序,从而自动产生冠军、亚军和季军。
现在要求编写一程序模拟实现上述系统的功能。
【实现提示】
在本例中,首先输入参赛选手的人数(范围为1-9个),然后根据人数通过malloc函数来开辟存放选手信息的顺序表。
将选手的编号和姓名依此存入顺序表单元中,观众通过按键进行投票,按’1’为1号选手投票,按’2’为2号选手投票,以此类推,以按’0’作为投票结束标志。
投票结束后进行排序,在此采用希尔排序,然后为每个选手计算名次,得票相同的名次也相同,
(1)存储类型的定义
参赛选手信息存储类型的定义:
typedef struct node{
char name[8]; /*选手姓名*/
int num; /*选手编号*/
int score; /*选手得分*/
int tax; /*选手名次*/
}Node;
题目十二:文章编辑系统(字符串)
【问题描述】
实现一个文章编辑系统,可以统计一页文字中文字、数字及空格的个数,存储一页文章保存在文件中,每行最多不超过80个字符,共N行,分别统计出其中英文字母数和空格数及整篇文章总字数;统计某一字符串在文章中出现的次数,并输出该次数;当删除某一子串时,后面的字符随之前移;用指定的字符串替换某一子串
【实现提示】
1. 存储结构使用线性表,分别用几个子函数实现相应的功能
2. 输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号
3. 输出形式:①分行输出用户输入的各行字符;②分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数";③输出删除某一字符串后的文章;④输出替换某一字符串后的文章
4. 界面要友好,输入有提示,尽量展示人性化
5. 源程序代码清晰、有层次
6. 用户输入非法数据时,系统要及时给出警告信息
题目十三:航班信息的查询与检索
【问题描述】
设计民航售票处的计算机系统可以为客户提供下列各项服务:
1. 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行、最近一天航班的日期和余票额;
2. 承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况。
【实现提示】
1.对飞机航班信息进行排序和查找。
可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。
2.采用基数排序法对一组具有结构特点的飞机航班号进行排序。
3.利用二分查找法对排好序的航班记录按航班号实现快速排序。
4.每个航班记录包括八项,分别为:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等。
题目十四:校园导游咨询系统
【问题描述】
设计东北电力大学校园平面图,有两个校区,在两个校区内选10个以上的建筑物、办公室、宿舍等地名。
以图中顶点表示校园内各地名,存放地名名称、代号、简介等信息,以边表示路径,存放路径长度等信息。
编写校园导游咨询系统,为来访客人提供图中任意地名相关信息的查询。
并为来访客人提供任意地名的问路查询,即查询任意两个地名之间的一条最短路径。
【实现提示】
一般情况下,校园的道路是双向通行的,可设计校园平面图是一个无向图。
顶点和边均含有相关信息。
题目十五:停车场管理系统
【问题描述】
设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。
停车场内如有某辆车要开走,在他之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆在依原来的次序进场。
每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟该停车场的管理。
【实现提示】
1、掌握栈和队列的建立。
2、掌握栈和队列的基本操作。
3、深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们。
题目十六:交通咨询系统
【问题描述】
设计一个交通咨询系统,能让旅客咨询从任一个城市定点到另一个城市定点之间的最短路径或最低花费或最少时间等问题。
对于不同的咨询要求、可输入城市间的路程或所需时间或所需花费。
【实现提示】
1、建立交通网络网的存储结构。
2、界面友好。
3、熟练掌握迪杰斯特拉算法和费洛伊德算法,能够利用它们解决最短路径问题。
能够解决工程项目实施过程中的关键路径问题。
题目十七:一元多项式计算器
【问题描述】
设计一个一元多项式的计算器,功能包括
(1)输入并建立多项式(一个多项式最多不超过20项),可以从文件中读取相关数据;
(2)输出多项式,输出形式可以是图形方式,也可以是文本方式;
(3)实现两个多项式相加,并输出和多项式;
(4)实现两个多项式相减,并输出差多项式;
(5)实现两个多项式相乘,并输出乘积多项式;
(6)计算并输出多项式在指定x处的值。
【实现提示】
(1)数据结构的设计:可以采用带头结点的单链表的形式;
(2)整个系统最好设计一个菜单;
(3)多项式的输入不能保证各项顺序输入。
题目十八:超市客户消费积分管理系统
[问题描述]
超市针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。
有录入功能:录入新客户,录入消费积分。
对客户的信息可以进行修改、删除、添加;根据消费情况进行客户积分的计算;并根据积分情况实行不同情况的打折优惠。
[实现提示]
1、采用一种存储结构进行客户信息的存储;
2、操作界面美观、友好,有合理的容错处理;
3、查询应根据查询条件合理选择先进的查询方法。
题目十九:团委人事管理系统
[问题描述]
设计团委人事管理系统,包括增加成员、删除成员、查询成员、更新成员、输出人数、输出成员信息等功能。
[实现提示]
成员的信息包括职位、姓名、性别、ID编号,为了统一定义,将学生和教师编号采用共用体处理,定义其类型为:
typedef struct
{
char position[18];
char name[10];
char sex;
union
{
char Teacher[20];
char Student[20];
}ID;
}DataType;
题目二十:单位访客管理系统
[问题描述]
设计单位访客管理系统,选择合适的数据结构解决访客登记的使用问题,通过菜单实现其常用的几种功能:
程序运行后,给出6个菜单项的内容和输入提示;
1. 访客登记表的建立
2. 新访客结点的插入
3. 访客结点的查询
4. 访客结点的删除
5. 访客结点的输出
0. 退出管理系统
[实现提示]
由题目可知,访客登记管理系统中访客与访客间是顺序的,所以访客的信息组成了线性结构。
其中,访客的到来与离去需要执行数据元素的插入与删除操作。
随着系统的运行,这个操作比较频繁,因此可以选择单链表做存储结构实现。
按照单链表的结构,设计单链表的建立、结点的插入、结点的查找、结点的删除和链表的输出等相应的子函数。
为实现菜单的调用功能,应该设计一个函数用于输出提示信息和处理输入,并将返回值提供给主函数实现相应的子函数调用。
三、时间安排
课程设计时间为三周,要求每人上机学时不低于50学时。
四、设计工作要求
1、课程设计完成基本的功能要求
本次课程设计可以从以下的题目中任选其一,每个题目基本实现的要求是:
(1)有菜单功能
(2)有读写数据存盘功能
(3)有数据图形显示或动画显示。
2、课程设计完成成品要求
(1)程序设计书(Word格式)
●包括程序设计目标
●问题描述
●需求分析
●概要设计
●详细设计
●源程序清单(要求格式整齐400行以上,要有注释说明)
●软件说明书(给出软件如何使用,使用时的注意事项)
●测试报告(每个函数的功能测试,输入条件,输出结果)
●课程设计总结。
(2)可执行程序源代码
(3)答辩时使用的ppt
3、上交要求
(1)上交课程设计报告和相关光盘。
(2)每小组写一份设计报告,以打印文稿的形式上交,排版一定要规范,否则成绩下降一档。
(3)光盘内容包括程序源码、设计报告的电子文档和答辩ppt。
整个班级的设计均刻在一张光盘上,可按姓名或分组建立相关文件夹进行存储。
五、成绩评定
根据完成任务的情况(必须进行系统演示)、课程设计报告书的质量和课程设计过程中的工作态度等综合打分。
成绩评定实行优秀、良好、中等、及格和不及格五个等级。
上机程序检查未通过者、无设计报告者以及严重抄袭他人设计者,成绩为不及格。
六、参考资料
1. 曲朝阳主编,《数据结构》(第一版).北京: 中国电力出版社,2007.8
2.苏仕华主编,数据结构课程设计。
机械工业出版社
3.何钦铭主编,数据结构课程设计,浙江大学出版社
七、备注
每班大约分为15个小组,每组2人。
每个题目每班最多只能有一个小组选做。
地点:二楼半机房。