物联网工程数据结构及算法课程设计指导书Word下载.docx

上传人:b****2 文档编号:5751290 上传时间:2023-05-05 格式:DOCX 页数:42 大小:149.41KB
下载 相关 举报
物联网工程数据结构及算法课程设计指导书Word下载.docx_第1页
第1页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第2页
第2页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第3页
第3页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第4页
第4页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第5页
第5页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第6页
第6页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第7页
第7页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第8页
第8页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第9页
第9页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第10页
第10页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第11页
第11页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第12页
第12页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第13页
第13页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第14页
第14页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第15页
第15页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第16页
第16页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第17页
第17页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第18页
第18页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第19页
第19页 / 共42页
物联网工程数据结构及算法课程设计指导书Word下载.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

物联网工程数据结构及算法课程设计指导书Word下载.docx

《物联网工程数据结构及算法课程设计指导书Word下载.docx》由会员分享,可在线阅读,更多相关《物联网工程数据结构及算法课程设计指导书Word下载.docx(42页珍藏版)》请在冰点文库上搜索。

物联网工程数据结构及算法课程设计指导书Word下载.docx

使用说明文件的第一行,需要给出设计者的学号、姓名,后面为其它说明。

2.课程设计报告(详细要求请参考附录二)

课程设计报告总体上主要包括以下几个部分:

1)封面

2)目录

3)课程设计报告正文

4)使用说明

5)参考文献

四.总体要求

1.每道题目的程序代码总量不少于600行(其中不包括自动生成代码),有合理注释。

2.课程设计报告正文字数不少于8000字,概念清楚、叙述正确、内容完整、书写规范。

3.独立完成课程设计,不得抄袭他人。

4.功能正确、有一定实用性。

5.尽可能大量使用各种C或者C++语言程序设计技术,尤其在以下几个方面:

指针及其运算、结构、指针数组、数组指针、字符数组与字符串、内存空间动态申请与释放、文件访问与操作、合理的常量与全局变量及函数接口变量定义、数据输入与数据格式检查、数据类型转换、错误处理、工程设计技术(整个系统由一个工程文件、若干个程序文件、若干头文件、甚至库文件等组成)。

程序界面不做较高要求,但要考虑到用户使用的方便,有较好的交互界面。

6.可以使用VC编译环境开发程序,但不允许使用现成的数据库如access,SQLServer等完成上面的课程设计题目,否则成绩评定为不及格。

7.设计时适当考虑程序的可维护性与可扩充性。

8.提倡积极交流与讨论(同学间、bbs站点)、善于查阅资料、分析与借鉴他人编写的软件。

9.认真自觉以个人为单位完成自己的任务,代码和课设报告均严禁雷同,否则成绩为不及格。

验收时查看代码,并提出若干个跟程序代码有关的问题,并把问题回答情况计入总评成绩。

10、根据不同的数据结构,要求有一种数据结构算法(冒泡排序算法不包括)。

五.工作阶段与考核方法

大体上可分成五个阶段:

1.资料查阅准备阶段(15%)

2.分析设计阶段(35%)

3.编程调试阶段(40%)

4.课程设计报告书写阶段(10%)

5.验收阶段

考核方法:

只有程序验收通过后,才能按以下方法核定本次课程设计的总成绩,因未能独立完成设计(尤其是抄袭)或概念不清的同学,总成绩将核定为不及格。

总成绩由以下几个部分决定:

1.考勤、纪律、实验室卫生

2.工作量(代码量、功能多少、难度)

3.关键技术

4.实用性、创新

5.代码书写规范性

6.程序界面、新技术引用

7.课程设计报告(叙述、书写规范、字数)

8.动手能力、分析问题解决问题能力

六.任务具体要求

1、学生成绩管理系统

问题描述:

该系统实现对若干个大学生的学习成绩进行管理。

至少包括以下信息:

学号、姓名、科目、成绩,学期。

学期取值范围可为1-8。

功能要求:

1.使用中文菜单,界面设计和用户输入输出要人性化些;

2.将学生信息保存在文本文档中,具体对学生信息进行插入删除查询操作时,将保存在文本文档中的学生信息提取出来,保存在自己定义的数据结构中,然后再对该数据结构进行操作,所有操作完成,或者在相应的命令后,再将学生信息保存到文本文档中。

