人口户籍管理系统 C++.doc

上传人:最*** 文档编号:1565347 上传时间:2019-10-28 格式:DOC 页数:24 大小:338KB
返回 下载 相关 举报
人口户籍管理系统 C++.doc_第1页
第1页 / 共24页
人口户籍管理系统 C++.doc_第2页
第2页 / 共24页
人口户籍管理系统 C++.doc_第3页
第3页 / 共24页
点击查看更多>>
资源描述
_*软件课程设计实践实验报告专 业 班 级 :学 生 姓 名 :学 号:实验项目名称:实验项目性质:实验所属课程:实验室(中心):指 导 教 师 :实验完成时间: 教师评阅意见: 签名: 年 月 日实验成绩:-可编辑修改-目录一 选题及说明 2二 系统编写环境 2 2.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.6 信息浏览界面 5 4.3 功能实现 6 4.3.1 信息输入功能 6 4.3.2 信息查询功能 6 4.3.3 信息删除功能 6 4.3.4 信息修改功能 6 4.3.5 信息浏览功能 6 4.3.6 退出系统 6五 程序源代码 6六 结束语 20七 参考文献 20一、选题及说明题目:人口户籍信息管理系统人口户籍信息管理系统是一个简易的管理个人和家庭信息的系统,主要对个人和家庭的基本信息进行管理,个人基本信息包括姓名、性别、出生日期、民族、政治面貌、宗教信仰、身份证编码、联系方式、住址和门牌号,家庭的基本信息包括住址、人口数和门牌号。管理系统主要有信息输入、信息查询、信息删除、信息修改和信息浏览五大功能。二、系统编写环境 1.软件环境:Windows 7(64位) Visual C+6.0 2.硬件环境:CPU I5 5200U RAM 8G 1600MHz 硬盘 500G 5400转三、主要功能说明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.退出系统:整个系统的是一个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; /联系方式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(); /提取性别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 Address; /住址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, string 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.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:GetBelief() /提取宗教信仰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.宗教信仰: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);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);break;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.get(); 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, 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请重新输入家庭地址:; 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_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_vec) /输出对象数组元素 个人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 InputFam( vector& Fam_vec) /输入对象组元素 家庭char ch;Family y;do y.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; 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().compare(na) = 0 )(*p).Display();break; ;break;case 2:cout请输入身份证号:endl; 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;case 3:cout请输入门牌号:endl; 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; void Change() /信息修改函数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().compare(id) = 0 ) Per_vec.erase(p,Per_vec.end()+i); break; ;break;case 2:cout请输入要删除家庭的门牌号:number;vector:iterator F;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; void Look() /信息浏览函数int i; string na; 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().compare(na) = 0 )(*p).Display();break; ;break;case 2:cout请输入身份证号:endl; 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;case 3:cout请输入门牌号:endl; 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 Per_vec;int choice;string na;domenu();coutchoice;if( choice=0 & choice = 5 ) switch(choice)case 1:Input();break;case 2:Inquiry();break; /信息查询函数case 3:Delete();break; /信息删除函数case 4:Change();break; /信息修改函数case 5:Look();break; /信息浏览函数default:break;while(choice);return 0;六、结束语该系统结构清晰、思路明确简单、功能基本完善、操作简单,可以实现对个人和家庭的基本信息随时进行管理。首先定义两个基本类Person和Family,又在类重定义了完成基本功能需要的几个基本函数Set()、Display()、Change()和数据提取函数,以实现系统的最基本功能。又在外部定义了系统的功能实现函数InPut()、Inquiry(0、Delete()、Change()和Look(),以实现系统的五大功能。系统的主函数main()是中心,以一个dowhile循环为主体,通过对各个函数的调用实现相应的功能。该系统的数据类型均是使用string型,最大的好处是无论数据的大小都可以直接保存,相比用数组保存要方便许多。最大缺点是没有将数据信息保存到磁盘,数据的长期保存只有靠系统的一直运行来实现,在选择各个功能时,如果输入的数据类型不正确可能导致系统的崩溃。七、参考文献1 谭浩强编著.C+程序设计.清华大学出版社.20152 刘玲编著.C语言程序设计实践教程.清华大学出版社.2015THANKS !致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!