文章目录

  • 前言
  • 一、仓库要求是什么?
  • 二、具体实现
    • 1.结点设计
    • 2.进货操作
    • 3.退货操作
    • 4.存文件
    • 5.读文件
    • 6.根据售价排序(冒泡)
    • 7.查找(关键值)
  • 总结

前言

因为我的课设(最短路径)完成的比较早,于是我又做了仓库管理系统的设计。
整体代码功能比较简单,可以给小伙伴们提供一些参考。


一、仓库要求是什么?

用链表实现进货,退货,排序(根据售价),关键值(名称)搜索,显示所有货物,商品数量不足时提醒补货,读取仓库文件,保存仓库文件,选择不同的仓库。

二、具体实现

1.结点设计

代码如下:

struct Node
{woodinfo data;         //woodinfo数据结点可以根据需要来写Node* next;
};

2.进货操作

代码如下(示例):

void Goods::insertNodeByHead(Node* headNode, woodinfo data)
{Node* insert = NULL;insert = searchByName(headNode,data.name);if (insert == NULL){Node* newNode = creatNode(data);newNode->next = headNode->next;headNode->next = newNode;cout << "入库新物品“" << data.name << "”" << data.many<<"件" << endl;}else{cout << data.name << "原始库存" << insert->data.many << "件" << endl;insert->data.many += data.many;cout << data.name << "现有库存" << insert->data.many << "件" << endl;}
}

3.退货操作

void Goods::deleteNodeByData(Node* headNode, string name,int count)
{Node* posleftNode = headNode;Node* posNode = headNode->next;while (posNode != NULL && posNode->data.name != name){posleftNode = posNode;posNode = posleftNode->next;}if (posNode == NULL)cout << "当前仓库中没有找到" << name << endl;else{if (posNode->data.many > count){posNode->data.many -= count;cout << "出库成功!" << endl;cout<< name <<"剩余" << posNode->data.many<<"件"<< endl;}else if (posNode->data.many == count){cout << "出库成功!" << endl;cout << posNode->data.name<<"已全部出库!若后续需要请及时补充!" << endl;posleftNode->next = posNode->next;delete posNode;posNode = NULL;}else if(posNode->data.many< count){cout << posNode->data.name << "剩余" << posNode->data.many << "件" << "无法满足出货要求!" << endl;}}
}

4.存文件

int Goods::Sum()         //方便下次读取文件,放在文件第一行
{Node* p = headNode->next;int sum = 0;while (p != NULL){sum++;p = p->next;}return sum;
}
void Goods::saveInforFormFile(string fileName, struct Node* headNode)
{ofstream fout(fileName);//第一次开始无文件创建文件if (!fout)//创建文件{cerr << "打开失败!";}Node* pMove = headNode->next;int n = Sum();fout << n << endl;while (pMove != NULL)    //我的数据结点信息比较多,因此比较长,可根据需求自己调整{fout << setw(15) << std::left << pMove->data.num << setw(15) << std::left << pMove->data.name << setw(15) << std::left << pMove->data.type << setw(15) << std::left << pMove->data.inprice << setw(15) << std::left << pMove->data.outprice << setw(15) << std::left << pMove->data.many << setw(15) << std::left << pMove->data.soldname << endl;pMove = pMove->next;}fout.close();
}

5.读文件

void Goods::readInfoFromFile(string fileName, struct Node* headNode)
{ifstream fin(fileName);//第一次开始无文件创建文件if (!fin)//创建文件{cerr << "仓库不存在,请检查!"<<endl;}else {Node* posleftNode = headNode;Node* posNode = headNode->next;while (posNode != NULL){posleftNode = posNode;posNode = posleftNode->next;       delete posNode;posNode = NULL;}headNode->next = NULL;cout << "【加载仓库文件:"<< fileName <<"]" << endl;woodinfo tempdata;int n;fin >> n;for (int i = 0; i < n; i++){fin >> tempdata.num >> tempdata.name >> tempdata.type >> tempdata.inprice >> tempdata.outprice >> tempdata.many >> tempdata.soldname;Node* newNode = creatNode(tempdata);newNode->next = headNode->next;headNode->next = newNode;}}
}

6.根据售价排序(冒泡)

