当前位置:文档之家› 人口户籍管理系统C

人口户籍管理系统C

*********软件课程设计实践实验报告专业班级:学生姓名:学号:实验项目名称:实验项目性质:实验所属课程:实验室(中心):指导教师:实验完成时间:目录一选题及说明2 二系统编写环境22.1 软件环境22.2 硬件环境2三主要功能说明23.1 信息输入23.2 信息查询23.3 信息删除23.4 信息修改23.5 信息浏览2四功能设计及实现34.1 数据结构34.2 界面设置33444554.3 功能实现6666666 五程序源代码6 六结束语20 七参考文献20一、选题及说明题目:人口户籍信息管理系统人口户籍信息管理系统是一个简易的管理个人和家庭信息的系统,主要对个人和家庭的基本信息进行管理,个人基本信息包括姓名、性别、出生日期、民族、政治面貌、宗教信仰、身份证编码、联系方式、住址和门牌号,家庭的基本信息包括住址、人口数和门牌号。

管理系统主要有信息输入、信息查询、信息删除、信息修改和信息浏览五大功能。

二、系统编写环境1. 软件环境:Windows7( 64位) VisualC++6.02. 硬件环境:CPUI55200URAM8G1600MB盘5OOG54O0专三、主要功能说明1. 信息输入:由函数InPut() 实现,InPut() 函数调用两个子函数,分别实现对个人和家庭基本信息的输入,输入后将输入的内容保存到容器中。

2. 信息查询:由函数Inquir() 实现,Inquiry() 函数调用两个子函数,分别实现隔热信息和家庭信息的查询,其中个人信息查询有三种方式,即姓名查询、身份证查询和门牌号查询,门牌号查询可能会有多个查询结果。

3. 信息删除:由函数Delete() 实现,Delete() 函数调用两个子函数,分别实现对个人和家庭的信息删除。

4. 信息修改:由函数Change()实现,Change()函数调用两个子函数,分别实现对个人和家庭的信息进行修改,对个人信息进行修改时还可以选择对某一项信息进行修改。

5. 信息浏览:由Look() 函数实现,实现机制和信息查询函数基本相同,分为三中浏览方式,即姓名浏览、身份证编码浏览和门牌号浏览。

