小区物业管理系统.docx

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

小区物业管理系统.docx

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

小区物业管理系统.docx

小区物业管理系统

一、设计目的

学会用C语言编程实现小区管理系统;

能熟练的掌握各个功能函数的熟练编写和理解;

二、设计内容

小区管理系统设计:

小区管理系统包括小区成员的所住单元、住户号、工作单位

姓名、电话号码等信息;

——小区管理系统主要提供以下功能:

1.系统的登录界面(主要包括用户名、密码的设置、新用户的创建、密码的修改等);

2.系统以菜单方式工作

3.住户信息录入功能——输入

4.住户信息浏览功能——显示

5.住户信息查询、修改、增加功能

(1)按姓名

(2)按电话号码

6.住户信息删除功能

7.住户信息以文件方式保存、读取

8.住户信息的统计

三、概要设计

1.功能模块图

依据程序的数据结构和功能,遵照“自顶向下”原则,采用基于函数的逐步求精法,描述该程序的层次结构:

2.各个模块功能的详细描述

●主函数:

main();

●登录菜单:

.进入主菜单:

menu();

.修改密码函数:

repassword();

.登录界面函数:

print1();

创建用户函数:

usercreat();

●主菜单:

输入函数:

head=create();

输出函数:

print(head);

住户信息文件的保存函数:

save_inf(head);

住户信息文件的读取函数:

head=read_inf();

住户信息的查找函数:

find(head);

住户信息的修改函数:

re(head);

住户信息的删除函数:

delete(head);

住户信息的添加函数:

add(head);

信息的排序:

sort(head);

住户信息的统计:

count(head);

四、详细设计

1.功能函数的调用关系图

2.各功能函数的数据流程图

输出函数print()的流程图

 

输入函数create()的流程图

 

执行查找函数find()流程图

 

执行修改函数re()的流程图

 

执行删除函数delete的流程图

 

添加函数add的流程图

 

执行排序sort函数的流程图

 

3.重点设计及编码

1)密码输入函数(实现密码能够再输错的情况下修改);

编码:

printf("\n\n**-----------请输入密码(6位)loginin:

");

for(i=0;i<7;i++)

{

mima[i]=getch();

if(mima[i]=='\r')

break;

if(mima[i]=='\b')

{

printf("\b\b");

i=i-2;

}

elseif(mima[i]!

='\r')

printf("*");

}

mima[i]='\0';

2)从文件中实现一次读取:

编码:

fp=fopen("mima.txt","rt");

while(fscanf(fp,"%s%s",n,a)!

=EOF)

{

if(strcmp(mima,a)==0&&strcmp(root,n)==0)//进行判断是否一致

{

printf("\n\n***********恭喜你登录成功!

***********\n");

lead();

break;

}

}

fclose(fp);

if(fp==NULL)

{

printf("\n\n*-----抱歉登录指令错误,请选择(3)重新登录!

-------*\n");

}

3)登录函数实现与主体函数的链接:

编码:

lead()

{

printf("***************-----欢迎进入登录界面-----*************************\n\n");

printf("*-------------------------1.进入主菜单--------------------------------*\n");

printf("*-------------------------2.修改密码----------------------------------*\n");

printf("*-------------------------3.重新登录----------------------------------*\n");

printf("*-------------------------4.创建用户----------------------------------*\n");

printf("*-------------------------0.退出系统----------------------------------*\n");

printf("***********************************************************************\n");

}

4)输入函数找准链表节点进行输入:

编码:

structperson*head,*p1,*p2;

head=p2=(structperson*)malloc(N);/*head*p2都指向头结点*/

