物业管理系统C语言程序实习报告.docx
《物业管理系统C语言程序实习报告.docx》由会员分享,可在线阅读,更多相关《物业管理系统C语言程序实习报告.docx(28页珍藏版)》请在冰豆网上搜索。
物业管理系统C语言程序实习报告
1、题目要求
用于小区的物业管理,管理的项目包括小区住户管理、物业收费项目管理、物业收费管理。
要求用文件存储相关信息。
⑴可随时浏览、录入和更改小区住户、收费项目等数据。
⑵可随时增、删、改、查收费项目及其标准。
⑶生成小区住户收费报表(包括全部、已交、欠交)。
2、需求分析
住户信息、物业收费信息要用文件存储(可用一个文件,也可分成两个文件)因而提供文件的输入/输出操作;另外,还要提供键盘式选择菜单以实现功能选择。
3、功能模块图
整个管理系统可以设计为住户信息、物业收费信息的浏览、修改、增加等模块。
依据程序的数据结构和功能,遵照“自顶向下”原则,采用基于函数的逐步求精法,描述该程序的层次结构:
4、数据结构
可以把住户信息、物业收费信息分别放在两个结构体内。
住户信息结构体:
structyezhu{//业主结构体//
charid[100];
charname[20];
intage;
intfamily_num;
intfloor_num;
charroom_num[100];
floatlost;
intarea;
charrz_time[20];
structyezhu*next;
};
物业收费信息结构体:
structwuye{//物业信息结构体//
charID[100];
intlast_year;
intlast_month;
floatmoney;
intto_time;
structwuye*link;
};
5、源代码
程序:
#include<>
#include<>
#include<>
#include<>
#include<>//函数声明//
intmainmenu();//主菜单
voidxinximenu();//物业信息菜单
voidtongjimenu();//统计查询菜单
voidmychaozhao();//欠费名单
voidyezhumenu();//业主菜单
voidwuyemenu();//物业菜单
voidmyAdd1();//录入业主信息
voidmyAdd2();//录入物业信息
voidmyDelete1();//删除业主信息
voidmyDelete2();//删除物业信息
voidmyReplace1();//修改业主信息
voidmyReplace2();//修改物业信息
voidDisplay1();//浏览业主信息
voidDisplay2();//浏览物业信息
voidmyfind();//查询缴费
voidDisplay(structwuye*p);
voidRead1();
voidRead2();
voidsave1(structyezhu*p);//保存业主信息至文件
voidsave2(structwuye*p);//保存物业信息至文件
structyezhu*find1(char*id);//查找业主信息
structwuye*find2(char*id);//查找物业信息`
structyezhu*myAdd3(structyezhu*p);//添加业主信息
structwuye*myAdd4(structwuye*p);
structyezhu{//业主结构体//
charid[100];
charname[20];
intage;
intfamily_num;
intfloor_num;
charroom_num[100];
floatlost;
intarea;
charrz_time[20];
structyezhu*next;
};
structwuye{//物业信息结构体//
charID[100];
intlast_year;
intlast_month;
floatmoney;
intto_time;
structwuye*link;
};
structyezhu*phead;//业主头结点
structwuye*pHead;//物业头结点
intmainmenu()//主菜单//
{
intn;
printf("**************************欢迎进入小区物业管理系统***************************\n");
printf("-----------------------------------------------------------------------------\n");
printf("***************〓请选择〓(1~3)***************\n");
printf("**\n");printf("**\n");
printf("*⒈物业信息系统;*\n");
printf("**\n");
printf("*⒉统计查询系统;*\n");
printf("**\n");
printf("*⒊退出程序。
*\n");
printf("**\n");
printf("***************************************\n");
printf("请您输入选项★№:
");
scanf("%d",&n);
returnn;
}
voidxinximenu()//物业信息菜单显示//
{
intchoose;
do{
printf("*****************************物业信息系统************************************\n");
printf("-----------------------------------------------------------------------------\n");
printf("***************〓请选择〓(1~3)***************\n");
printf("**\n");
printf("**\n");
printf("*⒈小区业主信息管理;*\n");
printf("**\n");
printf("*⒉物业费用信息管理;*\n");
printf("**\n");
printf("*⒊返回主菜单。
*\n");
printf("***************************************\n");printf("请您输入选项★№:
");
scanf("%d",&choose);
switch(choose)
{
case1:
yezhumenu();
break;
case2:
wuyemenu();
break;
case3:
return;
default:
printf("输入错误,请重新输入:
\n");
}
}while
(1);
}
voidtongjimenu()//统计查询菜单显示//
{
intchoose;
do{
printf("******************************统计查询系统***********************************\n");
printf("-----------------------------------------------------------------------------\n");
printf("***************〓请选择〓(1~3)***************\n");
printf("**\n");
printf("**\n");
printf("*⒈查询缴费信息;*\n");
printf("**\n");
printf("*⒉欠费名单一览表;*\n");
printf("**\n");
printf("*⒊返回主菜单。
*\n");
printf("***************************************\n");
printf("请您输入选项★№:
");
scanf("%d",&choose);
switch(choose)
{
case1:
myfind();
break;
case2:
mychaozhao();
break;
case3:
return;
default:
printf("输入错误,请重新输入!
\n\n");
}
}while
(1);
}
voidyezhumenu()//业主菜单函数
{
intchoose;
do{
printf("********************************业主信息编辑系统******************************-\n");
printf("-------------------------------------------------------------------------------\n");
printf("****************〓请选择〓(1~5)***************\n");
printf("**\n");
printf("**\n");
printf("*⒈业主信息录入;*\n");
printf("**\n");
printf("*⒉业主信息修改;*\n");
printf("**\n");
printf("*⒊业主信息删除;*\n");
printf("**\n");
printf("*⒋业主信息浏览;*\n");
printf("**\n");
printf("*⒌返回上级菜单。
*\n");
printf("****************************************\n");
printf("请输入选项★№:
");
scanf("%d",&choose);
//getchar();
switch(choose)
{
case1:
myAdd1();
break;
case2:
myReplace1();
break;
case3:
myDelete1();
break;
case4:
Display1();
break;
case5:
return;
default:
printf("输入错误,请重新输入:
\n");
}
}while
(1);
}
voidmyAdd1()//录入业主信息//
{
structyezhu*p;
p=(structyezhu*)malloc(sizeof(structyezhu));
printf("请录入业主信息:
\n");
printf("ID:
");
scanf("%s",p->id);
printf("姓名:
");
scanf("%s",p->name);
printf("年龄:
");
scanf("%d",&p->age);
printf("家庭成员数:
");
scanf("%d",&p->family_num);
printf("所在楼号:
");
scanf("%d",&p->floor_num);
printf("单元房间号:
");
scanf("%s",p->room_num);
printf("住宅面积:
");
scanf("%d",&p->area);
printf("入住时间:
");
scanf("%s",p->rz_time);
myAdd3(p);
save1(p);
printf("录入成功!
\n");
}
structyezhu*myAdd3(structyezhu*p)//添加业主信息结点//
{
structyezhu*t;
if(phead==NULL)
{
phead=p;
p->next=NULL;
}
else
{
t=phead;
while(t->next!
=NULL)
t=t->next;
t->next=p;
p->next=NULL;
returnphead;
}
}
voidmyReplace1()//修改业主信息
{
structyezhu*k;
charid[100];
printf("请输入要修改的业主ID:
");
scanf("%s",id);
k=find1(id);
if(k!
=NULL)
{
printf("请输入要修改的业主信息:
\n");
printf("ID:
");
scanf("%s",k->id);
printf("姓名:
");
scanf("%s",k->name);
printf("年龄:
");
scanf("%d",&k->age);
printf("家庭成员数:
");
scanf("%d",&k->family_num);
printf("所在楼号:
");
scanf("%d",&k->floor_num);
printf("单元房间号:
");
scanf("%s",k->room_num);
printf("住宅面积:
");
scanf("%d",&k->area);
printf("入住时间:
");
scanf("%s",k->rz_time);
save1(k);
printf("修改成功!
\n");
}
else
{
printf("无此业主ID!
\n");
return;
}
}
structyezhu*find1(char*id)//通过ID查找业主信息//
{
structyezhu*p;
p=phead;
while(p!
=NULL)
{
if(strcmp(p->id,id)==0)
returnp;
p=p->next;
}
returnNULL;
}
voidDisplay1()
{
structyezhu*p;
p=phead;
while(p!
=NULL)
{
printf("\n\n");
printf("ID:
%s\n",p->id);
printf("姓名:
%s\n",p->name);
printf("年龄:
%d\n",p->age);
printf("家庭成员数:
%d\n",p->family_num);
printf("所在楼号:
%d\n",p->floor_num);
printf("单元房间号:
%s\n",p->room_num);
printf("住宅面积:
%d\n",p->area);
printf("入住时间:
%s\n",p->rz_time);
printf("\n\n");
p=p->next;
}
}
voidmyDelete1()
{
structyezhu*p,*pp;
structwuye*k,*kk;
charid[100];
pp=phead;
kk=pHead;
printf("请输入要删除人的ID:
");
scanf("%s",id);
p=find1(id);
k=find2(id);
if(p!
=NULL)
{
if(p==phead)
{
phead=p->next;
free(p);
}
else
{
while(pp->next!
=p)
pp=pp->next;
pp->next=p->next;
free(p);
}
}
else
{
printf("无此业主ID!
\n");
return;
}
printf("删除业主信息成功!
\n");
save1(p);
if(k!
=NULL)
{
if(k==pHead)
{
pHead=k->link;
free(k);
}
else
{
while(kk->link!
=k)
kk=kk->link;
kk->link=k->link;
free(k);
}
}
else
{
printf("无此业主ID!
\n");
return;
}
printf("删除物业信息成功!
\n");
save2(k);
}
voidsave1(structyezhu*p)
{
FILE*fp;
fp=fopen("","wb");
p=phead;
while(p!
=NULL)
{
fwrite(p,sizeof(structyezhu),1,fp);
p=p->next;
}
fclose(fp);
}
voidRead1()
{
FILE*fp;
structyezhu*p;
fp=fopen("","rb");
while
(1)
{
p=(structyezhu*)malloc(sizeof(structyezhu));
if(feof(fp))
{
break;
}
if(fread(p,sizeof(structyezhu),1,fp))
{
myAdd3(p);
}
}
fclose(fp);
}
voidwuyemenu()
{
intchoose=0;
do{
printf("*********************************物业费用管理系统************************\n");
printf("-------------------------------------------------------------------------\n");
printf("***************〓请选择〓(1~5)*************\n");
printf("**\n");
printf("**\n");
printf("*⒈物业信息录入;*\n");
printf("**\n");
printf("*⒉物业信息修改;*\n");
printf("**\n");
printf("*⒊物业信息删除;*\n");
printf("**\n");
printf("*⒋物业信息浏览;*\n");
printf("**\n");
printf("*⒌返回上级菜单。
*\n");
printf("*************************************\n");
printf("请输入选项:
");
scanf("%d",&choose);
switch(choose)
{
case1:
myAdd2();
break;
case2:
myReplace2();
break;
case3:
myDelete2();
break;
case4:
Display2();
break;
case5:
return;
default:
printf("输入错误,请重新输入:
\n");
}
}while
(1);
}
voidmyAdd2()//录入物业信息//
{
structwuye*p;
structyezhu*t;
intx;
p=(structwuye*)malloc(sizeof(structwuye));
printf("请录入物业信息:
\n");
printf("ID:
");
scanf("%s",p->ID);
t=find1(p->ID);
if(t!
=NULL)
{
printf("上一次缴费年份:
");
scanf("%d",&p->last_year);
printf("月份:
");
scanf("%d",&p->last_month);
printf("缴费金额:
");
scanf("%f",&p->money);
x=p->money/*t->area);
p->to_time=(int)x;
myAdd4(p);
save2(p);
printf("录入成功!
\n");
}
else