C++小区物业管理系统课程设计nrl.docx
华华科学院院信息管管理与信信息系统统专业 程程序设计计综合课课程设计计报告告 (220111/20112学年年 第一一学期)学生姓名名:王奥奥辉学生班级级: 信息息管理11022202HH学生学号号: 2011022204002177指导教师师: 薛颂东东 200111年12月月300日小区物业管理 目录录1、课程程设计的的目的及及要求.42、课程程设计任任务.553、设计计内容.64、程序序的编码码与实现现.2255、课程程设计心心得与体体会.2886、程序序源代码码.229第一章 课程设设计的目目的及要要求1.1课课程设计计目的本课程设设计是计计算机科科学与技技术专业业重要的的实践性性环节之之一,是是在学生生学习完完程序序设计基基础(CC+)课程程后进行行的一次次全面的的综合设设计。本本课程设设计的目目的和任任务:1. 巩固和和加深学学生对CC+语语言课程程的基本本知识的的理解和和掌握。2. 掌握C+语言编程和程序调试的基本技能。3. 利用C+语言进行基本的软件设计。4. 掌握书写程序设计说明文档的能力。5. 提高运用C+语言解决实际问题的能力。1.2课课程设计计要求 进一步巩巩固CC+程程序设计计所学学的知识识,特别别加强数数组,指指针,结结构体,文文件数据据类型的的应用,熟熟悉面向向过程的的结构化化和面向向对象可可视化程程序设计计方法,培培养结构构化程序序设计的的思想,加加深对高高级语言言基本语语言要素素和控制制结构的的理解,锻锻炼程序序设计的的能力,以以及用CC/C+ 语语言解决决实际问问题的能能力,为为以后后后续课程程的学习习打好基基础。第二章 课程设计计任务2.1 课程设设计题目目小区物业业管理系系统2.2 课程设设计实现现可以通过过操作输输入、增增加、修修改、浏浏览、查查询、删删除小区区内住户户信息,来来实现对对小区内内物业的的管理。第三章 设计内内容3.1需需求分析析3.1.1系统统分析小区物业业信息管管理系统统是针对对当代社社会,住住宅小区区越来越越成为居居住的主主流这一一市场需需要而应应运而生生的,是是为小区区管理着着和小区区用户更更好的维维护小区区各项物物业管理理业务处处理工作作而开发发的管理理软件。3.1.2功能能分析小区管理理系统包包括小区区成员的的所住单单元、住住户号、工工作单位位、姓名名、电话话号码等等信息;小区区管理系系统主要要提供以以下功能能: 1.系系统的登登录界面面(主要要包括用用户名、密密码的设设置、新新用户的的创建、密密码的修修改等);2.系统统以菜单单方式工工作3.住户户信息录录入功能能输入入4.住户户信息增增加、修修改、查查询功能能(1)按按住户名名 (22)按房房间号5.住户户信息浏浏览功能能显示示6.住户户信息删删除功能能3.2总总体设计计3.2.1开始始登录界界面图3-22-1 开始登登录界面面3.2.2各部部分函数数功能整个系统统除了主主函数外外,另外外还有66个函数数,实现现六大功能能:增加加数据功功能、修改数数据功能能、信息息查询功能、信信息浏览览功能、信信息删除除功能、退出系统功能。各个函数的详细设计说明分别如下:1. 增增加数据据功能:基本原原理是用用指针*P来创创建一个个存储单单元,来来存储住住户的信信息:住住户的姓姓名、性性别、电电话号码码、身份份证号码码。然后后再和链链变相连连,有结结构体链链表来存存储所有有住户的的信息。*指指针只想想最后一一个结构构体链表表的最后后一个结结构体。2.修改改数据功功能:与与增加数数据功能能输入方方式一样样3.信息息浏览功功能:用用priintff来显示示住户的的信息,并并且用ffor循循环来实实现所有有的住户户信息都都能显示示出。voidd Diispllay(peooplee peeoplle,innt nn) /*显示示所有记记录*/ innt ii; prinntf("tttt-n""); /*格格式头*/ prinntf("ttttnuumbeer nnamee teelnn"); prinntf("tttt-n""); for(i=11;i<<n+11;i+) /*循循环输入入*/ prrinttf(""tttt%-116s%-155s%ddn"",peeoplleii-1.nuum,ppeopplei-11.nnamee,peeoplleii-21.tell); if(ii>1&&&i%10=0) /*每十个个暂停*/ priintff("tttt-nn"); /*格式*/ prinntf("tttt"); systtem("paausee"); prinntf("tttt-n""); prinntf("tttt"); systtem("paausee"); 4.信息息删除功功能:首首先用指指针找到到此住户户的前驱驱和后续续,然后后让前驱驱的NEEXT指指向后续续,就删删除所要要删除的的信息了了。 首先用用指针找找到此住住户的前前驱和后后续,然然后让前前驱的NNEXTT指向后后续,就就删除所所要删除除的信息息了。int Delletee_a_reccordd(peeoplle ppeopple ,intt n) /*按姓名名查找,删删除一条条记录*/ chhar s220; int i=00,j; prinntf("ttttteell me hiss(heer) namme:""); /*交交互式问问寻*/ scannf(""%s"",s); whille(sstrccmp(peoopleei.naame,s)!=0&&&i<<n) i+; /*查找找判断*/ if(ii=nn) prrinttf(""ttttnott fiind!n""); /*返返回失败败信息*/ retuurn(n); for(j=ii;j<<n-11;j+) /*删删除操作作*/ sttrcppy(sstuddj.nuum, peooplee jj+1.nuum); strccpy(stuudjj.nnamee, ppeopple stuudjj+1.naame); peopple j.teel= peooplee jj+1.teel; prinntf("ttttDeelette SSucccesssed!n""); /*返返回成功功信息*/ retuurn(n-11); voidd Quueryy_a_reccordd(peeoplle ppeopple,iint n) /*查查找并显显示一个个记录*/ chhar s220; int i=00; prinntf("ttttinnputt hiis(hher) naame:"); /*交互式式输入*/ scannf(""tttt%s"",s); whille(sstrccmp(peoopleei.naame,s)!=0&&&i<<n) i+; /*查找找判断*/ if(ii=nn) prrinttf(""ttttnott fiind!n""); /*输输入失败败信息*/ retuurn; prinntf("tttthiis(hher) nuumbeer:%snn",ppeopplei.numm); /*输输出该学学生信息息*/ prinntf("tttthiis(hher) teel:%dnn",ppeopplei.tell); int AdddfroomTeext(peooplee peeoplle,innt nn) /*从文文件中读读入数据据*/ innt ii=0,numm; FILEE *ffp; /*定定义文件件指针*/ charr fiilennamee200; /*定定义文件件名*/ prinntf("ttttInnputt thhe ffileenamme:""); scannf(""tttt%s"",fiilennamee); /*输输入文件件名*/ if(fp=foppen(fillenaame,"rbb")=NNULLL) /*打开开文件*/ prrinttf(""ttttcannn'tt oppen thee fiilen"); /*打开开失败信信息*/ prinntf("tttt"); systtem("paausee"); retuurn(n); fscaanf(fp,"%dd",&&numm); /*读读入总记记录量*/ whille(ii<nuum) /*循循环读入入数据*/ fsscannf(ffp,""%s%s%dd",ppeollenn+i.nuum,ppeopplen+ii.nnamee,&ppeopplen+ii.ttel); i+; n+=nnum; fcloose(fp); /*关闭闭文件*/ prinntf("ttttSuucceesseed!n"); prinntf("tttt"); systtem("paausee"); retuurn(n); voidd WrriteetoTTextt(Sttudeent peooplee,intt n) /*将所有有记录写写入文件件*/ innt ii=0; FILEE *ffp; /*定定义文件件指针*/ charr fiilennamee200; /*定定义文件件名*/ prinntf("ttttWrritee Reecorrds to a TTextt Fiilen"); /*输入入文件名名*/ prinntf("ttttInnputt thhe ffileenamme:""); scannf(""tttt%s"",fiilennamee); if(fp=foppen(fillenaame,"w"")=NUULL) /*打开文文件*/ prrinttf(""ttttcannn'tt oppen thee fiilen"); systtem("paausee"); retuurn; fpriintff(fpp,"%dnn",nn); /*循循环写入入数据*/ whille(ii<n) fpprinntf(fp,"%-16ss%-115s%dnn",ppeopplei.numm,peeoplleii.nnamee,peeoplleii.ttel); i+; fcloose(fp); /*关闭闭文件*/ prinntf("Suucceesseed!n"); /*返回回成功信信息*/ 6.退出出系统功功能。3.3详详细设计计3.3.1系统统功能模模块小区物业管理系统菜单(登录界面、主菜单)退出系统信息浏览信息删除修改数据增加数据信息查询输入数据按房间号按用户名图3-33-1 系统功功能模块块图3.3.2系统统设计1.系统统操作流流程图开始登录界面信息删除信息删除信息浏览信息查询增加数据修改数据选择查询方式输入要增加的住户的信息输入要修改的住户的信息继续修改?继续添加? NN YY Y N输入房间号输入用户名图3-33-2 系统操操作流程程图2.各部部分详细细流程1)增加加数据 chhar namme220,sexx,rooom_numm100,pparkkingg100,pphonne_nnum20,IDD_nuum220,c; outt.oppen("E:aa.daat",ioss:aapp); do coout<<<"请请输入您您要增加加的住户户的姓名名:"<<<enndl; ciin>>>namme; coout<<<enndl<<<" 请输输入住户户性别:" ciin>>>sexx; couut<<<enddl<<<" 请输入入其房间间号:"" ciin>>>rooom_nnum; coout<<<enndl<<<" 请输输入其车车库号:" ciin>>>parrkinng; coout<<<enndl<<<" 请输输入联系系电话:" ciin>>>phoone_numm; coout<<<enndl<<<" 请输输入身份份证号:" ciin>>>ID_numm; coout<<<enndl; ouut<<<settw(220)<<<naame<<<seetw(5)<<<seex<<<settw(110)<<<rooom_numm<<ssetww(100)<<<parrkinng<<<settw(220)<<<phhonee_nuum<<<settw(220)<<<IDD_nuum; /文件件输入 coout<<<" 数据据添加成成功,想想继续添添加吗? yy / n :"<<<enndl; ciin>>>c; coout<<<enndl; if(c='n'')brreakk; iff(c!='yy'&&&c!='n'') ccoutt<<"" 指指令错误误!请重重新输入入!"<<<enndl<<<" " ccin>>>c; whhilee(c='yy'); outt.cllosee(); breeak; 2)修改改数据chaar nnamee200,ssex,rooom_nnum10,paarkiing10,phhonee_nuum220,ID_numm200,cc; chaar nna220,s,rroomm100,pparkk100,pphonne220,ID20; do innt fflagg=0; coout<<<" 请输输入您要要修改的的住户的的姓名:"<<<enddl; ciin>>>na; coout<<<enndl; f.oopenn("EE:a.ddat"",ioos:in|ioss:oout); f.seeekg(0,iios:beeg); f.ccleaar(); whhilee(!ff.eoof() ff>>nnamee; if(strrcmpp(naame,na)=00) flaag=11; couut<<<"请输输入您要要修改的的住户的的姓名:"<<<enddl; cinn>>nna; couut<<<" 请输入入新房间间号:"" cinn>>rroomm; couut<<<enddl<<<" 请输入入住户性性别:"" cinn>>ss; coout<<<enndl<<<" 请输输入其房房间号:" cinn>>rroomm; couut<<<enddl<<<" 请输入入其车库库号:"" cinn>>pparkk; couut<<<enddl<<<" 请输入入联系电电话:"" cinn>>pphonne; couut<<<enddl<<<" 请输入入身份证证号:"" cinn>>IID; couut<<<enddl; ssex=s; sstrccpy(rooom_nnum,rooom); strrcpyy(paarkiing,parrk); sstrccpy(ID_numm,IDD); sstrccpy(phoone_numm,phhonee); f.sseekkp(-20ll,ioos:curr); f<<<settw(220)<<<naa<<ssetww(5)<<ss<<ssetww(100)<<<rooom<<<settw(110)<<<paark<<<seetw(20)<<pphonne<<<settw(220)<<<IDD; /文件输输入 ccoutt<<"" 修修改成功功! "<<<enddl<<<enddl;bbreaak; f.cloose(); iff(fllag=0) coout<<<" 您要要修改的的住户不不存在!"<<<enddl<<<enddl; coout<<<" 您想想继续修修改吗? y / nn :"<<<enndl; cinn>>cc; coout<<<enndl; iff(c='nn')bbreaak; iff(c!='yy'&&&c!='n'') ccoutt<<"" 指指令错误误!请重重新输入入!"<<<enndl<<<" " ciin>>>c;whiile(c='y''); breeak;3)信息息查询 chhar namme220,sexx,rooom_numm100,rroomm100,pparkkingg100,pphonne_nnum20,IDD_nuum220; coout<<<" 请选选择您要要进行查查询的方方式:""<<eendll<<eendll<<"" 11.按住住户名查查询"<<<enndl<<<enndl<<<" 2.按房间间号查询询"<<<enddl<<<enddl; iint k; ciin>>>k; sswittch(k) ccasee 1: /按按住户名名查询 chaar nna220;chaar cc; do inn.oppen("E:aa.daat",ioss:iin); in.seeekg(0,iios:beeg); in.cleear(); innt fflagg=0; coout<<<" 请输输入你要要查询的的住户姓姓名:""<<eendll; ciin>>>na; coout<<<enndl; whiile(!inn.eoof()in>>>naame>>>seex>>>rooom_nnum>>>paarkiing>>>phhonee_nuum>>>ID_numm; iff(sttrcmmp(nnamee,naa)=0) fflagg=1; coout<<<" 您要要查询的的住户:"<<<namme<<<" 的的信息是是: ""<<eendll<<eendll; ccoutt<<""姓名 性性别 房间间号 车库号号 电话号号码 身份份证号 "<<<enddl;coutt<<ssetww(2)<<nnamee<<ssetww(5)<<ssex<<<seetw(10)<<rroomm_nuum<<<settw(110)<<<paarkiing<<<seetw(20)<<pphonne_nnum<<<seetw(20)<<IID_nnum<<<enndl; inn.cllosee(); iff(fllag=0) ccoutt<<"" 对对不起!您要查查询的住住户不存存在!""<<eendll<<eendll; ccoutt<<"" 您您想继续续查询吗吗? yy / n :" ccin>>>c; ccoutt<<eendll; iif(cc=''n')breeak; iif(cc!=''y'&&&c!='nn') couut<<<" 指令错错误!请请重新输输入!""<<eendll; ccin>>>c;whiile(c='y'');breaak; ccasee 2 : /按房间间号查询询 doo innt fflagg=0; coout<<<" 请输输入你要要查询的的房间号号:"<<<enndl; ciin>>>rooom; coout<<<enndl; inn.oppen("E:aa.daat",ioss:iin); in.seeekg(0,iios:beeg); in.cleear(); whhilee(!iin.eeof()in>>>naame>>>seex>>>rooom_nnum>>>paarkiing>>>phhonee_nuum>>>ID_numm; iff(sttrcmmp(rroomm_nuum,rroomm)=0) fflagg=1; ccoutt<<""您要查查询的住住户:""<<nnamee<<""的信息息是: "<<<enddl<<<enddl; ccoutt<<""姓名 性性别 房间间号 车库号号 电话号号码 身份份证号 "<<<enddl; couut<<<settw(22)<<<namme<<<settw(55)<<<sexx<<ssetww(100)<<<rooom_nnum<<<seetw(10)<<pparkkingg<<ssetww(200)<<<phoone_numm<<ssetww(200)<<<ID_numm<<eendll; inn.cllosee(); if(flaag=0) couut<<<" 对不起起!您要要查询的的住户不不存在!"<<<enddl; coout<<<" 您想想继续查查询吗? yy / n :" chhar c; ciin>>>c; coout<<<enndl; iff(c='nn')bbreaak; iff(c!='yy'&&&c!='n'')couut<<<" 指令错错误!请请重新输输入!""<<eendll; ciin>>>c;whiile(c='y''); breeak; ddefaaultt:coout<<<"对对不起,您您输入的的指令有有误:""bbreaak; breeak;4)信息息浏览chaar nnamee200,ssex,rooom_nnum10,paarkiing10,phhonee_nuum220,ID_numm200; in.opeen(""E:a.datt",iios:inn); in.seeekg(0,iios:beeg); in.cleear(); if(in.gett()=EOOF)couut<<<" 文件中中已无数数据"<<<enndl<<<enndl;in.cloose();bbreaak; couut<<<" 本系统统所有学学生数据据如下:"<<<enddl<<<enddl; coout<<<"姓姓名 性别别 房间号号 车车库号 电电话号码码 身份证证号 ""<<eendll; whhilee(!iin.eeof() inn>>nnamee>>ssex>>>rooom_numm>>pparkkingg>>pphonne_nnum>>>IDD_nuum; coout<<<seetw(2)<<<naame<<<seetw(5)<<<seex<<<settw(110)<<<rooom_numm<<ssetww(100)<<<parrkinng<<<settw(220)<<<phhonee_nuum<<<settw(220)<<<IDD_nuum<<<enddl; in.cloose(); brreakk; 5)信息息删除chaar nnamee200,nna220,sexx,rooom_numm100,pparkkingg100,pphonne_nnum20,IDD_nuum220,c; intt k; do innt nn=0;intt fllag=0; couut<<<" 请输入入您要删删除的住住户的姓姓名:""<<eendll; ciin>>>na; coout<<<enndl; inn.cllearr(); inn.oppen("E:aa.daat",ioss:iin); inn.seeekgg(0,ioss:bbeg); whhilee(!iin.eeof() iin>>>namme>>>sexx>>rroomm_nuum>>>parrkinng>>>phoone_numm>>IID_nnum; ssn=neew lliveers(namme,ssex,rooom_nnum,parrkinng,pphonne_nnum,ID_numm); llivn=*sn; ddeleete snn; nn+; in.cloose(); ffor(i=00;i<<n;ii+) iff(sttrcmmp(llivi.namme,nna)=0) flaag=11;k=i; iff(fllag=1) ouut.oopenn("EE:a.ddat"",ioos:outt); oout.seeekp(0,iios:beeg); iif(nn>1) foor(ii=0;i<kk;i+) ouut<<<settw(22)<<<livvi.naame<<<seetw(5)<<<liivii.ssex<<<seetw(10)<<llivi.rooom_nnum<<<seetw(10)<<llivi.parrkinng<<<settw(220)<<<liivii.pphonne_nnum<<<seetw(20)<<llivi.ID_numm; ffor(i=kk+1;i<nn;i+) outt<<ssetww(2)<<llivi.namme<<<settw(55)<<<livvi.seex<<<settw(110)<<<liivii.rroomm_nuum<<<settw(110)<<<liivii.pparkkingg<<ssetww(200)<<<livvi.phhonee_nuum<<<settw(220)<<<liivii.IID_nnum; coout<<<" 信信息删除除成功""<<eendll<<eendll; iff(n=1) ouut.cclosse(); ellse coout<<<" 您要要删除的的住户不不存在!"<<<enddl<<<enddl; coout<<<" 您想想继续删删除吗? y / nn :"<<<enndl; cinn>>cc; coout<<<enndl; iff(c='nn')bbreaak; iff(c!='yy'&&&c!='n'') ccoutt<<"" 指指令错误误!请重重新输入入!"<<<enndl<<<" " ciin>>>c;whiile(c='y''); breeak;6)退出出系统 couut<<<"Byye bbye! Seee yyou nexxt ttimee."<<<enndl<<<enndl; ccoutt<<"" 冯勇勇制作""<<eendll<<eendll<<eendll;exxit(0); bbreaak; /以以上为mmenuu菜单中中swiitchh控制语语句coutt<<"" 您您想继续续进行其其他操作作吗? y / nn :"<<<enddl<<<" ""/以下控控制循环环语句int flaag=00;doccin>>>w; couut<<<enddl; if(w='n'')exxit(0); if(w!='y''&&ww!=''n') ccoutt<<"" 指指令错误误!请重重新输入入!"<<<enndl; elsse fflagg=1;whiile(flaag=0);if(ww=''y')