3.具有数据输入功能,输入的数据能最终保存在文件中;

4.具有数据删除功能,能最终从文件中删除;

5.排序功能,根据自己设计的数据结构,设计排序算法

6.具有多种查询(如按学号查询、按姓名查询、按成绩查询等)及输出功能;

7.其它功能(如各种统计,统计每个学生所有课程的平均分,统计某门课程所有学生的平均分等等)

8.学生信息的修改(比如修改学生姓名,修改学生某门课程的成绩)

说明:

(1)功能各方面越完善越好

(2)自定义的数据结构可以使用数组,链表,树等,可以使用多种数据结构来存放数据,然后在其上使用不同的排序算法。

(3)若用数组,必须动态分配空间(文本文件中最好有一行表示学生人数)

算法要点:

把问题看成是对线性表的操作。

将学生成绩组织成顺序表,则登记学生成绩即是建立顺序表操作;

查询学生成绩、插入学生成绩、删除学生成绩即是在顺序表中进行查找、插入和删除操作。

2、简易客房管理系统

该系统能简单实现对客栈的住宿情况进行管理。

房号、房型、单价(每床)、已住人数;

住客姓名、性别、年龄、身份、身份证号码,房号,床号,入住日期、入住时间、离店日期、离店时间。

这些信息应存放在两个文件中,分别是客房信息文件、住客信息文件。

“房型”可取值1-3,分别表示单人间、双人间、通铺(可以住很多人的房间)

1.具有建立数据文件(客房信息文件、住客信息文件)功能;

2.具有数据输入功能;

3.具有数据修改功能;

4.具有数据删除功能;

5.能查询(查找)一些基本信息(如按房号查询、按姓名查询、空余客房查询等);

6.具有多种统计功能(要求有一定的实用性)

(如某客房当前有那些空床、某住客应付多少费用、某天住店总人数和总收入等)

7.能具有排序功能(比如在查询所有的客房信息时,能根据房间价格进行排序,方便客人挑选房间等等)

(3)若用数组,必须动态分配空间(文本文件中最好有一行来表示数组应该有多大,这样便于动态分配空间)

3、人事档案管理系统

该系统能简单实现对人事档案的管理。

该系统包括:

人员基本情况管理、工资管理和考勤管理等几个方面的功能。

用户通过输入工资、考勤、职工履历等基本信息,由系统自行生成相应的统计数据以供用户查询,能对这些基本信息进行更新和删除。

人员履历表:

员工编号,员工姓名,性别,年龄,部门,职位,受教育年限

职工工资表:

员工编号,基本工资,缺勤扣发工资,扣税,实发工资

月考勤登记表:

员工编号,月缺勤天数

注:

假设每个员工每天缺勤扣发工资的多少跟其基本工资存在一定关系,比如是该基本工资的20分之一;

假设扣税金额=(基本工资-缺勤扣发工资-2000)×

10%,而若基本工资-缺勤扣发工资-2000的值小于2000则扣税金额为0

1.具有建立数据文件(人员履历表文件、职工工资表文件、月考勤登记表)功能;

5.能查询(查找)一些基本信息(如按员工编号查询、按员工姓名和部门组合查询等,如生成各部门员工花名册);

(如不同部门的员工平均工资比较(除了用数字表示外,也可以用星号画图的方式来直观的表示);

不同性别员工工资比较;

某部门内部,不同职位员工工资比较;

不同受教育水平人的平均工资比较;

部门最高实发工资等等)

7.具有排序功能(比如将各部门职工工资平均值进行排序,将部门内部职工工资进行排序等等)

各个功能模块简要叙述(具体实现时,并不局限于这些功能,越完善越好)

✧人员基本情况管理:

提供对”人员履历表”数据输入、组合条件查询、统计功能;

✧职工工资管理:

提供对”职工工资表”数据的输入、查询、按统计、显示功能,完成每月对“职工工资表”数据的月统计,以此生成“职工工资总额构成情况表”实现该表的查询、显示功能。

✧职工考勤管理:

