当前位置:文档之家› C小区物业管理系统课程设计

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.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循环来实现所有的住户信息都能显示出。

void Display(people people[],int n) /*显示所有记录*/{ int i;printf("\t\t\t-----------------------------------\n"); /*格式头*/ printf("\t\t\tnumber name tel\n");printf("\t\t\t-----------------------------------\n");for(i=1;i<n+1;i++) /*循环输入*/{ printf("\t\t\t%-16s%-15s%d\n",people[i-1].num,people[i-1].name,peop le[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指向后续,就删除所要删除的信息了。

int Delete_a_record(people people [],int n) /*按姓名查找,删除一条记录*/{ char s[20];int i=0,j;printf("\t\t\ttell me his(her) name:"); /*交互式问寻*/scanf("%s",s);while(strcmp(people[i].name,s)!=0&&i<n) i++; /*查找判断*/if(i==n){ printf("\t\t\tnot find!\n"); /*返回失败信息*/return(n); }for(j=i;j<n-1;j++) /*删除操作*/{ strcpy(stud[j].num, people [j+1].num);strcpy(stud[j].name, people stud[j+1].name);people [j].tel= people [j+1].tel; }printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/return(n-1); }void Query_a_record(people people[],int n) /*查找并显示一个记录*/{ char s[20];int i=0;printf("\t\t\tinput his(her) name:"); /*交互式输入*/scanf("\t\t\t%s",s);while(strcmp(people[i].name,s)!=0&&i<n) i++; /*查找判断*/if(i==n){ printf("\t\t\tnot find!\n"); /*输入失败信息*/return; }printf("\t\t\this(her) number:%s\n",people[i].num); /*输出该学生信息*/ printf("\t\t\this(her) tel:%d\n",people[i].tel); }int AddfromText(people people[],int n) /*从文件中读入数据*/{ int i=0,num;FILE *fp; /*定义文件指针*/char filename[20]; /*定义文件名*/printf("\t\t\tInput the filename:");scanf("\t\t\t%s",filename); /*输入文件名*/if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/printf("\t\t\t");system("pause");return(n); }fscanf(fp,"%d",&num); /*读入总记录量*/while(i<num) /*循环读入数据*/{ 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); }void WritetoText(Student people[],int n) /*将所有记录写入文件*/{ int i=0;FILE *fp; /*定义文件指针*/char filename[20]; /*定义文件名*/printf("\t\t\tWrite Records to a Text File\n"); /*输入文件名*/printf("\t\t\tInput the filename:");scanf("\t\t\t%s",filename);if((fp=fopen(filename,"w"))==NULL) /*打开文件*/{ printf("\t\t\tcann't open the file\n");system("pause");return; }fprintf(fp,"%d\n",n); /*循环写入数据*/while(i<n){ fprintf(fp,"%-16s%-15s%d\n",people[i].num,people[i].name,people[i]. tel);i++; }fclose(fp); /*关闭文件*/printf("Successed!\n"); /*返回成功信息*/ }6.退出系统功能。

3.3详细设计out.open("E:\\a.dat",ios::app);do{cout<<"请输入您要增加的住户的姓名:"<<endl;cin>>name;cout<<endl<<" 请输入住户性别:";cin>>sex;cout<<endl<<" 请输入其房间号:";cin>>room_num;cout<<endl<<" 请输入其车库号:";cin>>parking;cout<<endl<<" 请输入联系电话:";cin>>phone_num;cout<<endl<<" 请输入身份证号:";cin>>ID_num;cout<<endl;out<<setw(20)<<name<<setw(5)<<sex<<setw(10)<<room_num<<setw(10) <<parking<<setw(20)<<phone_num<<setw(20)<<ID_num; //文件输入 cout<<" 数据添加成功,想继续添加吗? y / n :"<<endl; cin>>c;cout<<endl;if(c=='n')break;if(c!='y'&&c!='n'){cout<<" 指令错误!请重新输入!"<<endl<<" ";cin>>c;}}while(c=='y');out.close();break;}2)修改数据{charname[20],sex,room_num[10],parking[10],phone_num[20],ID_num[20], c;char na[20],s,room[10],park[10],phone[20],ID[20];do{int flag=0;cout<<" 请输入您要修改的住户的姓名:"<<endl; cin>>na;cout<<endl;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<<"请输入您要修改的住户的姓名:"<<endl; cin>>na;cout<<" 请输入新房间号:";cin>>room;cout<<endl<<" 请输入住户性别:";cin>>s;cout<<endl<<" 请输入其房间号:";cin>>room;cout<<endl<<" 请输入其车库号:";cin>>park;cout<<endl<<" 请输入联系电话:";cin>>phone;cout<<endl<<" 请输入身份证号:";cin>>ID;cout<<endl;sex=s;strcpy(room_num,room);strcpy(parking,park);strcpy(ID_num,ID);strcpy(phone_num,phone);f.seekp(-20l,ios::cur);f<<setw(20)<<na<<setw(5)<<s<<setw(10)<<room<<setw(10)<<park<<se tw(20)<<phone<<setw(20)<<ID; //文件输入cout<<" 修改成功! "<<endl<<endl;break;}}f.close();if(flag==0)cout<<" 您要修改的住户不存在!"<<endl<<endl;cout<<" 您想继续修改吗? y / n :"<<endl;cin>>c;cout<<endl;if(c=='n')break;if(c!='y'&&c!='n'){cout<<" 指令错误!请重新输入!"<<endl<<" ";cin>>c;}}while(c=='y');break;}3)信息查询{charname[20],sex,room_num[10],room[10],parking[10],phone_num[20],ID _num[20];cout<<" 请选择您要进行查询的方式:"<<endl<<endl<<" 1.按住户名查询"<<endl<<endl<<" 2.按房间号查询"<<endl<<endl;int k;cin>>k;switch(k)case 1: //按住户名查询{char na[20];char c;do{in.open("E:\\a.dat",ios::in);in.seekg(0,ios::beg);in.clear();int flag=0;cout<<" 请输入你要查询的住户姓名:"<<endl;cin>>na;cout<<endl;while(!in.eof()){in>>name>>sex>>room_num>>parking>>phone_num>>ID_num;if(strcmp(name,na)==0){flag=1;cout<<" 您要查询的住户:"<<name<<" 的信息是:"<<endl<<endl;cout<<"姓名性别房间号车库号电话号码身份证号 "<<endl;cout<<setw(2)<<name<<setw(5)<<sex<<setw(10)<<room_num<<setw(10 )<<parking<<setw(20)<<phone_num<<setw(20)<<ID_num<<endl;} }in.close();if(flag==0)cout<<" 对不起!您要查询的住户不存在!"<<endl<<endl;cout<<" 您想继续查询吗? y / n :";cin>>c;cout<<endl;if(c=='n')break;if(c!='y'&&c!='n'){cout<<" 指令错误!请重新输入!"<<endl;cin>>c;}}while(c=='y');break;case 2 : //按房间号查询{do{int flag=0;cout<<" 请输入你要查询的房间号:"<<endl;cin>>room;cout<<endl;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<<"您要查询的住户:"<<name<<"的信息是:"<<endl<<endl;cout<<"姓名性别房间号车库号电话号码身份证号 "<<endl;cout<<setw(2)<<name<<setw(5)<<sex<<setw(10)<<room_num<<setw(10) <<parking<<setw(20)<<phone_num<<setw(20)<<ID_num<<endl;} }in.close();if(flag==0)cout<<" 对不起!您要查询的住户不存在!"<<endl;cout<<" 您想继续查询吗? y / n :";char c;cin>>c;cout<<endl;if(c=='n')break;if(c!='y'&&c!='n'){cout<<" 指令错误!请重新输入!"<<endl;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<<" 文件中已无数据"<<endl<<endl;in.close();break;}cout<<" 本系统所有学生数据如下:"<<endl<<endl;cout<<"姓名性别房间号车库号电话号码身份证号 "<<endl;while(!in.eof()){in>>name>>sex>>room_num>>parking>>phone_num>>ID_num;cout<<setw(2)<<name<<setw(5)<<sex<<setw(10)<<room_num<<setw(10)<<parking<<setw(20)<<phone_num<<setw(20)<<ID_num<<endl;}in.close();break;}5)信息删除{charname[20],na[20],sex,room_num[10],parking[10],phone_num[20],ID_n um[20],c;int k;do{int n=0;int flag=0;cout<<" 请输入您要删除的住户的姓名:"<<endl;cin>>na;cout<<endl;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]=new livers(name,sex,room_num,parking,phone_num,ID_num); liv[n]=*s[n];delete s[n];n++;}in.close();for(i=0;i<n;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;i<k;i++)out<<setw(2)<<liv[i].name<<setw(5)<<liv[i].sex<<setw(10)<<liv[i ].room_num<<setw(10)<<liv[i].parking<<setw(20)<<liv[i].phone_nu m<<setw(20)<<liv[i].ID_num;for(i=k+1;i<n;i++)out<<setw(2)<<liv[i].name<<setw(5)<<liv[i].sex<<setw(10)<<liv[i ].room_num<<setw(10)<<liv[i].parking<<setw(20)<<liv[i].phone_nu m<<setw(20)<<liv[i].ID_num;cout<<" 信息删除成功"<<endl<<endl;}if(n=1){}out.close();}elsecout<<" 您要删除的住户不存在!"<<endl<<endl;cout<<" 您想继续删除吗? y / n :"<<endl;cin>>c;cout<<endl;if(c=='n')break;if(c!='y'&&c!='n'){cout<<" 指令错误!请重新输入!"<<endl<<" ";cin>>c;}}while(c=='y');break;}6)退出系统{cout<<"Bye bye! See you next time."<<endl<<endl;cout<<" 冯勇制作"<<endl<<endl<<endl;exit(0); }break; }}//以上为menu菜单中switch控制语句cout<<" 您想继续进行其他操作吗? y / n :"<<endl<<" ";//以下控制循环语句int flag=0;do{cin>>w;cout<<endl;if(w=='n')exit(0);if(w!='y'&&w!='n')cout<<" 指令错误!请重新输入!"<<endl;elseflag=1;}while(flag==0);if(w=='y'){cout<<" 请输入操作代码: 1 输入数据"<<endl;cout<<" 2 增加数据"<<endl;cout<<" 3 修改数据"<<endl;cout<<" 4 信息查询"<<endl;cout<<" 5 信息浏览"<<endl;cout<<" 6 信息删除"<<endl;cout<<" 7 退出系统"<<endl;}cin>>p;}while(w=='y');//最外层的do-while循环}//menu函数结束int main(){key();return 0;}第四章程序的编码与实现4.1主界面的显示图4-1 主界面4.2测试及运行结果图4-2.1增加数据界面图4-2.2修改数据界面图4-2.3信息查询界面图4-2.4信息浏览界面图4-2.5信息删除界面第五章课程设计心得与体会在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。

相关主题