# 基于C++的物资管理系统的设计与实现
# 一 需求分析
程序需实现以下功能:
- 新物资信息录入(编号、名称、库存)
- 查询已录入的所有物资信息(编号或名称为索引)
- 添加物资信息(编号或名称为索引)
- 领物资并生成领料单(编号或名称为索引)
- 浏览领料单或物资库存清单
- 物资信息保存,创建格式化文本
# 二 程序设计
程序流程图如下所示:
![](http://www.writebug.com/myres/static/uploads/2021/10/19/c191cdb2d1e5b8a161ac076a8e16e4cc.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/19/a716531a8196756fc6ef6b8540391ca2.writebug)
# 三 程序实现
## 3.1 开发环境
- Windows XP
- Microsoft Visual C++ 6.0
## 3.2 程序结构
### 3.2.1 函数头
```c++
# include <iostream.h> //包括cin , cout , 等函数
# include <string.h> //包括 类,对象,数组,等函数定义
# include <fstream.h> //包括 文本文档的读/写/复制 等函数
# include <stdlib.h> //包括 exit等函数
```
### 3.2.2 主函数
```c++
void main ()
```
### 3.2.3 子函数
```c++
void Entering(fstream); //新物资信息录入
void Inquire(fstream); //单一物资查询
void Append(fstream); //旧物资的添加
void Getthing(fstream); //领物资
void Showthing(fstream); //领料单及库存清单
void CreateTxt(fstream); //物资信息生成
```
## 3.3 关键类与函数实现
### 3.3.1 物资类
建立一个物资类,功能模块为成员函数,物资信息为私有成员,封装性得到保证,其中,ID[10]用来存放物资编号,thingname[40]用来存放物资名称,sum是物资库存量。
```c++
class Material
{
public:
void Entering(fstream); //新物资信息录入
void Inquire(fstream); //单一物资查询
void Append(fstream); //旧物资的添加
void Getthing(fstream); //领物资
void Showthing(fstream); //物资库存清单
void CreateTxt(fstream); //物资信息保存
private:
char ID[10];
char thingname[40];
long sum;
};
```
### 3.3.2 录入函数
函数开头和结尾都使用system("cls")清除所有显示的信息。
```c++
fs.write((char*)this,sizeof(Material));
```
将新物资信息持续录入到文件中储存
在for()中镶嵌if语句,输入choice,if(choice==0)break;退出信息录入
返回主菜单
### 3.3.3 查询函数
考虑到使用时不可能记得所有物资编号,所以运用了2种查询方式,包含按名称查询和按编号查询2种模式查询,实用性更高一点。
在for语句中内嵌switch语句,进行选择操作,
```c++
do
{
fs.read((char*)this,sizeof(Material));
}while(strcmp(thingname,name)!=0&&fileend!=fs.tellg());
```
当输入物资名称与保存在文件中的物资名称不同时,程序将文件中的信息写入内存中。
每次将信息读入内存后读指针后移,不断移动后,当输入要查询的物资名name与文件中保存的物资信息名称相同时,输出物资信息到显示器上。
按编号查询功能同上。
### 3.3.4 添加函数
同样运用2种模式进行添加(按名称进行添加,按编号进行添加)
在该功能模块中
```c++
do
{
fs.read((char*)this,sizeof(Material));
}while(strcmp(thingname,name)!=0&&fileend!=fs.tellg());
```
当输入物资名称与保存在文件中的物资名称不同时,程序将文件中的信息写入内存中,当名称相同时就输出物资的信息(相当与库存多少),而后cin>>num,当num正确时,就添加物资库存数量。
完成一次添加操作后,
```c++
fs.seekp(-long(sizeof(Material)), ios::cur ); // 指针复位
fs.write( (char *)this , sizeof(Material)); // 写入文件
cout << "现库存量:"<< sum<< endl;
```
将写指针复位,将实行了添加的物资信息重新写入到文件中,同时显示已添加物资的库存信息,确保已经完成添加工作。
按编号添加功能模块大致同上
### 3.3.5 领物资函数
```c++
do
{
fs.read((char*)this,sizeof(Material));
}while(strcmp(thingname,name)!=0&&fileend!=fs.tellp());
```
将物料信息读取到内存中
```c++
if(strcmp(thingname,name)==0)
```
当输入的物资名称和已报存的物资名称相同时,领取物料,减少库存
```c++
outfile<<"第"<<i<<"次:\t"<<"领取"<<thingname<<"数量: "<<num<<" "<<"库存:"<<sum<<endl;
```
将领料记录用outfile输入到"领料记录文件"中,方便领料单的查询。
将领料之后的剩余库存信息重新保存到物资库存清单中,修改实际库存量。
编号查询模式大致功能代码同上。
### 3.3.6 库存清单及领料单函数
该函数包含领料单浏览和物资库存清单浏览2个模块。
**模块1:**领料单浏览
```c++
char s[1024];
while(fh.getline(s,1024))
cout<<s<<endl;
```
fh.getline从领料记录文件中持续读取一行字符存放到内存s[1024]中,然后将领料记录完全展示在显示器上,实现领料单的浏览。
**模块2:**物资库存清单浏览
将读指针移动到“物资库存清单.dat”文件的开始,然后用do..while及成员函数read将“物资库存清单.dat”中的物资信息全部读取到内存中,而后逐个输出到显示器上,实现物资库存清单的浏览。
### 3.3.7 **信息生成**函数
从二进制文件“物资库存清单.dat”中读记录,不断将信息导入到ASCII文件“物资信息文本”中,可以直接查看物资信息。
ASCII文件“物资信息文本”建立成功。提示是否查看,输入指令,运用getline函数将信息读取到内存,展示到显示器上,实现对物资信息的保存,创建格式化文本。
# 四 程序运行
主菜单如下图所示:
![](http://www.writebug.com/myres/static/uploads/2021/10/19/f154df7efe6eed7c4b883832182809f7.writebug)
- **物资添加功能** 选中后,可以选择2种物资添加模式(按编号或名称添加),而后输入要添加的物资的编号(或名称),即可显示该物资现有信息,输入需要添加的数量,即添加成功;添加成功后可以选择继续添加或是返回上一级菜单
- **物资领取功能** 选中后,可以选择2种物资领取模式(按编号或名称领取),而后输入要领取的物资的编号(或名称),即可显示该物资现有信息,输入需要领取的数量,即领取成功,同时保存领料记录;物资领取成功后,可以选择继续领取物资或是返回主菜单
- **库存清单和领料单功能** 选中后,输入要显示的模块(库存清单或领料单);完成物资库存清单或领料单的显示后,可以选择继续或是返回主菜单
- **物资信息生成功能** 选中后,程序会显示物资信息文档保存成功,是否查看(可选择是否查看);完成该功能模块后,以选择继续或是返回主菜单
- **退出程序** 选中后,按任意键,退出程序
# 五 参考文献
《C++程序设计(第二版)》 谭浩强 编著
没有合适的资源?快使用搜索试试~ 我知道了~
精选_毕业设计_基于C++的物资管理系统的设计与实现_完整源码
共17个文件
opt:2个
pdb:2个
plg:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 193 浏览量
2022-03-05
11:06:03
上传
评论
收藏 760KB ZIP 举报
温馨提示
基于C++的物资管理系统的设计与实现
资源推荐
资源详情
资源评论
收起资源包目录
2682490884043335.zip (17个子文件)
materials-management-system
src
物资管理系统.dsp 3KB
物资管理系统.opt 48KB
程序设计说明书.docx 215KB
物资管理系统.cpp 11KB
物资管理系统.ncb 49KB
物资管理系统.plg 752B
物资管理系统.dsw 503B
Debug
vc60.pdb 140KB
物资管理系统.exe 248KB
物资管理系统.pdb 1.13MB
物资管理系统.ilk 320KB
物资管理系统.opt 43KB
物资管理系统.obj 51KB
物资管理系统.pch 271KB
vc60.idb 97KB
LICENSE 1KB
README.md 7KB
共 17 条
- 1
资源评论
工具盒子
- 粉丝: 60
- 资源: 1313
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功