物业管理系统C语言程序实习报告.docx
物业管理系统C语言程序实习报告本科生课程论文封面 课程名称 C语言程序课程设计 教师姓名 本科生姓名 本科生学号 本科生专业 所在院系 类别: 工科 日期: 摘要: 本文完成了综合练习中第20题物业管理系统的编程,程序用于小区的管理,管理的项目包括小区住户管理、物业收费项目管理、物业收费管理,并用文件存储相关信息。文中给出了需求分析、功能模块图、数据结构、详细设计、程序运行结果、总结和致谢, 目录 课程设计评语.1 个人简介.2 摘要.2 目录.3 题目及要求.4 需求分析.4 功能模块图.4 数据结构.5 源代码.5 程序运行结果.21 总结.25 致谢.25 参考文献.25 1、题目要求 用于小区的物业管理,管理的项目包括小区住户管理、物业收费项目管理、物业收费管理。要求用文件存储相关信息。 可随时浏览、录入和更改小区住户、收费项目等数据。 可随时增、删、改、查收费项目及其标准。 生成小区住户收费报表。 2、需求分析 住户信息、物业收费信息要用文件存储因而提供文件的输入/输出操作;另外,还要提供键盘式选择菜单以实现功能选择。 3、功能模块图 整个管理系统可以设计为住户信息、物业收费信息的浏览、修改、增加等模块。 依据程序的数据结构和功能,遵照“自顶向下”原则,采用基于函数的逐步求精法,描述该程序的层次结构: 物业信息系统 业主信息管理 收费信息管理 信 信 信 信 息 息 息 息 删浏录修 除 览 入 改 主函数 统计查询系统 查询缴费信息 查询欠费名单 4、数据结构 可以把住户信息、物业收费信息分别放在两个结构体内。 住户信息结构体: struct yezhu /业主结构体/ char id100; char name20; int age; int family_num; int floor_num; char room_num100; float lost; int area; char rz_time20; struct yezhu *next; ; 物业收费信息结构体: struct wuye /物业信息结构体/ char ID100; int last_year; int last_month; float money; int to_time; struct wuye *link; ; 5、源代码 程序: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<malloc.h> #include<conio.h> /函数声明/ int mainmenu; /主菜单 void xinximenu; /物业信息菜单 void tongjimenu;/统计查询菜单 void mychaozhao; /欠费名单 void yezhumenu;/业主菜单 void wuyemenu;/物业菜单 void myAdd1;/录入业主信息 void myAdd2; /录入物业信息 void myDelete1;/删除业主信息 void myDelete2;/删除物业信息 void myReplace1;/修改业主信息 void myReplace2;/修改物业信息 void Display1;/浏览业主信息 void Display2;/浏览物业信息 void myfind;/查询缴费 void Display(struct wuye *p); void Read1; void Read2; void save1(struct yezhu *p);/保存业主信息至文件 void save2(struct wuye *p);/保存物业信息至文件 struct yezhu *find1(char *id); /查找业主信息 struct wuye *find2(char *id);/查找物业信息 struct yezhu *myAdd3(struct yezhu *p);/添加业主信息struct wuye *myAdd4(struct wuye *p); struct yezhu /业主结构体/ char id100; char name20; int age; int family_num; int floor_num; char room_num100; float lost; int area; char rz_time20; struct yezhu *next; ; struct wuye /物业信息结构体/ char ID100; int last_year; int last_month; float money; int to_time; struct wuye *link; ; struct yezhu *phead; /业主头结点 struct wuye *pHead; /物业头结点 int mainmenu/主菜单/ int 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",&n); return n; void xinximenu/物业信息菜单显示/ int choose; do 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) case 1:yezhumenu; break; case 2:wuyemenu; break; case 3:return; default:printf("输入错误,请重新输入:n"); while(1); void tongjimenu /统计查询菜单显示/ int choose; do 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) case 1 : myfind; break; case 2 : mychaozhao; break; case 3 : return; default: printf("输入错误,请重新输入!nn"); while(1); void yezhumenu/业主菜单函数 int choose; do 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("* *n"); printf("* 返回上级菜单。 *n"); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n"); printf("请输入选项:"); scanf("%d",&choose); /getchar; switch(choose) case 1 :myAdd1; break; case 2 :myReplace1; break; case 3 :myDelete1; break; case 4 :Display1; break; case 5 : return; default: printf("输入错误,请重新输入:n"); while(1); void myAdd1/录入业主信息/ struct yezhu *p; p=(struct yezhu *)malloc(sizeof(struct yezhu); 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"); struct yezhu *myAdd3(struct yezhu *p)/添加业主信息结点/ struct yezhu *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; return phead; void myReplace1/修改业主信息 struct yezhu *k; char id100; 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; struct yezhu *find1(char *id)/通过ID查找业主信息/ struct yezhu *p; p=phead; while(p!=NULL) if(strcmp(p->id,id)=0) return p; p=p->next; return NULL; void Display1 struct yezhu *p; p=phead; while(p!=NULL) printf("nn"); printf("ID:%sn",p->id); printf("姓名:%sn",p->name); printf("年龄:%dn",p->age); printf("家庭成员数:%dn",p->family_num); printf("所在楼号:%dn",p->floor_num); printf("单元房间号:%sn",p->room_num); printf("住宅面积:%dn",p->area); printf("入住时间:%sn",p->rz_time); printf("nn"); p=p->next; void myDelete1 struct yezhu *p,*pp; struct wuye *k,*kk; char id100; 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); void save1(struct yezhu *p) FILE *fp; fp=fopen("yezhu.dat","wb"); p=phead; while(p!=NULL) fwrite(p,sizeof(struct yezhu),1,fp); p=p->next; fclose(fp); void Read1 FILE *fp; struct yezhu *p; fp=fopen("yezhu.dat","rb"); while(1) p=(struct yezhu *)malloc(sizeof(struct yezhu); if(feof(fp) break; if(fread(p,sizeof(struct yezhu),1,fp) myAdd3(p); fclose(fp); void wuyemenu int choose=0; do 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("* *n"); printf("* 返回上级菜单。 *n"); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *n"); printf("请输入选项:"); scanf("%d",&choose); switch(choose) case 1: myAdd2; break; case 2: myReplace2; break; case 3: myDelete2; break; case 4: Display2; break; case 5: return; default:printf("输入错误,请重新输入:n"); while(1); void myAdd2/录入物业信息/ struct wuye *p; struct yezhu *t; int x; p=(struct wuye *)malloc(sizeof(struct wuye); 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/(0.4*t->area); p->to_time=(int)x; myAdd4(p); save2(p); printf("录入成功!n"); else printf("无此业主ID!n"); return; struct wuye *myAdd4(struct wuye *p)/添加物业信息结点/ struct wuye *t; if(pHead=NULL) pHead=p; p->link=NULL; else t=pHead; while(t->link!=NULL) t=t->link; t->link=p; p->link=NULL; return pHead; struct wuye *find2(char *id)/通过姓名查找缴费信息/ struct wuye *p; p=pHead; while(p!=NULL) if(strcmp(p->ID,id)=0) return p; p=p->link; return NULL; void myfind struct wuye *p; char a100; printf("请输入要查找的业主id:"); scanf("%s",a); p=find2(a); if(p!=NULL) printf("业主已经存缴!n"); else printf("业主尚没存缴信息!n"); return; Display(p); void myReplace2/ char id20; int x; struct wuye *k; struct yezhu *t; printf("请输入要修改的业主ID:"); scanf("%s",id); if(k!=NULL) printf("您要修改的信息为:n"); printf("请输入新的信息:n"); printf("ID:"); scanf("%s",k->ID); printf("上一次缴费年份:"); scanf("%d",&k->last_year); printf("月份:"); scanf("%d",&k->last_month); printf("缴费金额:"); scanf("%f",&k->money); t=find1(k->ID); x=(int)k->money/(0.4*t->area); k->to_time=(int)x; myAdd4(k); save2(k); printf("修改成功!n"); else printf("无此业主ID!n"); return; void myDelete2/ struct wuye *p,*pp; char id100; pp=pHead; printf("请输入要删除人的ID:"); scanf("%s",id); p=find2(id); if(p!=NULL) if(p=pHead) pHead=p->link; free(p); else while(pp->link!=p) pp=pp->link; pp->link=p->link; free(p); else printf("无此业主ID!n"); return; save2(p); printf("删除成功!n"); void Display2 struct wuye *p; p=pHead; while(p!=NULL) printf("ID:%sn",p->ID); printf("最后一次缴费日期:%d年%d月n",p->last_year,p->last_month); printf("缴费金额:%f元n",p->money); printf("费用有效期:%d个月n",p->to_time); printf("nnn"); p=p->link; void Display(struct wuye *p) printf("业主ID:%sn",p->ID); printf("最后一次缴费日期:%d年n",p->last_year,p->last_month); printf("最后一次缴费金额:%fn",p->money); printf("费用有效期:%d个月n",p->to_time); void Read2/ FILE *fp; struct wuye *p; fp=fopen("wuye.dat","rb"); while(1) p=(struct wuye *)malloc(sizeof(struct wuye); if(feof(fp) break; if(fread(p,sizeof(struct wuye),1,fp) myAdd4(p); fclose(fp); void save2(struct wuye *p)/ FILE *fp; fp=fopen("wuye.dat","wb"); p=pHead; %d月 while(p!=NULL) fwrite(p,sizeof(struct wuye),1,fp); p=p->link; fclose(fp); void mychaozhao/ int year,month; struct wuye *k; struct