C++小区物业管理系统课程设计.docx
《C++小区物业管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《C++小区物业管理系统课程设计.docx(36页珍藏版)》请在冰点文库上搜索。
![C++小区物业管理系统课程设计.docx](https://file1.bingdoc.com/fileroot1/2023-6/4/d6a841a9-824e-4d82-ad7e-403028e6d8d5/d6a841a9-824e-4d82-ad7e-403028e6d8d51.gif)
C++小区物业管理系统课程设计
华科学院信息管理与信息系统专业
《程序设计综合课程设计》报告
(2011/2012学年第一学期)
学生姓名:
王奥辉
学生班级:
信息管理102202H
学生学号:
17
指导教师:
薛颂东
20011年 12月 30日
小
区
物
业
管
理
1、课程设计的目的及要求............................................4
2、课程设计任务....................................................5
3、设计内容........................................................6
4、程序的编码与实现...............................................25
5、课程设计心得与体会.............................................28
6、程序源代码.....................................................29
第一章课程设计的目的及要求
1.1课程设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计基础(C++)》课程后进行的一次全面的综合设计。
本课程设计的目的和任务:
1.巩固和加深学生对C++语言课程的基本知识的理解和掌握。
2.掌握C++语言编程和程序调试的基本技能。
3.利用C++语言进行基本的软件设计。
4.掌握书写程序设计说明文档的能力。
5.提高运用C++语言解决实际问题的能力。
1.2课程设计要求
进一步巩固《C++程序设计》所学的知识,特别加强数组,指针,结构体,文件数据类型的应用,熟悉面向过程的结构化和面向对象可视化程序设计方法,培养结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,锻炼程序设计的能力,以及用C/C++语言解决实际问题的能力,为以后后续课程的学习打好基础。
第2章课程设计任务
2.1课程设计题目
小区物业管理系统
2.2课程设计实现
可以通过操作输入、增加、修改、浏览、查询、删除小区内住户信息,来实现对小区内物业的管理。
第三章设计内容
3.1需求分析
小区物业信息管理系统是针对当代社会,住宅小区越来越成为居住的主流这一市场需要而应运而生的,是为小区管理着和小区用户更好的维护小区各项物业管理业务处理工作而开发的管理软件。
小区管理系统包括小区成员的所住单元、住户号、工作单位、姓名、电话号码等信息;
——小区管理系统主要提供以下功能:
1.系统的登录界面(主要包括用户名、密码的设置、新用户的创建、密码的修改等);
2.系统以菜单方式工作
3.住户信息录入功能——输入
4.住户信息增加、修改、查询功能
(1)按住户名
(2)按房间号
5.住户信息浏览功能——显示
6.住户信息删除功能
3.2总体设计
图3-2-1开始登录界面
整个系统除了主函数外,另外还有6个函数,实现六大功能:
增加数据功能、修改数据功能、信息查询功能、信息浏览功能、信息删除功能、退出系统功能。
各个函数的详细设计说明分别如下:
1.增加数据功能:
基本原理是用指针*P来创建一个存储单元,来存储住户的信息:
住户的姓名、性别、电话号码、身份证号码。
然后再和链变相连,有结构体链表来存储所有住户的信息。
*MP指针只想最后一个结构体链表的最后一个结构体。
2.修改数据功能:
与增加数据功能输入方式一样
3.信息浏览功能:
用printf来显示住户的信息,并且用for循环来实现所有的住户信息都能显示出。
voidDisplay(peoplepeople[],intn)/*显示所有记录*/
{inti;
printf("\t\t\t-----------------------------------\n");/*格式头*/
printf("\t\t\tnumbernametel\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i{printf("\t\t\t%-16s%-15s%d\n",people[i-1].num,people[i-1].name,people[i-21].tel);
if(i>1&&i%10==0)/*每十个暂停*/
{printf("\t\t\t-----------------------------------\n");/*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");}}
printf("\t\t\t");
system("pause");
}
4.信息删除功能:
首先用指针找到此住户的前驱和后续,然后让前驱的NEXT指向后续,就删除所要删除的信息了。
首先用指针找到此住户的前驱和后续,然后让前驱的NEXT指向后续,就删除所要删除的信息了。
intDelete_a_record(peoplepeople[],intn)/*按姓名查找,删除一条记录*/
{chars[20];
inti=0,j;
printf("\t\t\ttellmehis(her)name:
");/*交互式问寻*/
scanf("%s",s);
while(strcmp(people[i].name,s)!
=0&&iif(i==n)
{printf("\t\t\tnotfind!
\n");/*返回失败信息*/
return(n);}
for(j=i;j{strcpy(stud[j].num,people[j+1].num);
strcpy(stud[j].name,peoplestud[j+1].name);
people[j].tel=people[j+1].tel;}
printf("\t\t\tDeleteSuccessed!
\n");/*返回成功信息*/
return(n-1);}
voidQuery_a_record(peoplepeople[],intn)/*查找并显示一个记录*/
{chars[20];
inti=0;
printf("\t\t\tinputhis(her)name:
");/*交互式输入*/
scanf("\t\t\t%s",s);
while(strcmp(people[i].name,s)!
=0&&iif(i==n)
{printf("\t\t\tnotfind!
\n");/*输入失败信息*/
return;}
printf("\t\t\this(her)number:
%s\n",people[i].num);/*输出该学生信息*/
printf("\t\t\this(her)tel:
%d\n",people[i].tel);}
intAddfromText(peoplepeople[],intn)/*从文件中读入数据*/
{inti=0,num;
FILE*fp;/*定义文件指针*/
charfilename[20];/*定义文件名*/
printf("\t\t\tInputthefilename:
");
scanf("\t\t\t%s",filename);/*输入文件名*/
if((fp=fopen(filename,"rb"))==NULL)/*打开文件*/
{printf("\t\t\tcann'topenthefile\n");/*打开失败信息*/
printf("\t\t\t");
system("pause");
return(n);}
fscanf(fp,"%d",&num);/*读入总记录量*/
while(i{fscanf(fp,"%s%s%d",peole[n+i].num,people[n+i].name,&people[n+i].tel);
i++;}
n+=num;
fclose(fp);/*关闭文件*/
printf("\t\t\tSuccessed!
\n");
printf("\t\t\t");
system("pause");
return(n);}
voidWritetoText(Studentpeople[],intn)/*将所有记录写入文件*/
{inti=0;
FILE*fp;/*定义文件指针*/
charfilename[20];/*定义文件名*/
printf("\t\t\tWriteRecordstoaTextFile\n");/*输入文件名*/
printf("\t\t\tInputthefilename:
");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL)/*打开文件*/
{printf("\t\t\tcann'topenthefile\n");
system("pause");
return;}
fprintf(fp,"%d\n",n);/*循环写入数据*/
while(i{fprintf(fp,"%-16s%-15s%d\n",people[i].num,people[i].name,people[i].tel);
i++;}
fclose(fp);/*关闭文件*/
printf("Successed!
\n");/*返回成功信息*/}
6.退出系统功能。
3.3详细设计
图3-3-1系统功能模块图
1.系统操作流程图
N Y Y
N
图3-3-2系统操作流程图
2.各部分详细流程
1)增加数据
{charname[20],sex,room_num[10],parking[10],phone_num[20],ID_num[20],c;
out.open("E:
\\a.dat",ios:
:
app);
do
{
cout<<"请输入您要增加的住户的姓名:
"<cin>>name;
cout<";
cin>>sex;
cout<";
cin>>room_num;
cout<";
cin>>parking;
cout<";
cin>>phone_num;
cout<";
cin>>ID_num;
cout<out<cout<<"数据添加成功,想继续添加吗?
y/n:
"<cin>>c;
cout<if(c=='n')break;
if(c!
='y'&&c!
='n')
{cout<<"指令错误!
请重新输入!
"<cin>>c;}
}while(c=='y');
out.close();
break;
}
2)修改数据
{charname[20],sex,room_num[10],parking[10],phone_num[20],ID_num[20],c;
charna[20],s,room[10],park[10],phone[20],ID[20];
do
{intflag=0;
cout<<"请输入您要修改的住户的姓名:
"<cin>>na;
cout<f.open("E:
\\a.dat",ios:
:
in|ios:
:
out);
f.seekg(0,ios:
:
beg);
f.clear();
while(!
f.eof())
{f>>name;
if(strcmp(name,na)==0)
{flag=1;
cout<<"请输入您要修改的住户的姓名:
"<cin>>na;
cout<<"请输入新房间号:
";
cin>>room;
cout<";
cin>>s;
cout<";
cin>>room;
cout<";
cin>>park;
cout<";
cin>>phone;
cout<";
cin>>ID;
cout<sex=s;
strcpy(room_num,room);
strcpy(parking,park);
strcpy(ID_num,ID);
strcpy(phone_num,phone);
f.seekp(-20l,ios:
:
cur);
f<cout<<"修改成功!
"<}
f.close();
if(flag==0)
cout<<"您要修改的住户不存在!
"<cout<<"您想继续修改吗?
y/n:
"<cin>>c;
cout<if(c=='n')break;
if(c!
='y'&&c!
='n')
{cout<<"指令错误!
请重新输入!
"<cin>>c;}
}while(c=='y');
break;
}
3)信息查询
{charname[20],sex,room_num[10],room[10],parking[10],phone_num[20],ID_num[20];
cout<<"请选择您要进行查询的方式:
"<intk;
cin>>k;
switch(k)
case1:
//按住户名查询
{charna[20];charc;
do{
in.open("E:
\\a.dat",ios:
:
in);
in.seekg(0,ios:
:
beg);
in.clear();
intflag=0;
cout<<"请输入你要查询的住户姓名:
"<cin>>na;
cout<while(!
in.eof())
{in>>name>>sex>>room_num>>parking>>phone_num>>ID_num;
if(strcmp(name,na)==0)
{flag=1;
cout<<"您要查询的住户:
"<"<cout<<"姓名性别房间号车库号电话号码身份证号"<cout<(2)<}
in.close();
if(flag==0)
cout<<"对不起!
您要查询的住户不存在!
"<cout<<"您想继续查询吗?
y/n:
";
cin>>c;
cout<if(c=='n')break;
if(c!
='y'&&c!
='n')
{cout<<"指令错误!
请重新输入!
"<cin>>c;}
}while(c=='y');
break;
case2:
//按房间号查询
{
do{
intflag=0;
cout<<"请输入你要查询的房间号:
"<cin>>room;
cout<in.open("E:
\\a.dat",ios:
:
in);
in.seekg(0,ios:
:
beg);
in.clear();
while(!
in.eof())
{in>>name>>sex>>room_num>>parking>>phone_num>>ID_num;
if(strcmp(room_num,room)==0)
{flag=1;
cout<<"您要查询的住户:
"<"<cout<<"姓名性别房间号车库号电话号码身份证号"<cout<(2)<}
in.close();
if(flag==0)
cout<<"对不起!
您要查询的住户不存在!
"<cout<<"您想继续查询吗?
y/n:
";
charc;
cin>>c;
cout<if(c=='n')break;
if(c!
='y'&&c!
='n')
{cout<<"指令错误!
请重新输入!
"<cin>>c;}
}while(c=='y');
break;
default:
cout<<"对不起,您输入的指令有误:
";}break;
}break;
4)信息浏览
{charname[20],sex,room_num[10],parking[10],phone_num[20],ID_num[20];
in.open("E:
\\a.dat",ios:
:
in);
in.seekg(0,ios:
:
beg);
in.clear();
if(in.get()==EOF){cout<<"文件中已无数据"<cout<<"本系统所有学生数据如下:
"<cout<<"姓名性别房间号车库号电话号码身份证号"<while(!
in.eof())
{in>>name>>sex>>room_num>>parking>>phone_num>>ID_num;
cout<(2)<}
in.close();
break;
}
5)信息删除
{charname[20],na[20],sex,room_num[10],parking[10],phone_num[20],ID_num[20],c;
intk;
do
{intn=0;intflag=0;
cout<<"请输入您要删除的住户的姓名:
"<cin>>na;
cout<in.clear();
in.open("E:
\\a.dat",ios:
:
in);
in.seekg(0,ios:
:
beg);
while(!
in.eof())
{in>>name>>sex>>room_num>>parking>>phone_num>>ID_num;
s[n]=newlivers(name,sex,room_num,parking,phone_num,ID_num);
liv[n]=*s[n];
deletes[n];
n++;}
in.close();
for(i=0;i{if(strcmp(liv[i].name,na)==0)
{flag=1;k=i;}
}
if(flag==1)
{out.open("E:
\\a.dat",ios:
:
out);
out.seekp(0,ios:
:
beg);
if(n>1)
{
for(i=0;iout<(2)<for(i=k+1;iout<(2)<cout<<"信息删除成功"<}
if(n=1){}
out.close();
}
else
cout<<"您要删除的住户不存在!
"<cout<<"您想继续删除吗?
y/n:
"<cin>>c;
cout<if(c=='n')break;
if(c!
='y'&&c!
='n')
{cout<<"指令错误!
请重新输入!
"<cin>>c;}
}while(c=='y');
break;
}
6)退出系统
{cout<<"Byebye!
Seeyounexttime."<cout<<"冯勇制作"<