小区楼盘销售管理系统C++课程设计Word下载.docx
- 文档编号:7461698
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:41
- 大小:415.43KB
小区楼盘销售管理系统C++课程设计Word下载.docx
《小区楼盘销售管理系统C++课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《小区楼盘销售管理系统C++课程设计Word下载.docx(41页珍藏版)》请在冰点文库上搜索。
2)函数功能要划分好(结构化程序设计);
3)界面友好(良好的人机交互),加必要的注释;
4)提供程序测试方案。
2、设计内容分析
输入项:
程序中也会有一些其他的循环条件输入。
输出项:
小区楼盘房源的相关信息,也就是输入项的用户所需数据。
程序功能的实现:
程序设计到数据的动态添加、删除、修改、和查询,应使用链表进行存储较为方便。
而且应使用一个结构体来对应相应的房间,存储其相关信息。
在使用链表上,很多地功能的实现都变得很简单了,条件查找上因该会比较麻烦,应多加考虑。
三、详细设计说明
1、函数功能说明、参数说明及函数流程图
整个程序共包含6个函数:
voidinput(residence*);
//输入函数
voiddel(residence*);
//删除函数
voidamend(residence*);
//修改函数
voiddisplay(residence*);
//显示所有信息
voidseek(residence*);
//条件查找函数
intmain();
//主函数
程序中使用了一个结构体,用于存储套房间的相应信息:
structresidence
{
intlou,danyuan,fangjian;
//楼号/单元号/房间号
stringchaoxiang,huxing;
//朝向/户型
floatdanjia,mianji,zongjia;
//平米单价/面积/总价
stringzhuangtai,renyuan;
//售出状态(yes/no)/销售人员(没有的话为no,有的话输入相应的名字)
residence*next;
//指针用来指向链表的下一个结点
};
(1)、intmain()
函数功能说明:
主函数,主要是实现两个功能:
一是程序开始运行时的文件数据载入,二是显示主菜单
文件载入时先判断文件是否存在,如果不存在,使用outf.open("
data.txt"
ios:
:
out);
进行新建;
如果存在,从中读取数据并存入链表中。
主菜单放在一个while循环中,通过swicth进行选择相应选项。
函数参数说明:
inti;
用于菜单选择,不同的值对应不同的菜单
Inta;
用于记录载入的数据个数
Residence*head,*p1,*p2;
用于链表的创建,head是链表的头结点,p1,p2都是创建链表是的中间变量,起辅助传递作用。
函数流程图:
图2-1
(1)
inf>
>
p1->
lou>
danyuan>
..
break;
if(inf==0)
p2->
next=p1;
p2=p1;
cout<
<
"
共载入"
a-1<
个数据"
endl<
endl;
Y
N
图2-1
(2)
(2)、voidinput(residence*);
输入数据并保存于文件中。
输入分成了二次,第一次是楼号、单元号、房间号、平米单价、建筑面积这5个信息;
第二次是朝向、户型、售出状态(yes/no)、业务员(no/业务员姓名)共4个信息;
总价这一信息使用p1->
zongjia=p1->
danjia*p1->
mianji;
来计算,减少用户的工作量。
保存数据上,用户每输入完一个房源信息就存储一个,使用的是这个语句:
outf<
lou<
"
danyuan<
fangjian<
danjia<
mianji<
zongjia;
chaoxiang<
huxing<
zhuangtai<
renyuan<
residence*head1:
存储原链表的头指针
residence*p1,*p2,*head;
p1,p2为中间指针变量,head用于存储原指的尾结点
函数流程图:
ofstreamoutf("
app);
p1=head1;
while
(1)
next==NULL
p1=p1->
next;
p2=head;
n!
=0
p1=newresidence;
cin>
danyuan
n;
outf.close;
图2-2
(3)、voiddel(residence*);
删除数据,并将删除后的数据保存在文件中
将楼号、单元号。
房间号等信息存储在l、d、f三个变量中,在对查看每个节点时,if(p1->
lou==l&
&
danyuan==d&
fangjian==f)进行判断。
并且,通过判断i是否为零确定删除的数据的个数,如果i为零,提示没有改套房间。
数据保存与输入部分是一样的。
intl,d,f,n,i;
l、d、f分别用于存储需要查询的房间的楼号、单元号、房间号;
n用来判断是否结束修改操作返回主菜单;
i用来判断是否删除成功。
residence*p1,*p2;
中间的指针变量
p1=head->
1
fangjian==f
next=p1->
deletep1;
p1=head;
…
next==NULL<
图2-3
(4)、voidamend(residence*);
修改数据,并将修改保存在文件中
查找房间所在链表的位置与删除函数是一样的。
提示用户是按相应键以做相应修改,并且可以循环修改:
相应按键为:
楼号1,单元号2,房间号3,平米单价4,建筑面积5,,朝向6,户型7,售出状态8,业务员9,退出0"
当用户按0想要结束修改时,程序退出修改模块,进入存储模块,存储完毕提示cout<
修改已保存"
并返回主菜单。
intl,d,f,n,i;
l、d、f分别用于存储需要查询的房间的楼号单元号、房间号;
i用于判断是否删除成功。
residence*p1,*p2;
l>
d>
f;
while
(1)
i;
switch(i)
while(i!
=0);
n==0
图2-4
(5)、voiddisplay(residence*);
查看所有房源信息,以列表的方式显示
residence*p1;
中间指针变量
setw(6)<
setiosflags(ios:
left)<
lou;
…..
图2-5
(6)、voidseek(residence*);
条件查询
实现的原理:
将原链表进行复制,查询的时候对复制链表进行查找,并把不符合条件的节点删除,这样一来剩下的就都是符合条件的节点;
如果再次添加条件进行查找,仍旧执行这个操作,从而达到条件查询的目的。
其中,使用while
(1)进行循环,if语句判断选择的是何种操作。
residence*head2;
存储原链表的头指针
intt;
用于选择查找条件
strings;
;
存储提供的查询信息:
朝向,户型,
floatm1,m2,q=0;
m1,m2分别存储面积范围的左右边界,用于计算已售房源的总金额
residence*p1,*p2,*p3,*p4,*head;
除head存储新复制链表的头结点外,其他都是中间指针变量。
2、编码
ASCII。
数据也是存储在ASCII文件中,文件名为:
data.txt;
可以随时查看数据。
3、测试
初始界面:
图3-1
输入数据:
图3-2
输入完成后重新打开程序:
图3-3
显示所有数据:
图3-4
删除数据:
图3-5
图3-6
修改数据:
图3-7
图3-8
查询数据:
图3-9
追加条件:
图3-10
程序的存在一个bug,按户型查询后,程序不能进入菜单,而是卡死。
由于5个if语句中的循环代码是完全一样的,为什么在按户型查询时就出问题,有待解决。
初步确定是链表尾结点赋值NULL出错,应属于编译系统的问题。
按户型4-2查找,没问题:
图3-11
按户型4-1查找,出现错误:
图3-12
四、软件使用说明
1、开始
运行程序,显示主菜单。
左上角会有提示,显示数据载入的相应情况。
按相应数字键即可进入对应功能。
2、输入数据
输入分为两次,第一次包括:
楼号、单元号、房间号、平米单价、建筑面积这5个信息;
第二次包括:
朝向、户型、售出状态(yes/no)、业务员(no/业务员姓名)共4个信息;
总价这信息程序会自行计算,用户无需输入。
输入完成一次后会提示是否继续:
“如果需要结束输入请按0,要继续请按1”
用户输入的房源信息会与以前输入的信息放在同一个文件下,不会覆盖。
数据时按时间顺序排列的。
3、删除数据
首先提示输入楼号、单元号、房间号,输入完成后即开始查找删除。
如果没有该房源,则会有相应提示。
4、修改数据
进入修改后,提示按相应键可进行相应修改。
用户输入需要修改的房间位置信息,之后按相应的数字即可开始修改。
可以修改所以数据。
5、显示所有数据
显示所有数据,按任意键返回主菜单。
6、条件查询
提供五总查询方式:
朝向
(1),户型
(2),建筑面积范围(3),显示所有未售出房源(4),查询已售出房源的业务员姓名、成交金额及总额(5);
按相应数字进入查找。
查找完成后如果想继续添加条件进行查找可继续按相应数字继续,也可按0退出返回菜单。
7、退出
按0即可。
五、课程设计心得与体会
这次课程设计让我受益匪浅。
学编程这么久,还是头一次写这么大的程序。
通过这个,也算体验到了程序设计的艰苦和团队合作的重要性,这也为以后做项目打了一些基础,而且积累了不少程序设计的经验呢。
最后,得学习图形用户操作界面的设计了,dos界面确实不怎么好看,而且容易出现一些不必要的问题,比如多输入了一个数据该。
总而言之,Stillhavelongwaytogo.
附录1:
参考文献
1、《C++程序设计》钱能清华大学出版社
2、《c++程序设计》作者:
谭浩强出版时间2004年6月
附录2:
程序清单
#include<
iostream>
fstream>
string>
iomanip>
usingnamespacestd;
structresidence//房源信息结构体
intmain()
//ok输入函数
//ok删除函数
//ok修改函数
//ok显示所有信息
//ok条件查找函数//函数定义完毕
residence*head,*p1,*p2;
head=newresidence;
head->
next=NULL;
//打开文件进行,从文件进行输入,进入等待状态
ifstreaminf("
in);
ofstreamoutf;
if(inf==0)//文件不存在,新建
{
cout<
数据文件不存在,将新建"
inf.close;
outf.open("
outf.close;
successfull!
}
else//文件存在,读取数据
{
inta=0;
p2=head;
while
(1)
{
a++;
//记录载入的数据的个数
p1=newresidence;
p1->
inf>
fangjian;
danjia>
mianji>
chaoxiang>
huxing>
zhuangtai>
renyuan;
if(inf==0){break;
deletep1;
}
p2->
p2=p1;
}
数据载入成功!
//////////////文件载入完成
while
(1)//菜单
****************欢迎使用小区楼盘销售管理程序***************"
//菜单
++"
+>
要输入数据请按--1+"
要删除数据请按--2+"
要修改数据请按--3+"
要显示数据请按--4+"
要查询数据请按--5+"
要退出请按------6+"
****************欢迎使用小区楼盘销售管理程序***************"
cin>
switch(i)
case1:
input(head);
break;
case2:
del(head);
case3:
amend(head);
case4:
display(head);
case5:
seek(head);
case6:
exit
(1);
return0;
voidinput(residence*head1)////////////////////////////////////////////////////////////////////////////////
ofstreamoutf("
//打开文件,等待数据存储
residence*p1,*p2,*head;
p1=head1;
while
(1)
if(p1->
next==NULL)break;
p1=p1->
head=p1;
intn;
p2=head;
cout<
开始输入"
do
p1=newresidence;
p1->
p2->
楼号、单元号、房间号、平米单价、建筑面积这5个信息"
请分别输入朝向、户型、售出状态(yes/no)、业务员(no/业务员姓名)共4个信息"
outf<
//输入数据的同时,将数据写入文件
如果需要结束输入请按0,要继续请按1"
p2=p1;
}while(n!
outf.close;
数据已保存!
voiddel(residence*head)////////////////////////////////////////////////////////////////////////////////////////
intl,d,f,n,i;
residence*p1,*p2;
请输入您要删除的房间的位置信息:
楼号,单元号,房间号"
cin>
if(head->
next==NULL){cout<
没有数据"
return;
p1=head->
while
(1)//查找并删除数据
i=0;
if(p1->
fangjian==f)
{
p2->
deletep1;
i++;
//删除操作
break;
}
p1=p1->
if(i!
=0)cout<
删除成功"
elsecout<
没有该数据"
//重新存储数据
p1=head;
if(p1->
next==NULL)cout<
数据已全部删除!
else
outf<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小区 楼盘 销售 管理 系统 C+ 课程设计