题 目: 二手房信息管理系统
二手房屋管理系统
本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和单链表的各种基本操作。本程序中涉及结构体、单链表、文件及各种语句的运用如for();switch();if….else等方面的知识。通过本程序的训练,使学生能对C语言的文件操作有一个更深刻的了解,初步掌握链表的一些结构及构成。掌握利用单链表存储结构实现对学生成绩管理的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。
1、问题定义
信息包括:编号,二手房屋名,房屋地址,库存数量,价格等。
试设计一信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)房屋信息录入功能(信息用数组保存)
(3)房屋信息浏览功能
(4)房屋信息查询功能
(5)房屋信息的删除与修改
在问题定义阶段要考虑题目的可行性和需求分析,接下来进入开发阶段,完成系统设计和系统实现的任务。
r
2、系统设计
2.1 总体设计
采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上面一层是主模块,下面各层是其上一层模块的逐步细化描述。
图2.1 二手房屋管理系统功能模块图
本管理系统要求采用单链表实现,如图2.1所示,它由如下三大功能模块组成:
- 房屋信息模块。通过输入买家想要的的信息,查找到要该房屋的相关信息,完成房屋这一项任务
- 房屋维护模块。完成对房屋信息的维护。在此房屋管理系统中,它实现了对房屋信息的新增、更改、删除、查找操作,并将追加后的数据存入源数据文件。
2.2 详细设计
2.2.1 房屋信息模块
通过输入买家想要的房屋的信息和房屋的相关编号。系统显示相应的内容,。值得一提的是,这里的字符串和数值的输入分别采用了函数来实现,在函数中完成输入数据任务,并对数据进行条件判断,直到满足条件为止,这样一来,大大减少了代码的重复和冗余,符合模块化程序设计的特点。
2.22 房屋维护模块
此模块主要实现了对房屋记录的新增、更改、删除、查找和显示操作。因为房屋记录是以单链表的结构形式存储的,所以这些操作都在单链表中完成。下面分别介绍着4个功能模块。
①新增记录。该操作需要对单链表中目标节点的数据域中的值进行追加新增要房屋的编相关信息,
/*添加二手房屋信息:*/void gn1()
{
int i=0;
int ch=0,ch1;
for(i=0;i<50;i++)
{
printf("请输入要添加的房屋资料:n");
printf("编号:");
scanf("%d",&goods[o].number);
printf("二手房屋名:");
scanf("%s",&goods[o].commodity);
printf("地址:");
scanf("%s",&goods[o].address);
printf("单价:");
scanf("%f",&goods[o].price);
printf("请输入商品的库存:n");
scanf("%d",&goods[o].inventory);
o++;
printf("输入0返回主菜单,输入其他继续增加!n");
scanf("%d",&ch1);
if(ch==ch1)break;
}
}
}
②查找系统。该操作可以帮助读者快速找到将要借的房屋,只要输入房屋的编号,如果有这本书,就将显示出。反之就会显示不存在。
③更改系统。该操作可以将原本错误的房屋记录更改,将之改为正确的记录。首先输入原来的记录的房屋的编号,在此之后输入新的记录。
④。删除系统。该操作可以将原本记录得房屋信息,在不用之后选择将此删除的一种方法,在弹出的窗口输入原来的房屋的编号,就可以将之删除。
3、系统实现
3.1 部分程序代码
3.1.2 主函数#include<stdio.h>
#include<string.h>
#define M 100
#define NULL 0
int o=0;
struct sp
{
int number;
char commodity[20];
char address[20];
float price;
int inventory;
}goods[M];
/*添加二手房屋信息:*/void gn1()
{
int i=0;
int ch=0,ch1;
for(i=0;i<50;i++)
{
printf("请输入要添加的房屋资料:n");
printf("编号:");
scanf("%d",&goods[o].number);
printf("二手房屋名:");
scanf("%s",&goods[o].commodity);
printf("地址:");
scanf("%s",&goods[o].address);
printf("单价:");
scanf("%f",&goods[o].price);
printf("请输入商品的库存:n");
scanf("%d",&goods[o].inventory);
o++;
printf("输入0返回主菜单,输入其他继续增加!n");
scanf("%d",&ch1);
if(ch==ch1)break;
}
}
/*查找二手房屋信息:*/void gn2()
{
int i;
int number;int ch=0,ch1;
printf("请输入要查找的房屋编号:n");
scanf("%d",&number);
for(i=0;i<50;i++)
{
printf("请输入要添加的房屋资料:n");
printf("编号:");
scanf("%d",&goods[o].number);
printf("二手房屋名:");
scanf("%s",&goods[o].commodity);
printf("地址:");
scanf("%s",&goods[o].address);
printf("单价:");
scanf("%f",&goods[o].price);
printf("请输入商品的库存:n");
scanf("%d",&goods[o].inventory);
o++;
printf("输入0返回主菜单,输入其他继续增加!n");
scanf("%d",&ch1);
if(ch==ch1)break;
}
if(goods[i].number==number)
{ printf("t编号t二手房屋名t地址t单价t库存n");
printf("%dt%st%st%.2ft%dn",goods[i].number,goods[i].commodity,goods[i].address,goods[i].price,goods[i].inventory);
}
if(i==50)
printf("查找不到!请重新输入!n");
}
/*修改二手房屋信息:*/void gn3()
{
int number1;
int i,ch=0;
do
{
for(i=0;i<M;i++)
{
printf("请输入要修改的房屋编号:n");
scanf("%d",&goods[i].number);
printf("二手房屋名:");
scanf("%s",goods[i].commodity);
printf("地址:");
scanf("%s",goods[i].address);
printf("单价:");
scanf("%f",&goods[i].price);
printf("库存:");
scanf("%d",&goods[i].inventory);
printf("输入0退出修改菜单,输入其他继续修改!n");
scanf("%d",&ch);
if(ch==0)break;
}
printf("输入0返回主菜单n");
scanf("%d",&number1);
}while(number1!=0);
}
void main()
{int number;
do{printf("ttt-------使用菜单--------n");
printf("ttt1.增加二手房屋信息n");
printf("ttt2.查找二手房屋信息n");
printf("ttt3.修改二手房屋信息n");
printf("ttt4.删除二手房屋信息n");
printf("ttt5.退出n");
scanf("%d",&number);
switch(number)
{
case 1:gn1();break;
case 2:gn2();break;
case 3:gn3();break;
case 4:gn4();break;
case 5:;break;
default:printf(" ");break;
}
}while(number!=5);
}
4、系统维护
经测试与调试确认软件无错时,开发就告一段落,这时可以交付软件供用户使用,但是在软件的使用过程中还会面临更加漫长的工作,即软件维护。一般维护的工作有:更改使用中发现的错误;为适应实际环境而对程序进行修改;为满足新的需求而对程序作必要的改进等等。