C语言课程设计报告--物业管理系统

C语言课程设计报告--物业管理系统 本文关键词:管理系统,课程设计,物业,语言,报告

C语言课程设计报告--物业管理系统 本文简介:中国地质大学本科生课程论文封面课程名称计算机高级语言课程设计(C)教师姓名本科生姓名本科生学号本科生专业网络工程所在院系计算机学院类别:工科日期:16/1/2013课程设计评语对课程论文的评语:平时成绩:课程论文成绩:总成绩:评阅人签名:注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅

C语言课程设计报告--物业管理系统 本文内容:

本科生课程论文封面

课程名称

计算机高级语言课程设计(C)

教师姓名

本科生姓名

本科生学号

本科生专业

网络工程

所在院系

计算机学院

类别:

工科

日期:

16/1/2013

课程设计评语

对课程论文的评语:

平时成绩:

课程论文成绩:

绩:

评阅人签名:

注:1、无评阅人签名成绩无效;

2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;

3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。

摘要:

本文完成了综合练习中第20题物业管理系统的编程,程序用于小区的管理,管理的项目包括小区住户管理、物业收费项目管理、物业收费管理,并用文件存储相关信息。文中给出了需求分析、功能模块图、数据结构、详细设计、程序运行结果、总结和致谢。

课程设计评语2

作者简介及摘要3

录4

1.课程论文题目5

2.总体设计6

3.详细设计8

4.程序运行结果12

5.编程中遇到的困难及解决方法16

6.总结心得及良好建议17

7.致谢18

8.参考文献19

1.课程论文题目:物业管理系统

1.1问题描述

物业管理系统问题的描述是:用于小区的物业管理,管理的项目包括小区住户管理、物业收费项目管理、物业收费管理。要求用文件存储相关信息。

1.2基本要求

(1)

可随时浏览、录入和更改小区住户、收费项目等数据。

(2)

随时可增、删、改、查收费项目及其标准。

(3)

生成小区住户收费报表(包括全部、已交、欠交)。

1.3需求分析

住户信息、物业收费信息用一个文件存储,因而要提供文件的输入/输出操作;另外,还要提供键盘式选择菜单以实现功能选择。

2.总体设计:

2.1总体思路

整个管理系统设计为住户信息、物业收费信息的浏览、增加、更改、删除等模块。

2.2功能模块图

物业管理系统

更改

删除

增加

浏览

计算

图2-2功能模块图

2.3数据结构设计

根据问题描述,将住户信息、物业收费信息放在一个resident结构体内。

结点结构:

fh

name

bjf

baf

tcf

yj

zj

qj

定义如下:

#define

N

50

int

M;

struct

resident

{

int

fh;/*房号*/

char

name[10];/*户主姓名*/

int

bjf;/*保洁费*/

int

baf;/*保安费*/

int

tcf;/*停车费*/

int

yj;/*已交*/

int

zj;/*总计*/

int

qj;/*欠交*/

}s[N];/*s[N]中每个数组元素对应一个住户*/

将住户信息储存在ZHSFBB.txt文本文件中

内容及格式:

101

wang

86

50

80

120

102

zhang

77

50

0

127

201

zhao

80

50

60

150

202

shang

70

55

10

100

301

zhou

88

66

55

130

302

mei

56

89

13

90

401

sun

46

66

79

80

402

tian

50

80

40

140

501

fang

60

70

30

120

502

chen

90

60

40

88

601

bian

40

40

40

110

602

wu

80

80

40

80

3.详细设计

3.1数据读入模块:

小区住户信息采用结构体形式,把一个住户的信息作为结构体成员,若要存放若干个住户信息就要用到结构体数组,一条记录对应一户住户的信息,既符合习惯也方便信息管理。

代码:/************************数据读入模块***********************/

void

Re_file()

