已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
_*软件课程设计实践实验报告专 业 班 级 :学 生 姓 名 :学 号:实验项目名称:实验项目性质:实验所属课程:实验室(中心):指 导 教 师 :实验完成时间: 教师评阅意见: 签名: 年 月 日实验成绩:-可编辑修改-目录一 选题及说明 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; ;bre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度版权侵权和解协议3篇
- 2024年度车位预定与分配策略咨询服务合同
- 2024年度建设合同标的为高速公路建设项目3篇
- 2024年度剧场演出节目审查与质量保障合同3篇
- 2024年度阁楼住宅买卖合同模板下载3篇
- 2024年度建筑工程总包合同6篇
- 2024年度版权许可使用授权书:涉及版权持有方授权他人使用其版权作品的详细规定2篇
- 2024年度数字经济评估与政策制定委托协议3篇
- 2024年度男女自愿离婚协议书及共同财产分割与子女监护权协议2篇
- 2024年企业内部培训讲师聘任协议书范本3篇
- 辽宁省工程咨询集团有限责任公司 笔试 题库
- 2023年某公司新建标准厂房工程技术标
- 2024年面向社会公开招聘警务辅助人员报名信息表
- 实变函数知到智慧树章节测试课后答案2024年秋华南理工大学
- 《液压与气压传动案例教程》课件项目4
- 《信息技术基础》课件《模块四:信息检索》任务2
- 供应链管理基础知识单选题100道及答案解析
- 2024中国类风湿关节炎诊疗指南
- 文化活动突发舆情应急预案
- 《工程伦理》大二题集
- 2025年全国高考体育单招考试政治模拟试卷试题(含答案详解)
评论
0/150
提交评论