合肥学院计算机科学与技术系课程设计报告2012~2013学年第二学期课程C语言课程设计课程设计名称房屋租赁管理系统学生姓名学号专业班级计本(3)班指导教师华珊珊项响琴2013年6月合肥学院C语言课程设计报告第一章:需求分析 (2)1.1 添加 (3)1.2 显示 (3)1.3 存储 (3)1.4 装入 (3)1.5 查询 (3)第二章:算法设计:.................. 错误!未定义书签。
2.1设计思想 (4)2.2设计表示 (5)2.3设计注释 (11)2.4算法设计的新思想 (11)第三章:小结.............................. 错误!未定义书签。
第四章:参考文献:.. (13)第一章:需求分析编写一个简单的房屋租赁管理程序,帮助管理房屋租赁管理事物。
要求具有备忘录房屋项目管理和租赁信息管理的功能。
其中房屋项目管理包括房屋项目增加、删除、和修改等功能。
租赁信息管理包括房租租售登记表输入和房屋出租查询。
本题程序应提供的基本管理功能有:1)添加:即增加一条房屋信息到房屋项目中;2)显示:即在屏幕上显示所有房屋项目中的信息。
3)存储:即将房屋项目信息保存在一个文件中。
4)装入:即将文件中的信息读入程序。
5)查询:可根据房屋编号查找房屋项目信息,若找到,显示在屏幕上。
6)修改:可修改某编号的房屋项目信息。
第二章:算法设计:1:设计思想:主流程图:子菜单流程图主菜单房屋租赁管理系统子菜单备忘录房屋信息子菜单租赁信息管理添加房屋信息修改房屋信息显示房屋信息查寻房屋信息 删除房屋信息子菜单流程图算法思想:创建房屋结构体类型,每条房屋项目信息都用该结构体来实现,包含地点,面积,户主,租金,租赁人等。
用一个单向链表来管理房屋项目信息,通过链表的遍历可以操作这些数据。
本程序共使用了两个级的菜单。
主菜单,子菜单。
共使用了五个子函数,他们的功能分别是:插入、删除、输出、修改、和查找,通过主函数的调用实现程序的要求。
主函数使用两个switch 语句,得到两个次级菜单。
再在switch 语句的case 中调用子函数。
本系统用到了以下得知识点:1:面向过程程序设计方法 2:界面制作,switch 的应用。
3:动态数组(链表)。
4:文件的读写。
2 :设计表示:输出子函数:void output(house *head)//输出子函数 {{printf("户主名: %s \n",head->house[0]);printf("租户名: %s \n",head->house[1]);printf("地点: %s \n",head->house[2]);printf("面积: %s \n",head->house[3]);printf("租金: %s \n",head->house[4]);printf("\n");head=head->next;}printf("按任意键结束\n");getchar();getchar();}该部分是输出子函数,功能是将数据库中的数据输出,前提是数据库中必须要有数据,否则就会出现错误。
在没有错误的情况下,它将会按如下例子输出::户主名: bob租户名: tom地点 : anhui面积 : 80"租金: 900按任意键结束查找子函数void Search(int n,house *head){char st[100];int t,flag=0;system("cls");t=n-1;if (n==1) printf("\t请输入待查找户主姓名:");if (n==3) printf("\t请输入待查找租主姓名:");if (n==5) printf("\t请输入待查找房子地点:");if (n==2) printf("\t请输入待查找房子面积:");if (n==4) printf("\t请输入待查找房子租金:");getchar();while (head!=NULL){if (strcmp(head->house[t],st)==0){output(head,1);flag++;}head=head->next;}if (flag!=0) printf("查找到 %d 位满足条件\n",flag);else printf("未找到满足条件房子信息\n");getchar();}该部分是查找子函数,其主要功能是按照操作的要求查找数据库中的数据,并输出到显示器上。
如果数据库中没有要找的数据,将会提示,没有符合要求的数据。
若有数据将会像如下例子那样的输出:请输入待查找的户主姓名:户主名: bob租户名: tom地点 : anhui面积 : 80"租金: 900修改子函数void Change(house *head,int n){char ch[5][100];FILE *fp;house *p=head;int i;system("cls");getchar();printf("请输入要修改房屋户主名:");gets(ch[0]);printf("请输入要修改房屋租主名:");gets(ch[1]);printf("请输入要修改房屋地点:");printf("请输入要修改房屋面积:");gets(ch[3]);printf("请输入要修改面积租金:");gets(ch[4]);while (p!=NULL){if (strcmp(p->house[n],ch[n])==0){for (i=0;i<=4;i++)strcpy(p->house[i],ch[i]);fp=fopen("xinxi.txt","w");while (head!=NULL){fprintf(fp,"%s",head->house[0]);fprintf(fp," %s",head->house[1]);fprintf(fp," %s",head->house[2]);fprintf(fp," %s",head->house[3]);fprintf(fp," %s",head->house[4]);fprintf(fp,"\n");head=head->next;}fclose(fp);return ;}head=head->next;}printf("没有找到符合条件信息,按任意键结束\n");getchar();}该部分是修改子函数,首先查找要修改的数据,然后在说明要修改哪个信息,该子函数就会在数据库中将原有的数据修改,如果找不到要修改的数据,将会提示,没有找到符合条件的信息,按任意键结束。
添加子函数void Insert()//添加子函数int n,i;house *q,*p;FILE *fp;fp=fopen("shujvku.txt","a+");if (fp==NULL){printf("原文件损坏,请检查后重新运行\n"); getchar();return ;}printf("请输入需要添加的个数:");scanf("%d",&n);getchar();for (i=0;i<n;i++){p=(house *)malloc(sizeof(house));printf("请输入需添加户主名:");gets(p->house[0]);printf("请输入需添加租主名:");gets(p->house[1]);printf("请输入需添加房屋地点:");gets(p->house[2]);printf("请输入需添加房屋面积:");gets(p->house[3]);printf("请输入需添加房屋租金:");gets(p->house[4]);fprintf(fp,"\n");fprintf(fp,"%s",p->house[0]);fprintf(fp," %s",p->house[1]);fprintf(fp," %s",p->house[2]);fprintf(fp," %s",p->house[3]);fprintf(fp," %s",p->house[4]);}fclose(fp);该部分是添加子函数,将要增加的数据添加到数据库中。
格式是,户主名、租赁人名、地点、面积、租金。
首先该子函数会提示增加几条信息。
然后将会将你输入的信息输入到数据库中。
删除子函数house *Del(int n,house *head){char st[100];int t,flag=0,judge;house *p,*q;system("cls");t=n-1;if (n==1) printf("\t请输入需删除户主名:");if (n==2) printf("\t请输入需删除租主名:");getchar();gets(st);while (strcmp(head->house[t],st)==0){head=head->next;flag++;}q=p=head;while (p!=NULL){judge=1;if (strcmp(p->house[t],st)==0){q->next=p->next;judge=0;flag++;}if (judge==1) q=q->next;p=q->next;}if (flag!=0){WritenFile(head);printf("删除 %d 位满足条件\n",flag);}else printf("未找到满足条件房屋信息\n");getchar();return head;}该部分是删除子函数,将会按操作删除数据库中的数据信息。