C++课程设计小区物业管理系统.doc

上传人:仙人指路1688 文档编号:2384563 上传时间:2023-02-17 格式:DOC 页数:23 大小:141.50KB
返回 下载 相关 举报
C++课程设计小区物业管理系统.doc_第1页
第1页 / 共23页
C++课程设计小区物业管理系统.doc_第2页
第2页 / 共23页
C++课程设计小区物业管理系统.doc_第3页
第3页 / 共23页
C++课程设计小区物业管理系统.doc_第4页
第4页 / 共23页
C++课程设计小区物业管理系统.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《C++课程设计小区物业管理系统.doc》由会员分享,可在线阅读,更多相关《C++课程设计小区物业管理系统.doc(23页珍藏版)》请在三一办公上搜索。

1、小区物业管理系统程序设计基础课程设计报告专 业: 电子信息工程 班 级: 2007级 1班 学 号: 2007082020 姓 名: 张超 指导教师: 常 耀 辉 目 录一编程目的:2二设计要求:2三各函数功能说明:2四流程图:13五总结:14参考书目:151程序题目要求:1.1.课程设计目的: 用C+语言对小区物业管理系统进行程序编程,并且通过以前的学习及查看相关资料,按着题目要求编写程序,进一步加强对编程的训练,使得自己掌握知识要点,将其书本知识转化为实际应用当中。1.2课程设计题目:小区物业管理系统1.3课程设计题目描述和要求:1)、有工作界面(菜单或按钮方式)2)、以住户为主,录入房号

2、,户主名,用水量(单位方),用电量(单位度),物业费(交否),入主日期等字段;所录入的数据(至少包括6条)存入一个文本文件中;能根据情况调出数据.3)、具有按房号排序功能.4)、能有插入功能,并按房号排序.5)、具有删除记录功能.6)、当某一住户买水或买电后,其相应用水量,用电量字段应增加;交物野费后应改变其相应字段的值.7)、具有查询功能(1) 按房号, 户主名进行用水量和用电量的查询.(2) 按物业费交否查询住户情况,当未交的,可报警提示.8)、统计出每栋楼房的入主情况(即空房多少).9)、能在屏幕上输出所有客户的信息.2课程设计报告内容:2.1:程序的简单介绍整个程序采用类与链表相结合的

3、编程方法一共完成了8个功能,全体用了一个类,一个友元成员函数和一个主函数。在每次运行完成时,要退出黑屏才能保存所输入的数据。再根据输入的数据,来确定功能的执行。在类class Zhuhu 中设有11个成员函数(例如:void input_message(),void gongneng()等等,这几个函数主要是输入输出和执行功能的用途)和一个友元函数(fringd void duidiao_base(Zhuhu &p1,Zhuhu &p2),此函数是用于后面的排序功能函数)的声明,类外进行定义。在主函数中除了普通函数外(例如:void zhixing(Zhuhu *head);对各函数施行执行功

4、能),还建立了文件(ifstream open_count_file(“count.txt”,ios:binary) 把数据库里的count找出来, ifstream infile(zhuhu.txt,ios:binary) 建立与数据库的联系流,使用二进制打开文件.),它们的打开和退出关系着数据库的数据的输入与保存。2.2:源程序:#include#include#include#includeusing namespace std;class Zhuhu public:void input_message(); /输入信息函数声明void show_message(); /展示函数声明声明

5、void write_num();void gongneng();int get_num();double get_water();double get_elec();string get_name(); /获取姓名声明double get_wuye(); Zhuhu *next;friend void duidiao_base(Zhuhu &p1,Zhuhu &p2);private:int num;/编号 char name20;/户主 double water;double elec;double wuye;int year;/年int mon;/月int day;/日;void Zhu

