用c语言的结构数组编一个关于职工文件的程序。

不要求使用多文件编程,但要求使用头文件和菜单,并组成一个工程文件。功能设计要求:(1)建立wkrs职工数据结构,结构含有姓名、序号、性别和年龄信息。(2)设计一个read... 不要求使用多文件编程,但要求使用头文件和菜单,并组成一个工程文件。
功能设计要求:
(1)建立wkrs职工数据结构,结构含有姓名、序号、性别和年龄信息。
(2)设计一个readin函数,以便采用问答式输入10个职工的信息。并建立一个文件用来存储这10个职工的信息,约定文件名为workers。
(3)编写一个display函数,要求使用结构指针作为参数,用来输出职工文件的内容。
(4)建立wks职工简明数据结构,结构只含有姓名和年龄信息。
(5)编制一个srt函数,根据wks结构建立的职工情况,把职工姓名和工资信息抽出来,另外建一个只含职工姓名和年龄的文件,约定文件名为wk_saw。
(6)编制一个delwk函数,可以从简明数据文件wk_saw中删去指定的职工记录,如果文件里没有要删去的职工,则输出没有这个职工的信息。如果将内容全部刚除,则给出一个已经删空的提示信息并退出该操作。
(7)将上述函数编制在一个文件里,共用一个头文件。
(8)用一个简单的菜单提供上述操作。菜单信息为:
1.输入数据
2.显示原始数据
3.制作简明数据
4.删除简明数据
5.退出运行
左边数字对应功能选择请选1-5:
急用!!!
展开
 我来答
Majinta
2010-07-19 · TA获得超过146个赞
知道答主
回答量:71
采纳率:0%
帮助的人:90.6万
展开全部
#include<iostream>
#include<fstream>
using namespace std;
struct wkrs
{
char num[10];
char name[10];
char sex[3];
int age;
}wk[10];
struct wkr
{
char name[10];
int age;
}wkshort[10];
void Display();
void Readin();
void Disp();
void SelectWk();
void Delwk();
int MenuSelect();
int num=0,number=10;
void main()
{
for(;;)
{
switch(MenuSelect())
{
case 1:Readin();break;
case 2:Display();break;
case 3:SelectWk();break;
case 4:Delwk();break;
case 5:Disp();break;
case 6:cout<<"退出运行,再见!"<<endl;exit(0);
}
}
}
int MenuSelect()
{
char s[2];int cn;
cout<<"1.输入数据"<<endl;
cout<<"2.显示原始数据"<<endl;
cout<<"3.制作简明数据"<<endl;
cout<<"4.删除简明数据"<<endl;
cout<<"5.显示简明文件"<<endl;
cout<<"退出运行"<<endl;
cout<<endl<<"左边数字对应功能选择,请选1-6:";
for(;;)
{
gets(s);
cn=atoi(s);
if(cn<1||cn>6)
cout<<endl<<"输入错误,重选1-6:";
else
break;
}
return(cn);
}
void Display()
{
int i;
ifstream disp("workers.txt");
//disp>>number;
if(!disp)
{
cout<<"文件打不开"<<endl;
return;
}
cout<<endl<<"序号"<<"\t姓名"<<"\t性别"<<"\t年龄"<<endl;
for(i=0;i<number;i++)
{
disp>>wk[i].num>>wk[i].name>>wk[i].sex>>wk[i].age;
cout<<endl<<wk[i].num<<"\t"<<wk[i].name<<"\t"<<wk[i].sex<<"\t"<<wk[i].age;
}
disp.close();
cout<<endl<<"一共有"<<number<<"个职工的信息"<<endl;
}
void Disp()
{
ifstream disp("wk_saw.txt",ios::binary);
if(!disp)
{
cout<<"文件打不开"<<endl;
return;
}
cout<<endl<<"职工简明文件内容:"<<endl;
cout<<endl<<"姓名"<<"\t年龄:"<<endl;
disp>>num;
for(int i=0;i<num;i++)
{
disp>>wkshort[i].name>>wkshort[i].age;
cout<<endl<<wkshort[i].name<<"\t"<<wkshort[i].age;
}
disp.close();
cout<<endl<<"一共有"<<num<<"个职工的信息"<<endl;
}
void Readin()
{
char ch[10];int i=0;
cout<<"准备输入职工信息"<<endl;
for(i=0;i<number;i++)
{
cout<<"序号:";
cin>>wk[i].num;
if(strcmp("0",wk[i].num)==0)
{
number=i;break;
}
cout<<"姓名:";
getchar();
gets(ch);
strcpy(wk[i].name,ch);
cout<<"性别:";
cin>>wk[i].sex;
cout<<"年龄:";
cin>>wk[i].age;
}
if(number==0)
{
cout<<"没有输入数据,不改写文件!"<<endl;
return;
}
cout<<"输入结束!"<<endl;
ofstream wr("workers.txt");
for(i=0;i<number;i++)
{
wr<<wk[i].num<<" "<<wk[i].name<<" "<<wk[i].sex<<" "<<wk[i].age<<endl;
}
wr.close();
cout<<endl<<"一共写入"<<number<<"个职工的信息"<<endl;
}
void SelectWk()
{
int i;
ifstream disp("workers.txt");
if(!disp)
{
cout<<"文件打不开"<<endl;
return;
}
//disp>>number;
for(i=0;i<number;i++)
{
cout<<endl<<wk[i].num<<"\t"<<wk[i].name<<"\t"<<wk[i].sex<<"\t"<<wk[i].age;
strcpy(wkshort[i].name,wk[i].name);
wkshort[i].age=wk[i].age;
}
cout<<endl;
disp.close();
ofstream wr("wk_saw.txt");
wr<<number<<endl;
for(i=0;i<number;i++)
{
wr<<wkshort[i].name<<" "<<wkshort[i].age<<endl;
}
wr.close();
Disp();
cout<<endl;
}
void Delwk()
{
int i=0,j,flag=0;char na[10];
Disp();
if(num==0)
{
cout<<endl<<"文件内容为空,退出删除操作."<<endl;
return;
}
cout<<endl<<"输入待删除的职工的姓名(输入0退出删除):";
while(strcmp(na,"0")!=0)
{
cout<<endl<<"姓名:";
gets(na);
if(strcmp(na,"0")==0)
{
cout<<endl<<"退出删除操作."<<endl;
return;
}
for(flag=1,i=0;i<num;i++)
{
if(strcmp(na,wkshort[i].name)==0)
{
for(j=i;j<num;j++)
{
strcpy(wkshort[j].name,wkshort[j+1].name);
wkshort[j].age=wkshort[j+1].age;
}
flag=0;
ofstream wr("wk_saw.txt");
num--;
wr<<num<<endl;
for(i=0;i<num;i++)
{
wr<<wkshort[i].name<<" "<<wkshort[i].age<<endl;
}
wr.close();
}
}
if(!flag)
if(num==0)
{
cout<<"现在已经删空文件内容,退出删除操作."<<endl;
return;
}
else
{
cout<<endl<<"删除后的文件内容:"<<endl;
Disp();
}
else
cout<<endl<<"没有发现这个职工,重新输入:"<<endl;
}
}
这个是用C++编写的,跟你要求的有一点小区别。要改的话,你改下,这个也是我以前从书上抄下来的!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式