小区物业管理系统.docx

上传人:b****5 文档编号:4362686 上传时间:2022-11-30 格式:DOCX 页数:20 大小:21.94KB
下载 相关 举报
小区物业管理系统.docx_第1页
第1页 / 共20页
小区物业管理系统.docx_第2页
第2页 / 共20页
小区物业管理系统.docx_第3页
第3页 / 共20页
小区物业管理系统.docx_第4页
第4页 / 共20页
小区物业管理系统.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

小区物业管理系统.docx

《小区物业管理系统.docx》由会员分享,可在线阅读,更多相关《小区物业管理系统.docx(20页珍藏版)》请在冰豆网上搜索。

小区物业管理系统.docx

小区物业管理系统

 

《小区物业管理系统》

程序设计基础课程设计报告

 

目录

一.编程目的:

2

二.设计要求:

2

三.各函数功能说明:

2

四.流程图:

13

五.总结:

14

参考书目:

15

 

1.程序题目要求:

1.1.课程设计目的:

用C++语言对小区物业管理系统进行程序编程,并且通过以前的学习及查看相关资料,按着题目要求编写程序,进一步加强对编程的训练,使得自己掌握知识要点,将其书本知识转化为实际应用当中。

1.2课程设计题目:

小区物业管理系统

1.3.课程设计题目描述和要求:

1)、有工作界面(菜单或按钮方式)

2)、以住户为主,录入房号,户主名,用水量(单位方),用电量(单位度),物业费(交否),入主日期等字段;所录入的数据(至少包括6条)存入一个文本文件中;能根据情况调出数据.

3)、具有按房号排序功能.

4)、能有插入功能,并按房号排序.

5)、具有删除记录功能.

6)、当某一住户买水或买电后,其相应用水量,用电量字段应增加;交物野费后应改变其相应字段的值.

7)、具有查询功能

(1)按房号,户主名进行用水量和用电量的查询.

(2)按物业费交否查询住户情况,当未交的,可报警提示.

8)、统计出每栋楼房的入主情况(即空房多少).

9)、能在屏幕上输出所有客户的信息.

2.课程设计报告内容:

2.1:

程序的简单介绍

整个程序采用类与链表相结合的编程方法一共完成了8个功能,全体用了一个类,一个友元成员函数和一个主函数。

在每次运行完成时,要退出黑屏才能保存所输入的数据。

再根据输入的数据,来确定功能的执行。

在类classZhuhu中设有11个成员函数(例如:

voidinput_message(),voidgongneng()等等,这几个函数主要是输入输出和执行功能的用途)和一个友元函数(fringdvoidduidiao_base(Zhuhu&p1,Zhuhu&p2),此函数是用于后面的排序功能函数)的声明,类外进行定义。

在主函数中除了普通函数外(例如:

voidzhixing(Zhuhu*head);对各函数施行执行功能),还建立了文件(ifstreamopen_count_file(“count.txt”,ios:

:

binary)把数据库里的count找出来

ifstreaminfile("zhuhu.txt",ios:

:

binary)建立与数据库的联系流,使用二进制打开文件.),它们的打开和退出关系着数据库的数据的输入与保存。

2.2:

源程序:

#include

#include

#include

#include

usingnamespacestd;

classZhuhu

{

public:

voidinput_message();//输入信息函数声明

voidshow_message();//展示函数声明声明

voidwrite_num();

voidgongneng();

intget_num();

doubleget_water();

doubleget_elec();

stringget_name();//获取姓名声明

doubleget_wuye();

Zhuhu*next;

friendvoidduidiao_base(Zhuhu&p1,Zhuhu&p2);

private:

intnum;//编号

charname[20];//户主

doublewater;

doubleelec;

doublewuye;

intyear;//年

intmon;//月

intday;//日

};

voidZhuhu:

:

input_message()//输入信息函数(采用先判断后定值的方法)

{

cout<<"房号:

";

cin>>num;

cout<<"户主:

";

cin>>name;

cout<<"请输入用水量:

"<

cin>>water;

cout<<"请输入用电量:

"<

cin>>elec;

cout<<"请输入物业费:

"<

cin>>wuye;

inte,g,f,h=0;//找到年,月,日三个替身

cout<<"入住时间"<

cout<<"年:

";

cin>>e;//输入正确后,在再赋值

while(e<2006||e>2056)

{

cout<<"年份错误,请重新输入(2006-2056)"<

";

cin>>e;

}

year=e;//输入正确后,在再赋值

if((year%4==0&&year%100!

=0)||(year%400==0))h=1;

cout<<"月:

";

cin>>g;

while(g<1||g>12)

{

cout<<"月份错误,请重新输入(1-12)"<

";

cin>>g;

}

mon=g;//输入正确后,在再赋值

cout<<"日:

";

if(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12)

{cin>>f;

while(f<1||f>31)

{

cout<<"日子错误,请重新输入(1-31)"<

";

cin>>f;

}

day=f;//输入正确后,在再赋值

}

if(mon==4||mon==6||mon==9||mon==11)

{cin>>f;

while(f<1||f>30)

{

cout<<"日子错误,请重新输入(1-30)"<

";

cin>>f;

}

day=f;//输入正确后,在再赋值

}

if(h==0&&mon==2)//非闰年的二月

{

cin>>f;

while(f<1||f>28)

{

cout<<"日子错误,请重新输入(1-28)"<

";

cin>>f;

}

day=f;//输入正确后,在再赋值

}

if(h==1&&mon==2)//闰年的二月

{cin>>f;

while(f<1||f>29)

{

cout<<"闰年,请重新输入(1-29)"<

";

cin>>f;

}

day=f;//输入正确后,在再赋值

}

;}

