




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、*软件课程设计实践实验报告专业班级:学生姓名:学号:实验项目名称:实验项目性质:实验所属课程:实验室(中心):指导教师:实验完成时间:教师评阅意见: 签名:年月日实验成绩:目录一选题及说明2二系统编写环境22.1 软件环境22.2 硬件环境2三主要功能说明23.1 信息输入23.2 信息查询23.3 信息删除23.4 信息修改23.5 信息浏览2四功能设计及实现34.1 数据结构34.2 界面设置34.2.1 主界面34.2.2 信息输入界面44.2.3 信息查询界面44.2.4 信息删除界面44.2.5 信息修改界面54.2.6 信息浏览界面54.3 功能实现64.3.1 信息输入功能64.
2、3.2 信息查询功能64.3.3 信息删除功能64.3.4 信息修改功能64.3.5 信息浏览功能64.3.6 退出系统6五程序源代码6六结束语20七参考文献20一、选题及说明题目: 人口户籍信息管理系统人口户籍信息管理系统是一个简易的管理个人和家庭信息的系统,主要对个人和家庭的基本信息进行管理,个人基本信息包括姓名、性别、出生日期、民族、政治面貌、宗教信仰、身份证编码、联系方式、住址和门牌号,家庭的基本信息包括住址、人口数和门牌号。管理系统主要有信息输入、信息查询、信息删除、信息修改和信息浏览五大功能。二、系统编写环境1 . 软件环境: Windows7( 64 位) VisualC+6.0
3、2 .硬件环境:CPUI55200URAM8G1600MHz 500G540(9专三、主要功能说明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
5、)和门牌号(Num), Family类中主要包含住 址(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)Get
7、Name().compare(na)=0 、-(*P)GetID().compare(id)=0 、 (*P)GetNum().compare(num)=0 ,输入的所需查询的姓名或身份证编码或门牌号与容器中存储的数据进行比较, 当两字符串相同时,输出查询的结果。3 . 信息删除功能:由函数Delete() 实现,实现机制首先使用信息查询函数找到要删除人员的信息,再使用 erase() 函数删除信息,使用 erase() 函数时,把需要删除的内容的起止地址直接写到括号中。4 .信息修改功能:由函数 Change()调用两个类中的Change()实现,该功能首先要选择需要修改的对象, 然后在对该
8、对象的信息进行修改, 修改过后又将信息保存到容器中。5 . 信息浏览功能:由函数Look() 实现,该功能的主要机制和信息查询功能差不,也提供三种浏览方式。6 .退出系统:整个系统的是一个do while循环首先进入系统页面,然后输入选择,当输入不为“0”时,系统执行数字相对应的功能,当输入为“0”时,循环终止,整个系统退出。五、程序源代码#include<iostream>#include<string>#include<vector>usingnamespacestd;#defineSIZE80classPersonstringName;/ 姓名stri
9、ngSex;/ 性别stringBirth;/ 出生日期stringFolk;/ 民族stringPol_sta;/ 政治面貌stringBelief;/ 宗教信仰stringID;/ 身份证编码stringTel;/ 联系方式stringAdd;/ 住址stringNum;/ 门牌号inti;public:Person();/ 无参构造函数Person(stringna,stringsex,stringbirth,stringfolk,stringpol_sta,stringbelief,stringid,stringtel,stringa dd,stringnum);/ 带参构造函数Per
10、son(constPerson&per);/ 拷贝构造函数Person();/ 析构函数stringGetName();/ 提取姓名stringGetSex();/ 提取性别stringGetBirth();/ 提取出生日期stringGetFolk();/ 提取民族stringGetPol_sta();/ 提取政治面貌stringGetBelief();/ 提取宗教信仰stringGetID();/ 提取身份证编码stringGetTel();/ 提取联系方式stringGetAdd();/ 提取地址stringGetNum();/ 提取门牌号voidDisplay()const;/
11、 显示学生信息voidSet();/ 输入学生信息voidChange();/ 修改个人信息;classFamilyprivate:stringAddress;/ 住址intNumber;/ 门牌号intPop;/ 人口数目public:Family();Family(stringaddress,intnumber,intpop);Family();voidSet();/ 信息输入voidDisplay();/ 信息输出voidChange();/ 信息修改intGetNumber();/ 门牌号返回函数;Person:Person()i=0;/ 构造函数Person:Person(strin
12、gna,stringsex,stringbirth,stringfolk,stringpol_sta,stringbelief,stringid,stringtel,stri ngadd,stringnum) Name=na;Sex=sex;Birth=birth;Folk=folk;Pol_sta=pol_sta;Belief=belief;ID=id;Tel=tel;Add=add;Num=num;Person:Person(constPerson&per)/ 拷贝构造函数 Name=per.Name;Sex=per.Sex;Birth=per.Birth;Folk=per.Fol
13、k;Pol_sta=per.Pol_sta;Belief=per.Belief;ID=per.ID;Tel=per.Tel;Add=per.Add;Num=per.Num;Person:Person()/ 析构函数stringPerson:GetName()/ 提取姓名 returnName; stringPerson:GetSex()/ 提取性别 returnSex;stringPerson:GetBirth()/ 提取出生日期 returnBirth;stringPerson:GetFolk()/ 提取民族 returnFolk;stringPerson:GetPol_sta()/ 提取政
14、治面貌 returnPol_sta; stringPerson:GetBelief()/ 提取宗教信仰 returnBelief;stringPerson:GetID()/ 提取身份证编码returnID;stringPerson:GetTel()/ 提取联系方式returnTel;stringPerson:GetAdd()/ 提取住址 returnAdd;stringPerson:GetNum()/ 提取门牌号 returnNum; voidPerson:Display()const/ 输出数据信息 cout<<"1. 姓名: "<<Name<
15、;<"2. 性别: "<<Sex<<endl;cout<<"n3. 出生日期:"<<Birth<<"4. 民族:"<<Folk<<endl;cout<<"n5. 政治面貌: "<<Pol_sta<<"6. 宗教信仰: "<<Belief<<endl;cout<<"n7. 身份证编码: "<<ID<&
16、lt;"8. 住址:"<<Add<<endl;cout<<"n9. 联系方式: "<<Tel<<"10. 门牌号: "<<Num<<endl;voidPerson:Set()/ 输入数据cin.get();cout<<" 请输入姓名: "getline(cin,Name);cin.get();cout<<" 请输入性别: "getline(cin,Sex);cin.get();cout&l
17、t;<" 请输入出生日期: "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
18、.get();cout<<" 请输入住址: "getline(cin,Add);cin.get();cout<<" 请输入联系方式: "getline(cin,Tel);cin.get();cout<<" 请输入门牌号: "getline(cin,Num);voidPerson:Change()inti;Display();II.cout<<"n 请选择需要修改的项目:cin>>i; switch(i)case1:cin.get();cout<<&quo
19、t; 请重新输入姓名: " getline(cin,Name);break;case2: cin.get(); cout<<" 请重新输入性别: " getline(cin,Sex);break;case3: cin.get(); cout<<" 请重新输入出生日期: getline(cin,Birth);break;case4: cin.get();cout<<" 请重新输入民族: " getline(cin,Folk);break;case5: cin.get(); cout<<&q
20、uot; 请重新输入政治面貌: getline(cin,Pol_sta);break;case6: cin.get(); cout<<" 请重新输入宗教信仰: getline(cin,Belief);break;case7: cin.get(); cout<<" 请重新输入身份证编码: getline(cin,ID);break;case8:cin.get();cout<<" 请重新输入住址: "getline(cin,Add);break;case9:cin.get();cout<<" 请重新输
21、入联系方式: "getline(cin,Tel);break;case10: cin.get();cout<<" 请重新输入门牌号: "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.g
22、et();cout<<" 请输入家庭地址: "getline(cin,Address);cout<<" 请输入门牌号: "cin>>Number;voidFamily:Display()cout<<" 家庭住址:"<<Address;cout<<" 门牌号: "<<Number;cout<<" 家庭人口数: "<<Pop;voidFamily:Change()inti;cout<&l
23、t;"1. 家庭住址2. 门牌号"<<endl;cout<<" 请选择要修改的内容: "cin>>i;switch(i)case1:cin.get();cout<<" 请重新输入家庭地址: "getline(cin,Address);break;case2:cout<<" 请重新输入门牌号:cin>>Number;break;default:Change();intFamily:GetNumber()returnNumber;vector<Pers
24、on>Per_vec;vector<Family>Fam_vec;PersonP;FamilyF;voidmenu();/ 主菜单voidInput();/ 信息输入voidInquiry();/ 信息查询voidChange();/ 信息修改voidDelete();/ 信息删除voidLook();/ 信息浏览voidOutputPer(vector<Person>&Per_vec);voidInputPer(vector<Person>&Per_vec);voidInputFam(vector<Family>&
25、Fam_vec);voidmenu()cout<<"* 欢迎使用人口户籍信息管理系统*"<<endl;cout<<"*”<<endl;cout<<"n0. 退出管理系统"<<endl;cout<<"n1.信息录入"<<endl;cout<<"n2.信息查询"<<endl;cout<<"n3.信息删除"<<endl;cout<<&qu
26、ot;n4.信息修改"<<endl;cout<<"n5.信息浏览"<<endl;cout<<"*"<<endl;cout<<"n 请选择以上操作 (05)"<<endl;voidOutputPer(vector<Person>&Per_vec)/ 输出对象数组元素个人 intcount=0;vector<Person>:const_iteratorp;for(p=Per_vec.begin();p!=Per_v
27、ec.end();p+) (*p).Display();count+;cout<<" 学生总人数="<<count<<endl;voidInputPer(vector<Person>&Per_vec)/ 输入对象数组元素个人 charch;Personx;dox.Set();Per_vec.push_back(x);cout<<" 继续输入吗? (YorN)"<<endl;cin.get();cin.get(ch);while(ch='Y');voidInpu
28、tFam(vector<Family>&Fam_vec)/ 输入对象组元素家庭charch;Familyy;doy.Set();Fam_vec.push_back(y);cout<<" 继续输入吗?(YorN)"<<endl;cin.get();cin.get(ch);while(ch='Y');voidInput()/ 信息输入函数inti;cout<<"n1. 个人2.家庭"<<endl;cout<<"n 请选择要操作的对象: "cin
29、>>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<<" 请输入姓名: "<<endl;
30、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<<" 请输入身份证号: "<<endl;cin.get();getline(cin,id);cin.get();for(p=Per_vec.begin();p!=Per_vec.end();p+)i
31、f(*p).GetID().compare(id)=0)(*p).Display();break;break;case3: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;voidChange()/ 信息修改函数inti;cout<<"1. 个人 2.家庭 "&l
32、t;<endl;cout<<"n 请选择要操作的对象: "cin>>i;switch(i)case1:P.Change();break;case2:F.Change();break;voidDelete()/ 信息删除函数inti;stringid;intnumber;cout<<"1. 个人2.家庭"<<endl;cout<<" 请选择要修改的对象: "cin>>i;switch(i)case1:cout<<" 请输入要删除人员的身份
33、证编码: "<<endl;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:cout<<" 请输入要删除家庭的门牌号: "<<endl;cin>>number;vecto
34、r<Family>: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;cout<<"1. 按姓名 2.按身份证 3.按门牌号 "<<endl;cout<<" 请选择浏览方式: "cin>>i;switch(i)case1:cout<<" 请输入姓名: "<<endl;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<<" 请输入身份
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东二月联考试卷及答案
- 2025年居间合同的样本
- 空调器故障案例分析与解决方案考核试卷
- 胶合板行业发展趋势与市场规模预测考核试卷
- 组织管理服务拓展课程列表考核试卷
- 煤炭制品在生产生活中的应用拓展考核试卷
- 硅冶炼过程中的生产安全应急预案演练考核试卷
- 二厂员工考试试题及答案
- 职业中介服务的行业品牌推广与宣传考核试卷
- 残疾人生活品质提升服务创新考核试卷
- 2025年广东省深圳市31校联考中考二模历史试题(原卷版+解析版)
- 浙江省绍兴市2025届高三下学期二模试题 数学 含解析
- 高二期末家长会-家校携手凝共识齐心协力创辉煌
- 地球物理反演方法-全面剖析
- 职场人士健身与锻炼技巧
- 918勿忘国耻铭记历史课件-高一上学期主题班会
- 钢结构厂房装饰工程施工方案
- 王者荣耀考试试题及答案
- GB/T 5709-2025纺织品非织造布术语
- 人教版(PEP)2025春季五下英语期中试卷(含答案含听力原文无音频)
- Unit 3 Learning better Part B 【知识精研】人教PEP版英语三年级下册
评论
0/150
提交评论