{

FILEfp;

M=0;

fp=fopen(“ZHSFBB.txt“,“r“);

while(fscanf(fp,“%d%s%d%d%d%d“,fclose(fp);

}

3.2

计算模块

主函数中已读入原始数据,计算:总计=保洁费+保安费+停车费,欠交=总计-已交。

开始

定义循环计数器i

i小于或等于总住户数?

计算

总计=保洁费+保安费+停车费

计算

欠交=总计-已交

i=i++

结束

图3-2计算模块流程图

3.3增加模块

该模块的功能是增加新的小区住户记录,用户从键盘输入并逐条写到原来的输入文件中。

代码:/************************增加模块***********************/

void

Append()

{

int

n,i;

printf(“可输入增加的住户数:“);

scanf(“%d“,M=n+N;

printf(“现在,请输入相关信息:/n“);

for(i=1;i<=n;i++)

{

printf(“房号:“);

scanf(“%d“,printf(“户主姓名:“);

scanf(“%s“,s[M-n-1+i].name);

printf(“保洁费:“);

scanf(“%d“,printf(“保安费:“);

scanf(“%d“,printf(“已交:“);

scanf(“%d“,}

}

3.4修改模块:

该模块的功能是根据房号或户主姓名找到要修改的记录,并提示用户修改该记录的哪部分信息(保安费、保洁费、停车费、已交),然后根据用户的选择修改相应信息并形成新的报表。

开始

1

选择删除选项

2

输入房号d

定义数组下标i=0

i

d=s[i].fh

输入户主姓名m

定义数组下标i=0

i

比较函数判断有无

无strcmp(m,s[i].name)==0

输出

“没有找到”

输出

“没有找到”

输入要修改信息

1

2

3

4

修改已交

修改停车费

修改保安费

修改保洁费

结束

图3-4修改模块流程图

3.5删除模块

用户输入要删除的房号或姓名,根据房号或户主姓名查找工资记录并删除,删除位置后面的记录往前移动。

开始

1

选择删除选项

2

输入户主姓名m

定义数组下标i=0

i

比较函数判断有无

无strcmp(m,s[i].name)==0

删除s[i]

输出:“没有找到”

输入房号d

定义数组下标i=0

i

d=s[i].fh

删除s[i]

输出:“没有找到”

结束

图3-5删除模块流程图

代码:/************************删除模块***********************/

void

Delete()

{int

i,j=-1,d;char

m[20];

printf(“删除模块:“);

printf(“/n/n/n“);

printf(“*******************************/n“);

printf(“*/n“);

printf(“*/n“);

printf(“*/n“);

printf(“*

1:房号

2:户主姓名/n“);

printf(“*/n“);

printf(“*/n“);

printf(“*/n“);

printf(“*******************************/n“);

printf(“/n/n请输入删除选项:“);

scanf(“%d“,if

(i==1)

{printf(“请输入房号:“);

scanf(“%d“,for(i=0;i

if(d=s[i].fh)

j=i;

}

else

if(i==2)

{printf(“请输入户主姓名:“);

scanf(“%s“,for(i=0;i

if(strcmp(m,s[i].name)==0)

j=i;

}

if(j!=-1)

{

M=M-1;

for(i=j;i<-Ni++)

s[i]=s[i+1];}

else

if(j==-1)

printf(“没有找到!/n“);

}

3.6任务结束后的返回菜单

void

Menu()

{int

sele;

sele=1;

while(sele)

{

system(“cls“);

printf(“/n/n“);

printf(“*************************************/n“);

printf(“*/n“);

printf(“*

1:浏览

2:增加/n“);

printf(“*

3:更改

4:删除/n“);

printf(“*

5:退出/n“);

printf(“*/n“);

printf(“*************************************/n“);

printf(“/n/n请选择功能序号:“);

scanf(“%d“,switch(sele)

{

case

1:Calculate();Display();Menu();break;

case

2:Append();Display();Menu();break;

case

3:Modify();Display();Menu();break;

case

4:Delete();Display();Menu();break;

case

5:exit(0);break;

}

printf(“/n/n按任意键继续/n“);

getch();

}

Wr_file();

}

4.

程序运行结果

4.1主函数界面(也称主界面)

主界面如图所示。

图4-1-1主函数界面

4.2浏览模块

在主界面中输入“1”,然后按Enter键,进入浏览模块,如图所示。

图4-2-1浏览界面1

图4-2-2浏览界面2

4.3增加模块

在主界面中输入“2”,然后按Enter键,进入增加模块,如图所示。

图4-3-1增加界面1

图4-3-2增加界面2

4.4更改模块

在主界面中输入“3”,然后按“Enter”键,进入更改模块,如图所示。

图4-4-1更改界面1

图4-4-2更改界面2

4.5删除模块

在主界面中输入“4”,然后按“Enter”键,进入删除模块,如图所示。

图4-5-1删除界面

5.编程中遇到的困难及解决方法

(1)课程设计刚开始的时候,C语言的教学尚未结束,“用户自己建立数据类型”(包括结构体、链表、共用体、枚举类型、声明新类型等内容)及“对文件的输入输出”两大章重要内容还未进行学习,这样的条件下很难进行程序的编辑。在这种情况下,我采取“磨刀不误砍柴工”的策略,先深入研读并理解了《C程序设计(第四版)》一书中这两张的内容,并将相应的一些简单程序上机调试,做到基本熟练掌握这些内容后,才着手此程序的编译工作。

(2)作为第一个刚C语言不到半年的“入门级”新手,第一次面对此种较大型的程序案例,刚开始着实不知道从何下手,所以我决定先练习《基于PBL的C语言课程设计及学习指导》一书上的实例,通过“庖丁解牛”,我开始懂得不管一个程序多么复杂,其实它都是由最基本的函数组成,只要我们弄清结构、一切都会迎刃而解。

(3)初读题目时无法抽象出问题模型,而“举一反三”中的实例与本课题有很多相似之处,通过“举一反三”,我总结出了此题目的设计思路、功能模块、数据结构设计等。

6.总结心得及良好建议

这次课程设计共八次,时间不长,却感受很深。无论是在学习知识还是在解决问题的能力上,都有深刻的认识,总结如下:

(1)程序设计思路一定要清晰,主函数尽量简洁,这样在调试过程中若出现错误,只要沿着主函数的思路逐个排查即可。一个条理清楚的框架结构有利于编译过程中查找并解决问题。

(2)编译、调试时最好分模块进行。我第一次调试时是在整个程序编辑完后一次性编译,一下子出现了很多处错误。在老师及同学们的指导下,我新建了一个工作区并从主函数开始分模块进行编译调试,一个函数确认没有错误后在加入下一个函数,这样分步进行使每处错误便于查找和更改。

(3)

细节处一定要注意,我刚刚编程时很容易丢落“;”“}”等符号,而这会对程序的编译造成极大的不便。一个优秀的程序员应时刻注意细节,养成细心的良好品质。

7.致谢

在课程设计过程中经常遇到诸多问题,多亏有刘老师指导和班上同学的耐心帮助,才能坚持做下去,在此表示衷心感谢!

8.参考文献

[1]张冬梅,刘远兴,陈晶,王媛妮等.基于PBL的C语言课程设计及学习指导.北京:清华大学出版社,2011

[2]谭浩强.C程序设计(第四版).北京:清华大学出版社,2012

18