6、hu:input_message() /输入信息函数(采用先判断后定值的方法) coutnum;coutname;cout请输入用水量:water;cout请输入用电量:elec;cout请输入物业费:wuye;int e,g,f,h=0;/找到年,月,日三个替身cout入住时间endl;coute;/输入正确后,在再赋值while(e2056)cout年份错误,请重新输入(2006-2056)endle;year=e;/输入正确后,在再赋值if(year%4=0&year%100!=0)|(year%400=0) h=1;coutg;while(g12)cout月份错误,请重新输入(1-12

7、)endlg;mon=g;/输入正确后,在再赋值coutf;while(f31)cout日子错误,请重新输入(1-31)endlf;day=f;/输入正确后,在再赋值if(mon=4|mon=6|mon=9|mon=11)cinf;while(f30)cout日子错误,请重新输入(1-30)endlf;day=f;/输入正确后,在再赋值if(h=0&mon=2)/非闰年的二月cinf;while(f28)cout日子错误,请重新输入(1-28)endlf;day=f;/输入正确后,在再赋值if(h=1&mon=2)/闰年的二月cinf;while(f29)cout闰年,请重新输入(1-29)e

8、ndlf;day=f;/输入正确后,在再赋值;void Zhuhu:show_message()/展示会员基本信息cout房号:num ;cout户主:nameendl;cout用水量:water ;cout用电量:elec=0)cout物业费wuyeendl;if(wuye0)cout您的物业费预存了-wuyeRMBendl;cout入住时间:year年mon月day日endl;cout-endl;/美化页面的需要int Zhuhu:get_num()return num;void Zhuhu:write_num()cout请输入房号:num;void Zhuhu:gongneng()str

9、ing k;double a,b,c;cout1-买水endl;cout2-买电endl;cout3-交物业费k;while(k!=1&k!=2&k!=3)coutk;if(k=1)cout请输入买水量a;water=water+a;cout您现在的水量是:waterendl;if(k=2)cout请输入买电量:b;elec=elec+b;cout您现在的电量是:elecendl;if(k=3)cout请输入缴纳的物业费金额:c;wuye=wuye-c;if(wuye0)cout您现在的物业费是:wuyeendl;if(wuye0) cout您现在的物业费预存了:-wuyeendl;doubl

10、e Zhuhu:get_water()return water;double Zhuhu:get_elec()return elec;string Zhuhu:get_name()return name;double Zhuhu:get_wuye()return wuye;void duidiao_base(Zhuhu &p1,Zhuhu &p2)/交换基本信息函数(地址被抛弃)int t;double s;char a20;t=p1.num;p1.num=p2.num;p2.num=t;t=p1.year;p1.year=p2.year;p2.year=t;t=p1.mon;p1.mon=p

11、2.mon;p2.mon=t;t=p1.day;p1.day=p2.day;p2.day=t;s=p1.water;p1.water=p2.water;p2.water=s;s=p1.elec;p1.elec=p2.elec;p2.elec=s;s=p1.wuye;p1.wuye=p2.wuye;p2.wuye=s;strcpy(a,p1.name);strcpy(p1.name,p2.name);strcpy(p2.name,a);int count;int main()/主函数Zhuhu *head=NULL;Zhuhu *p1,*p2;p1=new Zhuhu;p2=p1;int i;i

12、fstream open_count_file(count.txt,ios:binary);/把数据库里的count找出来/此时的count是上次操作后留下的if(!open_count_file)/测试是否成功打开文件cerropen error!count;/取出值,并赋值给全局变量countopen_count_file.close();/取出后关闭文件ifstream infile(zhuhu.txt,ios:binary);/建立与数据库的联系流,使用二进制打开文件/zhuhu.txt保存了所有客户的信息if(!infile)cerropen error!endl;abort();f

