C++模拟网上购书的结账功能程序设计源码解析Word格式.docx
- 文档编号:19531566
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:49
- 大小:368.81KB
C++模拟网上购书的结账功能程序设计源码解析Word格式.docx
《C++模拟网上购书的结账功能程序设计源码解析Word格式.docx》由会员分享,可在线阅读,更多相关《C++模拟网上购书的结账功能程序设计源码解析Word格式.docx(49页珍藏版)》请在冰豆网上搜索。
(5)显示所有发票信息。
三、总体设计
1.模拟网上购书系统功能总体设计如下:
图3.1功能模块图
2.数据存储在文件中
1)Book.txt:
存储书籍信息,包括书籍编号、书名、作者、出版社、单价;
2)Buyer.txt:
存储购书者信息,包括买家ID、姓名、地址、身份(0代表普通人,1代表会员,2代表贵宾);
3)Orde.txt:
存储订单信息,包括订单号、买家ID;
4)Receipt.txt:
存储发票信息,包括订单号、书籍编号、数量;
3.开发软件:
VisualStudio2010
4.操作系统:
windows7
四、各功能设计
1、在类Book中主要定义了,书籍的编号、书名、作者、出版社、和价格。
还定义了书籍信息的显示函数
classBook{
public:
Book();
Book(stringbi,stringbn,stringau,stringpu,doublepr);
//构造函数
voiddisplay();
//显示函数
private:
stringbookID;
//编号
stringbookName;
//书名
stringauthor;
//作者
stringpublish;
//出版社
doubleprice;
//价格
};
2、在Buyer.h中主要定义了Buyer这个基类,并对它进行派生,共3个派生类:
People、Member和Vip
classBuyer{
Buyer();
Buyer(stringid,stringna,stringad);
//构造函数
virtualvoiddisplay();
//显示函数(虚函数)
protected:
stringbuyerID;
//买家ID
stringname;
//姓名
stringaddress;
//地址
//普通人类
classPeople:
publicBuyer
{
People(stringid,stringna,stringad):
Buyer(id,na,ad){}
//会员类
classMember:
Member(stringid,stringna,stringad,doubledc):
Buyer(id,na,ad){discount_member=dc;
}
doublediscount_member;
//折扣率
//贵宾类
classVip:
Vip(stringid,stringna,stringad,doubledc):
Buyer(id,na,ad){discount_vip=dc;
doublediscount_vip;
3、在Order中主要定义了订单的发票号和买家ID两个属性。
还定义了添加订单信息、删除订单信息等函数。
classOrder
Order();
Order(intre,stringbu);
intgetLine();
//获取Order.txt中的行数
voidreadOrder(Ordero[]);
//从Order.txt中读取数据放入Receipt对象数组中
intJudge(intreceiptID);
//判断Order.txt中是否存在该订单号,若存在返回该订单的行号,不存在返回-1
voidaddOrder(intreceiptID,stringbuyerID);
//添加订单信息
voiddeleteOrder(intreceiptID);
//删除订单信息
intreceiptID;
//发票号
//买家ID
4、在Receipt中主要定义了发票的订单号、书籍编号、数量、总价等属性。
还定义了添加删除发票信息、查找发票、显示发票等函数。
classReceipt
Receipt();
Receipt(intre,stringbo,intnu);
intgetBookLine();
//获取Book.txt中的行数
voidreadBook(stringbookID[],stringbookName[],stringauthor[],stringpublish[],stringprice[]);
//从Book.txt中读取数据放入数组中
intgetBuyerLine();
//获取Buyer.txt的行数
voidreadBuyer(stringbuyerID[],stringname[],stringaddress[],stringtype[]);
//从Buyer.txt中读取数据放入数组中
voidreadOrder(stringreceiptID[],stringbuyerIDs[]);
//从Order.txt中,读取数据,放入数组中
intgetReceiptLine();
//获取Receipt.txt的行数
voidreadReceipt(Receiptreceipt[]);
//从Receipt.txt中读取数据放入Receipt对象数组中
returnLsJudge(intreceiptID);
//判断Receipt.txt中是否存在用户要求的发票编号,如果存在,返回行号数组类
voidaddReceipt();
//添加发票
voiddeleteReceipt();
//删除发票
voidselectReceiptByRI();
//根据订单号查找发票
voidselectReceiptByBI();
//更具买家ID查找发票
voidprint();
//打印发票
//发票编号
//图书编号
intnum;
//购书数量
doublepay;
//支付总金额
五、系统实现与系统调试
1、登入模拟网上购书系统,看到欢迎界面,用户可根据主界面提示的操作,输入1-5任一编号,选择所需操作。
2、发票信息录入,先输入买家ID,再输入所需的书籍编号和数量(可输入多本书籍编号和数量,输入书籍编号为0时停止录入),录入完成可选择再录入信息或返回上级目录或退出。
3、输入发票号,选择删除订单。
若存在订单号,则显示删除成功;
若不存在显示数据库中没有此订单,完成该操作可选择再删除信息或返回上级目录或退出。
4、根据发票号查找发票信息,用户输入发票号,若存在该发票号则显示发票信息,若不存在显示不存在该订单。
操作完成后可选择继续查询发票信息或返回上级目录,或退出。
5、根据买家ID查找发票信息,用户输入买家ID,若存在显示该买家的所有发票信息;
6、若不存在显示该卖家没有。
7、打印所有发票信息,操作结束后可选择返回上级目录或退出系统。
六、软件使用说明
1、登入模拟网上购书系统,看到欢迎界面,用户可根据主界面提示的操作,输入1-5任一编号(输入0,退出),选择所需操作。
2、输入‘1’,可进行发票信息录入录入。
先输入买家ID,再输入所需的书籍编号和数量(可输入多本书籍编号和数量,输入书籍编号为0时停止录入),录入完成可输入‘1’选择再录入信息,输入‘2’返回上级目录,输入‘0’退出。
3、输入‘2’,可进行发票号信息删除。
输入发票号,若存在订单号,则显示删除成功;
若不存在显示数据库中没有此订单,完成该操作可输入‘1’选择再删除发票信息,输入‘2’返回上级目录,输入‘0’退出。
4、输入‘3’,可进行根据发票号查找发票信息。
输入发票号,若存在该发票号则显示发票信息,若不存在显示不存在该订单。
操作完成后可输入‘1’选择根据发票号查找发票信息,输入‘2’选择根据买家ID查找发票信息,输入‘3’返回上级目录,输入‘0’退出。
5、输入‘4’,可进行根据买家ID查找发票信息。
输入买家ID,若存在显示买家所有发票信息,若不存在买家没有订单。
七、课程设计心得与体会
这次实训让我对本学期所学的C++进行有了更深一步的了解,并可以使用C++初步完成一个简单的系统。
训练了我综合运用所学习的各项知识,完成此系统的操作。
实训过程中,我遇到了很多问题,例如C++中string和int类型之间的转换,如何返回int数组等问题,但通过上网搜索或询问老师同学以后都得到了解决,也掌握了这些方法。
在设计网上模拟购书系统的过程中,我使用的是文件存储数据,所以在调用的时候要考虑很多循环和关联,这锻炼了我的思维模式。
这些都让我获益匪浅。
在这个过程中,我进一步巩固了所学习的知识,同时了解到自己还有很多没学到的知识,学无止境,在以后的日子中,我一定的更加严格要求自己,积极进取,奋发向上,不断努力发展自己。
这次的系统设计让我学会了综合运用C++所学的知识,对我今后对使用C++语言编程开发有着重要的作用。
附录
1.Book.h
#pragmaonce
#include<
iostream>
string>
usingnamespacestd;
classBook
//编号
//作者
//出版社
2.Book.cpp
#include"
Book.h"
#include<
iomanip>
fstream>
Book:
:
Book()
bookID="
"
;
bookName="
author="
publish="
price=0;
Book(stringbi,stringbn,stringau,stringpu,doublepr)
bookID=bi;
bookName=bn;
author=au;
publish=pu;
price=pr;
voidBook:
display()
cout<
<
书号:
bookID<
\t"
书名:
bookName<
作者:
author<
出版社:
publish<
价格:
price<
3.Buyer.h
//购书者类
classBuyer
//姓名
Buyer(id,na,ad)
{}
{discount_member=dc;
}
{discount_vip=dc;
4.Buyer.cpp
Buyer.h"
Buyer:
Buyer()
buyerID="
name="
address="
Buyer(stringid,stringna,stringad)
name=na;
buyerID=id;
address=ad;
intgetLine()
ifstreamin("
Buyer.txt"
);
stringline;
intn=0;
while(getline(in,line))
{
n++;
in.close();
returnn;
voidBuyer:
买家信息:
ID:
buyerID<
姓名:
name<
地址:
address<
\n"
voidPeople:
Buyer:
display();
该买家是普通人,无折扣率。
voidMember:
该买家是会员,折扣率为"
discount_member*10<
折!
voidVip:
该买家是贵宾,折扣率为"
discount_vip*10<
5.Buyer.cpp
6.Orde.h
//会员编号
7.Orde.cpp
Order.h"
Order:
Order()
receiptID=0;
Order(intre,stringbu)
re=receiptID;
bu=buyerID;
intOrder:
getLine()
Order.txt"
voidOrder:
readOrder(Ordero[])
ifstreaminfile("
ios:
in|ios:
binary);
if(!
infile)
cerr<
openerror"
endl;
exit
(1);
intn=getLine();
for(inti=0;
i<
n;
i++)
//只读取存放在数组中但不对其进行相关操作
stringre,bu;
infile>
>
re>
bu;
intre2=atoi(re.c_str());
o[i].receiptID=re2;
o[i].buyerID=bu;
infile.close();
Judge(intreceiptID)
Orderorder[50];
readOrder(order);
//调用Read()函数,获取数据,以便等下进行相关数据的判断
i<
i++)
if(receiptID==order[i].receiptID)
{
returni;
//如果存在,返回其下标
break;
}
return-1;
//否则,返回-1
//添加订单
addOrder(intre,stringbu)
ofstreamoutfile("
app);
outfile)
outfile<
re<
bu<
outfile.close();
//删除订单
deleteOrder(intreceiptID)
Or
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 模拟 网上 购书 结账 功能 程序设计 源码 解析