如文件中写:123 456 789 李丽
如何读出string型的A:123,B:456,C:789,D:李丽
我的方案:
文件中写:
123
刘丽
女
化工学院
讲师
120623
123456789
代码:
void staff::getin()
{ FILE *fp=fopen("./data.txt","r+");
if(!fp){ printf("打开失败!\n"); }
fscanf(fp,"%s%s%s%s%s%s%s",num,name,sex,department,job_title,begintime,Tel);
fscanf(fp,"\n");
fclose(fp);
}
结果:
工号:123刘丽
姓名:刘丽
性别:女
所属部门:化工学院
职称:讲师
入职时间:120623123456789
联系电话:123456789
如果可以请不要使用int型
涉及源码如下
#include<iostream>
#include<string>
#include<conio.h>
#include<fstream>
using namespace std;
class staff //定义员工类
{ private:
char num[3]; char name[15];
char sex[3]; char department[100];
char job_title[10]; char begintime[6];
char Tel[13];
public: //定义成员函数
void getin(staff *st,int &i);
void getout();
void getoutsex(staff *st,int &i);
void findone(staff *st,int &i);
void change(staff *st,int &i);
void delstaff(staff *st,int &i);
void deleteall(staff *st,int &i,int j);
};
void mainmenuout() //主界面输出
{ cout<<" ┍┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┑"<<endl;
cout<<" ║ 欢迎使用员工信息系统 ║"<<endl;
cout<<" ├┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┤"<<endl;
cout<<" ║ 按1输入员工信息 ║"<<endl;
cout<<" ║ 按2输出员工信息 ║"<<endl;
cout<<" ║ 按3统计员工信息 ║"<<endl;
cout<<" ║ 按4查询员工信息 ║"<<endl;
cout<<" ║ 按5修改指定员工信息 ║"<<endl;
cout<<" ║ 按6删除指定员工信息 ║"<<endl;
cout<<" ║ 按7退出系统 ║"<<endl;
cout<<" ┕┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┙"<<endl;
}
void staff::getin(staff *st,int &i) //输入员工信息
{ FILE *fp=fopen("./data.txt","r+");
if(!fp){ printf("打开失败!\n"); }
fscanf(fp,"%s%s%s%s%s%s%s",st[i].num,st[i].name,st[i].sex,st[i].department,st[i].job_title,st[i].begintime,st[i].Tel);
fscanf(fp,"\n");
fclose(fp);
}
void staff::getout() //输出员工信息
{ cout<<"工号:"<<num<<endl;
cout<<"姓名:"<<name<<endl;
cout<<"性别:"<<sex<<endl;
cout<<"所属部门:"<<department<<endl;
cout<<"职称:"<<job_title<<endl;
cout<<"入职时间:"<<begintime<<endl;
cout<<"联系电话:"<<Tel<<endl<<endl;
}
void staff::getoutsex(staff *st,int &i) //统计员工总数及性别
{ int h,m=0,f=0;
for(h=0;h<=i;h++)
if(st[h].sex=="男") m++;
else if(st[h].sex=="女") f++;
cout<<"男员工有"<<m<<"名"<<endl;
cout<<"女员工有"<<f<<"名"<<endl;
cout<<"员工共有"<<f+m<<"名"<<endl;
}
void staff::findone(staff *st,int &i) //通过工号,姓名,电话查找员工信息
{ cout<<"输入1按工号查找,输入2按姓名查找,输入3按联系电话查找"<<endl; //输出信息提示下一步操作
int x,g; cin>>x; char f[100];
switch(x) //判断键盘输入信息
{ case 1:{cout<<"请输入要查找员工的工号"; cin>>f;
for(g=0;g<=i;g++)
if(st[g].num==f) st[g].getout();
}break;
case 2:{cout<<"请输入要查找员工的姓名"; cin>>f;
for(g=0;g<=i;g++)
if(st[g].num==f) st[g].getout();
}break;
case 3:{cout<<"请输入要查找员工的联系电话"; cin>>f;
for(g=0;g<=i;g++)
if(st[g].Tel==f) st[g].getout();
}break;
default:cout<<"输入错误!"<<endl;
cout<<"信息查询完毕!"<<endl; getch();
}
}
void staff::change(staff *st,int &i) //利用工号定位员工,修改其信息
{ char f[100]; int k,j;
cout<<"请输入要修改员工的工号:"; cin>>f;
for(k=0;k<=i;k++)
if(st[k].num==f) j=k;
cout<<"按1修改工号,按2修改姓名,按3修改性别,按4修改部门,按5修改职称"<<endl;
cout<<"按6修改入职时间,按7修改联系电话"<<endl; //输出信息提示下一步操作
int x; cin>>x;
switch(x) //判断键盘输入信息
{ case 1:cout<<"请输入要修改内容:";
cin>>st[j].num; break;
case 2:cout<<"请输入要修改内容:";
cin>>st[j].name; break;
case 3:cout<<"请输入要修改内容:";
cin>>st[j].sex; break;
case 4:cout<<"请输入要修改内容:";
cin>>st[j].department; break;
case 5:cout<<"请输入要修改内容:";
cin>>st[j].job_title; break;
case 6:cout<<"请输入要修改内容:";
cin>>st[j].begintime; break;
case 7:cout<<"请输入要修改内容:";
cin>>st[j].Tel; break;
default:cout<<"输入错误!"<<endl; break;
}cout<<"信息修改完毕!"<<endl;
}
void staff::deleteall(staff *st,int &i,int j) //删除某一员工全部信息
{ for(;j<=i;j++)
st[j]=st[j+1]; i--;
}
void staff::delstaff(staff *st,int &i) //利用工号定位员工,删除其信息
{ char f[100]; int k,j;
cout<<"请输入要删除员工的工号:"; cin>>f;
for(k=0;k<=i;k++) if(st[k].num==f) j=k;
cout<<"按1删除工号,按2删除姓名,按3删除性别,按4删除部门,按5删除职称"<<endl;
cout<<"按6删除入职时间,按7删除联系电话,按8删除该员工全部信息"<<endl;
int x; cin>>x;
switch(x) //判断键盘输入信息
{ case 1:sprintf(st[j].num,"无"); break;
case 2:sprintf(st[j].name,"无"); break;
case 3:sprintf(st[j].sex,"无"); break;
case 4:sprintf(st[j].department,"无"); break;
case 5:sprintf(st[j].job_title,"无"); break;
case 6:sprintf(st[j].begintime,"无"); break;
case 7:sprintf(st[j].Tel,"无"); break;
case 8:st[j].deleteall(st,i,j); break;
default:cout<<"输入错误!"<<endl;break;
}cout<<"信息删除完毕!"<<endl;
}
int main() //主函数
{ staff st[500];
system("color 70"); int i=-1,j=0;
mainmenuout();
while(1) //永久循环保证系统运行
{// system("cls");
int x; //system("pause"); //暂停程序解决bug
cout<<"按1,2,3,4,5,6,7继续操作系统"<<endl; cin>>x;
switch(x) //判断键盘输入信息
{ case 1:i++;st[i].getin(st,i); break;
case 2:for(j=0;j<=i;j++) st[j].getout();
cout<<"信息输出完毕"<<endl; getch(); break;
case 3:st[0].getoutsex(st,i); break;
case 4:st[0].findone(st,i); break;
case 5:st[0].change(st,i); break;
case 6:st[0].delstaff(st,i); break;
case 7:cout<<"退出系统,结束程序!"<<endl;exit(0); break;
default:cout<<"输入错误!"<<endl;break;
}
}getch();
return 0;
}