综合所有功能,整个程序的简单流程图如下:四、功能设计及实现(一)、数据结构:Person类中主要包含姓名(Name、性别(Sex)、出生日期(Birth)、民族(Folk )、政治面貌(Pol_sta)、宗教信仰(Belief)、身份证编码(ID)、联系方式(Tel)、住址(Add)和门牌号(Num),Family类中主要包含住址(Address)、门牌号(Number)和人口数(Pop)。

(二)、界面设置:1. 主界面:主界面显示该系统的五大主要功能和操作提示,如下图:2. 信息输入界面:信息输入界面主要提示用户输入基本信息,如下图:3. 信息查询界面:信息查询界面主要提示用户根据自己的需要输入相关信息进行查询,如下图:4. 信息删除界面:信息删除界面主要是由用户输入要删除信息的身份证编码进行信息删除,如下图:5. 信息修改界面:信息修改界面主要由个人或家庭的基本信息组成,提示用户选择要修改的项目,用户选择进行修改,如下图:6. 信息浏览界面:信息浏览界面主要提示用户选择要进行浏览的方式,有按姓名、按身份证号和按门牌号三种方式,如下图:(三)、功能实现:1. 信息输入功能:由函数InPut() 调用两个类中的Set() 实现,具体的信息输入则用到标准输入流cin 和字符串输入函数cin.get() 、getline() 实现,执行完输入函数后,用Per_vec.push_back()/Fam_vec.push_back() 把输入的数据内容存到容器中。

2. 信息查询功能:由函数Inquiry() 实现,信息查询功能有三种查询方式,即按照姓名查询、按照身份证编码查询和按照门牌号查询。

三种查询方式的实现机制都是利用字符串比较函数((*P)GetName()).compare(na)==0 、-((*P)GetID()).compare(id)==0 、((*P)GetNum()).compare(num)==0 ,输入的所需查询的姓名或身份证编码或门牌号与容器中存储的数据进行比较,当两字符串相同时,输出查询的结果。

3. 信息删除功能:由函数Delete() 实现,实现机制首先使用信息查询函数找到要删除人员的信息,再使用erase() 函数删除信息,使用erase() 函数时,把需要删除的内容的起止地址直接写到括号中。

4. 信息修改功能:由函数Change()调用两个类中的Change()实现,该功能首先要选择需要修改的对象,然后在对该对象的信息进行修改,修改过后又将信息保存到容器中。

5. 信息浏览功能:由函数Look() 实现,该功能的主要机制和信息查询功能差不,也提供三种浏览方式。

6. 退出系统:整个系统的是一个do ••- while循环首先进入系统页面,然后输入选择,当输入不为“ 0”时,系统执行数字相对应的功能,当输入为“0”时,循环终止,整个系统退出。

五、程序源代码#include<iostream> #include<string> #include<vector> usingnamespacestd;#defineSIZE80classPerson{stringName;// 姓名stri ngSex;// 性别stringBirth;// 出生日期stri ngFolk;// 民族stri ngPol_sta;〃政治面貌stri ngBelief;// 宗教信仰stri ngID;//身份证编码stri ngTel;//联系方式stri ngAdd;// 住址stringNum;// 门牌号inti;public:Perso n();//无参构造函数Person(stringna,stringsex,stringbirth,stringfolk,stringpol_sta,stringbelief,stringid,stringtel,stringadd,stringnum);// 带参构造函数Perso n( co nstPerso n&per);//拷贝构造函数~Perso n();//析构函数stri ngGetName();〃提取姓名stringGetSex() ;//提取性别stri ngGetBirth();〃提取出生日期stri ngGetFolk();〃提取民族stri ngGetPol_sta();〃提取政治面貌stri ngGetBelief();〃提取宗教信仰stringGetID() ;//提取身份证编码stringGetTel() ;//提取联系方式stri ngGetAdd();〃提取地址stri ngGetNum();〃提取门牌号voidDisplay()co nst;〃显示学生信息voidSet();〃输入学生信息voidChange();〃修改个人信息};classFamily{private:stri ngAddress;// 住址intNumber;// 门牌号in tPop;// 人口数目public:Family();Family(stringaddress,intnumber,intpop);~Family();voidSet();//信息输入voidDisplay();〃信息输出voidCha nge();〃信息修改intGetNumber();// 门牌号返回函数};Person::Person() {i=0;}〃构造函数Person::Person(stringna,stringsex,stringbirth,stringfolk,stringpol_sta,stringbelief,stri ngid,stringtel,stringadd,stringnum){Name=na;Sex=sex;Birth=birth; Folk=folk;P O _I S Q)HP O _I S Q)八Be-ielrbe-ief八 o ll.c hT e ll f e -八AddHadd 八Numunum八person::p e「s o n (c on s f p e「s o n QO p e「)M ^£s ^®»宀NameHpenNampsexHper.sex-BirthHpe&rth八 FO-kHper.FO-k八p o _l s Qr H p e r .po _ls Qr 八 B e =e lr p e n B e =e f 八 -D H P e z D 八 Tellper.TerAddHper.Add 八NumHpenNum 八 P e 「sonx〜P e 「so n()言s ®達 es s.n g pe 「s o r E o e 2a m e ()M l ®m a 宀「efumName》s s.ngp er s o r E o e f s e x o '^s w ^ 宀refumsex"ss.ngpersorEoeooirtho二肅®圧卄m s宀refumBirth 》ss.ngpersorEoefFO-ko —^®^^宀「efumFO天〉 ss.ngpe 「sorToefpo_lsQr()言®W?&H ^ 宀「efulnpo_lsQr》ss.ngpe 「sorEoe65e=ef()二肅®沁舞述言 宀refulnBe-ief 》s s.n g persorEoef-D()二肅®>#EE>^ 宀refum-D"s s.n g p e 「s o r E o e f r e -()1^®«^H n 宀refumTe-v ss.ngpersorroefAddo 二肅s m s 宀refumAdd"ss.ngpersorEoezumo 二肅S ZJ S 4U 宀「efumNum 》voidpersonxDisp-ayoconsul圧達議a ?wcoutvv"1.姓名:"vvNamevv"2性别:"<<Sex<<endl; cout«"\n3.出生日期:"v<Birthvv"4.民族:"<<Folk<<endl; cout«"\n5.政治面貌:"v<Pol_sta<v"6 宗教信仰:"<<Belief<<e ndl; cout«"\n7.身份证编码:"vvlD<v"8住址:"<<Add<<endl; cout«"\n9.联系方式:"<<Telvv"10 门牌号:"<<Num<<e ndl;}voidPerso n::Set()〃输入数据{cin.get();coutvv"请输入姓名:";getline(cin,Name);cin.get();coutvv"请输入性别:";getline(cin,Sex);cin.get();coutvv"请输入出生日期:";getline(cin,Birth);cin.get();coutvv"请输入民族:";getline(cin,Folk);cin.get();coutvv"请输入政治面貌:";getline(cin,Pol_sta);cin.get();coutvv"请输入宗教信仰:";getline(cin,Belief);cin.get();coutvv"请输入身份证编码:";getline(cin,lD);cin.get();coutvv"请输入住址:";getline(cin,Add);cin.get();coutvv"请输入联系方式:";getline(cin,Tel);cin.get();coutvv"请输入门牌号:";getline(cin,Num);}voidPerson::Change(){inti;Display();coutvv"\n 请选择需要修改的项目:";cin>>i; switch(i) { case1: { cin.get();coutvv"请重新输入姓名:";getline(cin,Name);};break; case2:{cin.get();coutvv"请重新输入性别:";getline(cin,Sex);};break; case3:{cin.get();coutvv"请重新输入出生日期:getline(cin,Birth);};break;case4:{cin.get();coutvv"请重新输入民族:"; getline(cin,Folk);};break; case5:{cin.get();coutvv"请重新输入政治面貌:getline(cin,Pol_sta);};break; case6:{cin.get();coutvv"请重新输入宗教信仰:getline(cin,Belief);};break; case7:{cin.get();coutvv"请重新输入身份证编码: getline(cin,ID);};break;case8:{cin.get();coutvv"请重新输入住址:";getline(cin,Add);};break;case9:{ cin.get();coutvv"请重新输入联系方式:";getline(cin,Tel);};break;case10:{ cin.get();coutvv"请重新输入门牌号:"; getline(cin,Num);};break;default: Change();}}Family::Family()〃构造函数{Number=0;Pop=0;}Family::~Family(){}Family::Family(stri ngaddress,i ntnu mber,i ntpop)// 带参构造函数{Address=address;Number=number;Pop=pop;}voidFamily::Set()〃信息输入{cin.get();coutvv"请输入家庭地址:"; getline(cin,Address);coutvv"请输入门牌号:";cin>>Number;}voidFamily::Display(){cout«"家庭住址:"vvAddress; cout«"门牌号:"vvNumber; cout«"家庭人口数:"<<Pop;} voidFamily::Change(){inti;cout<<"1 .家庭住址2.门牌号"<<endl; coutvv"请选择要修改的内容:"; cin>>i;switch(i){case1:{cin.get(); coutvv"请重新输入家庭地址:"; getline(cin,Address);};break;case2:{coutvv"请重新输入门牌号:cin>>Number;};break;default:Change();}}intFamily::GetNumber(){ returnNumber;}vectorvPerson>Per_vec; vectorvFamily>Fam_vec;PersonP;FamilyF; voidmenu();// 主菜单voidInput();// 信息输入voidInquiry();// 信息查询voidCha nge();〃信息修改voidDelete();〃信息删除voidLook();〃信息浏览voidOutputPer(vectorvPerson>&Per_vec);voidInputPer(vector<Person>&Per_vec);voidInputFam(vector<Family>&Fam_vec);voidmenu(){cout<<"* 欢迎使用人口户籍信息管理系统 *"<<endl;cc ■*//"***************************************************************cout<<"\n0. 退出管理系统"<<endl;cout<<"\n1. 信息录入 "<<endl;cout<<"\n2. 信息查询 "<<endl;cout«"\n3.信息删除"<<endl;cout<<"\n4. 信息修改 "<<endl;cout<<"\n5. 信息浏览 "<<endl;*************************************************************** cout<<"\n 请选择以上操作 (0~5)"<<endl;} voidOutputPer(vector<Pers on>&Per_vec)〃输出对象数组元素个人intcount=0;vector<Person>::const_iteratorp;for(p=Per_vec.begin();p!=Per_vec.end();p++) {(*p).Display(); count++; }cout«"学生总人数="<<cou nt<<e ndl;} voidl nputPer(vector<Pers on>&Per_vec)〃 输入对象数组元素个人 {charch; Personx;do{x.Set();Per_vec.push_back(x); cout«"继续输入吗? (YorN)"v<e ndl;cin.get();cin.get(ch);}while(ch=='Y');}voidI nputFam(vector<Family >&Fam_vec)//输入对象组元素家庭{charch;Familyy;do{y.Set();Fam_vec.push_back(y);*****************、' <<endl;cout<<" *****************、'<<endl;coutvv"继续输入吗(YorN)"vvendl;cin.get();cin.get(ch);}while(ch=='Y');}voidInput()// 信息输入函数{inti;cout«"\n1.个人2.家庭"<<endl;cout<<"\n 请选择要操作的对象:";cin>>i;switch(i){case1:InputPer(Per_vec);break;case2:InputFam(Fam_vec);break;}}voidInquiry()// 信息查询函数{inti;stringna;stringid;stringnum;cout<<"1.姓名查询2.身份证查询3.门牌号查询"<<endl;cout<<"\n 请选择查询方式:";cin>>i;switch(i){case1:cout«"请输入姓名:"<<e ndl;cin.get(); getline(cin,na);cin.get();vector<Person>::iteratorp;for(p=Per_vec.begin();p!=Per_vec.end();p++){if(((*p).GetName()).compare(na)==0) {(*p).Display();break;}};break;case2:cout«"请输入身份证号:"<<e ndl;cin.get();getline(cin,id);cin.get();for(p=Per_vec.begin();p!=Per_vec.end();p++) {if(((*p).GetID()).compare(id)==0){(*p).Display();break;}};break;case3:cout«"请输入门牌号:"<<e ndl;cin.get();getline(cin,num);cin.get();for(p=Per_vec.begin();p!=Per_vec.end();p++) {if(((*p).GetNum()).compare(num)==0){(*p).Display();}};break;}}voidCha nge()〃信息修改函数{inti;cout<<"1.个人2.家庭"<<endl;cout<<"\n 请选择要操作的对象:";cin>>i;switch(i){case1:P.Change();break;case2:F.Change();break;}}voidDelete()// 信息删除函数{inti;stringid;intnumber;coutvv"1.个人2.家庭"<<endl;coutvv"请选择要修改的对象:";cin>>i;switch(i){case1:cout«"请输入要删除人员的身份证编码:"<<e ndl;cin.get();getline(cin,id);cin.get();vector<Person>::iteratorp;i=sizeof(p); for(p=Per_vec.begin();p!=Per_vec.end();p++){if(((*p).GetID()).compare(id)==0){Per_vec.erase(p,Per_vec.end()+i); break;}};break;case2:coutvv"请输入要删除家庭的门牌号:"<<e ndl;cin>>number;vectorvFamily>::iteratorF;i=sizeof(F);for(F=Fam_vec.begin();F!=Fam_vec.end();F++){ if(((*F).GetNumber())==number) {Fam_vec.erase(F,Fam_vec.end()+i); break;}}}}voidLook()// 信息浏览函数{inti;stringna;stringid;stringnum;coutvv"1 •按姓名2•按身份证3.按门牌号"<<endl;coutvv"请选择浏览方式:";cin>>i;switch(i){case1:cout«"请输入姓名:"<<e ndl;cin.get(); getline(cin,na);cin.get();vector<Person>::iteratorp;for(p=Per_vec.begin();p!=Per_vec.end();p++) {if(((*p).GetName()).compare(na)==0) {(*p).Display();break;}};break;case2:cout«"请输入身份证号:"<<e ndl;cin.get(); getline(cin,id);cin.get();for(p=Per_vec.begin();p!=Per_vec.end();p++) {if(((*p).GetID()).compare(id)==0){(*p).Display();break;}};break;case3:cout«"请输入门牌号:"<<e ndl;cin.get(); getline(cin,num);cin.get();for(p=Per_vec.begin();p!=Per_vec.end();p++) {if(((*p).GetNum()).compare(num)==0) {(*p).Display();}};break;}main()// 主函数{vector<Person>Per_vec;intchoice;stringna;do{menu();coutvv"请选择要进行的操作:";cin>>choice;if(choice>=0&&choice<=5)switch(choice){case1:Input();break;case2:l nquiry();break;〃信息查询函数case3:Delete();break;〃信息删除函数case4:Cha nge();break;/信息修改函数case5:Look();break;〃信息浏览函数default:break;}}while(choice);return0;}六、结束语该系统结构清晰、思路明确简单、功能基本完善、操作简单,可以实现对个人和家庭的基本信息随时进行管理。

相关主题