# include <iostream.h>
# include <stdlib.h>
# include <math.h>
# include <string.h>
# include <stdio.h>
typedef struct data
{
char name[20];
int num;
data *next1;
}data1; //定义某一个文具个数表
typedef struct
{
int classorder;
char classname[20];
data1 *next;
}wenju; //定义一个文具总表单
//定义一个出帐函数,其中包括对文具个数的检查
void W_out(wenju *a,int t) //n表示文具的种类,b是具体文具的名字,t为取货数
{
char c[20]; //不能定义为char *c;
char b[20];
cout<<"请输入取货的种类!"<<endl;
cin>>c;
int i=0;
while(abs(strcmp(a[i].classname,c))) {if(i>=3) {cout<<"不存在该种文具!"<<endl;exit (0);} i++; } //不相等是继续搜索,大于3时候则输出没有,重新输入
cout<<"请输入取货的名字!"<<endl;
cin>>b;
data1 *p=a[i].next;
while(p&&(abs(strcmp(p->name,b))!=0)) //该文具类没有货物或者没有相同的物品或者索引到最后则结束
{
p=p->next1;
}
//判断属于那种情况
if(p==NULL) cout<<"不存在该文具!"<<endl;
else
{
if(p->num<=0) cout<<"该文具暂时缺货!"<<endl;
else
{
if(p->num<t)
{
cout<<"该文具货物不足!"<<endl<<"所缺数目为:"<<t-p->num<<" "<<endl;
cout<<"是否继续出售该货物!是请输入1,不是请输入0!"<<endl; //为了在不够时处理是继续出售还是退出
while(1)
{
int k;
cin>>k;
if(k==1) //出售的处理,让其输入出售的具体数字
{
cout<<"请输入售出的个数:"<<endl;
int s;
cin>>s;
p->num-=s;
break;
}
else //输入有误是处理,让其重新输入
{
if(k!=0) cout<<"输入有误,是请输入1,否请输入0!"<<endl;
}
break; //是0就直接退出,而不改变文具原来的个数
}
}
else
{
cout<<"货物足够!"<<endl;
p->num-=t;
}
}
}
}
//盘点货物的存储情况
void Check(wenju *a,int n)
{
data1 *p;
for(int i=0;i<n;i++)
{
p=a[i].next;
while(p!=NULL)
{
cout<<"文具类别及该类别的类名:"<<i+1<<", "<<a[i].classname<<" 文具类名字:"<<p->name<<" 文具个数:"<<p->num;
if(p->num==0) cout<<"货物短缺请及时补充货物!"<<endl;
cout<<endl;
p=p->next1;
}
}
}
//某一类文具的输入函数
void enter(wenju *a,int n)
{
int i;
cout<<"如果没有该种文具,请输入jack结束。"<<endl;
for(i=0;i<n;i++) //将具体的文具加入进去
{
data1 *p=NULL;
p=(data1 *)malloc(sizeof(data1));
cout<<"文具名:";
cin>>p->name;
if(abs(strcmp(p->name,"结束")==0)) { cout<<"本种为空!"<<endl;break; } //输入名称为#号时,退出
cout<<"文具个数:";
cin>>p->num;
p->next1=a[i].next;
a[i].next=p;
while(1)
{
data1 *q=NULL;
q=(data1 *)malloc(sizeof(data1));
cout<<"如果输入结束,请输入jack结束该类的文具输入。"<<endl;
cout<<"文具名:";
cin>>q->name;
if(abs(strcmp(q->name,"结束")==0)) {cout<<"此种输入结束!"<<endl;break; } //输入名称为#号时,退出
cout<<"文具个数:";
cin>>q->num;
q->next1=p->next1;
p->next1=q;
p=q;
}
}
}
//功能函数
void Function(wenju *a,int n)
{
int k,t=0,s=0;
for(;;)
{
cout<<"请输入0-3之间得数字!"<<endl;
cout<<"0:取货!"<<endl;
cout<<"1:查货!"<<endl;
cout<<"2:增加种类!"<<endl;
cout<<"3:退出!"<<endl;
cout<<"请输入您想执行的程序!"<<endl;
cin>>k;
switch(k)
{
case 0: cout<<"请输入取货数: "<<endl;cin>>t;W_out(a,t);break;
case 1: Check(a,n);break;
case 2: cout<<"请输入想增加的大小!"<<endl; cin>>s; n+=s;(wenju *)realloc(a,n);enter(a,n);break;
case 3: exit(-1);
default: cout<<"输入有误!请重新输入!";
}
}
}
//主函数
void main()
{
wenju *a; //定义一个文具类
int n,i;
cout<<"请输入种类的个数";
cin>>n;
while(n<0)
{
cout<<"输入不是数字,请重新输入!"<<endl;
cin>>n;
}
a=(wenju *)malloc(n*sizeof(wenju)); //产生一片连续的空间
for(i=0;i<n;i++) //相应的文具类命名
{
a[i].classorder=i+1;
cout<<"请输入文具类别名: ";
cin>>a[i].classname;
cout<<endl;
a[i].next=NULL; //保证开始时a[i].next后都是空
}
enter(a,n); //调用具体文具类函数
//进入功能程序
Function(a,n);
}
stationery_management_system.rar_文具 管理系统
版权申诉
79 浏览量
2022-09-20
16:19:36
上传
评论 1
收藏 261KB RAR 举报
朱moyimi
- 粉丝: 63
- 资源: 1万+
最新资源
- Picasso_v3.1 2.ipa
- chromedriver-mac-arm64.zip
- 蓝zapro.apk
- chromedriver-linux64.zip
- UCAS研一深度学习实验-MNIST手写数字识别python源码+详细注释(高分项目)
- 基于Python和PyTorch框架完成的一个手写数字识别实验源码(带MINIST手写数字数据集)+详细注释(高分项目)
- 基于Matlab在MNIST数据集上利用CNN完成手写体数字识别任务,并实现单层CNN反向传播算法+源代码+文档说明(高分项目)
- NVIDIA驱动、CUDA和Pytorch及其依赖
- 基于SVM多特征融合的微表情识别python源码+项目说明+详细注释(高分课程设计)
- html动态爱心代码一(附源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0