紫金学院Visual C++课程设计
南京理工大学紫金学院VC++课程设计报告
课 程: VC++课程设计 系 别: 计算机系 班 级: 计科一班 学 号: 120601105 姓 名: 付瑞
课题名称: 物品库存管理 起止时间: 2013.11.26~2013.12.11 指导教师: 朱 俊
2013年 12 月
紫金学院 Visual C++课程设计 2012级 计科、网络、软件
1. 程序功能介绍
用文件系统实现的物品库存管理程序。一种商品的品种里面包括(<10个)品牌,以品种为单位,可以实现商品品种的添加、删除、查找、显示,以及商品的进货,出货等功能。
2. 课程设计要求
(1)组成商品品种的品牌不限数量,设置一个最大值(比如10),增加一个成员变量指示品牌的具体数量。商品品种的数量是每个品牌的数量之和。
(2)设计输出每日进货与出货的统计表,要求进货与出货分别为两个文本文件,清单上列有进出货物的时间、品种描述,具体品牌的进出货数量,如果是出货清单,在每笔出货的清单后还要有该次提取货物的总价格。
(3)商品品种以品种代码的顺序存放。
3. 对课程题目的分析
该设计比较复杂,要对原程序做较大的修改,首先是数据的存放形式,因为要求数据按代码的顺序存放,并且进出货时对数据的各个组成成员都要做较大的修改。如果要用文件的形式存放,那么文件的读写就非常频繁,而且要使用大量的临时文件,因此建议使用链表的形式存放数据,在程序开始运行时读取固定文件中的数据,程序运行时全部数据都在内存进行操作。在程序运行结束前再将链表中的数据存放在原来的文件中,供下次运行程序时读取。建议首先将文件读取这部分程序调试好,这样在调试程序时就不用每次都从键盘输入数据了,可以节省大量的时间。同时,对链表中结点的操作有很多典型的程序可以参考,不同的结点只是数据部分类型不同,所以只要在上面稍加修改就可以使用。
4. 程序设计和说明(说明算法思想、设计思路,给出重要的、关键的代码) (1)类的封装
由于数据的存放形式使用链表的形式,所以对于程序的很多操作实际上都是要求对链表进
行一系列处理。其中吧Citem类作为一个结点,因此包含了大量对链表进行操作的函数,为了满足程序的完整性与可读性,应将对链表操作的所有程序封装在一起。
class Brand //品牌类 {
......
friend class CItem; //定义品种类为友元类 };
class CNode //结点类 { ......
friend class CList; //定义链表类为友元类 };
class coustomer //客户类 {
...... };
(2)程序功能菜单的设置
程序主题采用菜单选项的形式,输入相应的菜单选项后程序可以反复运行,而其中还要
1
紫金学院 Visual C++课程设计 2012级 计科、网络、软件
求3.4.5.6.8.9.项各有一个菜单,分别是:按照商品品种名称和按照商品代码进行操作。
******************************************** * ¥欢迎使用物品库存管理系统¥ * * * * 设计者 付瑞 * * * * 指导老师 朱俊 * * * ******************************************** 详细目录
1. 添加商品品种 2. 显示商品品种 3. 查询商品 4. 删除商品 5. 商品出库 6. 商品进库 7. 添加客户 8. 删除客户 9. 查询客户 10.显示客户资料 0. 退出系统 输入选择:
int CItem::SetItem(int n) //置品种数据,正确返回1,当n为1时,是新进货物,输出至出清单文件
{
cout<<\输入商品名称:\
Flush(cin);
cin.getline(Item_name,20); cout<<\输入商品代码:\cin>>Item_code;
cout<<\输入商品颜色:\Flush(cin);
cin.getline(colour,20);
cout<<\输入品牌数:\不超过\个)\cin>>nBrnd;
//循环实现品牌数据的输入,count为商品总数 for(int i=0,count=0;i
2
紫金学院 Visual C++课程设计 2012级 计科、网络、软件
} quantity=count; if(n==1) { ofstream file(\进货清单.txt\ if(!file) { cout<<\错误,不能打开文件.\ getch(); exit(1); } timer=time(NULL); file< } 此函数的两个功能:第一个是在添加商品时从键盘输入商品的各种数据,调用这个功能时利用n的缺省值,在调用时不给n赋值;第二个是在进货时如果进的是新的品种,那么也要从键盘输入这个品种的各种数据,这部分与第一个功能相同,但是进货要输出进货清单,所以进货功能调用该函数时n设置为1,函数在运行时增加一个判断语句,若n为1时,将所键入的数据输出至进货清单。 void CItem::Show()//显示品种数据 { cout<<\品种\代码\颜色\ cout< 3 紫金学院 Visual C++课程设计 2012级 计科、网络、软件 这个函数也是与出货功能有关,与InModify()的函数类似。因为是库中的商品出货,所以商品品种必须存在,若不存在,则输出提示信息,出货失败。还有一种可能是商品品种曾经存在,但已经全部出完了,这时,该品种的各种数据还存在,只是数量为零。所以,在函数开始执行时要判断库存量是否为零,若为零,则输出提示信息,出货失败。在出货成功结束时同样要将本品种的各种品牌的出货数据输出到出货清单中。同样,该函数也是对链表中所存在的结点的数据部分的修改。 void CItem::OutModify()//出货,修改结点中的数据部分 { int choice,count,chuhuo,price=0; //chuhuo为出货量,price为总价格 int *num; num=new int[nBrnd]; if(quantity==0) { cout<<\数量为0.\ exit(1); } for(int i=0;i 4