1、 本科生课程论文封面课程名称 C语言程序课程设计 教师姓名 本科生姓名 本科生学号 本科生专业 所在院系 类别: 工科 日期: 摘要:本文完成了综合练习中第20题物业管理系统的编程,程序用于小区的管理,管理的项目包括小区住户管理、物业收费项目管理、物业收费管理,并用文件存储相关信息。文中给出了需求分析、功能模块图、数据结构、详细设计、程序运行结果、总结和致谢,目录课程设计评语。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。1个人简介。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。
2、.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.2摘要。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.2目录.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.3题目及要求。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。4需求分析.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。
3、.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.4功能模块图.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。4数据结构.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。5源代码.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.5程序运行结果。.。.。.。.。.。.。.。.。.。.。.
4、。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。21总结.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.25致谢.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。25参考文献.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。251、题目要求用于小区的物业管理,管理的项目包括小区住户管理、
5、物业收费项目管理、物业收费管理。要求用文件存储相关信息。可随时浏览、录入和更改小区住户、收费项目等数据.可随时增、删、改、查收费项目及其标准。生成小区住户收费报表(包括全部、已交、欠交)。2、需求分析住户信息、物业收费信息要用文件存储(可用一个文件,也可分成两个文件)因而提供文件的输入/输出操作;另外,还要提供键盘式选择菜单以实现功能选择。3、功能模块图整个管理系统可以设计为住户信息、物业收费信息的浏览、修改、增加等模块。依据程序的数据结构和功能,遵照“自顶向下”原则,采用基于函数的逐步求精法,描述该程序的层次结构:查询缴费信息查询欠费名单信息浏览信息修改信息删除信息录入业主信息管理物业信息系
6、统收费信息管理统计查询系统主函数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;i
7、nt to_time;struct wuye link; ;5、源代码程序:includestdio.h #includestdlib.h include#include /函数声明/ int mainmenu(); /主菜单void xinximenu(); /物业信息菜单void tongjimenu();/统计查询菜单void mychaozhao(); /欠费名单void yezhumenu();/业主菜单void wuyemenu();/物业菜单void myAdd1();/录入业主信息void myAdd2(); /录入物业信息void myDelete1();/删除业主信息voi
8、d 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); /查找业主信
9、息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 /物业信息结构体/cha
10、r 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(”* * * * * * 请选择(13) * * * * * * *n”);printf(” n); printf( n);printf(” 物业信息系统; n”); printf(”*
11、 *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( * * * * * * * * * * 请选择(13) * * * * n); printf(”* *n”);prin
12、tf(” *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”); wh
13、ile(1);void tongjimenu()/统计查询菜单显示/int choose; do printf(*统计查询系统*n”);printf(”-n); printf(* * * * * * * * * 请选择(13)* * * * * * * * * * * *n”);printf(” *n); printf(”* n”);printf(” 查询缴费信息; *n”);printf(”* n”);printf(” 欠费名单一览表; n); printf(”* n”); printf(” 返回主菜单. n);printf(”* * * * * * * * * * * * * * * *
14、* * * * 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(* * * * * * * * *请选择(15) * * * * * * * n);pri
15、ntf(”* 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
16、 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(姓
17、名:”);scanf(s”,pname);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,&parea); printf(”入住时间:”);scanf(%s”,prz_time);myAdd3(p); save1(p);printf(”录入成功!n”); struct yezhu myAdd3(struct
18、yezhu *p)/添加业主信息结点/ struct yezhu *t;if(phead=NULL) phead=p; pnext=NULL; else t=phead; while(t-next!=NULL) t=tnext; t-next=p; pnext=NULL; return phead; void myReplace1()/修改业主信息 struct yezhu *k; char id100; printf(”请输入要修改的业主ID:”); scanf(s”,id); k=find1(id); if(k!=NULL) printf(”请输入要修改的业主信息:n); printf(I
19、D:); scanf(”s”,kid); 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”,kroom_num); printf(住宅面积:”); scanf(%d”,&k-area); printf(入住时间:”); scanf(%s”,k-rz_time); save1(k); printf(”修改
20、成功!n);else printf(无此业主ID!n); return; struct yezhu *find1(char *id)/通过ID查找业主信息/ struct yezhu p; p=phead; while(p!=NULL) if(strcmp(pid,id)=0) return p; p=pnext; return NULL;void Display1()struct yezhu p;p=phead;while(p!=NULL) printf(”nn”);printf(ID:sn,pid);printf(姓名:%sn,p-name);printf(”年龄:%dn”,page);
21、printf(”家庭成员数:dn,pfamily_num);printf(所在楼号:%dn”,pfloor_num); printf(”单元房间号:%sn”,proom_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)
22、;k=find2(id);if(p!=NULL)if(p=phead) phead=pnext;free(p); else while(pp-next!=p) pp=pp-next;pp-next=pnext;free(p);else printf(无此业主ID!n);return; printf(删除业主信息成功!n”); save1(p); if(k!=NULL) if(k=pHead) pHead=klink; free(k); else while(kk-link!=k) kk=kklink; kklink=k-link; free(k); else printf(”无此业主ID!n)
23、; 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
24、(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(” * * * * * * 请选择(15)* * * * *n”); printf(”* n);printf( *n”);printf(* 物业信息录入; *n”); printf( n);printf(* 物业信息修改; n);printf(”* n”);printf(” 物业信息删除; *n”)
25、;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(输入错误,请重
26、新输入: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,pID);t=find1(p-ID);if(t!=NULL)printf(”上一次缴费年份:);scanf(”d,&p-last_year);printf(月份:”);scanf(”%d”,&plast_month);printf(缴费金额:);scanf(”f,&pm
27、oney);x=p-money/(0。4t-area);pto_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; plink=NULL; else t=pHead;while(tlink!=NULL) t=tlink;tlink=p;plink=NULL;return pHead; struct wuye find2(cha
28、r *id)/通过姓名查找缴费信息/ struct wuye p;p=pHead;while(p!=NULL) if(strcmp(p-ID,id)=0)return p;p=plink;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;s
29、truct 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”,&klast_month);printf(”缴费金额:”);scanf(”%f”,k-money);t=find1(kID);x=(int)k-money/(0。4tarea);k-to
30、_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(pplink!=p) pp=pplink;pp-link=plink; free(p); else printf(”无此业主ID
31、!n”);return; save2(p);printf(”删除成功!n”);void Display2() struct wuye p;p=pHead; while(p!=NULL) printf(”ID:sn”,pID);printf(最后一次缴费日期:d年d月n,p-last_year,p-last_month); printf(缴费金额:f元n,pmoney);printf(”费用有效期:d个月n”,pto_time);printf(”nnn”); p=p-link; void Display(struct wuye p) printf(业主ID:%sn”,p-ID);printf(”
32、最后一次缴费日期:d年d月n,plast_year,plast_month);printf(最后一次缴费金额:fn,p-money);printf(费用有效期:%d个月n,pto_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;while(p!=NULL) fwrite(p,sizeof(struct wuye),1,fp);p=