printf("请输入:

单元号户号姓名性别工作单位电话号码(输入户号0结束)\n");

p1=(structperson*)malloc(N);

scanf("%s%ld%s%s%s%s",p1->num,&p1->num1,p1->name,p1->sex,p1->com,p1->tel);

while(p1->num1!

=0)

{

p2->next=p1;/*将新结点连接到表尾*/

p2=p1;/*p2指向新的表尾*/

p1=(structperson*)malloc(N);/*p1指向新申请的结点*/

scanf("%s%ld%s%s%s%s",p1->num,&p1->num1,p1->name,p1->sex,p1->com,p1->tel);

}

p2->next=NULL;/*表尾结点next域置空*/

free(p1);/*释放无效空间*/

returnhead;}

5)文件的保存函数与读取函数要保持一致:

编码:

for(stu=h->next;stu!

=NULL;stu=stu->next)

fprintf(fp,"%s%ld%s%s%s%s\n",stu->num,stu->num1,stu->name,stu->sex,stu->com,stu->tel);/*格式化字符串写函数*/

printf("\n文件已成功保存,按任意键返回!

\n");

getch();/*从键盘上输入一个字符但不会现在屏幕上*/

fclose(fp);/*将文件所指的指针FP关闭*/

}

fscanf(fp,"%s%ld%s%s%s%s\n",stu->num,&stu->num1,stu->name,stu->sex,stu->com,stu->tel);/*格式化字符读函数*/

r->next=stu;

r=stu;

}

r->next=NULL;/*尾指针置空*/

fclose(fp);

6)排序函数关键在找最大节点的位置时能记录前一节点的位置:

编码:

structperson*p,*pre1,*pre2,*r,*s;

intcount=0,i;

for(s=h;s->next!

=NULL;s=s->next)/*统计节点数*/

{

count++;

}

for(s=h;s->next!

=NULL;s=s->next);/*循环体语句为空,找尾节点*/

for(i=1;i

{

pre1=h;/*pre1指向r前的一个节点*/

pre2=h->next;/*pre2指向p前的一个节点*/

r=pre1->next;

p=pre2->next;

while(p!

=s)//不等于尾节点

{

if(p->num1>r->num1)

{

pre1=pre2;/*指针r始终指向数据较大的节点*/

r=p;

}

pre2=pre2->next;//依次往下查找

p=p->next;

}

pre1->next=r->next;//释放最大的节点

r->next=s->next;//给s节点附上新的节点

s->next=r;

}

for(p=s->next,pre1=s;s->num1>p->num1;pre1=pre1->next,p=p->next);//给s节点后的进行排序

h->next=s->next;//找到插入的位置

s->next=p;

pre1->next=s;

printf("按任意键继续\n");

getch();

7)修改函数中要实现能对修改选项的选择:

编码:

while(p->next!

=NULL)

