1、人口户籍管理系统C+*软件课程设计实践实验报告专 业 班 级 :学 生 姓 名 :学 号:实验项目名称:实验项目性质:实验所属课程:实验室(中心):指 导 教 师 :实验完成时间:一 选题与说明 2二 系统编写环境 22.1 软件环境 2 2.2 硬件环境 2三 主要功能说明 2 3.1 信息输入 2 3.2 信息查询 2 3.3 信息删除 2 3.4 信息修改 2 3.5 信息浏览 2四 功能设计与实现 3 4.1数据结构 3 4.2界面设置 3 4.2.1 主界面 3 4.2.2 信息输入界面 4 4.2.3 信息查询界面 4 4.2.4 信息删除界面 4 4.2.5 信息修改界面 5 4
2、.2.6 信息浏览界面 5 4.3 功能实现 6 4.3.1 信息输入功能 64.3.2 信息查询功能 6 4.3.3 信息删除功能 6 4.3.4 信息修改功能 6 4.3.5 信息浏览功能 6 4.3.6 退出系统 6五 程序源代码 6六 完毕语 20七 参考文献 20一、选题与说明题目:人口户籍信息管理系统人口户籍信息管理系统是一个简易的管理个人和家庭信息的系统,主要对个人和家庭的根本信息进展管理,个人根本信息包括某某、性别、出生日期、民族、政治面貌、某某信仰、某某编码、联系方式、住址和门牌号,家庭的根本信息包括住址、人口数和门牌号。管理系统主要有信息输入、信息查询、信息删除、信息修改和
3、信息浏览五大功能。二、系统编写环境 2.硬件环境:CPU I5 5200U RAM 8G 1600MHz 硬盘 500G 5400转三、主要功能说明1.信息输入:由函数InPut()实现,InPut()函数调用两个子函数,分别实现对个人和家庭根本信息的输入,输入后将输入的内容保存到容器中。2.信息查询:由函数Inquir()实现,Inquiry()函数调用两个子函数,分别实现隔热信息和家庭信息的查询,其中个人信息查询有三种方式,即某某查询、某某查询和门牌号查询,门牌号查询可能会有多个查询结果。3.信息删除:由函数Delete()实现,Delete()函数调用两个子函数,分别实现对个人和家庭的信
4、息删除。4.信息修改:由函数Change()实现,Change()函数调用两个子函数,分别实现对个人和家庭的信息进展修改,对个人信息进展修改时还可以选择对某一项信息进展修改。5.信息浏览:由Look()函数实现,实现机制和信息查询函数根本一样,分为三中浏览方式,即某某浏览、某某编码浏览和门牌号浏览。综合所有功能,整个程序的简单流程图如下:四、功能设计与实现一、数据结构:Person类中主要包含某某Name、性别Sex、出生日期(Birth)、民族Folk、政治面貌(Pol_sta)、某某信仰(Belief)、某某编码(ID)、联系方式(Tel)、住址Add和门牌号(Num),Family类中主
5、要包含住址Address、门牌号(Number)和人口数(Pop)。二、界面设置:1.主界面:主界面显示该系统的五大主要功能和操作提示,如如下图:2.信息输入界面:信息输入界面主要提示用户输入根本信息,如如下图:3.信息查询界面:信息查询界面主要提示用户根据自己的需要输入相关信息进展查询,如如下图:4.信息删除界面:信息删除界面主要是由用户输入要删除信息的某某编码进展信息删除,如如下图:5.信息修改界面:信息修改界面主要由个人或家庭的根本信息组成,提示用户选择要修改的项目,用户选择进展修改,如如下图:6.信息浏览界面:信息浏览界面主要提示用户选择要进展浏览的方式,有按某某、按某某号和按门牌号三
6、种方式,如如下图:三、功能实现:1.信息输入功能:由函数InPut()调用两个类中的Set()实现,具体的信息输入如此用到标准输入流cin和字符串输入函数cin.get()、getline()实现,执行完输入函数后,用 Per_vec.push_back()/Fam_vec.push_back()把输入的数据内容存到容器中。2.信息查询功能:由函数Inquiry()实现,信息查询功能有三种查询方式,即按照某某查询、按照某某编码查询和按照门牌号查询。三种查询方式的实现机制都是利用字符串比拟函数(*P)GetName().pare(na)=0、-(*P)GetID().pare(id)=0、(*P
7、)GetNum().pare(num)=0,输入的所需查询的某某或某某编码或门牌号与容器中存储的数据进展比拟,当两字符串一样时,输出查询的结果。3.信息删除功能:由函数Delete()实现,实现机制首先使用信息查询函数找到要删除人员的信息,再使用erase()函数删除信息,使用erase()函数时,把需要删除的内容的起止地址直接写到括号中。4.信息修改功能:由函数Change()调用两个类中的Change()实现,该功能首先要选择需要修改的对象,然后在对该对象的信息进展修改,修改正后又将信息保存到容器中。5.信息浏览功能:由函数Look()实现,该功能的主要机制和信息查询功能差不,也提供三种浏
8、览方式。6.退出系统:整个系统的是一个dowhile循环首先进入系统页面,然后输入选择,当输入不为“0时,系统执行数字相对应的功能,当输入为“0时,循环终止,整个系统退出。五、程序源代码#include#include#includeusing namespace std;#define SIZE 80class Personstring Name; /某某string Sex; /性别string Birth; /出生日期string Folk; /民族string Pol_sta; /政治面貌string Belief; /某某信仰string ID; /某某编码string Tel; /
9、联系方式string Add; /住址string Num; /门牌号int i;public:Person(); /无参构造函数Person( string na, string sex, string birth, string folk, string pol_sta, string belief, string id, string tel, string add,string num); /带参构造函数Person(const Person &per); /拷贝构造函数Person(); /析构函数 string GetName(); /提取某某string GetSex(); /提
10、取性别string GetBirth(); /提取出生日期string GetFolk(); /提取民族string GetPol_sta(); /提取政治面貌string GetBelief(); /提取某某信仰string GetID(); /提取某某编码string GetTel(); /提取联系方式string GetAdd(); /提取地址string GetNum(); /提取门牌号void Display() const; /显示学生信息void Set(); /输入学生信息 void Change(); /修改个人信息;class Familyprivate:string Ad
11、dress; /住址int Number; /门牌号int Pop; /人口数目public:Family();Family(string address, int number, int pop);Family();void Set(); /信息输入void Display(); /信息输出void Change(); /信息修改int GetNumber(); /门牌号返回函数;Person:Person()i=0; /构造函数Person:Person( string na, string sex, string birth, string folk, string pol_sta, s
12、tring belief, string id, string tel, string add,string num)Name=na; Sex=sex;Birth=birth;Folk=folk;Pol_sta=pol_sta;Belief=belief; ID=id;Tel=tel;Add=add;Num=num;Person:Person(const Person &per) /拷贝构造函数Name=per.Name;Sex=per.Sex;Birth=per.Birth;Folk=per.Folk;Pol_sta=per.Pol_sta;Belief=per.Belief;ID=per.
13、ID;Tel=per.Tel;Add=per.Add;Num=per.Num;Person:Person() /析构函数string Person: GetName() /提取某某return Name;string Person:GetSex() /提取性别 return Sex;string Person:GetBirth() /提取出生日期 return Birth;string Person:GetFolk() /提取民族return Folk;string Person:GetPol_sta() /提取政治面貌return Pol_sta;string Person:GetBelie
14、f() /提取某某信仰return Belief;string Person:GetID() /提取某某编码return ID;string Person:GetTel() /提取联系方式return Tel;string Person:GetAdd() /提取住址return Add;string Person:GetNum() /提取门牌号return Num;void Person:Display() const /输出数据信息cout1.某某:Name 2.性别:Sexendl;coutn3.出生日期:Birth 4.民族:Folkendl;coutn5.政治面貌:Pol_sta 6.
15、某某信仰:Beliefendl;coutn7.某某编码:ID 8.住址:Addendl;coutn9.联系方式:Tel 10.门牌号:Numendl;void Person:Set() /输入数据cin.get();cout请输入某某:;getline(cin,Name);cin.get();cout请输入性别:;getline(cin,Sex);cin.get();cout请输入出生日期:;getline(cin,Birth);cin.get();cout请输入民族:;getline(cin,Folk);cin.get();cout请输入政治面貌:;getline(cin,Pol_sta);
16、cin.get();cout请输入某某信仰:;getline(cin,Belief);cin.get();cout请输入某某编码:;getline(cin,ID);cin.get();cout请输入住址:;getline(cin,Add);cin.get();cout请输入联系方式:;getline(cin,Tel); cin.get();cout请输入门牌号:;getline(cin,Num);void Person:Change()int i;Display();couti;switch(i)case 1:cin.get();cout请重新输入某某:;getline(cin,Name);b
17、reak;case 2:cin.get();cout请重新输入性别:;getline(cin,Sex);break;case 3:cin.get();cout请重新输入出生日期:;getline(cin,Birth);break;case 4:cin.get();cout请重新输入民族:;getline(cin,Folk);break;case 5:cin.get();cout请重新输入政治面貌:; getline(cin,Pol_sta);break;case 6:cin.get();cout请重新输入某某信仰:;getline(cin,Belief);break;case 7:cin.ge
18、t();cout请重新输入某某编码:;getline(cin,ID);break;case 8:cin.get();cout请重新输入住址:;getline(cin,Add);break;case 9:cin.get();cout请重新输入联系方式:;getline(cin,Tel);break;case 10:cin.get();cout请重新输入门牌号:;getline(cin,Num);break;default:Change();Family:Family() /构造函数Number=0;Pop=0;Family:Family()Family:Family(string address
19、, int number, int pop) /带参构造函数Address=address;Number=number;Pop=pop;void Family:Set() /信息输入cin.get();cout请输入家庭地址:;getline(cin,Address);coutNumber;void Family:Display()cout家庭住址:Address;cout门牌号:Number;cout家庭人口数:Pop;void Family:Change()int i;cout1.家庭住址 2.门牌号endl;couti;switch(i)case 1:cin.get();cout请重新输
20、入家庭地址:;getline(cin,Address);break;case 2:coutNumber;break;default:Change();int Family:GetNumber()return Number;vector Per_vec;vector Fam_vec;Person P;Family F;void menu(); /主菜单void Input(); /信息输入void Inquiry(); /信息查询void Change(); /信息修改void Delete(); /信息删除void Look(); /信息浏览void OutputPer(vector& Per
21、_vec );void InputPer(vector& Per_vec );void InputFam(vector& Fam_vec);void menu() cout *欢迎使用人口户籍信息管理系统 *endl; cout*endl; coutn 0.退出管理系统 endl; coutn 1.信息录入 endl; coutn 2.信息查询 endl; coutn 3.信息删除 endl; coutn 4.信息修改 endl; coutn 5.信息浏览 endl; cout*endl; coutn 请选择以上操作(05) endl;void OutputPer( vector& Per_v
22、ec) /输出对象数组元素 个人int count=0;vector:const_iterator p;for(p=Per_vec.begin();p!=Per_vec.end();p+)(*p).Display();count+;cout学生总人数=countendl;void InputPer( vector& Per_vec ) /输入对象数组元素 个人char ch;Person x; do x.Set(); Per_vec.push_back(x);cout继续输入吗?(Y or N )endl;cin.get();cin.get(ch);while(ch=Y);void Input
23、Fam( vector& Fam_vec) /输入对象组元素 家庭char ch;Family y;doy.Set();Fam_vec.push_back(y);cout继续输入吗?(Y or N)endl;cin.get();cin.get(ch);while(ch=Y);void Input() /信息输入函数int i;coutn1.个人 2.家庭endl;couti;switch(i)case 1:InputPer(Per_vec);break;case 2:InputFam(Fam_vec);break;void Inquiry() /信息查询函数 int i; string na;
24、 string id; string num; cout1.某某查询 2.某某查询 3.门牌号查询endl; couti; switch(i) case 1: cout请输入某某:endl; cin.get(); getline(cin,na); cin.get(); vector:iterator p; for(p=Per_vec.begin();p!=Per_vec.end();p+)if( (*p).GetName().pare(na) = 0 )(*p).Display();break; ;break;case 2:cout请输入某某号:endl; cin.get(); getline
25、(cin,id); cin.get(); for(p=Per_vec.begin();p!=Per_vec.end();p+)if( (*p).GetID().pare(id) = 0 )(*p).Display();break; ;break;case 3:cout请输入门牌号:endl; cin.get(); getline(cin,num); cin.get(); for(p=Per_vec.begin();p!=Per_vec.end();p+)if( (*p).GetNum().pare(num) = 0 )(*p).Display(); ;break; void Change()
26、/信息修改函数int i;cout1.个人 2.家庭endl;couti;switch(i)case 1:P.Change();break;case 2:F.Change();break;void Delete() /信息删除函数int i;string id;int number;cout1.个人 2.家庭endl;couti;switch(i)case 1:cout请输入要删除人员的某某编码:endl;cin.get(); getline(cin,id); cin.get();vector:iterator p;i=sizeof(p); for(p=Per_vec.begin();p!=Per_vec.end();p+) if( (*p).GetID().pare(id) = 0 ) Per_vec.erase(p,Per_vec.end()+i); break; ;break;case 2:cout
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1