voidZhuhu:

:

show_message()//展示会员基本信息

{

cout<<"房号:

"<

cout<<"户主:

"<

cout<<"用水量:

"<

cout<<"用电量:

"<

if(wuye>=0)

cout<<"物业费"<

if(wuye<0)

cout<<"您的物业费预存了"<<-wuye<<"RMB"<

cout<<"入住时间:

"<

cout<<"----------------------------------------"<

}

intZhuhu:

:

get_num()

{

returnnum;

}

voidZhuhu:

:

write_num()

{

cout<<"请输入房号:

"<

cin>>num;

}

voidZhuhu:

:

gongneng()

{stringk;

doublea,b,c;

cout<<"[1]--买水"<

cout<<"[2]--买电"<

cout<<"[3]--交物业费"<

cin>>k;

while(k!

="1"&&k!

="2"&&k!

="3")

{

cout<<"错误命令,重新输入:

";

cin>>k;

}

if(k=="1")

{cout<<"请输入买水量"<

cin>>a;

water=water+a;

cout<<"您现在的水量是:

"<

if(k=="2")

{cout<<"请输入买电量:

"<

cin>>b;

elec=elec+b;

cout<<"您现在的电量是:

"<

if(k=="3")

{cout<<"请输入缴纳的物业费金额:

"<

cin>>c;

wuye=wuye-c;

if(wuye>0)

cout<<"您现在的物业费是:

"<

if(wuye<0)cout<<"您现在的物业费预存了:

"<<-wuye<

}

;}

doubleZhuhu:

:

get_water()

{returnwater;}

doubleZhuhu:

:

get_elec()

{returnelec;}

stringZhuhu:

:

get_name()

{returnname;}

doubleZhuhu:

:

get_wuye()

{returnwuye;}

voidduidiao_base(Zhuhu&p1,Zhuhu&p2)//交换基本信息函数(地址被抛弃)

{intt;

doubles;

chara[20];

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=p2.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);

}

intcount;

intmain()//主函数

{

Zhuhu*head=NULL;

Zhuhu*p1,*p2;

p1=newZhuhu;

p2=p1;

inti;

ifstreamopen_count_file("count.txt",ios:

:

binary);//把数据库里的count找出来

//此时的count是上次操作后留下的

if(!

open_count_file)//测试是否成功打开文件

{

cerr<<"openerror!

"<

abort();

}

open_count_file>>count;//取出值,并赋值给全局变量count

open_count_file.close();//取出后关闭文件

ifstreaminfile("zhuhu.txt",ios:

:

binary);//建立与数据库的联系流,使用二进制打开文件

//zhuhu.txt保存了所有客户的信息

if(!

infile)

{

cerr<<"openerror!

"<

abort();

}

for(i=0;i

{

infile.read((char*)p1,sizeof(Zhuhu));//运用二进制文件操作函数,方便快捷,不用重载

if(i==0)head=p1;

p2=newZhuhu;

if(i==count-1)p1->next=NULL;

else

{p1->next=p2;

p1=p2;}

;}

infile.close();//关闭文件,防止误操作

Zhuhu*jianli(Zhuhu*head);//建立数据库函数声明

voidshuchu(Zhuhu*head);

Zhuhu*charu(Zhuhu*head);

Zhuhu*shanchu(Zhuhu*head);

voidzhixing(Zhuhu*head);

voidchaxun(Zhuhu*head);//查询功能函数

voidtongji(Zhuhu*head);

voidpaixu(Zhuhu*head);

stringcon="1";

cout<<"※※※※※※欢迎进入小区物业管理系统※※※※※※※※"<

cout<<"开发人:

秦国栋"<<"(07电子信息1班)"<

if(count==0)

{cout<<"_______________________________________________________________"<

cout<<"警告★★您的数据库是空的,请首先建立数据库!

!

!

!

★★"<

cout<<"_______________________________________________________________"<

while(con!

="0")//循环命令机制,这种比较方便,简单

{

cout<<"[1]--建立数据库"<

cout<<"[2]--输出所有信息"<

cout<<"[3]--添加住户"<

cout<<"[4]--删除住户"<

cout<<"[5]--收费功能"<

cout<<"[6]--查询功能"<

cout<<"[7]--统计空房"<

cout<<"[8]--排序功能"<

cout<<"[0]--退出系统,保存数据"<

cout<<"***********我的命令是********:

-->";

cin>>con;

while(con!

="1"&&con!

="2"&&con!

="3"&&con!

="4"&&con!

="5"&&con!

="6"&&con!

="7"&&con!

="8"&&con!

="0")

{

cout<<"错误命令,重新输入:

";

cin>>con;

}

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]),否则您的数据将不能保存!

*]"<

//务必退出程序,否则处理结果无法保存

};

p1=head;

ofstreamcountfile("count.txt",ios:

:

binary);

if(!

countfile)

{

cerr<<"openerror!

"<

abort();

}

countfile<

countfile.close();

ofstreamoutfile("zhuhu.txt",ios:

:

binary);

if(!

outfile)

{

cerr<<"openerror!

"<

abort();

}

for(i=0;i

{

outfile.write((char*)p1,sizeof(Zhuhu));

p1=p1->next;

}

outfile.close();

return0;

}

Zhuhu*jianli(Zhuhu*head)

{Zhuhu*p1,*p2;

if(count>0)//此时不允许录入数据,只能使用添加功能录入

{cout<<"警告!

!

您的数据库已经存在,若要重新建立,请清除zhuhu文件内容并使count文件归0"<

cout<<"_____________________________________________________________________"<

}

if(count==0)

{

p1=p2=newZhuhu;

head=p1;

intn;

cout<<"请输入需要建立的住户数:

"<

cin>>n;

for(inti=0;i

{

cout<<"第"<

p1->input_message();

p1=newZhuhu;

if(i==n-1)p2->next=NULL;

elsep2->next=p1;

p2=p1;

}

if(i==n)p2->next=NULL;

count=n;

}

returnhead;

}

voidshuchu(Zhuhu*head)

{Zhuhu*p1;

p1=head;

while(p1!

=NULL)

{

p1->show_message();

p1=p1->next;

}

;}

Zhuhu*charu(Zhuhu*head)

{

cout<<"请输入要添加住户的详细信息:

"<

Zhuhu*p0,*p1,*p2,*p3;

p3=p1=head;

p0=newZhuhu;

p0->input_message();

while(p3->next!

=NULL)

{

if(p3->get_num()==p0->get_num())

{cout<<"您输入输入输入的房号有误或非空房,请重新输入!

"<

p0->input_message();

}

p3=p3->next;

}

p1=head;//使p1指向第一个结点

if(head==NULL)//原来的链表是空表

{head=p0;p0->next=NULL;}//使p0指向的结点作为头结点

if(p0->get_num()get_num())

{head=p0;

p0->next=p1;}

else

{while((p0->get_num()>p1->get_num())&&(p1->next!

=NULL))

{p2=p1;//使p2指向刚才p1指向的结点

p1=p1->next;}//p1后移一个结点

if(p0->get_num()<=p1->get_num())

{if(head==p1)head=p0;//插到原来第一个结点之前

elsep2->next=p0;//插到p2指向的结点之后

p0->next=p1;}

else

{p1->next=p0;p0->next=NULL;}}//插到最后的结点之后

count++;

cout<<"添加成功,查看请选择[2]"<

cout<<"---------------------------------------"<

returnhead;}

Zhuhu*shanchu(Zhuhu*head)

{Zhuhu*p1,*p2;

intnum;

cout<<"请输入要删除住户的房号:

";

cin>>num;

p1=head;

if(head==NULL)//是空表

{cout<<"listnull!

"<

p1=head;//使p1指向第一个结点

while(num!

=p1->get_num()&&p1->next!

=NULL)//p1指向的不是所要找的结点且后面还有结点

{p2=p1;p1=p1->next;}//p1后移一个结点

if(num==p1->get_num())//找到了

{cout<<"您要删除住户的详细信息是:

"<

p1->show_message();

if(p1==head)head=p1->next;//若p1指向的是首结点,把第二个结点地址赋予head

elsep2->next=p1->next;//否则将下一结点地址赋给前一结点地址

cout<<"成功删除:

"<

count--;

}

elsecout<<"您要删除的住户不存在,请核对后重新删除"<

return(head);

}

voidzhixing(Zhuhu*head)

{intnum;

Zhuhu*p1,*p2;

cout<<"请输入要执行的住户编号"<

cin>>num;

p1=head;

while(num!

=p1->get_num()&&p1->next!

=NULL)//p1指向的不是所要找的结点且后面还有结点

{p2=p1;p1=p1->next;}//p1后移一个结点

if(num==p1->get_num())//找到了

{p1->gongneng();

}

elsecout<<"您要执行的住户不存在,请核对后重新执行"<

}

voidchaxun(Zhuhu*head)//查询功能函数

{

stringn;

intnum;

charname[20];

cout<<"●水量和电量查询-[1]●物业费缴纳情况查询-[2]●"<

cin>>n;

while(n!

="1"&&n!

="2")

{cout<<"错误命令,重新输入:

";

cin>>n;

}

if(n=="1")

{

cout<<"●按房号查询-[1]●按户主查询-[2]●"<

strings;

cin>>s;

while

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

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1