{

p=p->next;/*继续查找*/

if(strcmp(p->name,name)==0)

{

while(choice!

=0)/*进行选择修改信息*/

{

printf("请输入要修改的选项:

1.单位号2.房户号3.工作单位4.电话号码0:

退出\n");

printf("请选择(0--4):

");

scanf("%d",&choice);

if(choice==1)

{

printf("请输入新的单位号:

");

scanf("%s",p->num);

}

if(choice==2)

{

printf("请输入新的房户号:

");

scanf("%ld",&p->num1);

}

if(choice==3)

{

printf("请输入新的工作单位:

");

scanf("%s",p->com);

}

if(choice==4)

{

printf("请输入新的电话号码:

");

scanf("%s",p->tel);

}

}

}

return1;

}

return0;

8)删除函数关键在找要删除节点的位置:

编码:

while(p!

=NULL)

{

if(strcmp(p->name,name)==0)/*找到要删除的节点*/

{

p0->next=p->next;/*后续结点链接到前驱结点之后*/

free(p);

return1;

}

p0=p;/*移向指针继续查找*/

p=p->next;

9)添加函数关键在找到要添加的位置:

编码:

while(p0->next!

=NULL&&p0->next->name==p->name)

p0=p0->next;/*继续查找添加的位置*/

if(p0->next!

=NULL&&p0->next->name==p->name)

{

free(p);/*释放新结点的存储空间*/

return0;/*不添加就返回0*/

}

p->next=p0->next;/*后续结点连接到新结点之后*/

p0->next=p;/*新节点连接到前驱接点之后*/

10)统计函数在于实现住户单元号相同与不同的情况下的记录:

编码:

structperson*p;

sort(h);

i=0,j=0,dcount=0;

drcount[j]=0;

for(p=h->next,d[i]=p->num,dcount=1;p!

=NULL;p=p->next)

{

count++;//统计总人数

if(d[i]!

=p->num)//楼号不相等则继续查找

{

i++;

d[i]=p->num;

dcount++;

j++;

drcount[j]=1;//该栋楼人数加为1

}

else

drcount[j]++;//统计每栋住户楼的人数

}

五、测试数据及结果

1.正常数据及运行结果

登录界面

主菜单

从文件中读取信息

从键盘中输入信息

住户信息的查找

住户信息的删除

住户信息的修改

住户信息的添加

2.异常测试数据及运行结果

六.调试情况,设计技巧及体会

1.改进方案

2.体会:

这是我学习C语言依赖第一次做课程设计,开始时,既激动又紧张,并且还不知道该如何下手操作,但通过查找资料和自己多摸索,经过一个星期时间研究,我设计的主题——通讯录管理系统终于完成了!

通过这次课程设计,我收获了很多很多,尤其是对C语言这门课的看法,以前总以为这门课很单调很枯燥无用,所以一直不认真学习,但经过这次自己动手完成设计后,我感觉C语言这门课真的很有意思,很神奇。

经过一堆源代码的编译后,一个小型的程序便显现出来了,当看到自己所做的程序完整无误的运行起来时,自己心里很是欣慰,这一个礼拜的汗水没有白流,不但收获了很多,而且更是增大了学习好这门课的信心!

在以后的学习中,我一定会努力的钻研,把课本上的知识都弄通,然后尽可能的自己找一些设计题目来做作,增大自己的知识面与动手能力,我相信在老师的教诲与我自己的努力下,我一定能将这门课学好,学精,学以致用!

相信自己!

我能行!

七.参考文献

书籍:

[1]谭浩强C程序设计(第三版)清华大学出版社

[2]谭浩强C程序设计题解与上机指导(第三版)清华大学出版社

八、附录

源代码:

#include

#include

#include

#include

#defineNsizeof(structperson)

login();

usercreat();

lead();

structperson

{

charnum[10];/*住户单元号*/

longnum1;/*住户户号*/

charname[20];/*住户姓名*/

charsex[10];/*性别*/

charcom[20];/*工作单位*/

chartel[20];/*电话号码*/

structperson*next;

};

print1()//登录界面

{

charchoice;

printf("------******************************-----------\n");

printf("------******************************-----------\n");

printf("*------你是否要以管理员的身份登录y/n:

");

flushall();

scanf("%c",&choice);//进行选择操作

if(choice=='y')

login();//登录函数

elseif(choice=='n')

usercreat();//创建函数

printf("\n");

}

usercreat()//创建函数

{

FILE*fp;

inti,flag=1;

charstr[20],mini[7];

fp=fopen("mima.txt","a+");//想文件中添加信息

if(fp==NULL)

{

printf("**-----------对不起,无法打开文件,按任意键请退出!

");

getch();

exit

(1);

}

if(flag=1)

{

printf("\n请输入你要创建的用户名str:

");

scanf("%s",str);

}

if(strcmp(str,"cuiming")==0)

{

flag=0;

printf("抱歉该用户名已存在请重新输入!

\n");

}

printf("\n请输入用户密码mini(6位):

");

for(i=0;i<7;i++)

{

mini[i]=getch();

if(mini[i]=='\r')

break;

if(mini[i]=='\b')

{

printf("\b\b");

i=i-2;

}

elseif(mini[i]!

='\r')

printf("*");

}

mini[i]='\0';

fprintf(fp,"%s%s",str,mini);

fclose(fp);

fp=fopen("mima.txt","rt");

while(!

feof(fp))

{

fscanf(fp,"%s%s",str,mini);

}

fclose(fp);

}

login()//登录函数

{

FILE*fp;

inti=0;

charmima[7],a[7];

charroot[20],n[10];

fp=fopen("mima.txt","rt");//从文件中读取信息

fscanf(fp,"%s%s",n,a);

printf("\n**-----------请输入用户名root:

");

scanf("%s",root);

printf("\n\n**-----------请输入密码(6位)loginin:

");

for(i=0;i<7;i++)

{

mima[i]=getch();

if(mima[i]=='\r')

break;

if(mima[i]=='\b')

{

printf("\b\b");

i=i-2;

}

elseif(mima[i]!

='\r')

printf("*");

}

mima[i]='\0';

fp=fopen("mima.txt","rt");

while(fscanf(fp,"%s%s",n,a)!

=EOF)

{

if(strcmp(mima,a)==0&&strcmp(root,n)==0)//进行判断是否一致

{

printf("\n\n***********恭喜你登录成功!

***********\n");

lead();

break;

}

}

fclose(fp);

if(fp==NULL)

{

printf("\n\n*-----抱歉登录指令错误,请选择(3)重新登录!

-------*\n");

}

}

repassword()//修改密码函数

{

FILE*fp;

inti;

charmimi[7],root1[20];

charmm[7],nn[7];

fp=fopen("mima.txt","wt");

if(fp==NULL)

{

printf("**-----------对不起,无法打开文件,按任意键请退出!

");

getch();

exit

(1);

}

printf("请输入你的用户名:

");

scanf("%s",root1);

printf("请输入你原来的密码:

");

for(i=0;i<7;i++)

{

mimi[i]=getch();

if(mimi[i]=='\r')

break;

if(mimi[i]=='\b')

{

printf("\b\b");

i=i-2;

}

elseif(mimi[i]!

='\r')

printf("*");

}

mimi[i]='\0';

printf("\n请输入你的新密码:

");

for(i=0;i<7;i++)

{

nn[i]=getch();

if(nn[i]=='\r')

break;

if(nn[i]=='\b')

{

printf("\b\b");

i=i-2;

}

elseif(nn[i]!

='\r')

printf("*");

}

nn[i]='\0';

printf("\n请输入确认密码:

");

for(i=0;i<7;i++)

{

mm[i]=getch();

if(mm[i]=='\r')

break;

if(mm[i]=='\b')

{

printf("\b\b");

i=i-2;

}

elseif(mm[i]!

='\r')

printf("*");

}

mm[i]='\0';

if(strcmp(mm,nn)!

=0)

printf("\n抱歉你两次所输密码一致!

");

else

printf("\n恭喜,你的密码修改成功!

\n");

fprintf(fp,"%s%s",root1,mm);

fclose(fp);

fp=fopen("mima.txt","rt");

while(!

feof(fp))

{

fscanf(fp,"%s%s",root1,mm);

}

fclose(fp);

}

lead()

{

printf("***************-----欢迎进入登录界面-----*************************\n\n");

printf("*-------------------------1.进入主菜单--------------------------------*\n");

printf("*-------------------------2.修改密码----------------------------------*\n");

printf("*-------------------------3.重新登录----------------------------------*\n");

printf("*-------------------------4.创建用户----------------------------------*\n");

printf("*-------------------------0.退出系统----------------------------------*\n");

printf("***********************************************************************\n");

}

menu()

{

printf("\t\t\t*****************************\n");

printf("\t\t\t╭╮\n");

printf("\t\t\t┣┫\n");

printf("\t\t\t┣⊙o⊙┫\n");

printf("\t\t\t┣┫\n");

printf("\t**----------------欢迎进入小区物业管理系统--------------**\n");

printf("\t\t

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

当前位置:首页 > 经管营销 > 销售营销

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

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