⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guanli.txt

📁 购销管理系统
💻 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 + -