南师大数据结构课程设计报告.docx
《南师大数据结构课程设计报告.docx》由会员分享,可在线阅读,更多相关《南师大数据结构课程设计报告.docx(14页珍藏版)》请在冰点文库上搜索。
![南师大数据结构课程设计报告.docx](https://file1.bingdoc.com/fileroot1/2023-7/4/6b4c5a8e-054c-4078-9c19-655384da38bf/6b4c5a8e-054c-4078-9c19-655384da38bf1.gif)
南师大数据结构课程设计报告
数据结构课程设计报告
学号:
888888
姓名:
草丛伦
学院:
超神学院
专业:
LOL
指导老师:
流老师
2050年9月
一.要求
1.必做题:
编程实现希尔,快速,堆排序,归并排序算法,要求随机产生10000个数据存入磁盘文件,然后读入数据文件,分别采用不同的排序方法进行排序,并将结果存入文件中。
2.选做题:
链表的维护与文件形式的保存:
用链表结构的有序表表示某商场家电部的库存模型。
当有提货或进货时需要对该链表及时进行维护。
每个工作日结束之后,将该链表中的数据以文件形式保存,每日开始营业之前,需将以文件形式保存的数据恢复成链表结构的有序表。
链表结点数据域包括家电名称,品牌,单价和数量,以单价的升序体现链表的有序性。
程序功能包括:
创建表,营业开始(读入文件恢复链表),进货(插入),提货(更新或删除),查询信息,更新信息,营业结束(链表数据存入文件)等。
二.算法思想描述
1.排序算法的实现
通过不同的算法,来对一大串随机数字进行有序的排列,是复杂的。
我主要用了在排序算法中效率比较高的几种算法,其分别是:
希尔,快速,堆排序,归并排序。
通过这几种算法对由电脑随机产生的10000个数字进行由小到大的排序,并将结果存入文件中。
我的设计思想就是基于C++的面向对象,就是每一种算法对应于一个类,所以程序分别产生了4个类,来解决排序问题。
每个类中都有自己的构造函数和析构函数,还有就是自己的排序算法函数。
每个类还必须包含一个文件处理函数,因为我们的操作都是针对于文件的。
对于文件的处理,我用的是c中的格式化读写函数-----fprintf()和fscanf()。
最后就是讲结果保存在一个txt文件中(结果在排序目录下的文件中)。
2.链表的维护
构建一个菜单循环,然后每个功能的实现通过其对应函数去实现,函数头调用系统中的相关函数,以确保程序运行正常。
建立一个商场的家电库存模型,有相关函数及指针等,输入信息,输出信息,查询修改删除的条件函数,用menu实现主菜单选择操作,实现一系列操作,释放所有链表,读取内存,自动创建文件夹。
三.程序结构:
1.排序:
2.链表的维护
A进货登记:
用来存入进货的信息
B.卖出登记:
用来登记卖出的信息
C.条件查询:
用来查询系统的信息
D.查看库存:
用来查看还有多少电器没有卖出
E.修改记录:
用来对电器有错的地方进行修改
F.删除记录:
用来对记录的进行删除
G.数据存盘:
对输入的电器信息存入电脑中
H.删除全部:
对存盘的信息全部删除
I.不存盘退出:
对输入的信息不存盘就退出了
J存盘退出:
对输入的相关信息进行存盘退出
模块一.函数头文件
#include
#include
#include
#include
#include
#include
模块二.主函数intmain()
模块三.子函数
voidInitLinkList();//读取到内存
intBackAdd(Head&,Goods&);//在链表后面添加一个新对象
intInsert(Head&,Goods&);//新对象插入链表,链表对象按价格排序
voidMenu();//目录
voidChoice();//选择
intRegister();//进货录入
intPick();//出货登记(删除货物)
intSeek();//查询货物
intSeekAll(int);//查看全部货物
intRevise();//修改货物
intDelete();//删除货物
intSeekNode();//查询
intDeNode();//删除
intSave();//存盘
intClear(int);//清空所有库存
intExitNoSave();//不存盘退出
intin_count(Node*,int&);
模块四.结构体
classGoods{//货物类
public:
charbrand[50];
chartype[50];
charname[50];
intamount;
intprice;
intkind_id;
public:
voidinput();
voidprint();
intcha();
4、测试结果:
1.排序:
堆排序前:
堆排序后:
归并排序前:
归并排序后:
快速排序前:
快速排序后:
希尔排序前:
希尔排序后:
2.链表的维护与文件形式的保存
菜单
进货登记
条件查询
查看库存
修改记录
删除记录
数据存盘
五、总结
这次课程设计主要的是用C++进行编程,让我获得了一下的收获和体会:
1)写程序首先要有一个框架在自己的思路中,能后跟着这个框架设计
2)在这次课程设计中,我对C++的知识有了重新的认识,主要还是在链表这块,如何创建链表,结点,如何查询、删除,如何以文件的形式保持文件等,都让我感触之深。
3)通过这几种算法之间的比较,个人觉得对于大量数据的处理希尔排序相对于其他几种算法来讲有点劣势,时间相对于消耗的多点,快速排序处理太多的数据也会出现一定的问题,容易出现乱码。
相对而言,堆排序和归并排序时这里面比较好的算法,效率等很多方面都很不错。
4)我们编写的程序来源于生活,虽然C++这么语言没学的很好,但是在以后的时间我要认认真真的再复习,通过不同的例子,把这们语言学好。
六、参考文献
C++语言程序设计谭浩强
数据结构教程(C++版)吉根林