人口户籍管理系统C.docx
《人口户籍管理系统C.docx》由会员分享,可在线阅读,更多相关《人口户籍管理系统C.docx(21页珍藏版)》请在冰豆网上搜索。
人口户籍管理系统C
*********
软件课程设计实践实验报告
专业班级:
学生姓名:
学号:
实验项目名称:
实验项目性质:
实验所属课程:
实验室(中心):
指导教师:
实验完成时间:
一选题及说明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
3
4
4
4
5
5
4.3功能实现6
6
6
6
6
6
6五程序源代码6六结束语20七参考文献20
一、选题及说明
题目:
人口户籍信息管理系统
人口户籍信息管理系统是一个简易的管理个人和家庭信息的系统,主要对个人和家庭的基本信息进行管理,个人基本信息包括姓名、性别、出生日期、民族、政治面貌、宗教信仰、身份证编码、联系方式、住址和门牌号,家庭的基本信息包括住址、人口数和门牌号。
管理系统主要有信息输入、信息查询、信息删除、信息修改和信息浏览五大功能。
二、系统编写环境
1.软件环境:
Windows7(64位)VisualC++6.0
2.硬件环境:
CPUI55200URAM8G1600MB盘5OOG54O0专
三、主要功能说明
1.信息输入:
由函数InPut()实现,InPut()函数调用两个子函数,分别实现对个人和家庭基本信息的输入,输入后将输入的内容保存到容器中。
2.信息查询:
由函数Inquir()实现,Inquiry()函数调用两个子函数,分别实现隔热信息和家庭信息的查询,其中个人信息查询有三种方式,即姓名查询、身份证查询和门牌号查询,门牌号查询可能会有多个查询结果。
3.信息删除:
由函数Delete()实现,Delete()函数调用两个子函数,分别实现对个人和家庭的信息删除。
4.信息修改:
由函数Change()实现,Change()函数调用两个子函数,分别
实现对个人和家庭的信息进行修改,对个人信息进行修改时还可以选择对某一项信息进行修改。
5.信息浏览:
由Look()函数实现,实现机制和信息查询函数基本相同,分为三中浏览方式,即姓名浏览、身份证编码浏览和门牌号浏览。
综合所有功能,整个程序的简单流程图如下:
四、功能设计及实现
(1)、数据结构:
Person类中主要包含姓名(Name、性别(Sex)、出生日期(Birth)、民族(Folk)、政治面貌(Pol_sta)、宗教信仰(Belief)、身份证编码(ID)、联系方式(Tel)、住址(Add)和门牌号(Num),Family类中主要包含住址(Address)、门牌号(Number)和人口数(Pop)。
(2)、界面设置:
1.主界面:
主界面显示该系统的五大主要功能和操作提示,如下图:
2.信息输入界面:
信息输入界面主要提示用户输入基本信息,如下图:
3.信息查询界面:
信息查询界面主要提示用户根据自己的需要输入相关信息进行查询,如下图:
4.信息删除界面:
信息删除界面主要是由用户输入要删除信息的身份证编码进行信息删除,如下图:
5.信息修改界面:
信息修改界面主要由个人或家庭的基本信息组成,提示
用户选择要修改的项目,用户选择进行修改,如下图:
6.信息浏览界面:
信息浏览界面主要提示用户选择要进行浏览的方式,有按姓名、按身份证号和按门牌号三种方式,如下图:
(3)、功能实现:
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#include#includeusingnamespacestd;
#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;//人口数目public:
Family();
Family(stringaddress,intnumber,intpop);
~Family();
voidSet();//信息输入voidDisplay();〃信息输出voidChange();〃信息修改intGetNumber();//门牌号返回函数
};
Person:
:
Person(){i=0;}〃构造函数Person:
:
Person(stringna,stringsex,stringbirth,stringfolk,stringpol_sta,stringbelief,stringid,stringtel,stringadd,stringnum)
{
Name=na;
Sex=sex;
Birth=birth;Folk=folk;
PO_ISQ)HPO_ISQ)八Be-ielrbe-ief八oll.ch
Tellfe-八
AddHadd八
Numunum八person:
:
pe「son(consfpe「sonQOpe「)M^£s^®»宀
NameHpenNampsexHper.sex-BirthHpe&rth八FO-kHper.FO-k八po_lsQrHper.po_lsQr八Be=elrpenBe=ef八-DHPezD八Tellper.TerAddHper.Add八NumHpenNum八Pe「sonx〜Pe「son()言s®達ess.ngpe「sorEoe2ame()Ml®ma宀「efumName》ss.ngpersorEoefsexo'^sw^宀refumsex"ss.ngpersorEoeooirtho二肅®圧卄ms宀refumBirth》ss.ngpersorEoefFO-ko—^®^^宀「efumFO天〉ss.ngpe「sorToefpo_lsQr()言®W?
&H^宀「efulnpo_lsQr》ss.ngpe「sorEoe65e=ef()二肅®沁舞述言宀refulnBe-ief》ss.ngpersorEoef-D()二肅®>#EE>^宀refum-D"ss.ngpe「sorEoefre-()1^®«^Hn宀refumTe-vss.ngpersorroefAddo二肅sms宀refumAdd"ss.ngpersorEoezumo二肅SZJS4U宀「efumNum》voidpersonxDisp-ayoconsul圧達議a?
w
coutvv"1.姓名:
"vvNamevv"2性别:
"<"v"<"v"<"vvlD"<"<"<}
voidPerson:
:
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(stringaddress,intnumber,intpop)//带参构造函数
{
Address=address;
Number=number;
Pop=pop;
}
voidFamily:
:
Set()〃信息输入
{
cin.get();
coutvv"请输入家庭地址:
";getline(cin,Address);
coutvv"请输入门牌号:
";
cin>>Number;
voidFamily:
:
Display()
{
cout«"家庭住址:
"vvAddress;cout«"门牌号:
"vvNumber;cout«"家庭人口数:
"<}voidFamily:
:
Change()
{
inti;
cout<<"1.家庭住址2.门牌号"<";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();//信息查询voidChange();〃信息修改voidDelete();〃信息删除voidLook();〃信息浏览voidOutputPer(vectorvPerson>&Per_vec);
voidInputPer(vector&Per_vec);
voidInputFam(vector&Fam_vec);
voidmenu()
{
cout<<"*欢迎使用人口户籍信息管理系统*"<cc■*//"***************************************************************
cout<<"\n0.退出管理系统"<cout<<"\n1.信息录入"<cout<<"
***************************************************************cout<<"\n请选择以上操作(0~5)"<}
voidOutputPer(vector&Per_vec)〃输出对象数组元素个人
intcount=0;
vector:
:
const_iteratorp;
for(p=Per_vec.begin();p!
=Per_vec.end();p++){
(*p).Display();
count++;
}cout«"学生总人数="<}
voidlnputPer(vector&Per_vec)〃输入对象数组元素个人{
charch;Personx;
do
{
x.Set();
Per_vec.push_back(x);cout«"继续输入吗?
(YorN)"vcin.get();
cin.get(ch);
}while(ch=='Y');
}
voidInputFam(vector&Fam_vec)//输入对象组元素家庭
{
charch;
Familyy;
do
{
y.Set();
Fam_vec.push_back(y);
coutvv"继续输入吗(YorN)"vvendl;
cin.get();
cin.get(ch);
}while(ch=='Y');
}
voidInput()//信息输入函数
{
inti;
cout«"\n1.个人2.家庭"<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.门牌号查询"<cout<<"\n请选择查询方式:
";
cin>>i;
switch(i)
{
case1:
cout«"请输入姓名:
"<cin.get();getline(cin,na);
cin.get();
vector:
:
iteratorp;for(p=Per_vec.begin();p!
=Per_vec.end();p++)
{
if(((*p).GetName()).compare(na)==0){
(*p).Display();
break;
}
};break;
case2:
cout«"请输入身份证号:
"<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«"请输入门牌号:
"<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;
}
}
voidChange()〃信息修改函数
{
inti;
cout<<"1.个人2.家庭"<cout<<"\n请选择要操作的对象:
";
cin>>i;
switch(i)
{
case1:
P.Change();break;
case2:
F.Change();break;
}
}
voidDelete()//信息删除函数
{
inti;
stringid;
intnumber;
coutvv"1.个人2.家庭"<coutvv"请选择要修改的对象:
";
cin>>i;
switch(i)
{
case1:
cout«"请输入要删除人员的身份证编码:
"<cin.get();
getline(cin,id);
cin.get();
vector:
:
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"请输入要删除家庭的门牌号:
"<>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.按门牌号"<coutvv"请选择浏览方式:
";
cin>>i;
switch(i)
{
case1:
cout«"请输入姓名:
"<cin.get();getline(cin,na);
cin.get();
vector:
:
iteratorp;
for(p=Per_vec.begin();p!
=Per_vec.end();p++){
if(((*p).GetName()).compare(na)==0){
(*p).Display();
break;
}
};break;
case2:
cout«"请输入身份证号:
"<ci