📄 guanli.txt
字号:
#include<fstream>
#include<iostream>
#include<string>
using namespace std;
struct Sys_Business
{
float num;
string name;
float price,amount;
char time;
char state;
Sys_Business *next;
float Money;
};
class System
{
private:
Sys_Business *head;
void Swap(Sys_Business *,Sys_Business *);
void Print(Sys_Business *);
Sys_Business *Find(float);
public:
System(){head=NULL;}
Sys_Business *get_head(){return head;}
int ListCount1();
int ListCount2();
void AddItem(float num, string name,float price,float amount,char state,char time);
void RemoveItem(float);
void List();
void Sort_by_num();
void Sort_by_sole();
void Sort_by_buy();
void Sort_by_money();
void Search(float);
int Money();
};
int System::ListCount1()
{
Sys_Business *p=head;
int b=0;
if(p->state=='b')b++;
return b;
}
int System::ListCount2()
{
Sys_Business *p=head;
int s=0;
if(p->state=='s')s++;
return s;
}
void System::AddItem(float num,string name,float price,float amount, char state,char time)
{
if(!head){
head=new Sys_Business;
head->num=num;
head->name=name;
head->price=price;
head->amount=amount;
head->state=state;
head->next=NULL;
return;
}
Sys_Business *t=head;
while(t && t->num!=num)
t=t->next;
if(t){
cout<<"操作失败:编号为"<<num<<"的商品记录已存在!"<<endl;
return;
}
Sys_Business *p=head;
while(p->next)p=p->next;
Sys_Business *p1=new Sys_Business;
p1->num=num;
p1->name=name;
p1->price=price;
p1->amount=amount;
p1->state=state;
p1->time=time;
p1->next=NULL;
p->next=p1;
return;
}
void System::RemoveItem(float num)
{
Sys_Business *t=Find(num);
if(!t)return;
Sys_Business *p=head;
if(head==t){
head=head->next;
delete p;
cout<<"成功删除编号为"<<num<<"的商品记录!"<<endl<<endl;
return;
}
while(p->next!=t)p=p->next;
Sys_Business *p1=p->next;
p->next=p1->next;
delete p1;
cout<<"成功删除编号为"<<num<<"的商品记录!"<<endl<<endl;
return;
}
void System::Print(Sys_Business *p)
{
cout.precision(10);
cout<<p->state<<"\t\t";
cout<<p->num<<"\t\t";
cout<<p->name<<"\t\t";
cout<<p->price<<"\t\t";
cout<<p->amount<<"\t\t";
cout<<p->Money<<"\t\t";
cout<<p->time<<"\t\t";
return;
}
void System::List()
{
if(ListCount1()+ListCount2()==0){
cout<<"错误:当前列表为空!"<<endl;
return;
}
Sys_Business *p=head;
cout<<"共有记录:"<<ListCount1()+ListCount2()<<endl;
cout<<"状态\t\t编号\t\t商品名\t\t单价\t\t数量\t\t金额\t\t时间"<<endl;
while(p)
{
Print(p);
p=p->next;
}
cout<<endl;
return;
}
void System::Search(float num)
{
cout<<"查找所需要的记录:"<<endl;
Sys_Business *p=Find(num);
if(p){
cout<<"状态\t\t编号\t\t商品名\t\t单价\t\t数量\t\t金额\t\t时间"<<endl;
Print(p);
}
cout<<endl;
}
Sys_Business *System::Find(float num)
{
int m;
m=ListCount1()+ListCount2();
if(m==0){
cout<<"错误:当前列表为空!"<<endl;
return NULL;
}
Sys_Business *p=head;
while(p){
if(p->num==num)break;
p=p->next;
}
if(!p){
cout<<"错误:找不到该记录!\n";
return NULL;
}
return p;
}
void System::Swap(Sys_Business *p1,Sys_Business *p2)
{
Sys_Business *temp=new Sys_Business;
temp->state=p1->state;
p1->state=p2->state;
p2->state=temp->state;
temp->num=p1->num;
p1->num=p2->num;
p2->num=temp->num;
temp->name=p1->name;
p1->name=p2->name;
p2->name=temp->name;
temp->price=p1->price;
p1->price=p2->price;
p2->price=temp->price;
temp->amount=p1->amount;
p1->amount=p2->amount;
p2->amount=temp->amount;
temp->Money=p1->Money;
p1->Money=p2->Money;
p2->Money=temp->Money;
}
void System::Sort_by_num()
{
int m;
m=ListCount1()+ListCount2();
cout<<"按编号排列:"<<endl;
if(m<2)return;
Sys_Business *temp=NULL,*p=NULL,*p1=NULL,*p2=NULL,*k=NULL;
int i,j;
p=head;
for(i=1;i<m;i++)
{
k=p;
p1=p->next;
for(j=0;j<m-i;j++){
if(k->num > p1->num){
k=p1;
}
p1=p1->next;
}
if(p!=k)Swap(k,p);
p=p->next;
}
cout<<"排序成功!"<<endl<<endl;
return;
}
void System::Sort_by_buy()
{
int m;
m=ListCount1();
cout<<"按购入排列:"<<endl;
if(m<2)return;
Sys_Business *temp=NULL,*p=NULL,*p1=NULL,*p2=NULL,*k=NULL;
int i,j;
p=head;
while(p->state=='b');{
for(i=1;i<m;i++)
{
k=p;
p1=p->next;
for(j=0;j<m-i;j++){
if(k->Money > p1->Money){
k=p1;
}
p1=p1->next;
}
if(p!=k)Swap(k,p);
p=p->next;
}p=p->next;
}
cout<<"排序成功!"<<endl<<endl;
return;
}
void System::Sort_by_sole()
{
int m;
m=ListCount2();
cout<<"按销售排列:"<<endl;
if(m<2)return;
Sys_Business *temp=NULL,*p=NULL,*p1=NULL,*p2=NULL,*k=NULL;
int i,j;
p=head;
while(p->state=='s'){
for(i=1;i<m;i++)
{
k=p;
p1=p->next;
for(j=0;j<m-i;j++){
if(k->num > p1->num){
k=p1;
}
p1=p1->next;
}
if(p!=k)Swap(k,p);
p=p->next;
}p=p->next;
}
cout<<"排序成功!"<<endl<<endl;
return;
}
void System::Sort_by_money()
{
int m;
m=ListCount1()+ListCount2();
cout<<"按金额排列!"<<endl;
if(m<2)return;
Sys_Business *temp=NULL,*p=NULL,*p1=NULL,*p2=NULL,*k=NULL;
int i,j;
p=head;
for(i=1;i<m;i++)
{
k=p;
for(j=0;j<m-i;j++)
{
p1=k->next;
if(k->Money < p1->Money){
Swap(k,p1);
}
k=k->next;
}
}
cout<<"排序成功!"<<endl<<endl;
return;
}
int System::Money()
{
int m;
m=ListCount1()+ListCount2();
if(m==0)
{
cout<<"错误:当前列表为空!"<<endl;
return -1;
}
float sum,n=0;
Sys_Business *p=head;
while(p)
{
sum=0;
sum=p->price*p->amount;
p->Money=sum;
p=p->next;
n++;
}
return 0;
}
System water;
float Menu()
{
cout<<"\t\t"<<"===================[主菜单]================"<<endl;
int n=1,select=-1;
cout<<"\t\t\t"<<n++<<".输入购销记录:"<<endl<<endl;
cout<<"\t\t\t"<<n++<<".按编号排列:"<<endl<<endl;
cout<<"\t\t\t"<<n++<<".按编号查找纪录:"<<endl<<endl;
cout<<"\t\t\t"<<n++<<".删除由编号指定的纪录:"<<endl<<endl;
cout<<"\t\t\t"<<n++<<".列出所有记录:"<<endl<<endl;
cout<<"\t\t\t"<<n++<<".按购入金额排序输出:"<<endl<<endl;
cout<<"\t\t\t"<<n++<<".按销售金额排序输出:"<<endl<<endl;
cout<<"\t\t\t"<<n++<<".按金额排序输出:"<<endl<<endl;
cout<<"\t\t\t"<<n++<<".从数据文件导入数据:"<<endl<<endl;
cout<<"\t\t\t"<<n++<<".将数据导出到磁盘文件:"<<endl<<endl;
cout<<"\t\t\t"<<"0.退出:"<<endl<<endl;
cout<<"\t"<<"------------------------------------------------------------"<<endl;
cout<<"\t"<<"[请选择(输入相应数字)]:";
cin>>select;
return select;
}
void Sort_by_buy()
{
water.Sort_by_buy();
}
void Sort_by_sole()
{
water.Sort_by_sole();
}
char Exit(){
char s;
cout<<"确定要退出程序吗?[Y/N]:";
cin>>s;
return s;
}
void Input(float *num,string *name,float *price,float *amount,char state,char time)
{
cout<<"请输入 编号 商品名 单价 数量 状态(B/S) 时间:"<<endl;
cin>>*num;
if(*num==-1)return;
cin>>*name;
cin>>*price;
cin>>*amount;
cin>>state;
cin>>time;
return;
}
void Sort_by_num()
{
water.Sort_by_num();
}
void AddNew()
{
float num=0,float price=0,float amount=0, char state,char time;
string name="";
cout<<endl<<"当输入的编号为-1时表示输入结束."<<endl;
Input(&num, &name, &price, &amount, state, time);
while(num!=-1){
water.AddItem(num,name,price,amount,state,time);
water.Money();
Input(&num, &name, &price, &amount,state, time);
}
return;
}
void DoFind()
{
float num;
cout<<endl<<"当输入的编号为-1时表示输入结束."<<endl;
do{
cout<<"请输入要查找的商品编号:";
cin>>num;
if(num==-1)continue;
water.Search(num);
}while(num!=-1);
return;
}
void DoDelete(){
cout<<endl<<"当输入的编号为-1时表示输入结束."<<endl;
float num;
do{
cout<<"请输入要删除的商品编号:";
cin>>num;
if(num==-1)continue;
water.RemoveItem(num);
}while(num!=-1);
return;
}
void List(){
water.List();
}
void ShowMoney()
{
int m;
m=water.ListCount1()+water.ListCount2();
water.Sort_by_money();
if(m==0){
cout<<"错误:当前列表为空!"<<endl;
return;
}
int n=0;
cout.precision(10);
Sys_Business *p=water.get_head();
cout<<"状态"<<"\t编号"<<"\t商品名"<<"\t金额"<<"\t排名"<<endl;
while(p){
cout<<p->state<<"\t"<<p->num<<"\t"<<p->name<<":\t"<<p->Money<<"\t"<<++n<<endl;
p=p->next;
}
return;
}
void Loadfromfile()
{
float num;
float price,amount;
char state,time;
char name[20]="";
fstream iofile;
int i=0;
iofile.open("wat.txt",ios::in|ios::binary);
if(!iofile){
cout<<"数据文件不存在,请先建立该文件"<<endl;
return;
}
if(iofile.eof())
{
cout<<"数据库为空,请添加数据"<<endl;
iofile.close();
}
else
{
while(iofile.peek()!=EOF)
{
iofile.read((char *) &num,sizeof(float));
iofile.read((char *) name,20);
iofile.read((char *) &price,sizeof(float));
iofile.read((char *) &amount,sizeof(float));
iofile.read((char *) &state,sizeof(char));
iofile.read((char *) &time,sizeof(char));
water.AddItem(num,name,price,amount,state, time);
}
water.Money();
iofile.close();
}
}
void SaveToFile()
{
Sys_Business *p;
char name[20];
fstream iofile;
int i=0;
iofile.open("wat.txt",ios::out|ios::binary);
if(!iofile){
cerr<<"open error!"<<endl;
abort();
}
p=water.get_head();
while(p)
{
p->name.copy(name,20,0);
name[p->name.length()]=0;
iofile.write((char *) &p->num,sizeof(float));
iofile.write((char *) &p->name,20);
iofile.write((char *) &p->price,sizeof(float));
iofile.write((char *) &p->amount,sizeof(float));
iofile.write((char *) &p->state,sizeof(char));
iofile.write((char *) &p->time,sizeof(char));
p=p->next;
}
iofile.close();
}
float main(){
cout<<"Welcome!\n购销与库存管理系统\nZhbzhl 1.00.1\n \n\n";
int select;
char s;
while(1){
select=Menu();
switch(select){
case 0:
s=Exit();
if(s=='y'||s=='Y')return 0;
break;
case 1:
AddNew();
break;
case 2:
Sort_by_num();
break;
case 3:
DoFind();
break;
case 4:
DoDelete();
break;
case 5:
List();
break;
case 6:
Sort_by_buy();
break;
case 7:
Sort_by_sole();
break;
case 8:
ShowMoney();
break;
case 9:
Loadfromfile();
break;
case 10:
SaveToFile();
break;
default:
cout<<"无效输入!"<<endl;
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -