題??? 目:?? 二手房信息管理系統(tǒng)
二手房屋管理系統(tǒng)
本題目設(shè)計目的是訓(xùn)練學(xué)生的基本編程能力,了解管理信息系統(tǒng)的開發(fā)流程,熟悉C語言的文件和單鏈表的各種基本操作。本程序中涉及結(jié)構(gòu)體、單鏈表、文件及各種語句的運(yùn)用如for();switch();if….else等方面的知識。通過本程序的訓(xùn)練,使學(xué)生能對C語言的文件操作有一個更深刻的了解,初步掌握鏈表的一些結(jié)構(gòu)及構(gòu)成。掌握利用單鏈表存儲結(jié)構(gòu)實(shí)現(xiàn)對學(xué)生成績管理的原理,為進(jìn)一步開發(fā)出高質(zhì)量的管理信息系統(tǒng)打下堅實(shí)的基礎(chǔ)。
1、問題定義
信息包括:編號,二手房屋名,房屋地址,庫存數(shù)量,價格等。
試設(shè)計一信息管理系統(tǒng),使之能提供以下功能:
(1)系統(tǒng)以菜單方式工作
(2)房屋信息錄入功能(信息用數(shù)組保存)
(3)房屋信息瀏覽功能
(4)房屋信息查詢功能
(5)房屋信息的刪除與修改
在問題定義階段要考慮題目的可行性和需求分析,接下來進(jìn)入開發(fā)階段,完成系統(tǒng)設(shè)計和系統(tǒng)實(shí)現(xiàn)的任務(wù)。
r
2、系統(tǒng)設(shè)計
2.1 總體設(shè)計
采用模塊化的程序設(shè)計方法,即將較大的任務(wù)按照一定的原則分為一個個較小的任務(wù),然后分別設(shè)計各個小任務(wù)。需要注意的是劃分出來的模塊應(yīng)該相對獨(dú)立但又相關(guān),且容易理解。可以用模塊化層次結(jié)構(gòu)圖(即模塊圖)來分析其任務(wù)的劃分,一般從上到下進(jìn)行,最上面一層是主模塊,下面各層是其上一層模塊的逐步細(xì)化描述。
圖2.1?? 二手房屋管理系統(tǒng)功能模塊圖
本管理系統(tǒng)要求采用單鏈表實(shí)現(xiàn),如圖2.1所示,它由如下三大功能模塊組成:
- 房屋信息模塊。通過輸入買家想要的的信息,查找到要該房屋的相關(guān)信息,完成房屋這一項任務(wù)
- 房屋維護(hù)模塊。完成對房屋信息的維護(hù)。在此房屋管理系統(tǒng)中,它實(shí)現(xiàn)了對房屋信息的新增、更改、刪除、查找操作,并將追加后的數(shù)據(jù)存入源數(shù)據(jù)文件。
2.2 詳細(xì)設(shè)計
2.2.1? 房屋信息模塊
通過輸入買家想要的房屋的信息和房屋的相關(guān)編號。系統(tǒng)顯示相應(yīng)的內(nèi)容,。值得一提的是,這里的字符串和數(shù)值的輸入分別采用了函數(shù)來實(shí)現(xiàn),在函數(shù)中完成輸入數(shù)據(jù)任務(wù),并對數(shù)據(jù)進(jìn)行條件判斷,直到滿足條件為止,這樣一來,大大減少了代碼的重復(fù)和冗余,符合模塊化程序設(shè)計的特點(diǎn)。
2.22?? 房屋維護(hù)模塊
此模塊主要實(shí)現(xiàn)了對房屋記錄的新增、更改、刪除、查找和顯示操作。因為房屋記錄是以單鏈表的結(jié)構(gòu)形式存儲的,所以這些操作都在單鏈表中完成。下面分別介紹著4個功能模塊。
①新增記錄。該操作需要對單鏈表中目標(biāo)節(jié)點(diǎn)的數(shù)據(jù)域中的值進(jìn)行追加新增要房屋的編相關(guān)信息,
/*添加二手房屋信息:*/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返回主菜單,輸入其他繼續(xù)增加!n");
scanf("%d",&ch1);
if(ch==ch1)break;
}
}
}
②查找系統(tǒng)。該操作可以幫助讀者快速找到將要借的房屋,只要輸入房屋的編號,如果有這本書,就將顯示出。反之就會顯示不存在。
③更改系統(tǒng)。該操作可以將原本錯誤的房屋記錄更改,將之改為正確的記錄。首先輸入原來的記錄的房屋的編號,在此之后輸入新的記錄。
④。刪除系統(tǒng)。該操作可以將原本記錄得房屋信息,在不用之后選擇將此刪除的一種方法,在彈出的窗口輸入原來的房屋的編號,就可以將之刪除。
3、系統(tǒng)實(shí)現(xiàn)
3.1 部分程序代碼
3.1.2 主函數(shù)#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返回主菜單,輸入其他繼續(xù)增加!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返回主菜單,輸入其他繼續(xù)增加!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退出修改菜單,輸入其他繼續(xù)修改!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、系統(tǒng)維護(hù)
經(jīng)測試與調(diào)試確認(rèn)軟件無錯時,開發(fā)就告一段落,這時可以交付軟件供用戶使用,但是在軟件的使用過程中還會面臨更加漫長的工作,即軟件維護(hù)。一般維護(hù)的工作有:更改使用中發(fā)現(xiàn)的錯誤;為適應(yīng)實(shí)際環(huán)境而對程序進(jìn)行修改;為滿足新的需求而對程序作必要的改進(jìn)等等。