C++-语言---课程设计----仓库管理系统(共26页).doc
-
资源ID:13615501
资源大小:298.50KB
全文页数:26页
- 资源格式: DOC
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
C++-语言---课程设计----仓库管理系统(共26页).doc
精选优质文档-倾情为你奉上目 录专心-专注-专业1 课程设计的目的和意义课程设计的目的: 企业的库存管理往往是很复杂、很繁琐的。由于所掌握的物资种类众多,出入库、管理、供销商的渠道各有差异,各个企业之间的管理体制不尽相同,因此仓库的库存管理必须编制一套库存管理系统,实现计算机化操作,而且必须根据企业的具体情况制定相应的方案。 根据当前的企业管理体制,一般的库存管理系统,总是根据所掌握的物资类别,相应分成几个模块来进行商品的出入库,库存盘点,以及对供销商的详细记录。为了加强关键物资、设备的管理,要定期掌握其储备,消耗情况,根据计划进行进货,使得各商品不会缺货,使物资设备的储备最佳。 因此有必要开发一套库存管理系统来提高企业工作效率, 而所使用的这套库存管理系统是企业生产经营管理活动中的核心,此系统必须可以用来控制合理的库存费用、适时适量的库存数量,使企业生产活动效率最大化。通过对这些情况的仔细调查,我们开发了下面的仓库库存管理系统。课程设计的意义: 库存管理的主要目标就是通过对仓库所有入出库活动的管理及对库存数据有效的统计和分析,以保证企业生产中畅通的物流,使决策人员及早发现问题,采取相应措施,调整库存结构,缩短储备周期,加速资金周转,最大限度地降低库存占用,同时,通过周期性的仓库盘点,及时补救管理中的漏洞,使库存管理系统实时地反映企业中各个仓库的现时情况,为各类管理人员从不同侧面提供所需信息,以便协调企业经营收到更大效益,库存管理系统是协调企业生产经营的基础,其数据的准确性、方便的查询、有效的分析是整个计算机管理系统顺利运行的关键。 随着我国经济的飞速发展,各种类型规模的公司企业迅速崛起,许多从事生产和经营管理的企业都有自己生产和销售的产品,而这些产品都需要储存在仓库中,对于每个企业来说,随着企业规模的不断扩大,产品数量的急剧增加,所生产产品的种类也会不断地更新与发展,有关产品的各种信息量也会成倍增长。面对庞大的产品信息量,如何有效地管理库存产品,对这些企业来说是非常重要的,库存管理的重点是销售信息能否及时反馈,从而确保企业运行效益。而库存管理又涉及入库、出库的产品及客户等方方面面的因素,如何管理这些信息数据,是一项复杂的系统工程,充分考验着仓库管理员的工作能力,工作量的繁重是可想而知的,所以这就需要由库存管理系统来提高库存管理工作的效率,这对信息的规范管理、科学统计和快速查询,减少管理方面的工作量,同时对于调动广大员工的工作积极性,提高企业的生产效率,都具有十分重要的现实意义。2 需求分析库存管理系统 本系统是一个针对企业商品的仓库管理的软件,我们需要做到的是让企业能够更好的对旗下的仓库进行记录,汇总查询,以及掌握商品的供销商的信息记录。库存记录管理供销商管理物品信息管理1.增加项目4.修改项目信息0.返回7.读取项目信息6.保存项目信息3.查找项目信息2.显示全部项目物品信息管理 库存管理系统的总层次图5.删除项目信息 本人负责的物品信息管理层次图3 系统设计3.1各模块功能分析模块一:增加项目物品信息管理系统选择界面输入数字:1 按输入入库项目的数量 任意键返回输入项目编号输入项目品名输入商品单价此模块是为库存管理系统增加仓库的新商品信息。运行界面如下:模块二:显示全部项目物品信息管理系统选择界面输入数字:2 按任意键显示结果界面返回此模块是为仓库管理员提供仓库所有的商品的信息。运行界面如下:模块三:查找项目信息物品信息管理系统选择界面 返回输入数字:3查找菜单输入数字:1输入编号查询按任意键返回输入数字:2输入品名查询输入数字:3输入数量范围查询输入数字:4输入单价范围查询输入数字:5输入总价范围查询输入数字:0此模块是帮助仓库管理员查找仓库所有商品信息。运行界面如下:模块四:修改项目信息物品信息管理系统选择界面 返回输入数字:4修改菜单输入数字:1输入编号修改按任意键返回输入数字:2输入品名修改输入数字:3输入数量范围修改输入数字:4输入单价范围修改输入数字:5输入总价范围修改输入数字:0此模块是帮助仓库管理员修改仓库商品信息。运行界面如下:模块五:删除项目信息物品信息管理系统选择界面 返回输入数字:5删除菜单输入数字:1输入编号删除按任意键返回输入数字:2输入品名删除输入数字:3输入数量范围删除输入数字:4输入单价范围删除输入数字:5输入总价范围删除输入数字:0此模块是帮助仓库管理员删除仓库里的错误商品信息。运行界面如下:3.2类、函数及说明class Inventorypublic:Stock *pHead; /定义一个头结点int count;/定义数量Inventory();/构造函数Inventory();/析构函数int Save(char fileName);/保存所有项目信息到文件int Load(char fileName);/从文件中读取项目信息void Menu();/处理项目信息模块菜单private:friend class OutStocks;/声明友元类void Display();void AddStock(Stock*);/添加一个项目void AddStocks();/添加多个项目int MenuSelect();/显示和处理项目信息模块菜单;class Stockprotected:int price;/单价int amount;/数量char num20;/编号char name20;/品名public:Stock(void);/构造函数Stock *next;/定义next指针void SetNum(char);/声明初始化编号函数char* GetNum();/获得编号函数void SetName(char);/初始化名称函数char *GetName();/获得名称函数void SetPrice(int);/声明初始化价格函数int GetPrice();/获得价格函数void SetAmount(int);/初始化数量函数int GetAmount();/获得数量函数void Input(char* a);/声明输入函数void Add(int);/声明添加函数void Out(int);/声明出库函数void Update();/声明更新函数void Display();/声明打印函数;4 系统测试输入数字:2首先增加项目:然后显示全部项目:然后查找(例如按品名查找和按单价查找):然后是修改(例如按编号或者总价修改:然后删除操作(例如按数量和编号删除):5 心得体会通过两周的课程设计使我对C+有了更深刻的认识,不仅学习到了基本的理论知识,还了解到了C+语言程序设计的思想,这些知识都为我的课程设计和进一步的学习打下了坚实的基础。关于库存管理系统的课程设计,一方面是为了检查这一个学期来计算机语言及链表的学习成果,另一方面也是为了让我们进一步掌握和熟练地运用它,与此同时,也能够让我们认清自己在C+学习方面的不足之处和薄弱环节,并加以弥补和巩固。通过对库存管理系统的程序设计,进一步的巩固了用C+语言编写程序的能力,并且利于更好的掌握C+语言! 在为期近两周的C+课程设计中,我加强了对C+程序设计这门课程的认识,并且复习了自己以前学习到的知识,自己的逻辑思考能力也提高不少。这些都使得我对计算机语言的学习有了更深入的认识!总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。最重要的还是激发了我编程的兴趣和热情,让我从一个只懂理论变成了能做一些小型程序。整体地评价这次课程设计,我认为收获很大,正如上面所说的那样,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识。像库存管理系统这样的应用程序的设计和创建,经历了平时在课堂和考试中不会出现的难题和考验。而这些问题,又都是课本上很少提到的、更深一层的实践与知识相结合的问题,这并不是我们平时只靠课本,就可以轻易解决的。刚开始我们的程序缺乏实际应用意义,在屠老师的指导下,我们更深刻的知道了一个库存管理系统应该具备的内容,比如出入库,库存信息,供销商信息等等。所以,这次课程设计锻炼了我们面对难题,学会根据客户需求解决具体问题的能力,进一步培养了独立思考问题和解决问题的能力。特别是对于链表的运用。当然,屠老师的指导和同学的帮助也是不可忽视的,他们给了我许多提示和帮助,教会了我编译复杂程序的方法。总而言之,这次C+程序设计实践让我收获很大。参考文献1 数据结构(C语言版)清华大学出版社2 C语言课程设计(第2版)电子工业出版社3 百度-C+课程设计吧附录 源程序头文件:Inventory.h#pragma once#include "Stock.h"class Inventorypublic:Stock *pHead; /定义一个头结点int count;/定义数量Inventory();/构造函数Inventory();/析构函数int Save(char fileName);/保存所有项目信息到文件int Load(char fileName);/从文件中读取项目信息void Menu();/处理项目信息模块菜单private:friend class OutStocks;/声明友元类void Display();void AddStock(Stock*);/添加一个项目void AddStocks();/添加多个项目int MenuSelect();/显示和处理项目信息模块菜单;头文件:Stock.h:#pragma onceclass Stockprotected:int price;/单价int amount;/数量char num20;/编号char name20;/品名public:Stock(void);/构造函数Stock *next;/定义next指针void SetNum(char);/声明初始化编号函数char* GetNum();/获得编号函数void SetName(char);/初始化名称函数char *GetName();/获得名称函数void SetPrice(int);/声明初始化价格函数int GetPrice();/获得价格函数void SetAmount(int);/初始化数量函数int GetAmount();/获得数量函数void Input(char* a);/声明输入函数void Add(int);/声明添加函数void Out(int);/声明出库函数void Update();/声明更新函数void Display();/声明打印函数;Inventory.cpp:#include "Search.h"#include <fstream>#include <iomanip>#include <iostream>using namespace std;extern Search Search;/寻找Search的定义Inventory:Inventory()count=0;pHead = new Stock();/给头结点分配储存空间pHead->next = NULL;/头结点的下一个节点置空Inventory:Inventory()/析构函数/要将所有节点释放掉Stock *pCurrent;/定义一个当前指针pCurrent=pHead;/把头结点赋给当前指针while(pCurrent->next != NULL)/当当前指针指向的下一个节点不为空pHead = pHead->next;/头结点后移一个单位free(pCurrent);/释放当前节点pCurrent = pHead;/头结点赋给当前指针free(pCurrent);/释放当前节点void Inventory:AddStock(Stock *pCurrent)char n5;while(pCurrent->next != NULL)/ 当pCurrent下一个节点不为空pCurrent = pCurrent->next; /pCurrent结点后移一个单位cout<<"tt编 号:"cin>>n;pCurrent->Input(n);/调用输入函数pCurrent->next = new Stock();/给pCurrent下一个结点分配储存空间pCurrent = pCurrent->next; /pCurrent结点后移一个单位pCurrent->next = NULL; / pCurrent下一个节点为空count+;void Inventory:AddStocks()int n;cout<<"ntt请输入入库项目数量:"cin>>n;getchar();/消除回车符if(n<1)return;Stock *pCurrent;pCurrent = pHead; /把头结点赋给当前指针for( int i=1;i<=n;i+ )cout<<"ntt"<<i<<":"<<endl;AddStock(pCurrent);system("pause");void Inventory:Display()if(count=0)system("cls");cout<<"nnntt无物品记录。nntt"system("pause");return;system("cls");cout<<"库存物品共"<<count<<"项:" cout<<"nn"cout<<"序号 编号 品名 单价 数量 总价 n"cout<<"n"cout<<" n"Stock *pCurrent;pCurrent = pHead; /把头结点赋给当前指针for(int i=1;pCurrent->next!=NULL;i+)cout<<""<<setfill('0')<<setw(3)<<i<<'t'pCurrent->Display();/调用打印函数cout<<" "<<endl;pCurrent=pCurrent->next; /pCurrent结点后移一个单位cout<<" n"cout<<"n"system("pause");int Inventory:Save(char fileName)ofstream oFile(fileName,ios:out|ios:binary);/ 二进制方式写入文件if(!oFile)cout<<"tt文件“"<<fileName<<"”打开失败!"<<endl;return 0;oFile.write(char *)&count,sizeof(int);Stock *pCurrent;pCurrent=pHead; /把头结点赋给当前指针while(pCurrent!=NULL)/ pCurrent指针不为空oFile.write(char *)pCurrent,sizeof(*pCurrent);pCurrent=pCurrent->next; /pCurrent结点后移一个单位oFile.close();/别忘了关闭文件流return 1;int Inventory:Load(char fileName)ifstream iFile(fileName,ios:in|ios:binary);if(!iFile)cout<<"tt文件“"<<fileName<<"”打开失败!"<<endl;return 0;iFile.read(char *)&count,sizeof(int);if( iFile.peek()!=EOF )/文件内容不为空/第一个节点需单独读取pHead = new Stock();iFile.read(char *)pHead,sizeof(*pHead);elsepHead=NULL;/头结点为空return 1;Stock *pCurrent;pCurrent = pHead; /把头结点赋给当前指针while(iFile.peek()!=EOF)/后续节点循环读取pCurrent->next = new Stock();/给pCurrent下一个结点分配储存空间iFile.read(char *)&(*(pCurrent->next),sizeof(*(pCurrent->next);pCurrent=pCurrent->next; /pCurrent结点后移一个单位pCurrent->next = NULL;iFile.close();/别忘了关闭文件流return 1;int Inventory:MenuSelect()char s5;int cn;system("cls"); cout<<"nn"cout<<"物 品 信 息 管 理ver0.9测试版n"cout<<" n"cout<<" 1. 增 加 项 目 n"cout<<" 2. 显 示 全 部 项 目 n"cout<<" 3. 查 找 项 目 信 息 n"cout<<" 4. 修 改 项 目 信 息 n"cout<<" 5. 删 除 项 目 信 息 n"cout<<" n"cout<<" 6. 保 存 库 存 记 录 n"cout<<" 7. 读 取 库 存 记 录 n"cout<<" 0. 返 回 n"cout<<" n"cout<<"n"cout<<"n"cout<<"tt请按键选择选择:"for(;)gets_s(s);cn=atoi(s);if(cn>7)cout<<"ntt输入错误,请按目录选择:"elsebreak;return cn;void Inventory:Menu()for(;)switch(MenuSelect()case 1:AddStocks();/调用增加函数break;case 2:Display();/调用打印函数break;case 3:Search.Menu(1);/调用查找函数break;case 4:Search.UpdateMenu(1);break;case 5:Search.DeleteMenu(1);break;case 6:if(Save("Stock.data")cout<<"tt项目信息保存成功!n"<<endl;elsecout<<"tt项目信息保存失败!n"<<endl;system("pause");break;case 7:if(Load("Stock.data")cout<<"tt项目信息读取成功!n"<<endl;elsecout<<"tt项目信息读取失败!n"<<endl;system("pause");break;case 0:return;Stock.cpp:#include "Stock.h"#include <iomanip>#include <iostream>using namespace std;Stock:Stock(void)amount=0;next = NULL;void Stock:SetNum(char n)strcpy_s(num,n);char* Stock:GetNum()return num;void Stock:SetName(char n)strcpy_s(name,n);char* Stock:GetName()return name;void Stock:SetPrice(int n)price = n;int Stock:GetPrice()return price;void Stock:SetAmount(int n)amount=n;int Stock:GetAmount()return amount;void Stock:Input(char* a)int n;char ch10;SetNum(a);cout<<"tt品 名:"cin>>ch;SetName(ch);cout<<"tt单 价:"cin>>n;getchar();SetPrice(n);void Stock:Add(int n)amount+=n;void Stock:Out(int n)amount-=n;void Stock:Update()int n;char ch10;cout<<"tt编 号:"cin.getline(ch,'n');SetNum(ch);cout<<"tt品 名:"cin.getline(ch,'n');SetName(ch);cout<<"tt单 价:"cin>>n;getchar();SetPrice(n);cout<<"tt数 量:"cin>>n;getchar();SetAmount(n);void Stock:Display()cout<<GetNum()<<"tbb"<<GetName()<<"tbbbb"<<GetPrice()<<"t "<<setfill('0')<<setw(3)<<GetAmount()<<"t"<<GetAmount()*GetPrice();