收藏 分销(赏)

C语言课程设计房屋租赁管理系统.doc

上传人:天**** 文档编号:4322030 上传时间:2024-09-06 格式:DOC 页数:13 大小:63.50KB 下载积分:8 金币
下载 相关 举报
C语言课程设计房屋租赁管理系统.doc_第1页
第1页 / 共13页
C语言课程设计房屋租赁管理系统.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
合肥学院 计算机科学与技术系 课程设计报告 2012~2013学年第二学期 课程 C语言课程设计 课程设计名称 房屋租赁管理系统 学生姓名 学号 专业班级 计本(3)班 指导教师 华珊珊 项响琴 2013年6月 合肥学院C语言课程设计报告 第一章:需求分析 1 1.1 添加 1 1.2 显示 1 1.3 存储 1 1.4 装入 1 1.5 查询 1 第二章:算法设计: 1 2.1设计思想 1 2.2设计表示 3 2.3设计注释 9 2.4算法设计的新思想 9 第三章:小结 10 第四章:参考文献: 10 第一章:需求分析 编写一个简单的房屋租赁管理程序,帮助管理房屋租赁管理事物。要求具有备忘录房屋项目管理和租赁信息管理的功能。其中房屋项目管理包括房屋项目增加、删除、和修改等功能。租赁信息管理包括房租租售登记表输入和房屋出租查询。 本题程序应提供的基本管理功能有: 1) 添加:即增加一条房屋信息到房屋项目中; 2) 显示:即在屏幕上显示所有房屋项目中的信息。 3) 存储:即将房屋项目信息保存在一个文件中。 4) 装入:即将文件中的信息读入程序。 5) 查询:可根据房屋编号查找房屋项目信息,若找到,显示在屏幕上。 6)修改:可修改某编号的房屋项目信息。 第二章:算法设计: 1:设计思想:l 主流程图: 主菜单 房屋租赁管理系统 子菜单 备忘录房屋信息管理 子菜单 租赁信息管理 添加房屋信息 修改房屋信息 显示房屋信息 查寻房屋信息 删除房屋信息 子菜单流程图 查询房屋信息 按户主名查找 按地点查找 按租赁人名查找 按面积查找 按租金查找 子菜单流程图 删除房屋信息 按户主名字删除 按租赁人名字删除 算法思想: 创建房屋结构体类型,每条房屋项目信息都用该结构体来实现,包含地点,面积,户主,租金,租赁人等。用一个单向链表来管理房屋项目信息,通过链表的遍历可以操作这些数据。本程序共使用了两个级的菜单。主菜单,子菜单。共使用了五个子函数,他们的功能分别是:插入、删除、输出、修改、和查找,通过主函数的调用实现程序的要求。主函数使用两个switch语句,得到两个次级菜单。再在switch语句的case中调用子函数。 本系统用到了以下得知识点: 1:面向过程程序设计方法 2:界面制作,switch的应用。 3:动态数组(链表)。 4:文件的读写。 2 :设计表示: 输出子函数: void output(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 按任意键结束 查找子函数 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(); 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); 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("请输入要修改房屋地点:"); 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(); } 该部分是修改子函数,首先查找要修改的数据,然后在说明要修改哪个信息,该子函数就会在数据库中将原有的数据修改,如果找不到要修改的数据,将会提示,没有找到符合条件的信息,按任意键结束。 添加子函数 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; } 该部分是删除子函数,将会按操作删除数据库中的数据信息。如果数据库中有要删除的数据信息,该数据信息将会被删除,如果没有,将会提示,未找到符合条件的房屋信息。 3:设计注释:本程序共使用了两个级的菜单。主菜单,子菜单。共使用了五个子函数,他们的功能分别是:插入、删除、输出、修改、和查找。其中输出查找插入和修改的子函数都已调试通过。部分的子函数性能不稳定,比如删除和插入。由于自己的知识有限,暂时不能解决这些问题,也没有完成在任务之外的任何功能。本程序基本上都是用户自己选择使用的功能,然后由主函数调用子函数实现。我创建了房屋结构体类型,每条房屋项目信息都用该结构体来实现,包含地点,面积,户主,租金,租赁人等。用一个单向链表来管理房屋项目信息,通过链表的遍历可以操作这些数据。 4:算法设计的新思想:除了照着老师给我的任务书,写自己的程序,自己也是照着自己的思想写的。比如主函数,我只用了switch语句来写,没有任何其他的东西了。这样就觉得很简单明了。而且看起来也很舒服。子函数的都使用一开始的结构体完成的,紫蝶结构体并不是定义同类型的多种变量,而是定义了一个二维的数组,因为我们输入的都是字符,所以这样操作起来会很简单。还有就是本程序都是使用简单的一看就能明了的语句书写,在一些语句块都加了注释,这样不管是修改还是调试,都很容易。除此之外,没有其他的新方法,或者新的应用。 三、用户手册:用户在使用时先要在桌面建立一个文件(shujvku.txt)。输入的信息最长字符为100。先要输入户主名字,再是租赁人的名字,接下来是地点、面积和租金。例如(bob tom beijing 100 1000).在主界面用户根据自己的使用要求进行选择。然后进入子菜单中进行操作。使用过程中,有信息提示,你应该怎么操作。输入合法,或者输入错误。若输入错误则无法运行程序,有些子函数会提示重新输入,有些子函数没有提示。这就要求在输入错误的情况下回到主菜单,从新运行程序。 四、调试及测试:一开始在使用链表的时候,不知道怎么将其写入文件,后来问老师,老师帮我解决了这个问题,使用了fwrite函数,再有就是自己在桌面建立的文件夹是错误的,不可读取。再有就是运行的时候老提示错误,后来在阮广杰同学的帮助下调试通过,只是在我的switch语句后多了一个},提示的错误是missing“;”。本程序对系统的利用率以及时间方面有一般。一共有440条语句。通过测试的过程来看,写程序一定要严谨,不能马虎、要尽量在保证程序的正常工作下,使其简洁。此外还有调试过程的截图见附件。 第三章:小结 在这一周的学习实验中,在老师和同学的帮助下,自己的作业任务基本完成。自己的能力有所提升。自己一步步的完成自己的小系统,真的很用心了,从一开始得无处下手,到后来整体框架出来,在后来实现子函数的功能.一步一步的接近一个完整的程序,虽然有些累,有时候甚至想要放弃,但最后都坚持下来了,最终还是圆满的完成了这个程序. 在我写的程序里,基本上没有用到书本以外的知识,主函数的实现是通过switch语句实现的,再有就是子函数,一共有五个子函数,虽然有一些子函数的功能没有实现,但大部分的功能还是能实现的。通过这次的任务让我对自己以后的工作方式有了一定的了解。而且还有就是让我知道了怎么样去完成一个大一点的系统,以子函数的方式,分步完成。 这次的程序设计最难得地方还是链表环节,但链表又是组成此系统的重要知识,所以在完成这个程序方时,在链表上面的确下了一些功夫.最初对链表的知识一窍不通,根本弄不清它的定义,所以最开始每天都埋在书本上一些关于链表的定义概念以及一些相关的知识点,待到弄清楚一些知识点之后,就开始把一些书上的程序输入到电脑里,用分布调试的方法来了解观察程序的运行过程以及详细步骤.通过这样对链表的知识点有了比较清晰的认识.之后我就开始通过模仿书上的一些程序写出一些自己的小程序.慢慢的开始有了进步.当然这个过程这样说出来很是简单,但其过程远比这个艰辛,有时候一个知识点的里面又嵌套了若干知识点,之中知识点的嵌套理解起来是有一定的困难的,有时候一天就理解一个概念或是定义.就是这样一步步坚持,对知识点的逐一击破,对链表也就有了比较好的掌握.这对这个房屋租赁管理系统程序的设计起到了至关重要的作用. 通过这次的任务,我发现自己还有许多东西不知道,课本上的知识,只是皮毛。想要学好,还必须要向课外发展,自己只知道怎么做,照着书本,但一综合起来就不会了。书本上教我们的只是一个基本的概念,事实上远比想象的复杂。以前以为写一两千行程序是不可能的事,现在想想,那也不是多么的困难。虽然自己现在还不能独立的完成我的任务,主要原因是后来对指针,文件,还有链表的操作根本不会,只知道照着书去模仿,现在知道了,如果哪几个东西不知道,是根本不能完成任何一个系统的。 在做自己的程序的同时,我还体会到了合作的力量是伟大的,的确,合作能使很多问题得以高效的解决,有时候你对某一个问题困惑许久,一直在那一个人苦思冥想,往往这个时候,同学的一句话能让你豁然开朗,一下就感觉又找到了一片艳阳天.通过团队的合作还能看到对一个问题的多种解决办法,有时候看到别人的方法后,心里陡然一震,原来还可以这样,原来这样更简单,这些能很好的扩展我们的思维,也能帮组我们理解得更深刻.有许多自己不知道的问题,还有同学们也不知道的问题,在一起讨论一下,也还是能够解决的,这比一个人闭门造车好很多。再有就是,自己不知道的东西,不能不了了之,可以问同学或者老师。他们是肯定会帮助你的。虽然自己的小系统还存在许多的缺陷,相信以后通过对专业课更深层次的了解会更善自己的作业的。同时感谢两位而老师得辅导,在程序完成的过程中给与了我很大的帮助。 第四章:参考文献 [1] 黄明等编著《C语言课程设计》北京:电子工业出版社 [2] 郭翠英编著《C语言课程设计案例精编》北京:中国水利水电出版社 [3] 宁正元《数据结构(c语言)》 南京:东南大学出版社。2000年6月第1版 [4] 严蔚敏等 《数据结构(c语言版)》 北京:清华大学出版社,1997年4月第1版 [5] 谭浩强编著《C程序设计题解与上机指导(第3版) 》北京:清华大学出版社 [6] 谭浩强编著《C程序设计(第3版) 》北京:清华大学出版社 [7] 洪国胜 等编著 《C++ Builder程序设计轻松上手》北京:清华大学出版社 [8] 宁正元《数据结构(c语言)》 南京:东南大学出版社。2000年6月第1版 [9] 严蔚敏等 《数据结构(c语言版)》 北京:清华大学出版社,1997年4月第1版。[10] 明日科技 编著《Visual C++程序开发范例宝典》北京:人民邮电出版社。 [11] 胡学钢等《数据结构算法设计指导》北京:清华大学出版社,1999年 第1版。 [12] 刘大有《数据结构》(面向21世纪课程教材) 北京:高等教育出版社。2001年6月第1版。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服