ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:85.98KB ,
资源ID:3323161      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3323161.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(物品库存管理课程设计报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

物品库存管理课程设计报告.docx

1、物品库存管理课程设计报告南京理工大学紫金学院VC+课程设计报告课 程:VC+课程设计系 别:计算机系班 级:计科一班学 号:120601105姓 名:付瑞课题名称:物品库存管理起止时间:2013.11.262013.12.11指导教师:朱 俊2013年 12 月1 程序功能介绍用文件系统实现的物品库存管理程序。一种商品的品种里面包括(10个)品牌,以品种为单位,可以实现商品品种的添加、删除、查找、显示,以及商品的进货,出货等功能。2 课程设计要求(1)组成商品品种的品牌不限数量,设置一个最大值(比如10),增加一个成员变量指示品牌的具体数量。商品品种的数量是每个品牌的数量之和。(2)设计输出每

2、日进货与出货的统计表,要求进货与出货分别为两个文本文件,清单上列有进出货物的时间、品种描述,具体品牌的进出货数量,如果是出货清单,在每笔出货的清单后还要有该次提取货物的总价格。(3)商品品种以品种代码的顺序存放。3 对课程题目的分析该设计比较复杂,要对原程序做较大的修改,首先是数据的存放形式,因为要求数据按代码的顺序存放,并且进出货时对数据的各个组成成员都要做较大的修改。如果要用文件的形式存放,那么文件的读写就非常频繁,而且要使用大量的临时文件,因此建议使用链表的形式存放数据,在程序开始运行时读取固定文件中的数据,程序运行时全部数据都在内存进行操作。在程序运行结束前再将链表中的数据存放在原来的

3、文件中,供下次运行程序时读取。建议首先将文件读取这部分程序调试好,这样在调试程序时就不用每次都从键盘输入数据了,可以节省大量的时间。同时,对链表中结点的操作有很多典型的程序可以参考,不同的结点只是数据部分类型不同,所以只要在上面稍加修改就可以使用。4 程序设计和说明(说明算法思想、设计思路,给出重要的、关键的代码)(1)类的封装由于数据的存放形式使用链表的形式,所以对于程序的很多操作实际上都是要求对链表进行一系列处理。其中吧Citem类作为一个结点,因此包含了大量对链表进行操作的函数,为了满足程序的完整性与可读性,应将对链表操作的所有程序封装在一起。 class Brand /品牌类 . fr

4、iend class CItem; /定义品种类为友元类; class CNode /结点类 . friend class CList; /定义链表类为友元类; class coustomer /客户类 .;(2)程序功能菜单的设置 程序主题采用菜单选项的形式,输入相应的菜单选项后程序可以反复运行,而其中还要求3.4.5.6.8.9.项各有一个菜单,分别是:按照商品品种名称和按照商品代码进行操作。 * * ¥欢迎使用物品库存管理系统¥ * * * * 设计者 付瑞 * * * * 指导老师 朱俊 * * * * 详细目录 1. 添加商品品种 2. 显示商品品种 3. 查询商品 4. 删除商品

5、5. 商品出库 6. 商品进库 7. 添加客户 8. 删除客户 9. 查询客户 10.显示客户资料 0. 退出系统 输入选择: int CItem:SetItem(int n) /置品种数据,正确返回1,当n为1时,是新进货物,输出至出清单文件 coutn输入商品名称:; Flush(cin); cin.getline(Item_name,20); coutItem_code; coutn输入商品颜色:; Flush(cin); cin.getline(colour,20); coutn输入品牌数:(不超过MAXNUMnBrnd; /循环实现品牌数据的输入,count为商品总数 for(int

6、 i=0,count=0;inBrnd;i+) coutn输入品牌i+1的数据n; coutn输入品牌名称:; Flush(cin); cin.getline(brndi.brnd_name,20); coutbrndi.Brand_code; coutbrndi.quantity; coutbrndi.brnd_price; count+=brndi.quantity; quantity=count; if(n=1) ofstream file(进货清单.txt,ios:out|ios:ate); if(!file) cout错误,不能打开文件.; getch(); exit(1); tim

7、er=time(NULL); filectime(&timer); file品种t代码t颜色n; fileItem_nametItem_codetcolourn; file品牌t代码t数量t价格n; for(int i=0;inBrnd;i+) filebrndi.brnd_nametbrndi.Brand_codet brndi.quantitytbrndi.brnd_pricen; filen; file.close(); return 1; 此函数的两个功能:第一个是在添加商品时从键盘输入商品的各种数据,调用这个功能时利用n的缺省值,在调用时不给n赋值;第二个是在进货时如果进的是新的品种

8、,那么也要从键盘输入这个品种的各种数据,这部分与第一个功能相同,但是进货要输出进货清单,所以进货功能调用该函数时n设置为1,函数在运行时增加一个判断语句,若n为1时,将所键入的数据输出至进货清单。void CItem:Show()/显示品种数据 cout品种t代码t颜色n; coutItem_nametItem_codetcolourn; cout品牌t代码t数量t价格n; for(int i=0;inBrnd;i+) coutbrndi.brnd_nametbrndi.Brand_codet brndi.quantitytbrndi.brnd_pricen; coutnnflush; sys

9、tem(pause); coutn;这个函数也是与出货功能有关,与InModify()的函数类似。因为是库中的商品出货,所以商品品种必须存在,若不存在,则输出提示信息,出货失败。还有一种可能是商品品种曾经存在,但已经全部出完了,这时,该品种的各种数据还存在,只是数量为零。所以,在函数开始执行时要判断库存量是否为零,若为零,则输出提示信息,出货失败。在出货成功结束时同样要将本品种的各种品牌的出货数据输出到出货清单中。同样,该函数也是对链表中所存在的结点的数据部分的修改。void CItem:OutModify()/出货,修改结点中的数据部分 int choice,count,chuhuo,pri

10、ce=0; /chuhuo为出货量,price为总价格 int *num; num=new intnBrnd; if(quantity=0) cout数量为0.; exit(1); for(int i=0;inBrnd;i+) /储存原来的数量 numi=brndi.quantity; cout品牌t代码t数量t价格n; for(i=0;inBrnd;i+) couti+1.brndi.brnd_nametbrndi.Brand_codet brndi.quantitytbrndi.brnd_pricen; coutnn; coutchoice; while(choice=1&choice=n

11、Brnd) coutcount; while(countbrndchoice-1.quantity) coutcount; brndchoice-1.quantity-=count; coutchoice; ofstream file(出货清单.txt,ios:out|ios:ate); if(!file) cout错误,不能打开文件.; getch(); exit(1); timer=time(NULL); filectime(&timer); file品种t代码t颜色n; fileItem_nametItem_codetcolournn; file品牌t代码t价格t出货量n; for(i=

12、0;inBrnd;i+) if(chuhuo=numi-brndi.quantity) price=chuhuo*brndi.brnd_price; filebrndi.brnd_nametbrndi.Brand_codet brndi.brnd_pricetchuhuon; file总价格为:pricenn; delete num; file.close();InModify()同样也与进货功能有关。因为所进的品种可能是也有的品种,只是增加其中的数量而已。所以,在输入进货品种或品种代码时要判断是否是库中已有的品种,若是就调用这个函数,只从键盘输入具体的品牌数量或新增品牌数据即可,而不用在键入

13、品种的各种数据,同时,新键入的各种数据也输出到进货清单。实际上该函数是对链表中所存在的结点的数据部分的修改。此函数先判断出货量是不是大于库存量,如果大于将显示“库存不足,重新输入”。如果小于的话将会继续程序,通过brndchoice-1.quantity-=count;把原有量减去省下剩余量。void CItem:InModify()/已有商品,再次进货,修改结点中的数据部分 char name20; char choice; int count,jinhuo=0; int prenBrnd=nBrnd; /原先品牌数 int n=1; /用于判断是否继续进货 int flag=0; /用于判

14、断是否新品牌 int * num; num=new intprenBrnd; for(int i=0;inBrnd;i+) /储存原来的数量 numi=brndi.quantity; while(n) coutnn输入品牌名称:; Flush(cin); cin.getline(name,20); for(int i=0;inBrnd;i+) if(strcmp(brndi.brnd_name,name)=0) coutcount; brndi.quantity+=count; quantity+=count; flag=1; break; if(flag=0) strcpy(brndnBrn

15、d.brnd_name,name); coutbrndnBrnd.Brand_code; coutbrndnBrnd.quantity; coutbrndnBrnd.brnd_price; quantity+=brndnBrnd.quantity; nBrnd+; coutchoice; if(choice=y|choice=Y) n=1; else n=0; ofstream file(进货清单.txt,ios:out|ios:ate); if(!file) cout错误,不能打开文件.; getch(); exit(1); timer=time(NULL); filectime(&time

16、r); file品种t代码t颜色n; fileItem_nametItem_codetcolournn; file品牌t代码t价格t进货量n; for(i=0;iprenBrnd;i+) if(jinhuo=brndi.quantity-numi) filebrndi.brnd_nametbrndi.Brand_codet brndi.brnd_pricetjinhuoprenBrnd) for(i=prenBrnd;inBrnd;i+) filebrndi.brnd_nametbrndi.Brand_codet brndi.brnd_pricetbrndi.quantityn; filenn

17、; delete num; file.close(); void add()这个函数实现添加客户资料功能。创建了一个“客户资料”文件,从键盘输入客户资料,再将客户的资料传到文件中,从而实现添加的功能。void customer:add() /加入客户资料 ofstream file( 客户资料.txt, ios:out |ios:ate ); if(!file) cout错误,无法打开文件; getch(); exit(1); customer p2; p2.getdata(); /从键盘输入客户资料 /将该客户的资料传到文件中 file.write(reinterpret_cast (&p2

18、),sizeof(customer);/reinterpret_cast将其他类型的数据转换为字符指针 void showab()这个函数实现的是显示客户资料的功能。首先以输入方式打开文件,读取“客户资料”文件,再读取,从而实现显示的功能。void customer:showab() /全部显示 ifstream file( 客户资料.txt ,ios:in); /以输入方式打开文件 if(!file) cout错误,无法打开文件; getch(); exit(1); customer p2; file.read(reinterpret_cast (&p2),sizeof(customer);

19、/读取文件内容 while(!file.eof()/读入正确,显示,接着读取 p2.showdata(); getch(); file.read(reinterpret_cast (&p2),sizeof(customer); void search()这个函数实现的是查询客户资料的功能。增加了一个子菜单,选择是按客户名称查询,或者是按客户代码查询,亦或者是退出。同样的,我们所需的数据是要从“客户资料”文件中读取的。void customer:search() /搜索 char name110; int code; int choice; coutnn1. 按客户名称查询 ; coutnn2.

20、 按客户代码查询 ; coutnn0. 退出 ; coutchoice; switch(choice) case 1: coutname1; code=0; break; case 2: coutcode; strcpy(name1,null); break; fstream file( 客户资料.txt ,ios:in); if(!file) cout错误,无法打开文件; getch(); exit(1); char flag=a; customer p2; file.read(reinterpret_cast(&p2),sizeof(customer); while( !file.eof(

21、) ) if(strcmp(p2.customer_name,name1)=0) | (p2.customer_code=code) p2.showdata(); getch(); flag=z; break; file.read(reinterpret_cast (&p2),sizeof(customer); if(flag !=z) cout(nn客户未找到nn); getch(); void remove()这个函数实现的是删除客户资料的功能。和search函数一样,也是添加了一个子菜单,打开文件,若文件存在,则删除原文件,否则显示,“错误 文件无法打开”,依次读取文件内容,将未删除的文

22、件写入temp中,然后再将temp文件中的内容写回file1中。void customer:remove() /删除客户 char name110; int code; int choice; coutnn1. 按客户名称删除 ; coutnn2. 按客户代码删除 ; coutnn0. 退出 ; coutchoice; if(choice=1) coutname1; code=0; else coutcode; strcpy(name1,null); ifstream file( 客户资料.txt ,ios:in ); ofstream temp( delete2.txt, ios:trunc

23、); if( !file |!temp) coutn无法打开文件n; getch(); exit(1); file.seekg(0); temp.seekp(0); customer p2; file.read(reinterpret_cast (&p2),sizeof(customer); while( !file.eof() ) if( (strcmp(name1,p2.customer_name)=0) | (code=p2.customer_code) file.read(reinterpret_cast (&p2),sizeof(customer); else temp.write(reinterpret_cast(&p2),sizeof(customer);/将未删除的文件写入temp中 file.read(reinterpret_cast (&p2),sizeof(customer); file.close(); temp.close(); ifstream temp1(delete2.txt,ios:in); ofstream file1(客户资料.txt, ios:trunc); temp1.seekg(0); file1.seekp(0); temp1.read( reinterpret_castchar *

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1