13、or(i=0;inext=NULL;else p1-next=p2;p1=p2;infile.close();/关闭文件,防止误操作Zhuhu *jianli(Zhuhu *head);/建立数据库函数声明void shuchu(Zhuhu *head);Zhuhu *charu(Zhuhu *head);Zhuhu *shanchu(Zhuhu *head);void zhixing(Zhuhu *head);void chaxun(Zhuhu *head);/查询功能函数void tongji(Zhuhu *head);void paixu(Zhuhu *head);string con=

14、1;cout欢迎进入小区物业管理系统endl;if(count=0) cout_endl;cout警告您的数据库是空的,请首先建立数据库!endl;cout_endl;while(con!=0)/循环命令机制,这种比较方便,简单cout1-建立数据库endl;cout2-输出所有信息endl;cout3-添加住户endl;cout4-删除住户endl;cout5-收费功能endl;cout6-查询功能endl;cout7-统计空房endl;cout8-排序功能endl;cout0-退出系统,保存数据endl;cout;cincon;while(con!=1&con!=2&con!=3&con!

15、=4&con!=5&con!=6&con!=7&con!=8&con!=0)coutcon;if(con=1)head=jianli(head);if(con=2)shuchu(head);if(con=3)head=charu(head);if(con=4)head=shanchu(head);if(con=5)zhixing(head);if(con=6)chaxun(head);if(con=7)tongji(head);if(con=8)paixu(head);cout提示*操作完毕请选择退出程序(选择命令0),否则您的数据将不能保存!*endl;/必须退出/务必退出程序,否则处理结果

16、无法保存;p1=head;ofstream countfile(count.txt,ios:binary);if(!countfile)cerropen error!endl;abort();countfilecount;/存储人数到文件中countfile.close();ofstream outfile(zhuhu.txt,ios:binary);if(!outfile)cerropen error!endl;abort();for(i=0;inext;outfile.close();return 0;Zhuhu *jianli(Zhuhu *head)Zhuhu *p1,*p2;if(c

17、ount0)/此时不允许录入数据,只能使用添加功能录入cout警告!您的数据库已经存在,若要重新建立,请清除zhuhu文件内容并使count文件归0endl;cout_endl;if(count=0)p1=p2=new Zhuhu;head=p1;int n;cout请输入需要建立的住户数:n;for(int i=0;in;i+)cout第i+1位住户信息input_message();p1=new Zhuhu;if(i=n-1) p2-next=NULL;elsep2-next=p1;p2=p1;if(i=n) p2-next=NULL;count=n;return head; void s

18、huchu(Zhuhu *head)Zhuhu *p1;p1=head;while(p1!=NULL)p1-show_message();p1=p1-next;Zhuhu *charu(Zhuhu *head)cout请输入要添加住户的详细信息:input_message();while(p3-next!=NULL)if(p3-get_num()=p0-get_num()cout您输入输入输入的房号有误或非空房,请重新输入!input_message();p3=p3-next;p1=head; /使p1指向第一个结点if(head=NULL) /原来的链表是空表head=p0;p0-next=

19、NULL; /使p0指向的结点作为头结点if(p0-get_num()get_num()head=p0;p0-next=p1;elsewhile(p0-get_num()p1-get_num() & (p1-next!=NULL)p2=p1; /使p2指向刚才p1指向的结点p1=p1-next; /p1后移一个结点if(p0-get_num()get_num()if(head=p1) head=p0; /插到原来第一个结点之前else p2-next=p0; /插到p2指向的结点之后p0-next=p1;elsep1-next=p0; p0-next=NULL; /插到最后的结点之后count

20、+;cout添加成功,查看请选择2endl;cout-endl;return head;Zhuhu *shanchu(Zhuhu *head)Zhuhu *p1,*p2;int num;coutnum;p1=head;if (head=NULL) /是空表coutlist null!get_num() & p1-next!=NULL) /p1指向的不是所要找的结点且后面还有结点p2=p1; p1=p1-next; /p1后移一个结点if(num=p1-get_num() /找到了cout您要删除住户的详细信息是:show_message();if(p1=head) head=p1-next;

21、/若p1指向的是首结点,把第二个结点地址赋予headelse p2-next=p1-next; /否则将下一结点地址赋给前一结点地址cout成功删除:numendl;count-;else cout您要删除的住户不存在,请核对后重新删除endl; /找不到该结点return (head);void zhixing(Zhuhu *head)int num;Zhuhu *p1,*p2;cout请输入要执行的住户编号num;p1=head;while(num!=p1-get_num() & p1-next!=NULL) /p1指向的不是所要找的结点且后面还有结点p2=p1; p1=p1-next;

22、/p1后移一个结点if(num=p1-get_num() /找到了p1-gongneng();else cout您要执行的住户不存在,请核对后重新执行endl; /找不到该结点void chaxun(Zhuhu *head)/查询功能函数string n;int num;char name20;cout水量和电量查询-1物业费缴纳情况查询-2n;while(n!=1&n!=2)coutn;if(n=1) cout按房号查询-1按户主查询-2s;while(s!=1&s!=2)couts;if(s=1)cout请输入您要查询的房号:num;Zhuhu *p1,*p2;p1=head;while(

23、num!=p1-get_num() & p1-next!=NULL) /p1指向的不是所要找的结点且后面还有结点p2=p1; p1=p1-next; /p1后移一个结点if(num=p1-get_num() /找到了cout您的水量是:get_water()endl;cout您的电量是:get_elec()endl;else cout您要执行的住户不存在,请核对后重新执行endl; /找不到该结点if(s=2)cout请输入您要查询的户主姓名:name;Zhuhu *p1,*p2;p1=head;while(name!=p1-get_name() & p1-next!=NULL) /p1指向的

24、不是所要找的结点且后面还有结点p2=p1; p1=p1-next; /p1后移一个结点if(name=p1-get_name() /找到了cout您的水量是:get_water()endl;cout您的电量是:get_elec()endl;else cout您要执行的住户不存在,请核对后重新执行endl; /找不到该结点;if(n=2) Zhuhu *p1;string k;cout查询已交纳住户-1查询未交纳住户2k;while(k!=1&k!=2)coutk;p1=head;if(k=2)while( p1!=NULL) /p1指向的不是所要找的结点且后面还有结if(p1-get_wuye

25、()0 )cout警告!房号:get_num()-户主:get_name()-未交纳:get_wuye()RMBnext; /p1后移一个结点p1=head;int g=0;if(k=1)while( p1!=NULL) /p1指向的不是所要找的结点且后面还有结点if(p1-get_wuye()=0)cout房号:get_num()户主:get_name()已交纳next; /p1后移一个结点if(g=0) cout暂时全部未缴纳endl;void tongji(Zhuhu *head)Zhuhu *p1=head;int i;int a,b,c;a=b=c=0;while( p1!=NULL

26、) /p1指向的不是所要找的结点且后面还有结点for(i=101;iget_num()%1000)&(i%100)0&(i%100)10)cout第get_num()/1000 房号:i空缺get_num()/1000 =1) a=1;if(p1-get_num()/1000 =2) b=1; if(p1-get_num()/1000 =3) c=1;p1=p1-next;/p1后移一个结点if(!a) cout第1栋全部空房endl;if(!b) cout第2栋全部空房endl;if(!c) cout第3栋全部空房get_num()p2-get_num()duidiao_base(*(p1)

27、,*(p2);p2=p2-next;p1=p1-next;p2=p1;cout-endl;cout已经成功排序,查看结果请选择2endl;cout-endl;3. 课程设计总结:通过一个学年对C+语言的学习,我在学会了编一个程序的基本步骤,我现在已经能够独立编写一个简单的程序了。以前对书本上知识的理解只停留在表面的一点认识上,经过这次做课程设计,我更加深刻地理解了书本上知识的使用方法,我还体会到了做一个程序不是那么容易的事。在做课程设计的时候我也遇到了许多对我来说比较棘手的问题。以前我对学习比较被动,在这次做课程设计的过程中我学会自己主动学习了。而且体会到了学习的乐趣。总之,这次的课程设计让我学到了很多以前没有学到的东西,我会把我学到的这些都应用到日常的生活和学习中,让这些知识充分发挥应发挥的作用。我还是要感谢老师给我们孜孜不倦的教诲。 还有同学的帮助,才能顺利完成这次的课程设计。4.参考书目:1 谭浩强,C+程序设计,清华大学出版社,北京,2006年.2 C+大学简明教程来自于图书馆。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号