提供对各部门“月考勤登记表”数据的录入、查询、统计功能;

4、进销存货物管理系统

该系统能进行简单的货物管理,进货,销售货物,退货等管理

至少包括如下信息:

货物标号,货物名称,货物产地,入库价格,入库时间,现存货物数量,已经销售数量,销售平均单价

每次销售后,都需要对现存货物数量进行更新,对已销售数量进行更新,也需要对销售平均单价进行更新

1.具有建立数据文件(货物管理表)的功能;

4.具有数据删除功能(当一些已经过时陈旧的商品被特价处理后,将其删除,不再进货);

5.能查询(查找)一些基本信息(如能查询剩余件数小于某个特定值的商品,以便于及时进货);

(如统计每种货物是否有盈利(将销售平均单价跟入库价格进行比较),所有货物的盈利或亏损等等)

7.具有排序功能(比如对货物盈利水平进行排序比较等等)

5、图书管理系统

该系统能进行简单的图书管理功能

图书编号,图书名称,作者,出版社,总共册数,在馆册数,现存地址,借阅次数

现存地址是假设图书馆有多个书库,不同种类的书存放于不同的地方

1.具有建立数据文件(图书信息)的功能;

3.具有数据修改功能(借书或者还书都需要修改图书数量信息);

4.具有数据删除功能(当图书因为年代久远,或者遗失,也许需要对其进行删除操作);

5.能查询(查找)一些基本信息(这里的查询功能应该较为强大,能通过作者进行查询,书名查询,或者结合作者出版社一起进行查询等等)

(如统计每本书的借阅次数,方便将来新近图书。

统计每个书库中图书的数量等等)

7.具有排序功能(比如对每本图书的借阅次数进行排序)

✧新近图书:

在图书信息表中添加相应信息;

✧旧书处理:

在图书信息表中删除相应信息;

✧借书还书:

对图书信息表进行修改,若在馆册书为0,则不允许继续借阅;

✧图书信息的统计

✧图书信息的排序

✧图书信息的查找

6、运动会分数统计

参加运动会有n个学校,学校编号为1……n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1......m,女子m+1......m+w.不同的项目取前五名或前三名积分;

取前五名的积分分别为:

7、5、3、2、1,前三名的积分分别为:

5、3、2;

哪些取前五名或前三名由同学自己设定。

(m<

=20,n<

=20)

1.可以输入各个项目的前三名或前五名的成绩;

2.能统计各学校总分;

3.可以按学校编号、学校总分、男女团体总分排序输出;

4.可以按学校编号查询学校某个项目的情况;

可以按项目编号查询取得前三或前五名的学校。

 

规定:

输入数据形式和范围:

20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)

输出形式:

有中文提示,各学校分数为整形

界面要求:

有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

存储结构:

学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。

7、民航订票系统

任务:

通过此系统可以实现如下功能:

1.录入

可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)

2.查询

可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);

可以输入起飞抵达城市,查询飞机航班情况,最近一天航班的日期和余票额.;

3.订票业务;

据顾客要求(航班号,订票额)查询该航班票额情况,若有余票,办理售票手续,输出座位号;

若已满员或票额不足,则另询顾客要求.若需要,可预约登记排队等候.

4.退票业务:

根据顾客情况(日期,航班)为顾客办理退票手续,然后查询该航班是否有人预约登记,首先询问排在第一位的顾客,若退票额能满足他的要求,则为他办理退票手续,否则依次询问其他排队预约的顾客.

5.修改航班信息:

当航班信息改变可以修改航班数据文件。

基本要求:

1.根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;

2.界面要求:

8、校园导游咨询

设计校园导游程序,为来访的客人提供服务。

(1)假设有一所校园的平面图,所含景点不小于10个,请选择适当的坐标来表示出该图上的各个景点。

(2)为来访的客人提供从当前位置到其他景点的最短路径的咨询;

(3)必须具有校园平面图的修改和扩充功能(即某些景点坐标的修改和景点个数的增加)。

9、长整数的加减运算

设计一个实现任意长的整数进行加法运算的演示程序

利用双向循环链表实现长整数的存储,每个结点含一个整型变量。

任何整型变量的范围是-(215-1)~(215-1)。

