📄 新建 文本文档.txt
字号:
/*
* 文件名称:物品库存管理
* 摘 要:南京理工大学《VC++课程设计案例精选与编程指导》
* 作 者:袁超
* 程序功能简介:该程序的主要功能是用文件系统实现物品库存的简单管理。
//四、增加功能块
// 读完整个程序,我首先想到是既然称之为管理程序,那么这个系统也就不是
//任何人都可以进入的,如果任何人都能随便进入的话,也就有可能由于操作不当
//等原因造成有用信息的丢失,这样势必造成不可挽回的损失。在这种情况下,添
//加管理密码的验证程序也就是十分必要的,在此基础上确保只有相关的管理人员
//才可以进入系统并完成相关的一些操作,因此在主程序一开始就加入了一个密码
//的验证函数password()。
// 首先在整个程序的最前面定义了一个常变量字符串数组const char a[10]=
//"yuanchao",即设置系统初使管理密码为yuanchao,定义在最前面目的
//是为了管理的安全性。
// 其次在验证程序中采用while(1){}循环,也就是一个无限的循环,跳出循环
//的充要条件是操作人员输入正确的管理密码,否则将一直循环下去,直到输入正
//确的管理密码,密码的验证使用字符串比较函数 strcmp。密码验证完毕之后,
//系统将输出"欢迎使用物品库存管理系统",操作者根据其它提示信息,输入自己
//的选项后,进行下一步操作。
//五、程序功能的完成
// 在客户类的设计中,参考了Brand类的设计,类的私有成员包括客户的姓名,
//性别,年龄,公有成员包括getdata(),showdata(),分别用于客户相关信息的
//输入和输出工作,另外还在其中添加了函数char* getname(){return Client_name;},
//用于获得客户的姓名,添加的原因是在Item类中的查找函数search()中有一项
//为按客户名查找,此时需要获得客户名称,就必需使用一个公有函数才能在Client
//类之外完成这项工作。另外在Item类中仿照Brand类将Client类的对象Client[3]作为
//Item类的私有成员,目的是在输入Item类相关数据的同时输入Brand类和Client类
//的相关信息,但是要完成这项工作就必需在Item类的getdata()和showdata()中添
//加相关的内容。
// 很好地完成了以下两个设计要求:(1)在Item 类 search()中增加按价格
//搜所的功能;(2)一进入程序,首先显示汉化命令,以便用户选择。
#include<iostream.h>
#include<conio.h>
#include<process.h> //使用exit(1)
#include<fstream.h> //使用文件操作
#include<string.h> //使用函数strcpy,strcmp
#include<dos.h>
const char a[15]="yuanchao";//设置系统管理密码
void password(){ //验证系统管理密码,正确输入密码后方能进入该系统
char b[15];
cout<<"请输入系统管理密码:"<<endl;
while(1){
cin>>b;
if(strcmp(a,b)==0){
cout<<"\t\t\t欢迎使用库存管理系统"<<endl;
break;
}
else{
cout<<"密码错误,请重新输入:"<<endl;
}
}
}
class Brand{
private:
char brnd_name[20];
int Brand_code;
int quantity;
float brnd_price;
public:
void getdata(); //从键盘获得相关数据
void showdata();//显示相关数据
};
class Client{ //新增加的客户类
private:
char Client_name[10];
char sex[4];
int age;
public:
void getdata();
void showdata();
char* getname()
{
return Client_name;
}
};
class Item{
private:
char Item_name[10];
int Item_code;
char colour[10];
int quantity;
float Item_price;
Brand brnd[3];
Client client[3];
void getdata();
void showdata();
public:
void add(); //添加项目
void remove();//删除项目
void search();//查找项目
void showab();//显示相关的信息
};
void Brand::getdata(){
cout<<"\n请输入标签名:";
cin>>brnd_name;
cout<<"\n请输入标签代码:";
cin>>Brand_code;
cout<<"\n请输入数量:";
cin>>quantity;
cout<<"\n请输入价格:";
cin>>brnd_price;
}
void Brand::showdata(){
cout<<"\n\n名称:";cout<<brnd_name;
cout<<"\n\n代码:";cout<<Brand_code;
cout<<"\n\n数量:";cout<<quantity;
cout<<"\n\n价格:";cout<<brnd_price;
}
void Client::getdata(){
cout<<"\n请输入客户姓名:";
cin>>Client_name;
cout<<"\n请输入客户性别:";
cin>>sex;
cout<<"\n请输入客户年龄:";
cin>>age;
}
void Client::showdata (){
cout<<"\n\n客户姓名:";cout<<Client_name;
cout<<"\n\n客户性别:";cout<<sex;
cout<<"\n\n客户年龄:";cout<<age;
}
void Item::getdata(){
cout<<"\n请输入项目名称:";
cin>>Item_name;
cout<<"\n请输入项目代码:";
cin>>Item_code;
cout<<"\n请输入颜色:";
cin>>colour;
cout<<"\n请输入数量:";
cin>>quantity;
cout<<"\n\n请输入标签1:";
brnd[0].getdata();
client[0].getdata();
cout<<"\n\n请输入标签2:";
brnd[1].getdata();
client[1].getdata ();
cout<<"\n\n请输入标签3:";
brnd[2].getdata();
client[2].getdata ();
}
void Item::showdata(){
cout<<"\n\n\t\t项目相关资料:";
cout<<"\n\n名称:";
cout<<Item_name;
cout<<"\n\n代码:";
cout<<Item_code;
cout<<"\n\n颜色:";
cout<<colour;
cout<<"\n\n数量:";
cout<<quantity<<endl;
getch();
cout<<"\n\n标签1:"<<endl;
brnd[0].showdata ();
client[0].showdata();
getch();
cout<<"\n\n标签2:"<<endl;
brnd[1].showdata ();
client[1].showdata ();
getch();
cout<<"\n\n标签3:"<<endl;
brnd[2].showdata();
client[2].showdata ();
}
void Item::add(){
ofstream file("TIS.txt",ios::out|ios::ate); //打开文件用于输入
if(!file){
cout<<"不能打开文件"<<endl;
getch();
exit(1);
}
Item p1;
p1.getdata ();
file.write(reinterpret_cast<const char *>(&p1),sizeof(Item)); //输入资料到硬盘
}
void Item::showab (){
ifstream file("TIS.txt",ios::in); //打开文件用于输出
if(!file){
cout<<"不能打开文件"<<endl;
getch();
exit(1);
}
Item p1;
file.read(reinterpret_cast<char *>(&p1),sizeof(Item));
while(!file.eof()){
p1.showdata (); //在屏幕上显示
getch();
file.read(reinterpret_cast<char *>(&p1),sizeof(Item));
}
}
void Item::search(){
char name1[10];
int code;
int option;
float price;
char C_name[10];
cout<<"\n(1)按名称查找(2)按代码查找(3)按价格查找(4)按客户名查找"<<endl;
cout<<"请输入选项:";
cin>>option;
if(option==1){
cout<<"\n请输入名称:";
cin>>name1;
code=0;
price=0;
strcpy(C_name,"null");
}
if(option==2){
cout<<"\n请输入代码:";
cin>>code;
price=0;
strcpy(name1,"null");
strcpy(C_name,"null");
}
if (option==3){
cout<<"\n请输入价格:";
cin>>price;
strcpy(name1,"null");
strcpy(C_name,"null");
code=0;
}
if (option==4){
cout<<"请输入客户姓名:"<<endl;
cin>>C_name;
price=0;
code=0;
}
fstream file("TIS.txt",ios::in);
if(!file){
cout<<"不能打开文件"<<endl;
getch();
exit(1);
}
char flag='a';
Item p1;
Client p2;
file.read(reinterpret_cast<char *>(&p1),sizeof(Item));
while(!file.eof()){
if(strcmp(p1.Item_name,name1)==0||p1.Item_code==code||p1.Item_price==price||strcmp(p2.getname(),C_name)==0){
//clrscr();
p1.showdata();
getch();
flag='z';getch();
break;
}file.read(reinterpret_cast<char *>(&p1),sizeof(Item));
}
if(flag!='z'){
cout<<"\n所查询的项目没有找到";
getch();
}
}
void Item::remove(){
char name1[10];
int code;
int option;
cout<<"\n(1)按名称删除(2)按代码删除"<<endl;
cout<<"请输入选项:";
cin>>option;
if(option==1){
cout<<"\n请输入名称:";
cin>>name1;
code=0;
}
else{
cout<<"\n请输入代码:";
cin>>code;
strcpy(name1,"null");
}
ifstream file("TIS.txt",ios::in);
ofstream temp("Delete.txt",ios::trunc);
if(!file||!temp){
cout<<"不能打开文件"<<endl;
getch();
exit(1);
}
file.seekg(0);
temp.seekp(0);
Item p1;
file.read(reinterpret_cast<char *>(&p1),sizeof(Item));
while(!file.eof()){
if(strcmp(name1,p1.Item_name)==0||code==p1.Item_code){
file.read(reinterpret_cast<char *>(&p1),sizeof(Item));
}
else{
temp.write(reinterpret_cast<char *>(&p1),sizeof(Item));
file.read(reinterpret_cast<char *>(&p1),sizeof(Item));
}
}
file.close();
temp.close();
ifstream temp1("Delete.txt",ios::in);
ofstream file1("TIS.txt",ios::trunc);
temp1.seekg(0);
file1.seekp(0);
temp1.read(reinterpret_cast<char *>(&p1),sizeof(Item));
while(!temp1.eof()){
file1.write(reinterpret_cast<char *>(&p1),sizeof(Item));
temp1.read(reinterpret_cast<char *>(&p1),sizeof(Item));
}
temp1.close();
file1.close();
}
void main(){
password(); //新增的函数
Item m;
int option;
while(1){
cout<<"\n\n(1)添加项目(2)显示所有信息(3)搜索项目"
<<"\n\n(4)删除项目(5)退出物品库存管理系统";
cout<<"\n\n请输入选项:";
cin>>option;
switch(option){
case 1: m.add();break;
case 2: m.showab();break;
case 3: m.search();break;
case 4: m.remove();break;
case 5:{
exit(1);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -