房屋租赁管理报告书.docx
《房屋租赁管理报告书.docx》由会员分享,可在线阅读,更多相关《房屋租赁管理报告书.docx(12页珍藏版)》请在冰豆网上搜索。
房屋租赁管理报告书
合肥学院C语言课程设计报告
一、需求分析
编写一个简单的房屋租赁管理程序,帮助管理房屋租赁管理事物。
要求具有备忘录房屋项目管理和租赁信息管理的功能。
其中房屋项目管理包括房屋项目增加、删除、和修改等功能。
租赁信息管理包括房租租售登记表输入和房屋出租查询。
本题程序应提供的基本管理功能有:
1)添加:
即增加一条房屋信息到房屋项目中;
2)显示:
即在屏幕上显示所有房屋项目中的信息。
3)存储:
即将房屋项目信息保存在一个文件中。
4)装入:
即将文件中的信息读入程序。
5)查询:
可根据房屋编号查找房屋项目信息,若找到,显示在屏幕上。
6)修改:
可修改某编号的房屋项目信息。
二、算法设计:
1:
设计思想:
主流程图:
子菜单流程图
子菜单流程图
算法思想:
创建房屋结构体类型,每条房屋项目信息都用该结构体来实现,包含地点,面积,户主,租金,租赁人等。
用一个单向链表来管理房屋项目信息,通过链表的遍历可以操作这些数据。
本程序共使用了两个级的菜单。
主菜单,子菜单。
共使用了五个子函数,他们的功能分别是:
插入、删除、输出、修改、和查找,通过主函数的调用实现程序的要求。
主函数使用两个switch语句,得到两个次级菜单。
再在switch语句的case中调用子函数。
本系统用到了以下得知识点:
1:
面向过程程序设计方法
2:
界面制作,switch的应用。
3:
动态数组(链表)。
4:
文件的读写。
2:
设计表示:
输出子函数:
{voidoutput(house*head,intflag)
{
while(head!
=NULL)
{
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;
if(flag)
{
printf("按任意键结束\n");
getchar();
getchar();
return;
}
}
printf("按任意键结束\n");
getchar();
getchar();
}
}
该部分是输出子函数,功能是将数据库中的数据输出,前提是数据库中必须要有数据,否则就会出现错误。
在没有错误的情况下,它将会按如下例子输出:
:
户主名:
bob
租户名:
tom
地点:
anhui
面积:
80
"租金:
900
按任意键结束
查找子函数
voidSearch(intn,house*head)
{
charst[100];
intt,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();
gets(st);
while(head!
=NULL)
{
if(strcmp(head->house[t],st)==0)
{
output(head,1);
flag++;
}
head=head->next;
}
if(flag!
=0)printf("查找到%d位满足条件\n",flag);
elseprintf("未找到满足条件房子信息\n");
getchar();
}
该部分是查找子函数,其主要功能是按照操作的要求查找数据库中的数据,并输出到显示器上。
如果数据库中没有要找的数据,将会提示,没有符合要求的数据。
若有数据将会像如下例子那样的输出:
请输入待查找的户主姓名:
户主名:
bob
租户名:
tom
地点:
anhui
面积:
80
"租金:
900
修改子函数
voidChange(house*head,intn)
{
charch[5][100];
FILE*fp;
house*p=head;
inti;
system("cls");
getchar();
printf("请输入要修改房屋户主名:
");
gets(ch[0]);
printf("请输入要修改房屋租主名:
");
gets(ch[1]);
printf("请输入要修改房屋地点:
");
gets(ch[2]);
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();
}
该部分是修改子函数,首先查找要修改的数据,然后在说明要修改哪个信息,该子函数就会在数据库中将原有的数据修改,如果找不到要修改的数据,将会提示,没有找到符合条件的信息,按任意键结束。
添加子函数
voidInsert()
{
intn,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{
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]);
if(i==0)tail->next=p;
elseq->next=p;
q=p;
}
q->next=NULL;
tail=q;
fclose(fp);
}
该部分是添加子函数,将要增加的数据添加到数据库中。
格式是,户主名、租赁人名、地点、面积、租金。
首先该子函数会提示增加几条信息。
然后将会将你输入的信息输入到数据库中。
删除子函数
house*Del(intn,house*head)
{
charst[100];
intt,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);
}
elseprintf("未找到满足条件房屋信息\n");
getchar();
returnhead;
}
该部分是删除子函数,将会按操作删除数据库中的数据信息。
如果数据库中有要删除的数据信息,该数据信息将会被删除,如果没有,将会提示,未找到符合条件的房屋信息。
3:
设计注释:
本程序共使用了两个级的菜单。
主菜单,子菜单。
共使用了五个子函数,他们的功能分别是:
插入、删除、输出、修改、和查找。
其中输出查找插入和修改的子函数都已调试通过。
部分的子函数性能不稳定,比如删除和插入。
由于自己的知识有限,暂时不能解决这些问题,也没有完成在任务之外的任何功能。
本程序基本上都是用户自己选择使用的功能,然后由主函数调用子函数实现。
我创建了房屋结构体类型,每条房屋项目信息都用该结构体来实现,包含地点,面积,户主,租金,租赁人等。
用一个单向链表来管理房屋项目信息,通过链表的遍历可以操作这些数据。
4:
算法设计的新思想:
除了照着老师给我的任务书,写自己的程序,自己也是照着自己的思想写的。
比如主函数,我只用了switch语句来写,没有任何其他的东西了。
这样就觉得很简单明了。
而且看起来也很舒服。
子函数的都使用一开始的结构体完成的,紫蝶结构体并不是定义同类型的多种变量,而是定义了一个二维的数组,因为我们输入的都是字符,所以这样操作起来会很简单。
还有就是本程序都是使用简单的一看就能明了的语句书写,在一些语句块都加了注释,这样不管是修改还是调试,都很容易。
除此之外,没有其他的新方法,或者新的应用。
三、用户手册:
用户在使用时先要在桌面建立一个文件(shujvku.txt)。
输入的信息最长字符为100。
先要输入户主名字,再是租赁人的名字,接下来是地点、面积和租金。
例如(bobtombeijing10010