输入输出形式:

按照中国对于长整数的表示习惯,每四位是一组,组间用逗号隔开

更高要求:

(1)长整数的减法

(2)多个长整数的连续加减法,并带括号等。

具体方式可以参见表达式的求值部分,利用栈

测试数据:

(1)0;

0;

应输出“0”

(2)-2345,6789;

-7654,3211;

应输出“-1,0000,0000”

(3)-9999,9999;

1,0000,0000,0000;

应输出“9999,0000,0001”

(4)1,0001,0001;

-1,0001,0001;

(5)1,0001,0001;

-1,0001,0000;

应输出“1”

(6)-9999,9999,9999;

-9999,9999,9999;

应输出“-1,9999,9999,9998”

(7)1,0000,9999,9999;

1;

应输出“1,0001,0000,0000”

实现提示:

(1)每个结点中可以存放的最大整数为215-1=32767,才能保证两数相加不会溢出。

但若这样存,即相当于按32768进制数存,在十进制数与32768进制数之间的转换十分不方便。

故可以在每个结点中仅存十进制数的4位,即不超过9999的非负整数。

整个链表是为万进制数。

(2)可以利用头结点数据域的符号代表长整数的符号。

用其绝对值表示元素结点数目。

相加过程中不要破坏两个操作数链表。

两操作数的头指针存于指针数组中是简化程序结构的一种方法。

不能给长整数位数规定上限。

10、表达式的求值 

表达式求值要求:

例如,输入25*(12-27/3)+2*5=

则程序运行后输出25*(12-27/3)+2*5=85

设计要求:

以字符序列的形式从终端输入不含变量的算术表达式(整数和实数都要考虑),利用给定的算符优先关系,实现对算术四则混合运算表达式的求值,

(1)输入四则表达式(有括号和加减乘除,且表达式中有可能会出现带小数点的浮点数);

(2)判断表达式是否合法(括号是否匹配);

(3)按照运算符的优先级计算算术表达式的值。

(1)演示在求值过程中运算符栈、操作数栈的变化过程。

(2)判断表达式的语法是否正确(比如1++2就是错误的)

11、钱币的转换

银行经常需要进行输入输出大小写的转换。

要求:

(1)编写程序实现将阿拉伯数字表示的钱币数,表示为用中文表示的钱币书:

比如输入10.2元,则输出拾元贰角三分

(2)编写程序实现将中文表示的钱币数表示为阿拉伯数字表示的钱币数:

比如输入三角,则输出0.3元

(3)需要注意:

100000,中文表示是拾万元;

0.3元表示为三角。

希望大家把具体情况都能考虑清楚。

设计比较良好的用户提示界面。

12、二叉树的应用-哈夫曼树(电文的编码和译码)

哈夫曼编码/译码器

设计一个哈夫曼编码/译码系统,对字符串进行编码/译码

(1)从键盘输入字符串,以回车结束;

(2)根据字符串中字符出现的概率进行哈夫曼编码;

(3)并输出编码结果和编码表;

(4)根据编码结果和编码表还原字符串;

(5)输出编码过程中构造的哈夫曼树。

内容:

理解二叉树的基本概念,并在读懂下面详细描述的算法的情况下,编写一个有关二叉树的简单应用程序-电文的编码和译码

具体实验题目和功能要求如下:

(1)电文编码:

假如有一份电文中共使用5个字符:

a、b、c、d、e,它们的出现频率依次为4、7、5、2、9,试画出对应的哈夫曼树(请按左子树根结点的权小于等于右子树根结点的权的次序构造),并求出每个字符的哈夫曼编码

其中:

得到的哈夫曼树和哈夫曼编码如下。

图1

要求自己编程实现若从键盘输入若干字符,同时并输入它们各自出现的频率,最后能计算并在屏幕上显示出每个字符的代码。

(2)电文译码:

给出一段二进制代码的电文,要求根据前面构造的huffman树进行译码。

在前面编码的基础上,键盘输入一段电文,则能在屏幕上显示出自动翻译好的电文。

比如根据图1显示的哈夫曼树,键盘输入电文如下:

1011010,屏幕上能显示自动翻译的结果为bed

