|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<iostream.h>
#include<string.h>
#include<fstream.h>
class stu
{
char name[20];
double much,sum;
public:
stu()
{
}
stu(char n[20],double muc)
{
strcpy(name,n);
much=muc;
}
double getsum()
{
sum=much;
return sum;
}
friend void main();
};
void main()
{
cout<<"请选择您需要的操作!"<<endl;
cout<<"操作:"<<endl;
cout<<"(0)职工数据录入"<<endl;
cout<<"(1)增加职工人员"<<endl;
cout<<"(2)删除职工人员"<<endl;
cout<<"(3)新完成的需要添加的产品数量数据"<<endl;
cout<<"查询:"<<endl;
cout<<"(4)按总产品数量查询"<<endl;
cout<<"(5)按职工姓名查询"<<endl;
cout<<"(6)输出所有职工的数据"<<endl;
cout<<"生产量排名名次:"<<endl;
cout<<"(7)按职工生产的总产品数量查询排名"<<endl;
cout<<"选择相关操作请输入相对的括号里的阿拉伯数字!"<<endl;
char p;char w;
stu *s[50];
ofstream *file[50];
int i=0;
int j=0;
bool flag2=0;
do
{
cin>>p;
if((p>='0'&&p<='10'))
flag2=1;
else
cout<<"指令错误!请重新输入:"<<endl;
}while(flag2==0);
do{
switch(p)
{
case '0':
{
char c;
char name[20];double much;
do{
cout<<"请输入职工姓名"<<endl;
cin>>name;
cout<<"请输入产品数量:"<<endl;
cin>>much;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"产品数量"<<much<<endl;
j++;
s[i]=new stu(name, much);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;
cin>>c;
flag2=0;
do
{
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break;
}
case '1': //程序中的操作(1)
{
char name[20];double much;
char c;
do
{
cout<<"请输入您要增加的职工的姓名:"<<endl;
cin>>name;
cout<<"请输入产品数量"<<endl;
cin>>much;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"产品数量"<<much<<endl;
j++;
s[i]=new stu(name, much);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '2': //程序中的操作(2)
{
char name[20];bool flag3=0;char c;
do{
cout<<"请输入您要删除的职工姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
flag3=1;
i--;
do{
s[h]=s[h+1];
h++;
}while(h<=i);
}
}
if(flag3==0)
cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!";
cout<<"要继续删除吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '3': //程序中的操作(3)
{
char name[20];double mat;flag2=0;
char c;
do
{
cout<<"请输入您要修改的职工的姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
flag2=1;
cout<<"请输入新完成的产品数量:"<<endl;
cin>>mat;
s[h]->much+=mat;
cout<<"数据添加成功!";
}
}
if(flag2==0)
{
cout<<"您要修改的职工本来就不存在!请检查重新输入!"<<endl;
}
cout<<"想继续修改吗(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '4': //程序中的操作(4)
{
double t;char c;
do
{
int flag1=0;
cout<<"请输入你要查询职工的总产品数量"<<endl;
cin>>t;
for(int q=0;q<i;q++)
{
if(s[q]->getsum()==t)
{
flag1=1;
cout<<"您要查询的职工是:"<<(*s[q]).name<<endl;
}
}
if(flag1==0)
cout<<"对不起!您要查询的职工不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}
case '5': //程序中的操作(5)
{
char n[20];int j=0;char c;
do{
int flag=0;
cout<<"请输入你要查询的职工姓名"<<endl;
cin>>n;
for(int j=0;j<i;j++)
{
if(strcmp(n,(*s[j]).name)==0)
{
flag=1;
cout<<"您要查询的职工是:"<<(*s[j]).name<<endl;
cout<<(*s[j]).name<<"的总产品数量是"<<(*s[j]).getsum()<<endl;
}
}
if(flag==0)
cout<<"对不起!您要查询的职工不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}
case '6': //程序中的操作(6)
{
cout<<"本系统所有职工数据如下:"<<endl;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<"总产品数量:"<<" "<<(*s[k]).getsum() <<endl;
}
break;
}
case '7': //程序中的操作(7)
{
int t;stu b;
cout<<"本系统所有职工排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->getsum())<(s[y]->getsum()))
t=y;
if(t!=x)
{
b=*s[x];
*s[x]=*s[t];
*s[t]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name
<<"总产品数量:"<<" "<<s[k]->getsum() <<endl;
}
break;
}
}
cout<<"您想继续进行其他操作吗?(y/n)"<<endl;
bool flag4=0;
do
{
cin>>w;
if(w!='y'&&w!='n')
cout<<"指令错误!请重新输入!"<<endl;
else
flag4=1;
}while(flag4==0);
if(w=='y')
cout<<"请输入操作代码:(0)职工数据录入;(1)增加职工人员; (2)删除职工人员; (3)新完成需要添加的产品数量数据; (4)按总产品数量查询; (5)按职工姓名查询; (6)输出所有职工的数据; (7)按职工生产的总产品数量查询排名"<<endl;
cin>>p;
}while(w=='y');
for(int x=0;x<i;x++)
{
delete s[x];
cout<<"删除所有数据成员"<<endl;
}
}
本帖最后由 superbe 于 2019-9-6 19:03 编辑
我只是改成C能运行了,花了好长时间
我觉得你可以把各个功能做成函数,文件内容和修改操作同步等等很多要完善
vs2012下运行正常
#include <stdio.h>
#include <string.h>
#include <malloc.h>
typedef struct{
char name[20];
double much;
double sum;
}stu;
void main()
{
char p,w,c,name[20];
double much;
stu *s[50],b;
FILE *file[50];
int i=0,j=0,k=0,t,y;
int flag=0;
printf("请选择您需要的操作!\n"
"操作:\n"
"(0)职工数据录入\n"
"(1)增加职工人员\n"
"(2)删除职工人员\n"
"(3)新完成的需要添加的产品数量数据\n"
"查询:\n"
"(4)按总产品数量查询\n"
"(5)按职工姓名查询\n"
"(6)输出所有职工的数据\n"
"生产量排名名次:\n"
"(7)按职工生产的总产品数量查询排名\n"
"选择相关操作请输入相对的括号里的阿拉伯数字!\n");
do
{
scanf("%c",&p);getchar();
if((p>='0' && p<='10'))
flag=1;
else
printf("指令错误!请重新输入:\n");
}while(flag==0);
do{
switch(p)
{
case '0':
{
do{
printf("请输入职工姓名\n");
scanf("%s",name);
printf("请输入产品数量:\n");
scanf("%lf",&much);getchar();
file[j]=fopen("d:\\document","a+");
fprintf(file[j],"姓名%s产品数量%f\n",name,much);
fflush(file[j]);
j++;
s[i]=(stu *)malloc(sizeof(stu));
strcpy(s[i]->name,name);
s[i]->much=much;
s[i]->sum=s[i]->much; ////
i++;
printf("数据录入成功,想继续录入吗(y/n)\n");
scanf("%c",&c);getchar();
flag=0;
do
{
if(c!='y' && c!='n')
{
printf("指令错误!请重新输入!\n");
scanf("%c",&c);getchar();
}
else
flag=1;
}while(flag==0);
}while(c=='y');
break;
}
case '1': //程序中的操作(1)
{
do
{
printf("请输入您要增加的职工的姓名:\n");
scanf("%s",name);
printf("请输入产品数量\n");
scanf("%lf",&much);getchar();
file[j]=fopen("d:\\document","a+");
fprintf(file[j],"姓名%s产品数量%f\n",name,much);
fflush(file[j]);
j++;
s[i]=(stu *)malloc(sizeof(stu));
strcpy(s[i]->name,name);
s[i]->much=much;
s[i]->sum=s[i]->much; ////
i++;
printf("数据录入成功,想继续录入吗(y/n)\n");
scanf("%c",&c);getchar();
if(c!='y' && c!='n')
{
printf("指令错误!请重新输入!\n");
scanf("%c",&c);getchar();
}
}while(c=='y');
break;
}
case '2': //程序中的操作(2)
{
flag=0;
do{
printf("请输入您要删除的职工姓名:\n");
scanf("%s",name);getchar();
for(k=0;k<i;k++)
{
if(strcmp(name,s[k]->name)==0)
{
flag=1;
i--;
do{
s[k]=s[k+1];
k++;
}while(k<=i);
}
}
if(flag==0)
printf("您要求删除的对象本来就不存在!请检查输入的正确性!\n");
printf("要继续删除吗?(y/n)\n");
scanf("%c",&c);getchar();
if(c!='y' && c!='n')
{
printf("指令错误!请重新输入!\n");
scanf("%c",&c);getchar();
}
}while(c=='y');
break;
}
case '3': //程序中的操作(3)
{
flag=0;
do
{
printf("请输入您要修改的职工的姓名:\n");
scanf("%s",name);
for(k=0;k<i;k++)
{
if(strcmp(name,s[k]->name)==0)
{
flag=1;
printf("请输入新完成的产品数量:\n");
scanf("%lf",&much); getchar();
s[k]->much+=much;
s[k]->sum=s[k]->much; ////
printf("数据添加成功!\n");
}
}
if(flag==0)
{
printf("您要修改的职工本来就不存在!请检查重新输入!\n");
}
printf("想继续修改吗(y/n)\n");
scanf("%c",&c);getchar();
if(c!='y' && c!='n')
{
printf("指令错误!请重新输入!\n");
scanf("%c",&c);getchar();
}
}while(c=='y');
break;
}
case '4': //程序中的操作(4)
{
do
{
flag=0;
printf("请输入你要查询职工的总产品数量\n");
scanf("%lf",&much);getchar();
for(k=0;k<i;k++)
{
if(s[k]->sum==much)
{
flag=1;
printf("您要查询的职工是:%s\n",(*s[k]).name);
}
}
if(flag==0)
printf("对不起!您要查询的职工不存在!\n");
printf("您想继续查询吗?(y/n)\n");
scanf("%c",&c);getchar();
if(c!='y' && c!='n')
{
printf("指令错误!请重新输入!\n");
scanf("%c",&c);getchar();
}
}while(c=='y');
break;
}
case '5': //程序中的操作(5)
{
do{
flag=0;
printf("请输入你要查询的职工姓名\n");
scanf("%s",name);getchar();
for(k=0;k<i;k++)
{
if(strcmp(name,(*s[k]).name)==0)
{
flag=1;
printf("您要查询的职工是:%s\n",(*s[k]).name);
printf("%s的总产品数量是%f\n",(*s[k]).name,(*s[k]).sum);
}
}
if(flag==0)
printf("对不起!您要查询的职工不存在!\n");
printf("您想继续查询吗?(y/n)\n");
scanf("%c",&c);getchar();
if(c!='y' && c!='n')
{
printf("指令错误!请重新输入!\n");
scanf("%c",&c);getchar();
}
}while(c=='y');
break;
}
case '6': //程序中的操作(6)
{
printf("本系统所有职工数据如下:\n");
if(i==0)
printf("管理系统中没有录入数据或者数据已经被删除!\n");
for(k=0;k<i;k++)
{
printf("%d 姓名:%s 总产品数量:%f\n",k+1,s[k]->name,(*s[k]).sum);
}
break;
}
case '7': //程序中的操作(7)
{
printf("本系统所有职工排名如下:\n");
for(k=0;k<i-1;k++)
{
t=k;
for(y=k+1;y<i;y++)
{
if((s[t]->sum)<(s[y]->sum))
t=y;
if(t!=k)
{
b=*s[k];
*s[k]=*s[t];
*s[t]=b;
}
}
}
if(i==0)
printf("管理系统中没有录入数据或者数据已经被删除!\n");
for(k=0;k<i;k++)
{
printf("%d 姓名:%s总产品数量:%f\n",k+1,s[k]->name,s[k]->sum);
}
break;
}
}
printf("您想继续进行其他操作吗?(y/n)\n");
flag=0;
do
{
scanf("%c",&w);getchar();
if(w!='y' && w!='n')
printf("指令错误!请重新输入!\n");
else
flag=1;
}while(flag==0);
if(w=='y')
{ //添加的行
printf("请输入操作代码:(0)职工数据录入;(1)增加职工人员; (2)删除职工人员; (3)新完成需要添加的产品数量数据; (4)按总产品数量查询; (5)按职工姓名查询; (6)输出所有职工的数据; (7)按职工生产的总产品数量查询排名\n");
scanf("%c",&p); getchar();
} //添加的行
}while(w=='y');
for(k=0;k<i;k++)
{
free(s[k]);
printf("删除所有数据成员\n");
}
}
|
|