
2007-12-21 11:00
oytommy
一个C++编程问题
我写了个人员管理系统的简单的程序
但是出现点问题我自己没办法解决
希望大家可以帮我看看
这个程序现在不能实现的是修改功能
不知道怎么改,系统不报错
而且经常数据溢出,帮帮忙
我很急,这个程序写了好几天了到现在没弄明白,下个星期就交作业了
#include<iostream.h>
#include<string.h>
#include<fstream.h>
class employee
{
protected:
char name[20];
int num;
char zhiwei[20];
char bumen[20];
int worktime;
int pay;
public:
employee()
{
}
employee(char n[20],int no,char zw[20],char bm[20],int wt,int mp)
{
strcpy(name,n);
num=no;
strcpy(zhiwei,zw);
strcpy(bumen,bm);
worktime=wt;
pay=mp;
}
friend void main();
};
void main()
{
cout<<"请选择您需要的操作!"<<endl;
cout<<"操作:"<<endl;
cout<<"(1)数据录入"<<endl;
cout<<"(2)删除人员"<<endl;
cout<<"(3)修改数据"<<endl;
cout<<"查询:"<<endl;
cout<<"(4)按编号查询"<<endl;
cout<<"(5)按姓名查询"<<endl;
cout<<"(6)输出所有人员数据"<<endl;
cout<<"*****************************"<<endl;
char p;char w;
employee *s[300];
ofstream *file[400];
int i=0;
int j=0;
bool flag2=0;
do
{
cin>>p;
if(p>='0'&&p<='6')
flag2=1;
else
cout<<"错误!不是内部函数!"<<endl;
}
while(flag2==0);
do{
switch(p)
{
case '1':
{
char c;
char name[20];
int num;
char zhiwei[20];
char bumen[20];
int worktime;
int pay;
do{
cout<<"姓名:"<<endl;
cin>>name;
cout<<"编号:"<<endl;
cin>>num;
cout<<"职位:"<<endl;
cin>>zhiwei;
cout<<"部门:"<<endl;
cin>>bumen;
cout<<"工龄:"<<endl;
cin>>worktime;
cout<<"年薪:"<<endl;
cin>>pay;
file[j]=new ofstream("e:\\ouyang_file",ios::ate);
*file[j]<<"姓名"<<name<<"编号"<<num<<"职位"<<zhiwei<<"部门"<<bumen<<"工龄:"<<worktime<<"年薪"<<pay<<endl;
j++;
s[i]=new employee(name,num,zhiwei,bumen,worktime,pay);
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 '4':
{
int no;
int j=0;
char c;
do {
int flag1=0;
cout<<"您要查询的员工编号是:"<<endl;
cin>>no;
for(int j=0;j<i;j++)
{
if((no,(*s[j]).num)==0)
{
flag1=1;
cout<<"您要查询的员工是:"<<(*s[j]).num<<endl;
cout<<(*s[j]).name<<"编号"<<(*s[j]).num<<"职位:"<<(*s[j]).zhiwei<<"部门:"<<(*s[j]).bumen<<"工龄:"<<(*s[j]).worktime<<"年薪:"<<(*s[j]).pay<<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':
{
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]).num<<"职位:"<<(*s[j]).zhiwei<<"部门:"<<(*s[j]).bumen<<"工龄:"<<(*s[j]).worktime<<"年薪:"<<(*s[j]).pay<<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 '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=0;
i--;
do{
s[h]=s[h+1];
h++;
}while(h<=i);
}
}
if(flag3==1)
cout<<"删除对象不存在!请查证后输入!";
cout<<"继续?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"错误!不是内部函数!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '3':
{
char name[20];
int not;
char zhiweit[20];
char bument[20];
int payt;
int worktimet;
flag2=0;
char c;
do
{
cout<<"请输入您要修改的员工姓名:"<<endl;
cin>>name;
for(int j=0;j<i;j++)
{
if(strcmp(name,s[j]->name)==0)
{
flag2=1;
cout<<"请输入新的编号:"<<endl;
cin>>not;
cout<<"请输入新的职位:"<<endl;
cin>>zhiweit;
cout<<"请输入新的部门:"<<endl;
cin>>bument;
cout<<"请输入新的工龄:"<<endl;
cin>>worktimet;
cout<<"请输入新的年薪:"<<endl;
cin>>payt;
s[j]->num=not;
s[j]->zhiwei[20]=zhiweit[20];
s[j]->bumen[20]=bument[20];
s[j]->worktime=worktimet;
s[j]->pay=payt;
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 '6':
{
cout<<"本系统所有员工数据如下:"<<endl;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<< "编号:"<<" "<<s[k]->num<<"职位:"<<" "<<s[k]->zhiwei <<"部门:"<<" "<<s[k]->bumen<<"工龄:"<<s[k]->worktime<<"年薪:"<<" "<<(*s[k]).pay <<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<<"请输入操作代码"<<endl;
cout<<"(1)数据录入"<<endl;
cout<<"(2)删除人员"<<endl;
cout<<"(3)修改数据"<<endl;
cout<<"查询:"<<endl;
cout<<"(4)按编号查询"<<endl;
cout<<"(5)按姓名查询"<<endl;
cout<<"(6)输出所有人员数据"<<endl;
cout<<"*****************************"<<endl;
cin>>p;
}while(w=='y');
for(int x=0;x<i;x++)
{
delete s[x];
cout<<"delete all members!"<<endl;
}
}
2008-1-14 12:42
阿华007
把帖子发成这样,很不负责任啊
可以用个附件发出来,我说不定帮你调试下,
2008-5-10 16:30
IE_Robin
请问是怎么解决的? 我不太专业,看了以后自己认为是不是因为录入时已经写入文件,要修改时必须先从文件中读出再修改?不知是不是这样?
2008-7-3 15:16
zmjeffwc
#include<iostream.h>
#include<string.h>
#include<fstream.h>
class employee
{
protected:
char name[20];
int num;
char zhiwei[20];
char bumen[20];
int worktime;
int pay;
public:
employee()
{ }
employee(char n[20],int no,char zw[20],char bm[20],int wt,int mp)
{
strcpy(name,n);
num=no;
strcpy(zhiwei,zw);
strcpy(bumen,bm);
worktime=wt;
pay=mp;
}
friend void main();
};
void main()
{
cout<<"ÇëÑ¡ÔñÄúÐèÒªµÄ²Ù×÷£¡"<<endl;
cout<<"²Ù×÷£º"<<endl;
cout<<"(1)Êý¾Ý¼Èë"<<endl;
cout<<"(2)ɾ³ýÈËÔ±"<<endl;
cout<<"(3)ÐÞ¸ÄÊý¾Ý"<<endl;
cout<<"²éѯ£º"<<endl;
cout<<"(4)°´±àºÅ²éѯ"<<endl;
cout<<"(5)°´ÐÕÃû²éѯ"<<endl;
cout<<"(6)Êä³öËùÓÐÈËÔ±Êý¾Ý"<<endl;
cout<<"*****************************"<<endl;
char p;char w;
employee *s[300];
ofstream *file[400];
int i=0;
int j=0;
bool flag2=0;
do
{
cin>>p;
if(p>='0'&&p<='6')
flag2=1;
else
cout<<"´íÎ󣡲»ÊÇÄÚ²¿º¯Êý£¡"<<endl;
}
while(flag2==0);
do{
switch(p)
{
case '1':
{
char c;
char name[20];
int num;
char zhiwei[20];
char bumen[20];
int worktime;
int pay;
do{
cout<<"ÐÕÃû:"<<endl;
cin>>name;
cout<<"񅧏:"<<endl;
cin>>num;
cout<<"ְλ:"<<endl;
cin>>zhiwei;
cout<<"²¿ÃÅ:"<<endl;
cin>>bumen;
cout<<"¹¤Áä:"<<endl;
cin>>worktime;
cout<<"Äêн:"<<endl;
cin>>pay;
file[j]=new ofstream("e:\ouyang_file",ios::ate);
*file[j]<<"ÐÕÃû"<<name<<"±àºÅ"<<num<<"ְλ"<<zhiwei<<"²¿ÃÅ"<<bumen<<"¹¤Áä:"<<worktime<<"Äêн"<<pay<<endl;
j++;
s[i]=new employee(name,num,zhiwei,bumen,worktime,pay);
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 '4':
{
int no;
int j=0;
char c;
do {
int flag1=0;
cout<<"ÄúÒª²éѯµÄÔ±¹¤±àºÅÊÇ£º"<<endl;
cin>>no;
for(int j=0;j<i;j++)
{
if((no,(*s[j]).num)==0)
{
flag1=1;
cout<<"ÄúÒª²éѯµÄÔ±¹¤ÊÇ:"<<(*s[j]).num<<endl;
cout<<(*s[j]).name<<"±àºÅ"<<(*s[j]).num<<"ְλ:"<<(*s[j]).zhiwei<<"²¿ÃÅ:"<<(*s[j]).bumen<<"¹¤Áä:"<<(*s[j]).worktime<<"Äêн:"<<(*s[j]).pay<<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':
{
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]).num<<"ְλ:"<<(*s[j]).zhiwei<<"²¿ÃÅ:"<<(*s[j]).bumen<<"¹¤Áä:"<<(*s[j]).worktime<<"Äêн:"<<(*s[j]).pay<<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 '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=0;
i--;
do{
s[h]=s[h+1];
h++;
}while(h<=i);
}
}
if(flag3==1)
cout<<"ɾ³ý¶ÔÏó²»´æÔÚ£¡Çë²éÖ¤ºóÊäÈ룡";
cout<<"¼ÌÐø£¿(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"´íÎ󣡲»ÊÇÄÚ²¿º¯Êý£¡"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '3':
{
char name[20];
int not;
char zhiweit[20];
char bument[20];
int payt;
int worktimet;
flag2=0;
char c;
do
{
cout<<"ÇëÊäÈëÄúÒªÐ޸ĵÄÔ±¹¤ÐÕÃû£º"<<endl;
cin>>name;
for(int j=0;j<i;j++)
{
if(strcmp(name,s[j]->name)==0)
{
flag2=1;
cout<<"ÇëÊäÈëеıàºÅ£º"<<endl;
cin>>not;
cout<<"ÇëÊäÈëеÄְλ£º"<<endl;
cin>>zhiweit;
cout<<"ÇëÊäÈëеIJ¿ÃÅ£º"<<endl;
cin>>bument;
cout<<"ÇëÊäÈëÐµĹ¤Áä:"<<endl;
cin>>worktimet;
cout<<"ÇëÊäÈëеÄÄêн:"<<endl;
cin>>payt;
s[j]->num=not;
s[j]->zhiwei[20]=zhiweit[20];
s[j]->bumen[20]=bument[20];
s[j]->worktime=worktimet;
s[j]->pay=payt;
cout<<"Êý¾ÝÐ޸ijɹ¦£¡";
}
}
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 '6':
{
cout<<"±¾ÏµÍ³ËùÓÐÔ±¹¤Êý¾ÝÈçÏ£º"<<endl;
if(i==0)
cout<<"¹ÜÀíϵͳÖÐûÓмÈëÊý¾Ý»òÕßÊý¾ÝÒѾ­±»É¾³ý£¡"<<endl;
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"ÐÕÃû:"<<" "<<s[k]->name<< "±àºÅ:"<<" "<<s[k]->num<<"ְλ£º"<<" "<<s[k]->zhiwei <<"²¿ÃÅ£º"<<" "<<s[k]->bumen<<"¹¤Áä:"<<s[k]->worktime<<"Äêн£º"<<" "<<(*s[k]).pay <<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<<"ÇëÊäÈë²Ù×÷´úÂë"<<endl;
cout<<"(1)Êý¾Ý¼Èë"<<endl;
cout<<"(2)ɾ³ýÈËÔ±"<<endl;
cout<<"(3)ÐÞ¸ÄÊý¾Ý"<<endl;
cout<<"²éѯ£º"<<endl;
cout<<"(4)°´±àºÅ²éѯ"<<endl;
cout<<"(5)°´ÐÕÃû²éѯ"<<endl;
cout<<"(6)Êä³öËùÓÐÈËÔ±Êý¾Ý"<<endl;
cout<<"*****************************"<<endl;
cin>>p;
}while(w=='y');
for(int x=0;x<i;x++)
{
delete s[x];
cout<<"delete all members!"<<endl;
}
}
2008-7-3 15:19
zmjeffwc
就是将语句s=new employee(name,num,zhiwei,bumen,worktime,pay);
改成s[i]=new employee(name,num,zhiwei,bumen,worktime,pay);
2008-7-3 15:30
zmjeffwc
怎么显示不出来 s[i]=new employee(name,num,zhiwei,bumen,worktime,pay);
2008-7-3 15:32
zmjeffwc
反正是s用数组表示
2008-7-3 16:08
zmjeffwc
我理解错了
页:
[1]

Powered by ITPUB论坛