说明事项:

1.通过上面的描述本课程设计题目包括

(1)电文的编码

(2)电文的译码,要求必须用哈夫曼树实现。

2.界面要求:

并要明确,只有在使用哈夫曼树进行编码的前提下,才有可能进行译码。

3.考虑将此程序设计完善,比如可以将编码后的字符代码保存到文件中,将需要翻译的代码保存到另一个文件中,最后把自动翻译后的结果也保存到文本文档中等等。

在这个程序中,首先要构造一棵哈夫曼树,然后才能根据这棵哈夫曼树构造编码。

因此,步骤一:

构造哈夫曼树

步骤二:

根据哈夫曼树为每个字符编码

步骤三:

根据步骤二中构造好的哈夫曼树进行译码

提示:

具体算法见后面的有关哈夫曼树的基础知识介绍

部分代码(仅供参考)如下:

constintN=5;

//叶子结点数目

constintTREENODENUM=2*N-1;

//结点总数

//huffman树结点的结构

typedefchardataType;

typedefstruct

{

floatweight;

dataTypedata;

intlchild,rchild,parent;

}huffmanTreeNode;

//哈夫曼编码的结构

typedefstruct

charbits[N];

//详细的编码,不过是反的,要从cnt开始读

intcnt;

//记录这个字符数由几位bit表示的

//编码要表示的字母

}codeType;

有关哈夫曼树的基础知识介绍

(1)哈夫曼树的定义

哈夫曼树:

设有

个权值

,构造一棵有

个叶子结点的二叉树,每个叶子结点的权值为

,则

最小的二叉树叫哈夫曼树

为权值

为结点到根到路径长度

为叶子结点数

(2)构造Huffman树的方法——Huffman算法

构造Huffman树步骤如下:

①根据给定的n个权值{w1,w2,……wn},构造n棵只有根结点的二叉树,令其权值为wj

②在森林中选取两棵根结点权值最小的树作左右子树,构造一棵新的二叉树,置新二叉树根结点权值为其左右子树根结点权值之和

③在森林中删除这两棵树,同时将新得到的二叉树加入森林中

④重复上述两步,直到只含一棵树为止,这棵树即哈夫曼树

例如:

第一步:

n棵只有根结点的二叉树,每个结点有相应代表的符号和权值

第二步:

从中挑出权值最小的合并生成一棵新的树,置新生成的二叉树的根结点

第三步:

不断重复第二步,直到只有一个根结点

第四步:

最后完成一棵huffman树

哈夫曼树结点的存储结构

(3)哈夫曼树应用(哈夫曼编码)

哈夫曼树中没有度为1的结点,称为严格的二叉树。

哈夫曼编码:

数据通信用的二进制编码

思想:

根据字符出现频率编码,使电文总长最短

编码:

根据字符出现频率构造哈夫曼树,然后将树中结点引向其左孩子的分支标“0”,引向其右孩子的分支标“1”;

每个字符的编码即为从根到每个叶子到路径上得到到0、1序列

要传输到字符集D={C,A,S,T,;

字符出现频率w={2,4,2,3,3}

得到的哈夫曼树和哈夫曼编码为

(4)Huffman编码算法的基本思想

从叶子tree[i]出发,利用双亲地址找到双亲结点tree[p],再利用tree[p]的lchild和rchild指针域判断tree[i]是tree[p]的左孩子还是右孩子,然后决定分配代码是“0”还是“1”,然后以tree[p]为出发点继续向上回溯,直到根结点为止

(5)Huffman译码算法的基本思想

从Huffman树根开始,从待译码电文中逐位取码。

若编码是“0”,则向左走;

若编码是“1”,则向右走,一旦到达叶子结点,则译出一个字符;

再重新从根出发,直到电文结束

13、银行排队系统模拟

假设某银行有n个窗口对外接待客户,从早晨银行9点开门起到5点关门,不断有客户进入银行,由于每个窗口在某个时刻只能接待一个客户。

因此在客户人数众多时需要在每个窗口前顺次排队,对于刚进银行的客户。

如果某个窗口的业务员正空闲,则可上前输业务。

反之,若个窗口均有客户所占,他便会排

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2