C++电商交易平台设计
班级:2013211306 姓名:严浩学号:2013211321
一.实验目的
1.锻炼我们用c++编程的能力
2.培养我们考虑问题是否全面的能力
3.训练我们的代码优化能力
二.基本内容
题目一:银行门户的设计
该门户是一个单独的程序,程序要求至少支持以下功能:
1)注册银行卡,银行可选;
2)修改银行卡密码;
3)存款取款;
银行卡至少需要有卡号,密码,所属银行名称,持卡人身份证号,卡内金额等内容。
要求1:请把所有的银行名写入文件(或数据库),注册银行卡的时候,要求只能选择已经存在的银行进行注册。
要求2:请做好错误场景的处理,例如读银行文件错误,输入数据不合法等等。
题目二:电商平台的设计
该平台是银行门户之外的一个单独的程序,程序要求至少支持以下功能:
1)注册&登录:支持新用户注册平台账号,已注册用户用平台账号登录平台。(要求已注册用户的信息长
久保留。)
2)浏览平台产品信息。
3)优惠活动:支持对同一品类下所有产品打折的活动,支持单笔订单满X减Y的活动。
4)购买产品:支持用户添加产品到购物车,查看实际应付的产品价格,提交订单。
在题目二我们暂时不考虑提交订单后支付等后续需求。
要求1:电商平台上至少有三类产品:如食物、服装、图书等,每类产品中至少有三个具体的产品(如图书中可以有《C++ Primer》、《Effertive C++》等),每个具体的产品请至少包含产品描述,产品原价,产品剩余量等数据。所有的产品信息需要存储在数据库或文件中,不能写在代码中,平台管理员通过直接修改数据库或文件,管理本平台上的产品,包括产品的增加和删除,修改数量以及具体产品的属性信息等。
要求2:请至少设计一层继承体系(产品基类-产品子类),设计一个产品基类,然后让图书类、电子产品类和服装类等产品子类类继承它,具体的产品是产品子类的实例对象(<<C++ Primer >> 是图书类的实例对象)。产品基类请至少具有一个虚函数getPrice()用于计算具体产品的价格。
要求3:请通过为每个产品子类定义“品类折扣系数”来支持对同产品子类下所有产品打折扣的活动(如图书全场5折,则图书类这一产品子类的折扣系数为0.5)。
要求4:请做好错误场景的处理。
题目三:网上支付的设计
实现题目三会让你设计的平台像个真正的运行在网络上的平台。题目三要求在题目一、二的基础上支持通过网上支付在电商平台上购物,请至少实现以下功能:
1)绑定银行卡:支持电商平台账号绑定银行卡。同一账号可以绑定多张银行卡,而且银行卡可以属于不
同银行。
2)网上支付:选择绑定的任一银行卡支付电商平台上的订单。
要求1:绑定银行卡和选择银行卡进行支付时都要求提供对应的银行卡密码。手机绑定银行卡
要求2:当在电商平台上绑定银行卡或者进行网上支付的时候,请不要直接打开某个文件查银行卡的信息,因为银行卡信息文件是银行门户系统私有的,电商平台系统无法直接访问,而应该由电商平台系统去向银行门户系统对接数据。请用socket通信来传送数据。
要求3:请做好错误场景的处理,如绑定银行卡失败,支付失败等。
三.实验方法
题目一:
创建了银行卡类、银行门户类,银行卡里包含了卡号、姓名、密码、身份证号、银行名称、余额几个属性。
银行门户有操作银行卡,注册银行卡两个功能,操作银行卡又包括存取款,修改密码等功能,账户信息和银行名称保存在文件里,银行卡用vector类型保存。
题目二:
创建了电商平台类、账户类、商品类(商品类有3个派生类)、绑定银行卡类、购物车项目类。其中账户类中包含了用户名、密码、手机号、购物车、应付款、绑定银行卡、绑定银行卡数量这几个属性,其中购物车里的项目用vector类型保存。
电商平台中的账户也用vector类型保存,平台的功能有:登录、注册,登录后可以绑定银行卡、查看商品并添加购物车、查看购物车和应付金额、结算购物车、退出登录等功能。
题目三:
在绑定银行卡和付款时用socket通信来传送数据。
绑定银行卡时,先向银行门户发送绑定银行卡标志位表示绑定功能,然后发送卡号密码,验证通过后返回成功标志位,电商平台收到后绑定成功。
付款时,先向银行门户发送付款标志位表示付款功能,,然后发送卡号密码,验证通过后返回成功标志位,电商平台收到后发送应付金额,银行门户收到后调用付款函数,余额不足返回余额不足标志位,余额够则返回付款成功标志位。
四.源代码
银行门户代码:
#ifndef _BANKCARD_H_
#define_BANKCARD_H_
#include<string>
#include<fstream>
using namespace std;
class bankcard{
private:
string cardnum;
string password;
string bankname;
string name;
string ID;
double remainder;
public:
bankcard(){}
bankcard(string num,string password,string bankname,string name,string ID,double remainder);
void setPassword(string password);
void addRemainder(double money);
void subRemainder(double money);
string getCardnum();
string getPassword();
string getBankname();
string getName();
string getID();
double getRemainder();
bool matchPassport(string password);
ofstream& operator <<(ofstream& ofs);
};
#endif
#include"bankcard.h"
using std::string;
bankcard::bankcard(string cardnum,string passport,string bankname,string name,string ID,double remainder){
this->cardnum=cardnum;
this->password=passport;
this->bankname=bankname;
this->name=name;
this->ID=ID;
this->remainder=remainder;
}
void bankcard::setPassword(string newpassport){ this->password=newpassport;
}
void bankcard::addRemainder(double money){ this->remainder+=money;
}
void bankcard::subRemainder(double money){ this->remainder=this->remainder-money;
}
string bankcard::getCardnum(){
return cardnum;
}
string bankcard::getPassword(){
return password;
}
string bankcard::getBankname(){
return bankname;
}
string bankcard::getName(){
return name;
}
string bankcard::getID(){
return ID;
}
double bankcard::getRemainder(){
return remainder;
}
bool bankcard::matchPassport(string password){ if(this->password==password)
return true;
else return false;
}
ofstream& bankcard::operator <<(ofstream& ofs){ ofs<<" 卡号:"<<cardnum;
ofs<<" 密码:"<<password;
ofs<<" 银行:"<<bankname;
ofs<<" 姓名:"<<name;
ofs<<" 身份证号:"<<ID;
ofs<<" 余额:"<<dec<<remainder<<endl;
return ofs;
}
#ifndef BANKPORTAL_H
#define BANKPORTAL_H
#include<WINSOCK2.H>
#include<stdio.h>
#pragma comment(lib,"ws2_32.lib")
#include<vector>
#include<string>
#include"bankcard.h"
using std::vector;
class BankPortal{
private:
vector<string> vBankN;
vector<bankcard> vBankC;
void init();
void registerBankC();
void loginBankC();
void changePassword(int index);
void deposit(int index);
void withdraw(int index);
int match(string cardnum);
bool check(string cardnum);
void output();
void bankNaming();
double StrToDouble(string str, int start, int end);
void Bind();
bool pay(string num,double money);
int Match(string username,string password);
public:
BankPortal();
};
#endif
#include<iostream>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论