C语言课程设计房屋租赁管理系统.docx
《C语言课程设计房屋租赁管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计房屋租赁管理系统.docx(14页珍藏版)》请在冰豆网上搜索。
C语言课程设计房屋租赁管理系统
合肥学院
计算机科学与技术系
课程设计报告
2012~2013学年第二学期
课程
C语言课程设计
课程设计名称
房屋租赁管理系统
学生姓名
学号
专业班级
计本(3)班
指导教师
华珊珊项响琴
2013年6月
合肥学院C语言课程设计报告
第一章:
需求分析
编写一个简单的房屋租赁管理程序,帮助管理房屋租赁管理事物。
要求具有备忘录房屋项目管理和租赁信息管理的功能。
其中房屋项目管理包括房屋项目增加、删除、和修改等功能。
租赁信息管理包括房租租售登记表输入和房屋出租查询。
本题程序应提供的基本管理功能有:
1)添加:
即增加一条房屋信息到房屋项目中;
2)显示:
即在屏幕上显示所有房屋项目中的信息。
3)存储:
即将房屋项目信息保存在一个文件中。
4)装入:
即将文件中的信息读入程序。
5)查询:
可根据房屋编号查找房屋项目信息,若找到,显示在屏幕上。
6)修改:
可修改某编号的房屋项目信息。
第二章:
算法设计:
1:
设计思想:
主流程图:
子菜单流程图
子菜单流程图
算法思想:
创建房屋结构体类型,每条房屋项目信息都用该结构体来实现,包含地点,面积,户主,租金,租赁人等。
用一个单向链表来管理房屋项目信息,通过链表的遍历可以操作这些数据。
本程序共使用了两个级的菜单。
主菜单,子菜单。
共使用了五个子函数,他们的功能分别是:
插入、删除、输出、修改、和查找,通过主函数的调用实现程序的要求。
主函数使用两个switch语句,得到两个次级菜单。
再在switch语句的case中调用子函数。
本系统用到了以下得知识点:
1:
面向过程程序设计方法
2:
界面制作,switch的应用。
3:
动态数组(链表)。
4:
文件的读写。
2:
设计表示:
输出子函数:
voidoutput(house*head)//输出子函数
{
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;
}
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]);
}
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。
先要输入户主名字,再是租赁人的名字,接下来是地点、面积和租金。
例如(bobtombeijing1001000).在主界面用户根据自己的使用要求进行选择。
然后进入子菜单中进行操作。
使用过程中,有信息提示,你应该怎么操作。
输入合法,或者输入错误。
若输入错误则无法运行程序,有些子函数会提示重新输入,有些子函数没有提示。
这就要求在输入错误的情况下回到主菜单,从新运行程序。
四、调试及测试:
一开始在使用链表的时候,不知道怎么将其写入文件,后来问老师,老师帮我解决了这个问题,使用了fwrite函数,再有就是自己在桌面建立的文件夹是错误的,不可读取。
再有就是运行的时候老提示错误,后来在阮广杰同学的帮助下调试通过,只是在我的switch语句后多了一个},提示的错误是missing“;”。
本程序对系统的利用率以及时间方面有一般。
一共有440条语句。
通过测试的过程来看,写程序一定要严谨,不能马虎、要尽量在保证程序的正常工作下,使其简洁。
此外还有调试过程的截图见附件。
第三章:
小结
在这一周的学习实验中,在老师和同学的帮助下,自己的作业任务基本完成。
自己的能力有所提升。
自己一步步的完成自己的小系统,真的很用心了,从一开始得无处下手,到后来整体框架出来,在后来实现子函数的功能.一步一步的接近一个完整的程序,虽然有些累,有时候甚至想要放弃,但最后都坚持下来了,最终还是圆满的完成了这个程序.
在我写的程序里,基本上没有用到书本以外的知识,主函数的实现是通过switch语句实现的,再有就是子函数,一共有五个子函数,虽然有一些子函数的功能没有实现,但大部分的功能还是能实现的。
通过这次的任务让我对自己以后的工作方式有了一定的了解。
而且还有就是让我知道了怎么样去完成一个大一点的系统,以子函数的方式,分步完成。
这次的程序设计最难得地方还是链表环节,但链表又是组成此系统的重要知识,所以在完成这个程序方时,在链表上面的确下了一些功夫.最初对链表的知识一窍不通,根本弄不清它的定义,所以最开始每天都埋在书本上一些关于链表的定义概念以及一些相关的知识点,待到弄清楚一些知识点之后,就开始把一些书上的程序输入到电脑里,用分布调试的方法来了解观察程序的运行过程以及详细步骤.通过这样对链表的知识点有了比较清晰的认识.之后我就开始通过模仿书上的一些程序写出一些自己的小程序.慢慢的开始有了进步.当然这个过程这样说出来很是简单,但其过程远比这个艰辛,有时候一个知识点的里面又嵌套了若干知识点,之中知识点的嵌套理解起来是有一定的困难的,有时候一天就理解一个概念或是定义.就是这样一步步坚持,对知识点的逐一击破,对链表也就有了比较好的掌握.这对这个房屋租赁管理系统程序的设计起到了至关重要的作用.
通过这次的任务,我发现自己还有许多东西不知道,课本上的知识,只是皮毛。
想要学好,还必须要向课外发展,自己只知道怎么做,照着书本,但一综合起来就不会了。
书本上教我们的只是一个基本的概念,事实上远比想象的复杂。
以前以为写一两千行程序是不可能的事,现在想想,那也不是多么的困难。
虽然自己现在还不能独立的完成我的任务,主要原因是后来对指针,文件,还有链表的操作根本不会,只知道照着书去模仿,现在知道了,如果哪几个东西不知道,是根本不能完成任何一个系统的。
在做自己的程序的同时,我还体会到了合作的力量是伟大的,的确,合作能使很多问题得以高效的解决,有时候你对某一个问题困惑许久,一直在那一个人苦思冥想,往往这个时候,同学的一句话能让你豁然开朗,一下就感觉又找到了一片艳阳天.通过团队的合作还能看到对一个问题的多种解决办法,有时候看到别人的方法后,心里陡然一震,原来还可以这样,原来这样更简单,这些能很好的扩展我们的思维,也能帮组我们理解得更深刻.有许多自己不知道的问题,还有同学们也不知道的问题,在一起讨论一下,也还是能够解决的,这比一个人闭门造车好很多。
再有就是,自己不知道的东西,不能不了了之,可以问同学或者老师。
他们是肯定会帮助你的。
虽然自己的小系统还存在许多的缺陷,相信以后通过对专业课更深层次的了解会更善自己的作业的。
同时感谢两位而老师得辅导,在程序完成的过程中给与了我很大的帮助。