《数据结构课程设计方案》指导书.docx
《《数据结构课程设计方案》指导书.docx》由会员分享,可在线阅读,更多相关《《数据结构课程设计方案》指导书.docx(20页珍藏版)》请在冰豆网上搜索。
![《数据结构课程设计方案》指导书.docx](https://file1.bdocx.com/fileroot1/2022-10/29/7a2fc7a1-1d0d-48b3-9d79-5dc623b82077/7a2fc7a1-1d0d-48b3-9d79-5dc623b820771.gif)
《数据结构课程设计方案》指导书
《数据结构课程设计》指导书
一、实习目的
数据结构课程设计是一项综合性设计活动,要求在教师的指导下,利用本课程内的以及到目前为止所学到的有关知识和技术解决一些不太复杂但却是综合性的问题。
从规模来说,课程设计是在平时作业的基础上进一步扩大的大作业。
在设计中,要求学生要全面考虑相互联系的各个方面及问题。
通过课程设计,使学生对整个课程的知识体系有较深入的理解,在运用本课程的知识解决实际问题方面得到锻炼,对锻炼学生的实践能力以及运用本课程的知识、方法解决更为复杂的实际问题有较好的启发和指导作用,从而为后续课程的学习、毕业设计环节以及将来的实际工作打好坚实的基础。
通过对给定问题的求解,使学生在运用《数据结构》、程序设计以及迄今为止所学课程中的各种基本技术和理论,在建立问题模型、构造求解算法、设计数据结构、编程及上机调试等方面得到全面的锻炼,从而能更深刻地理解《数据结构》的精髓,为后续软件课程的学习及软件设计能力的提高奠定良好的基础。
二、数据结构课程设计要求
1.学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。
有问题及时主动通过各种方式与教师联系沟通。
2.学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。
3.课程设计按照教案要求需要两周时间完成(2周共十天)。
三、实习基本内容
本次课程设计完成如下模块(共23个模块,学生可以在其中至少挑选5-6个功能块完成,其中8、9、10、13在做5个以下不算数但已经做了5个以上算数)
1【校园导游程序】
问题描述:
用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
要求能够回答有关景点介绍、游览路径等问题。
基本要求:
查询各景点的相关信息;查询图中任意两个景点间的最短路径;查询图中任意两个景点间的所有路径;增加、删除、更新有关景点和道路的信息。
选作内容:
求多个景点的最佳(最短)游览路径。
区分机动车道和人行道。
实现导游图的仿真界面。
数据结构:
typedefstructmessage
{
intnum。
//景点代码
charname[100]。
//景点名称
charpro[500]。
//简介
}Ciceroni。
Ciceronischool[10]={{1,"行政楼\n"},{2,"食堂\n"},{3,"赛博楼,信息分院办公室所在地\n"},{4,"求是楼,实验楼计算机中心\n"},{5,"格致楼,法学管理学院"},
{6,"工程实习中心,金工实习\n"},{7,"仰仪楼,机电计测分院\n"},{8,"体育馆,旁边有篮球场`足球场`还有网球场\n"},{9,"一号教案楼,主要以阶梯教室为主\n"},{10,"二号教案楼,小教室为多\n"}}。
/*景点名称和简介*/
操作:
/*给景点之间的路径赋最大值*/
/*最短路径的C语言函数*/
/*输出最短路径和最短距离函数*/
/*输入景点代码查景点名称和简介*/
/*输入景点代码查到其它景点的最短距离*/
2【员工管理系统】
问题描述:
每个员工的信息包括:
编号、姓名、性别、出生年月、学历、职务、电话、住址等。
系统能够完成员工信息的查询、更新、插入、删除、排序等功能。
基本要求:
排序:
按不同关键字,对所有员工的信息进行排序;查询:
按特定条件查找员工;更新,按编号对某个员工的某项信息进行修改;插入,加入新员工的信息;删除,按编号删除已离职的员工的信息。
选作内容:
实现图形用户界面。
通过链表实现
数据结构:
structworkers
{
charname[15]。
//姓名
chardepartment[18]。
//单位
chargender。
//性别
unsignedintage。
//年龄
unsignedlongtelephone。
//电话
unsignedlongwage。
//工资
unsignedlongnum。
//职工号
structworkers*next。
}。
操作实现:
/*插入职工信息,通过链表实现*/
/*具体实现职工信息的插入*/
/*对职工信息的删除操作*/
/*修改操作*/
/*实现对员工信息的查找*/
/*排序*/
/*输出员工信息*/
/*显示职工工资情况计算平均工资*/
3【算术表达式求值】
问题描述:
一个算术表达式是由操作数(operand)、运算符(operator)和界限符(delimiter)组成的。
假设操作数是正整数,运算符只含加减乘除等四种运算符,界限符有左右括号和表达式起始、结束符“#”,如:
#(7+15)*(23-28/4)#。
引入表达式起始、结束符是为了方便。
编程利用“算符优先法”求算术表达式的值。
基本要求:
从键盘读入一个合法的算术表达式,输出正确的结果;显示输入序列和栈的变化过程,操作数类型扩充到实数。
"(3.14159/2+sqrt(1/3^2+4)+1/2^2*ln(1/1.1*(2+sqrt(1/3^2+4))))*23.45@"。
选作内容:
扩充运算符集合;引入变量操作数;
4【运动会分数统计】
任务:
参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子工程,和w个女子工程。
工程编号为男子1……m,女子m+1……m+w。
不同的工程取前五名或前三名积分;取前五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:
5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)
功能要求:
可以输入各个工程的前三名或前五名的成绩;能统计各学校总分;可以按学校编号、学校总分、男女团体总分排序输出;可以按学校编号查询学校某个工程的情况;可以按工程编号查询取得前三或前五名的学校。
规定:
输入数据形式和范围为20以内的整数(如果做得更好可以输入学校的名称,运动工程的名称);输出形式,有中文提示,各学校分数为整形;界面要求,有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计,请在最后的上交资料中指明你用到的存储结构。
参考的数据结构:
(1)工程信息表结构
typedefstructxm_table{
intitem。
//工程编号
charname[20]。
//工程名称
intcount。
//该工程得分人的数量
}XM_TABLE。
(2)学生信息表结构
structSTUDENT{
charname[20]。
//姓名
intscore。
//得分成绩
intrange。
//得分名次
intitem。
//得分工程
intsex。
//性别
}。
(3)参赛学校信息结构
//参赛学校
typedefstructSchoolStruct
{
intcount。
//计算实际运动员个数
intserial。
//学校编号
charName[20]。
//学校名称
intmenscore。
//男子团体总分
intwomenscore。
//女子团体总分
inttotalscore。
//团体总分
intjifeng。
//学校积分
struct STUDENTstudents[10]。
//参赛运动员
structSchoolStruct*next。
//下一个参赛学校
}SCHOOLSTRUCT。
操作需求:
//建立参赛学校链表
//添加获奖学生
//成绩统计
//按工程编号查询取得前三或前五名的学校。
//按学校编号查询学校某个工程
//在幕输出数据
//参数设置
(设置参赛学校数n>=2,请输男生工程总数//工程资料:
请输入男生工程信息:
工程名称。
工程编号。
该工程的参与人数
请输入女生工程信息:
工程名称。
工程编号。
该工程的参与人数
//添加学生数据
intSchoolCount=0。
//学校总数
intboyCount=0。
//男生工程总数
intgirlCount=0。
//女生工程总数
intxm_Count=0。
//工程总数
XM_TABLExm_T[41]。
//工程表
主要实现:
"参数设置"、"添加学生"、"统计"、"学校查询"、"工程查询"等功能。
5一元多项式计算
任务:
能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加、相减和相乘,并将结果输出;
在上交资料中请写明:
存储结构、多项式相加的基本过程的算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;
设有一元多项式Am(x)和Bn(x).
Am(x)=A0+A1x1+A2x2+A3x3+…+Amxm
Bn(x)=B0+B1x1+B2x2+B3x3+…+Bnxn
请实现求M(x)=Am(x)+Bn(x)、M(x)=Am(x)-Bn(x)和M(x)=Am(x)×Bn(x)。
要求:
1) 首先判定多项式是否稀疏
2) 分别采用顺序和动态存储结构实现;
3) 结果M(x)中无重复阶项和无零系数项;
4) 要求输出结果的升幂和降幂两种排列情况
6订票系统
任务:
通过此系统可以实现如下功能:
录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓)
可以输入起飞抵达城市,查询飞机航班情况;
订票:
(订票情况可以存在一个数据文件中,结构自己设定)
可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票:
可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:
当航班信息改变可以修改航班数据文件
要求:
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;
航班信息数据结构
typedefcharkeytype。
//航班信息结构
typedefstruct
{
charstart[6]。
//起点站
charend[6]。
//终点站
charsche[10]。
//航班期
chartime1[5]。
//起飞时间
chartime2[5]。
//到达时间
charmodel[4]。
//机型
intprice。
//票价
}infotype。
//定义航班节点
typedefstruct
{
keytypekeys[keylen]。
//航班号
infotypeothers。
//航班信息
intnext。
//下一航班
}slnode。
//航班表
typedefstruct
{
slnodesl[maxspace]。
intkeynum。
intlength。
}sllist。
操作实现:
(1)录入航班信息:
(2)查询航班信息:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
可以输入起飞抵达城市,查询飞机航班情况;
航班信息查询系统:
可以按:
1.航班号。
2.起点站;
3