人口户籍管理系统C++Word下载.docx
《人口户籍管理系统C++Word下载.docx》由会员分享,可在线阅读,更多相关《人口户籍管理系统C++Word下载.docx(25页珍藏版)》请在冰豆网上搜索。
人口户籍信息管理系统
人口户籍信息管理系统是一个简易的管理个人和家庭信息的系统,主要对个人和家庭的根本信息进展管理,个人根本信息包括某某、性别、出生日期、民族、政治面貌、某某信仰、某某编码、联系方式、住址和门牌号,家庭的根本信息包括住址、人口数和门牌号。
管理系统主要有信息输入、信息查询、信息删除、信息修改和信息浏览五大功能。
二、系统编写环境
2.硬件环境:
CPUI55200URAM8G1600MHz硬盘500G5400转
三、主要功能说明
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()).pare(na)==0、-((*P)GetID()).pare(id)==0、((*P)GetNum()).pare(num)==0,输入的所需查询的某某或某某编码或门牌号与容器中存储的数据进展比拟,当两字符串一样时,输出查询的结果。
3.信息删除功能:
由函数Delete()实现,实现机制首先使用信息查询函数找到要删除人员的信息,再使用erase()函数删除信息,使用erase()函数时,把需要删除的内容的起止地址直接写到括号中。
4.信息修改功能:
由函数Change()调用两个类中的Change()实现,该功能首先要选择需要修改的对象,然后在对该对象的信息进展修改,修改正后又将信息保存到容器中。
5.信息浏览功能:
由函数Look()实现,该功能的主要机制和信息查询功能差不,也提供三种浏览方式。
6.退出系统:
整个系统的是一个do·
·
while循环首先进入系统页面,然后输入选择,当输入不为“0〞时,系统执行数字相对应的功能,当输入为“0〞时,循环终止,整个系统退出。
五、程序源代码
#include<
iostream>
string>
vector>
usingnamespacestd;
#defineSIZE80
classPerson
{
stringName;
//某某
stringSex;
//性别
stringBirth;
//出生日期
stringFolk;
//民族
stringPol_sta;
//政治面貌
stringBelief;
//某某信仰
stringID;
//某某编码
stringTel;
//联系方式
stringAdd;
//住址
stringNum;
//门牌号
inti;
public:
Person();
//无参构造函数
Person(stringna,stringsex,stringbirth,stringfolk,stringpol_sta,stringbelief,stringid,stringtel,stringadd,stringnum);
//带参构造函数
Person(constPerson&
per);
//拷贝构造函数
~Person();
//析构函数
stringGetName();
//提取某某
stringGetSex();
//提取性别
stringGetBirth();
//提取出生日期
stringGetFolk();
//提取民族
stringGetPol_sta();
//提取政治面貌
stringGetBelief();
//提取某某信仰
stringGetID();
//提取某某编码
stringGetTel();
//提取联系方式
stringGetAdd();
//提取地址
stringGetNum();
//提取门牌号
voidDisplay()const;
//显示学生信息
voidSet();
//输入学生信息
voidChange();
//修改个人信息
};
classFamily
private:
stringAddress;
intNumber;
intPop;
//人口数目
Family();
Family(stringaddress,intnumber,intpop);
~Family();
//信息输入
voidDisplay();
//信息输出
//信息修改
intGetNumber();
//门牌号返回函数
Person:
:
Person()
{i=0;
}//构造函数
Person(stringna,stringsex,stringbirth,stringfolk,stringpol_sta,stringbelief,stringid,stringtel,stringadd,stringnum)
Name=na;
Sex=sex;
Birth=birth;
Folk=folk;
Pol_sta=pol_sta;
Belief=belief;
ID=id;
Tel=tel;
Add=add;
Num=num;
}
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()//析构函数
{}
stringPerson:
GetName()//提取某某
{returnName;
GetSex()//提取性别
{returnSex;
GetBirth()//提取出生日期
{returnBirth;
GetFolk()//提取民族
{returnFolk;
GetPol_sta()//提取政治面貌
{returnPol_sta;
GetBelief()//提取某某信仰
{returnBelief;
GetID()//提取某某编码
{returnID;
GetTel()//提取联系方式
{returnTel;
GetAdd()//提取住址
{returnAdd;
GetNum()//提取门牌号
{returnNum;
voidPerson:
Display()const//输出数据信息
cout<
<
"
1.某某:
Name<
2.性别:
Sex<
endl;
\n3.出生日期:
Birth<
4.民族:
Folk<
\n5.政治面貌:
Pol_sta<
6.某某信仰:
Belief<
\n7.某某编码:
ID<
8.住址:
Add<
\n9.联系方式:
Tel<
10.门牌号:
Num<
Set()//输入数据
cin.get();
请输入某某:
;
getline(cin,Name);
请输入性别:
getline(cin,Sex);
请输入出生日期:
getline(cin,Birth);
请输入民族:
getline(cin,Folk);
请输入政治面貌:
getline(cin,Pol_sta);
请输入某某信仰:
getline(cin,Belief);
请输入某某编码:
getline(cin,ID);
请输入住址:
getline(cin,Add);
请输入联系方式:
getline(cin,Tel);
cin.get();
请输入门牌号:
getline(cin,Num);
Change()
Display();
\n请选择需要修改的项目:
cin>
>
i;
switch(i)
case1:
请重新输入某某:
break;
case2:
请重新输入性别:
case3:
请重新输入出生日期:
case4:
请重新输入民族:
case5:
请重新输入政治面貌:
getline(cin,Pol_sta);
case6:
请重新输入某某信仰:
case7:
请重新输入某某编码:
case8:
请重新输入住址:
case9:
请重新输入联系方式:
case10:
请重新输入门牌号:
default:
Change();
Family:
Family()//构造函数
Number=0;
Pop=0;
~Family()
Family(stringaddress,intnumber,intpop)//带参构造函数
Address=address;
Number=number;
Pop=pop;
voidFamily:
Set()//信息输入
请输入家庭地址:
getline(cin,Address);
Number;
Display()
家庭住址:
Address;
门牌号:
家庭人口数:
Pop;
1.家庭住址2.门牌号"
请选择要修改的内容:
请重新输入家庭地址:
intFamily:
GetNumber()
returnNumber;
vector<
Person>
Per_vec;
Family>
Fam_vec;
PersonP;
FamilyF;
voidmenu();
//主菜单
voidInput();
voidInquiry();
//信息查询
voidDelete();
//信息删除
voidLook();
//信息浏览
voidOutputPer(vector<
&
Per_vec);
voidInputPer(vector<
voidInputFam(vector<
Fam_vec);
voidmenu()
cout<
*欢迎使用人口户籍信息管理系统*"
********************************************************************************"
\n0.退出管理系统"
\n1.信息录入"
\n2.信息查询"
\n3.信息删除"
\n4.信息修改"
\n5.信息浏览"
\n请选择以上操作(0~5)"
voidOutputPer(vector<
Per_vec)//输出对象数组元素个人
intcount=0;
const_iteratorp;
for(p=Per_vec.begin();
p!
=Per_vec.end();
p++)
(*p).Display();
count++;
学生总人数="
count<
voidInputPer(vector<
Per_vec)//输入对象数组元素个人
charch;
Personx;
do
{
x.Set();
Per_vec.push_back(x);
继续输入吗?
(YorN)"
cin.get(ch);
}while(ch=='
Y'
);
voidInputFam(vector<
Fam_vec)//输入对象组元素家庭
Familyy;
do
y.Set();
Fam_vec.push_back(y);
继续输入吗?
(YorN)"
voidInput()//信息输入函数
\n1.个人2.家庭"
\n请选择要操作的对象:
InputPer(Per_vec);
InputFam(Fam_vec);
voidInquiry()//信息查询函数
inti;
stringna;
stringid;
stringnum;
1.某某查询2.某某查询3.门牌号查询"
\n请选择查询方式:
cin>
switch(i)
case1:
getline(cin,na);
vector<
iteratorp;
for(p=Per_vec.begin();
if(((*p).GetName()).pare(na)==0)
};
请输入某某号:
getline(cin,id);
if(((*p).GetID()).pare(id)==0)
getline(cin,num);
if(((*p).GetNum()).pare(num)==0)
voidChange()//信息修改函数
1.个人2.家庭"
P.Change();
F.Change();
voidDelete()//信息删除函数
stringid;
intnumber;
请选择要修改的对象:
请输入要删除人员的某某编码:
i=sizeof(p);
{
if(((*p).GetID()).pare(id)==0)
Per_vec.erase(p,Per_vec.end()+i);
}