void Goods::bubbleSortList(Node* headNode)
{Node* headB = new Node;headB->next = NULL;Node* t = headB;Node* x = headNode->next;while (x != NULL){Node* m = new Node;m->data = x->data;x = x->next;m->next = NULL;t->next = m;t = t->next;}t->next = NULL;for (Node* p = headB->next; p!= NULL; p = p->next){for (Node* q = headB->next; q->next != NULL; q = q->next){if (q->data.outprice > q->next->data.outprice){//交换值woodinfo tempdata = q->data;q->data = q->next->data;q->next->data = tempdata;}}}printList(headB);
}

7.查找(关键值)

Node* Goods::searchByName(Node* headNode, string name)
{Node* posNode = headNode->next;while (posNode != NULL && posNode->data.name != name){posNode = posNode->next;}return posNode;
}

总结

还有几个比较简单的函数没有提及,比如插入新结点和删除结点等,小伙伴可以思考一下,这里只是提供参考
下面是我的测试展示

数据看起来可能怪怪的,因为是我胡诌的。

数据结构课设:仓库管理系统(C++)相关推荐

  1. 数据结构课设 宿舍管理系统

    题目:宿舍管理系统(为宿舍管理人员编写一个宿舍管理查询软件) 要求: 1.采用交互工作方式2.建立数据文件,数据文件按关键字(姓名.学号.房号)进行排序(冒泡.选择.插入排序等任选一种)3.查询菜单: ...

  2. 南京航空航天大学2020数据结构课设

    南京航空航天大学2020数据结构课设 目录 1.系统进程设计 2.迷宫问题 3.家谱管理系统 4.Huffman编码与解码 5.地铁修建 6.公交线路提示 7.B-树应用 8.排序算法比较 9.数字排 ...

  3. 华南农业大学课设——数据结构课设、Java课设、操作系统课设

    文章目录 缘起 大二上-数据结构课设(高校教学管理系统)-C++.Qt 视频演示 感想 大二下-Java课设(流程图绘制程序)-JavaFX 视频演示 感想 大三上-操作系统课设(模拟磁盘文件系统实现 ...

  4. 数据结构课设+校园导航系统+西安邮电大学

    数据结构课设+校园导航系统+西安邮电大学 设计目的:在校园建设不断完善的现在,为在校学生提供合适的行走路径,为来访的客人提供各种服务的信息:对于这些问题,可用图结构来表示校园交通网络,编写程序完成校园 ...

  5. 数据结构课设——宿舍管理查询软件(文件读取与查找排序)

    问题描述 任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求: (1)采用交互工作方式 (2)可以增加.删除.修改信息 (3)建立数据文件,数据文件按关键字(姓名.学号.房号)进行排序(选择 ...

  6. 那些年,我的数据结构课设,现在满满的回忆!(现如今身处内卷之中,已经很难出现当初那份乐趣了)

    一.看到这个图标很有感觉 距离当初完成数据结构课设已经过去很久很久了,当初由于U盘失踪,也丢失了很多宝贵的东西,我也伤心的好久`(>﹏<)′!不过最近找到了失散多年的亲兄弟,打开U盘,感概 ...

  7. 学生搭配问题数据结构报告c语言,数据结构课设学生搭配问题

    数据结构课设学生搭配问题 数 据 结 构 课程设计报告书 班级 学号 专业 姓名 课题描述: 一. 需求分析: 1. 设计内容 一班有m个女生,有n个男生(m不等于n),现要开一个舞会. 男女生分别编 ...

  8. 数据结构课设_网页形式的景区导游

    一.前言 欢迎大家来到这里~~ 1.这次数据结构课设,笔者的题目是网页形式的导航系统. 2.数据结构方面应用了链表存储商品信息.图来存储景点和路径信息.在图的广度优先中还用到了队列: 3.具体的算法有 ...

  9. 神秘国度的爱情故事 数据结构课设-广州大学

    神秘国度的爱情故事 数据结构课设-广州大学 ps:本次课设程序不仅需要解决问题,更需要注重代码和算法的优化和数据测试分析      直接广度优先实现的方法时间复杂度为O(QN),优化后的方法是lca+ ...

  10. 模拟浏览器操作程序(数据结构课设)

    文章目录 前言 一.题目 二.系统设计 2.1 功能模块图 2.2 主要功能函数 三.问题分析 四.实验结果及分析 五.源码 总结 前言 20级cqut的别抄! 一.题目  模拟浏览器操作程序:标准的 ...

最新文章

  1. GitHub 上 25 个 Python 学习资源,墙裂推荐!
  2. python 判断子序列_LeetCode 392. 判断子序列 | Python
  3. 网站优化之Ajax优化及相关工具
  4. rasa 中文 UnsupportedLanguageError: component ‘LanguageModelTokenizer‘ does not support language ‘zh‘.
  5. protel99se基本教程及使用教程
  6. 【语音识别】获得MOOC视频的文本(字幕)
  7. 喇叭天线的增益计算matlab源代码,一种测量标准喇叭天线增益的方法与流程
  8. 姓名拼音首字母缩写_2020年顶级网络安全首字母缩写
  9. 免费SSL证书和付费SSL证书有什么区别?
  10. 王家林人工智能AI第九节课:AI的上帝视角:神经网络能够完成各种计算模式的根本原因及神经网络能够识别图片宇宙密码 老师微信13928463918
  11. 地理坐标系:WGS84和BD09互转
  12. jsp显示中文文件名的图片 详细出处参考:http://www.jb51.net/article/37149.htm
  13. 根据观测时间,经纬度,求太阳高度角
  14. 直方图均衡化高斯滤波
  15. Python中json.loads()无法解析单引号字符串问题的两种解决方法
  16. 第157篇 合约安全-随机数
  17. VirtualBox安装centos7时无法安装问题
  18. 计算机网络之物理层-频带传输
  19. JavaScript (递归函数)
  20. PHP输出一段励志的话,100句关于励志的话,青春励志的话,写得好的励志句子

热门文章

  1. 线性与非线性规划问题求解
  2. 电商ERP软件、订单管理系统、库存管理系统
  3. Word VBA中读取Excel表格中的数据
  4. 数学建模——人口预测模型
  5. 【毕设教程】物联网/嵌入式/单片机毕业设计项目开发流程
  6. C++项目学习(机器人方向)
  7. 简单工厂模式-工厂模式-抽象工厂模式类图
  8. wⅰndows办公软件2003,办公软件2003官方下载-Office 2003官方下载免费完整版-华军软件园...
  9. DataFormatString 的使用
  10. 超级好用的KeyBoard WPF软键盘