1、C+程序设计课程设计人口户籍信息管理系统源程序九、源程序代码#include#include#include#include/kj;lj;j;j;class populationprivate:int maxnum;/人口户籍编号最大值rint sno;/编号char name20;char sex2;int age;char birth10;/出生日期char folk2;/民族char mianmao10;/政治面貌char department10;/村组名char speciality10;/家庭门牌号char address30;/人口家庭详细地址public:population(
2、);population();void enter();/户籍信息录入函数void display();/户籍信息输出函数void setsno(int temp);int getsno();char *getname();char *getspeciality();void read();void write();void change();population:population()population:population()int population:getsno()return sno;char *population:getspeciality()return speciali
3、ty;void population:setsno(int temp)sno=temp;char *population:getname()return name;void population:display() coutsetw(4)snosetw(4)namesetw(4)sexsetw(4)agesetw(4)folksetw(8)birthsetw(8)mianmaosetw(8)departmentsetw(8)specialitysetw(8)addressendl;void population:change() char ch; cout 请输入要修改人员的信息endl; c
4、out*endl; cout姓名是不是要改写(Y/N)ch; if(ch=Y|ch=y) cout请输入新姓名:name; cout输入性别(男(n),女(m):sex; if (strcmp(sex,n)!=0&strcmp(sex,m)!=0) cout错误请重新输入!:sex; cout输入年龄:age; while(age=110) cout错误请重新输入!age; cout输入出生日期:birth; cout输入民族:folk; cout输入政治面貌类别(党员(a),非党员(b):mianmao; while(strcmp(mianmao,a)!=0&strcmp(mianmao,b
5、)!=0) cout错误请重新输入!mianmao; cout输入村组名:department; cout输入家庭门牌号:speciality; cout输入家庭详细地址:address; cout*endl; cout你刚刚输入的人员信息如下:endl; display();void population:enter() ifstream tfile(max.txt,ios:binary|ios:nocreate); if(tfile) tfile.read(char *)&maxnum,sizeof maxnum); else maxnum=1000;/户籍编号初始化 tfile.clos
6、e(); sno=maxnum+; ofstream ofile(max.txt); ofile.write(char*)&maxnum,sizeof maxnum); tfile.close(); cout请输入人员信息endl; cout人员姓名:name; cout性别(男(n),女(m):sex; while(strcmp(sex,n)!=0&strcmp(sex,m)!=0) cout错误请重新输入!sex; cout出生日期:birth; cout年龄:age; while(age=110) cout错误请重新输入!age; cout政治面貌类别(党员(a),非党员(b):mian
7、mao; while(strcmp(mianmao,a)!=0&strcmp(mianmao,b)!=0) cout错误请重新输入!mianmao; cout民族:folk; cout村组名:department; cout家庭门牌号:speciality; cout家庭详细地址:address;/主程序部分:#include#include#include#include#include/#includepopulation.hpopulation pop;/population 类的全局变量void read() ifstream afile(population.txt,ios:nocr
8、eate); afile.read(char*)&pop,sizeof pop);void write() ofstream bfile(population.txt,ios:app); bfile.write(char*)&pop,sizeof pop);void input(void)/录入函数 char ch; pop.enter(); write(); cout你还要输入下一位人员的信息吗(Y/N)!ch; if(ch=Y|ch=y) input(); void search()/查询函数 int j,k,i,m=0; char ch15,ch210; cout请输入你的查找类型:(1
9、.编号 2.姓名 3.门牌号 )j; while(j=4) cout错误请重新选择!j; if(j=1) cout请输入你要查找的人员的编号:i; if(j=2) cout请输入你要查找的人员的姓名:ch1; if(j=3) cout请输入你要查找的人员的家庭门牌号:ch2; ifstream dfile(population.txt,ios:nocreate); while (dfile.good() dfile.read(char *) &pop,sizeof pop); if(i=pop.getsno()|strcmp(pop.getname(),ch1)=0| strcmp(pop.g
10、etspeciality(),ch2)=0) cout你要查找的人员信息如下:endl; coutsetw(4)编号setw(4)姓名setw(4)性别setw(4) 年龄setw(4)民族setw(8)出生日期setw(8)政治面貌 setw(8)村组名setw(8)家庭门牌号setw(8)家庭详细地址endl; pop.display(); i=0; k=0; m=1; return; if(m!=1) cout没有找到这名人员的信息!endl; void omit()/删除函数 int ch; cout请输入要删除的人员的编号:ch; ifstream in(population.txt
11、,ios:nocreate);/打开文件1,读数据 ofstream out(population1.txt,ios:trunc);/打开文件写数据到文件2 while(in)/循环读数据 if(in.read(char*)&pop,sizeof pop)/读后存在pop变量里,读pop这么大小 if(ch!=pop.getsno()/ 如果读出来的数据的pop取sno不等于刚才输入的学号,将这组数据写入文件 out.write(char*)&pop,sizeof pop); else cout人员已成功删除!endl; in.close();/关闭文件 out.close(); ifstre
12、am ifile(population1.txt,ios:nocreate);/将文件2的内容弄到文件1上 ofstream hfile(population.txt,ios:trunc); while(ifile) if(ifile.read(char*)&pop,sizeof pop) hfile.write(char *)&pop,sizeof pop); ifile.close(); hfile.close();void change() int p=0,l=0; int ch; coutch; fstream efile(population.txt,ios:in|ios:out);
13、 while(efile.good() efile.seekg(sizeof(pop)*p); if(efile.read(char *) &pop,sizeof pop) if(ch=pop.getsno() pop.display(); pop.change(); efile.seekp(sizeof(pop)*p); efile.write(char *) &pop,sizeof pop); l+; return; p+; efile.close(); if(l!=1) cout没有你所要修改的学生信息!endl;void output()/输出函数 int i=0; ifstream
14、cfile(population.txt,ios:nocreate);/打开文件 while(cfile)/循环读文件的数据到类或结构体里 if( cfile.read(char *)&pop,sizeof pop) pop.display();/调用pop的成员函数打印 i+;/为后面的一共文件里存了多少人的数据做累加,求人员个数。 cout一共有i个人员信息endl; void menu() cout * 人口户籍信息管理系统 *endl;cout*endl;cout 0.退出管理系统 endl;cout 1.人员信息录入 endl;cout 2.人员信息查询 endl;cout 3.人员
15、信息删除 endl;cout 4.人员信息修改 endl;cout 5.人员信息输出 endl;cout*endl;cout 请选择以上操作(0=5) ch; switch(ch) case 0:exit(0);menu();break; case 1:input();menu();break; case 2:search();menu();break; case 3:omit();menu();break; case 4:change();menu();break; case 5:output();menu();break; default:menu(); cout输入无效请重新输入(0=5
16、)endl; break; int main() int count=0; char password5; /密码 char name11; /用户名 cout endl; cout 人口户籍信息管理系统 endl; cout endl; cout endl; cout *欢迎进入人口户籍信息管理系统*endl; coutendl; cout请输入用户名:name; cout请输入密码:password; if(strcmp(password,2010)=0 ) cout *您的密码正确!-*endl; coutendl; menu(); select(); else count=count+1; if(count=3) cout实在对不起,您已经输入错误3次了!endl; cout系统自动退出!endl; break; cout对不起! 您的密码有误!endl; cout请重新输入密码endl; continue; break; cout 谢谢使用-人口户籍信息管理系统! endl; cout 再见! endl; cout*endl; return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1