C++程序设计课程设计人口户籍信息管理系统源程序.docx
《C++程序设计课程设计人口户籍信息管理系统源程序.docx》由会员分享,可在线阅读,更多相关《C++程序设计课程设计人口户籍信息管理系统源程序.docx(16页珍藏版)》请在冰豆网上搜索。
C++程序设计课程设计人口户籍信息管理系统源程序
九、源程序代码
#include
#include
#include
#include//kj;lj;j;j;
classpopulation
{
private:
intmaxnum;//人口户籍编号最大值r
intsno;//编号
charname[20];
charsex[2];
intage;
charbirth[10];//出生日期
charfolk[2];//民族
charmianmao[10];//政治面貌
chardepartment[10];//村组名
charspeciality[10];//家庭门牌号
charaddress[30];//人口家庭详细地址
public:
population();
~population();
voidenter();//户籍信息录入函数
voiddisplay();//户籍信息输出函数
voidsetsno(inttemp);
intgetsno();
char*getname();
char*getspeciality();
voidread();
voidwrite();
voidchange();
};
population:
:
population()
{}
population:
:
~population()
{}
intpopulation:
:
getsno()
{returnsno;}
char*population:
:
getspeciality()
{returnspeciality;}
voidpopulation:
:
setsno(inttemp)
{sno=temp;}
char*population:
:
getname()
{returnname;}
voidpopulation:
:
display()
{
cout<)<}
voidpopulation:
:
change()
{
charch;
cout<<"请输入要修改人员的信息"<cout<<"*******************************************************"<cout<<"姓名是不是要改写(Y/N)"<cin>>ch;
if(ch=='Y'||ch=='y')
{
cout<<"请输入新姓名:
"<cin>>name;
}
cout<<"输入性别(男(n),女(m)):
"<cin>>sex;
if(strcmp(sex,"n")!
=0&&strcmp(sex,"m")!
=0)
{
cout<<"错误请重新输入!
:
"<cin>>sex;
}
cout<<"输入年龄:
"<cin>>age;
while(age<1||age>=110)
{
cout<<"错误请重新输入!
"<cin>>age;
}
cout<<"输入出生日期:
"<cin>>birth;
cout<<"输入民族:
"<cin>>folk;
cout<<"输入政治面貌类别(党员(a),非党员(b)):
"<cin>>mianmao;
while(strcmp(mianmao,"a")!
=0&&strcmp(mianmao,"b")!
=0)
{
cout<<"错误请重新输入!
"<cin>>mianmao;
}
cout<<"输入村组名:
"<cin>>department;
cout<<"输入家庭门牌号:
"<cin>>speciality;
cout<<"输入家庭详细地址:
"<cin>>address;
cout<<"***************************************************"<cout<<"你刚刚输入的人员信息如下:
"<display();
}
voidpopulation:
:
enter()
{
ifstreamtfile("max.txt",ios:
:
binary|ios:
:
nocreate);
if(tfile)
{
tfile.read((char*)&maxnum,sizeofmaxnum);
}
else
{
maxnum=1000;//户籍编号初始化
}
tfile.close();
sno=maxnum++;
ofstreamofile("max.txt");
ofile.write((char*)&maxnum,sizeofmaxnum);
tfile.close();
cout<<"请输入人员信息"<cout<<"人员姓名:
"<cin>>name;
cout<<"性别(男(n),女(m)):
"<cin>>sex;
while(strcmp(sex,"n")!
=0&&strcmp(sex,"m")!
=0)
{
cout<<"错误请重新输入!
"<cin>>sex;
}
cout<<"出生日期:
"<cin>>birth;
cout<<"年龄:
"<cin>>age;
while(age<1||age>=110)
{
cout<<"错误请重新输入!
"<cin>>age;
}
cout<<"政治面貌类别(党员(a),非党员(b)):
"<cin>>mianmao;
while(strcmp(mianmao,"a")!
=0&&strcmp(mianmao,"b")!
=0)
{
cout<<"错误请重新输入!
"<cin>>mianmao;
}
cout<<"民族:
"<cin>>folk;
cout<<"村组名:
"<cin>>department;
cout<<"家庭门牌号:
"<cin>>speciality;
cout<<"家庭详细地址:
"<cin>>address;
}
//主程序部分:
#include
#include
#include
#include
#include
//#include"population.h"
populationpop;//population类的全局变量
voidread()
{
ifstreamafile("population.txt",ios:
:
nocreate);
afile.read((char*)&pop,sizeofpop);
}
voidwrite()
{
ofstreambfile("population.txt",ios:
:
app);
bfile.write((char*)&pop,sizeofpop);
}
voidinput(void)//录入函数
{
charch;
pop.enter();
write();
cout<<"你还要输入下一位人员的信息吗(Y/N)!
"<cin>>ch;
if(ch=='Y'||ch=='y')
{
input();
}
}
voidsearch()//查询函数
{
intj,k,i,m=0;
charch1[5],ch2[10];
cout<<"请输入你的查找类型:
(1.编号2.姓名3.门牌号)"<cin>>j;
while(j<=0||j>=4)
{
cout<<"错误请重新选择!
"<cin>>j;
}
if(j==1)
{
cout<<"请输入你要查找的人员的编号:
"<cin>>i;
}
if(j==2)
{
cout<<"请输入你要查找的人员的姓名:
"<cin>>ch1;
}
if(j==3)
{
cout<<"请输入你要查找的人员的家庭门牌号:
"<cin>>ch2;
}
ifstreamdfile("population.txt",ios:
:
nocreate);
while(dfile.good())
{
dfile.read((char*)&pop,sizeofpop);
if(i==pop.getsno()||strcmp(pop.getname(),ch1)==0||
strcmp(pop.getspeciality(),ch2)==0)
{
cout<<"你要查找的人员信息如下:
"<cout<"年龄"<setw(8)<<"村组名"<pop.display();
i=0;
k=0;
m=1;
return;
}
}
if(m!
=1)cout<<"没有找到这名人员的信息!
"<}
voidomit()//删除函数
{
intch;
cout<<"请输入要删除的人员的编号:
"<cin>>ch;
ifstreamin("population.txt",ios:
:
nocreate);//打开文件1,读数据
ofstreamout("population1.txt",ios:
:
trunc);//打开文件写数据到文件2
while(in)//循环读数据
{
if(in.read((char*)&pop,sizeofpop))//读后存在pop变量里,读pop这么大小
if(ch!
=pop.getsno())//如果读出来的数据的pop取sno不等于刚才输入的学号,将这组数据写入文件
{
out.write((char*)&pop,sizeofpop);
}
else
cout<<"人员已成功删除!
"<}
in.close();//关闭文件
out.close();
ifstreamifile("population1.txt",ios:
:
nocreate);//将文件2的内容弄到文件1上
ofstreamhfile("population.txt",ios:
:
trunc);
while(ifile)
{
if(ifile.read((char*)&pop,sizeofpop))
hfile.write((char*)&pop,sizeofpop);
}
ifile.close();
hfile.close();
}
voidchange()
{intp=0,l=0;
intch;
cout<<"请输入你要修改的人员编号:
";
cin>>ch;
fstreamefile("population.txt",ios:
:
in|ios:
:
out);
while(efile.good())
{efile.seekg(sizeof(pop)*p);
if(efile.read((char*)&pop,sizeofpop))
{
if(ch==pop.getsno())
{
pop.display();
pop.change();
efile.seekp(sizeof(pop)*p);
efile.write((char*)&pop,sizeofpop);
l++;
return;
}
}
p++;
}
efile.close();
if(l!
=1)
cout<<"没有你所要修改的学生信息!
"<}
voidoutput()//输出函数
{
inti=0;
ifstreamcfile("population.txt",ios:
:
nocreate);//打开文件
while(cfile)//循环读文件的数据到类或结构体里
{
if(cfile.read((char*)&pop,sizeofpop))
{
pop.display();//调用pop的成员函数打印
i++;//为后面的一共文件里存了多少人的数据做累加,求人员个数。
}
}
cout<<"一共有"<
}
voidmenu()
{
cout<<"*人口户籍信息管理系统*"<cout<<"*******************************************************"<cout<<"0.退出管理系统"<cout<<"1.人员信息录入"<cout<<"2.人员信息查询"<cout<<"3.人员信息删除"<cout<<"4.人员信息修改"<cout<<"5.人员信息输出"<cout<<"*******************************************************"<cout<<"请选择以上操作(0=======5)"<}
voidselect()//选择菜单函数
{
intch;
while
(1)
{
cin>>ch;
switch(ch)
{
case0:
exit(0);menu();break;
case1:
input();menu();break;
case2:
search();menu();break;
case3:
omit();menu();break;
case4:
change();menu();break;
case5:
output();menu();break;
default:
menu();cout<<"输入无效请重新输入(0========5)"<}
}
}
intmain()
{
intcount=0;
charpassword[5];//密码
charname[11];//用户名
cout<<"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"<cout<<"┃★★★人口户籍信息管理系统★★★┃"<cout<<"┃┃"<cout<<"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"<cout<<"*************************欢迎进入人口户籍信息管理系统*********************"<cout<cout<<"请输入用户名:
"<cin>>name;
cout<<"请输入密码:
"<while
(1)
{
cin>>password;
if(strcmp(password,"2010")==0)
{
cout<<"*您的密码正确!
!
-------------*"<cout<menu();
select();
}
else
{
count=count+1;
if(count==3)
{
cout<<"实在对不起,您已经输入错误3次了!
!
!
"<cout<<"系统自动退出!
!
!
"<break;
}
cout<<"对不起!
您的密码有误!
!
"<cout<<"请重新输入密码"<continue;
}
break;
}
cout<<"谢谢使用-----人口户籍信息管理系统!
!
!
"<cout<<"再见!
!
"<cout<<"*******************************************************************************"<return0;
}