便利店管理系统
面向对象程序设计课程设计任务书指导老师:杨东和,陈巧红
[Title]便利店管理系统
[目的]
通过设计小型便利店管理系统,训练综合利用所学知识处理实际问题的能力,并增强面向对象的编程概念,从而显着提高其编程和调试水平。
[要求]
1、每个学生必须独立完成;
2、课程设计时间为1周;
3、设计语言采用C ++;
4、学生离开学校时必须请假。在课程设计期间,无故缺勤将被视为旷课;缺勤时间超过四分之一以上且未能按要求提交实验报告的学生将被视为失败。
[简介]
有一家小便利店,现在您需要为该便利店开发一个简单的便利店管理系统,以便客户可以自己购买商品,并提供便利店销售的统计和管理功能。
[评估标准]
系统为用户提供两种角色的服务,一个是便利店管理员,另一个是客户。便利店管理员根据帐号和密码登录系统,客户无需登录即可使用系统。
1、客户可以通过此系统购买商品,并且可以一次购买一次结账以进行多次购买。产品信息包括产品编号,产品名称和产品价格。商品包括普通商品和进口商品。进口同类商品的价格是普通商品的1.2倍,系统可以根据客户要求正确打印订单。订单内容包括订单号,产品名称,产品价格,产品数量,折扣等。显示进口产品的名称时,请在名称后添加;管理员可以查看当天和当月的所有订单,得分≥60;
2、系统退出后,可以保存当天的销售信息。它每天需要一个文档,并且文档名称是根据日期命名的。管理员可以根据订单号搜索,删除和修改订单。可以根据订单时间对订单进行排序,得分≥70;
3、可以实现对商品名称和价格的管理员管理,包括商品及其相应价格的添加,修改,删除和搜索,得分≥80;
4、系统可以基于历史记录对销售量进行统计,并根据管理员的输入日期(包括总计销售的订单数量便利店管理系统,销售量和销售量)显示某一天的销售量各种产品),得分≥90.
5、如果有能力凤凰体育 ,可以考虑成员和非成员的情况。
要求:
使用面向对象的编程方法来设计系统。该系统中涉及的基本对象包括订单对象,订单管理对象,商品对象,导入的商品对象pg电子 ,购物篮对象和商店对象。实现这些对象的合理抽象和封装,并正确定义类之间的关系。界面合理,代码文件组织清晰,命名符合规范,代码注释清晰,班级报告质量高。
[工作内容和工作计划]
面向对象的程序设计课程目录
一、标题
便利店管理系统
二、需求分析
1、用户分析
管理员:
管理产品名称和价格,包括添加,修改,删除和搜索产品及相应价格;输入日期以计算某一天的销售额并显示;管理员可以根据订单号搜索和删除来修改订单,订单可以按订单时间排序;查看当天和当月的所有订单。
客户:非会员和会员具有不同的权限;查看,选择和购买产品;修改,删除和查找客户购物车订单;结帐和付款。
2、文件系统每天分析一个文档,并根据日期命名文档名称;管理员帐户和密码;会员信息;单个订单信息。
3、对象分析存储对象,列表对象,订单对象,订单管理对象,产品对象,购物篮对象江西快3 ,用户对象,管理员用户对象,客户用户对象,时间和日期对象,菜单对象,产品目录对象。合理地抽象和封装对象,正确定义类之间的关系;
三、系统结构图
四、班级设计
五、程序代码和说明
代码云
UserClass.h
#ifndef USERCLASS_H
#define USERCLASS_H
#include
using namespace std;
class UserClass
{
public:
/** Default constructor */
UserClass();
/** Default destructor */
virtual ~UserClass();
/** Access name
* \return The current value of name
*/
string Getname() { return name; }
/** Set name
* \param val New value to set
*/
void Setname(string val) { name = val; }
/** Access password
* \return The current value of password
*/
string Getpassword() { return password; }
/** Set password
* \param val New value to set
*/
void Setpassword(string val) { password = val; }
/** Access user_type
* \return The current value of user_type
*/
int Getuser_type() { return user_type; }
/** Set user_type
* \param val New value to set
*/
void Setuser_type(int val) { user_type = val; }
protected:
private:
string name; //!< Member variable "name"
string password; //!< Member variable "password"
/**
*0-管理员
*1-顾客
*/
int user_type; //!< Member variable "user_type"
};
#endif // USERCLASS_H
UserClass.cpp
#include "UserClass.h"
UserClass::UserClass()
{
//ctor
}
UserClass::~UserClass()
{
//dtor
}
Order_List.h
#ifndef ORDER_LIST_H
#define ORDER_LIST_H
#include "Order.h"
#include
#include "List.h"
#include
#include
using namespace std;
class Order_List
{
public:
/** Default constructor */
Order_List();
/** Default destructor */
virtual ~Order_List();
/** Add Order
* \param 添加订单
*/
void Add_Order(Order new_order);
/** Read Order Messages in data/Order/Order
* \param 读取文件内的订单信息
*/
void Read_Order(string filename);
/** Write Order Messages To File in data/Order/Order
* \param 写入文件内的订单信息
*/
void Write_Order();
/** Delete Order
* \param 删除订单
*/
void del_Order(string del_orderID);
/** Print All Order Goods List
* \param 输出订单列表
*/
void Print_List();
/** Search Order And Return A Iterator Of Vector
* \param 搜索订单,并且返回Vector的迭代器
*/
vector<Order>::iterator Search_Order_ID(string order_ID);
/** Search Order
* \param 搜索订单
*/
void Search_Order(string order_ID);
/** Edit Order
* \param 编辑订单
*/
void Edit_Order(string order_ID);
/** Search Order
* \param 搜索订单
*/
void Search_Order();
/** Rank Order
* \param 排序订单
*/
void Rank_Order();
/** Count Order
* \param 统计订单
*/
void Count_Order_Date();
/** Clear Order
* \param 清空订单列表
*/
void clear();
protected:
private:
int ordernum;
vector<Order>order;
};
#endif // ORDER_LIST_H
Order_List.cpp
#include "Order_List.h"
Order_List::Order_List()
{
ordernum=0;
//order.resize(1000);
//ctor
}
Order_List::~Order_List()
{
//Write_Order();
//dtor
}
void Order_List::Add_Order(Order new_order){
//order[ordernum]=new_order;
order.push_back(new_order);
ordernum++;
}
void Order_List::Read_Order(string filename){
ifstream infile("data/Order/"+filename);
cout<<"正在读取订单信息..."<<endl;
string order_id,goods_id,goods_name,title[7];
int goods_is_enterport=0,goods_num;
double goods_price,goods_dicount;
for(int i=0;i<7;i++){
infile>>title[i];
}
//cout<
while(!infile.eof()){
infile>>order_id>>goods_id>>goods_name>>goods_price>>goods_num>>goods_is_enterport>>goods_dicount;
Goods tempgoods;
tempgoods.SetID(goods_id);
tempgoods.Setname(goods_name);
tempgoods.Setprice(goods_price);
tempgoods.Setnum(goods_num);
tempgoods.Setis_enterport(goods_is_enterport);
tempgoods.Setdiscount(goods_dicount);
tempgoods.Setis_cut(goods_dicount<1.00);
vector<Order>::iterator item=Search_Order_ID(order_id);
//tempgoods.Print_Col_Goods();
if(item==order.end()){
Order temporder(order_id);
temporder.List::Add_Goods(tempgoods);
Add_Order(temporder);
}else{
item->List::Add_Goods(tempgoods);
}
}
infile.close();
remove(("data/Order/"+filename).c_str());
}
void Order_List::Write_Order(){
int i=0;
for(vector<Order>::iterator it=order.begin();it!=order.end()&&i<ordernum;i++,it++){
it->Fileout_List();
}
}
void Order_List::del_Order(string del_order_ID){
if(ordernum==0){
cout<<"没有任何订单"<<endl;
return;
}
vector<Order>::iterator item=Search_Order_ID(del_order_ID);
if(item==order.end()){
cout<<"没有此订单"<<endl;
}else{
order.erase(item);
ordernum--;
}
}
void Order_List::Print_List(){
if(ordernum==0){
cout<<"没有任何订单"<<endl;
return;
}
for(int i=0;i<ordernum;i++){
order[i].Print_Order();
order[i].Cal_Goods_List();
}
}
vector<Order>::iterator Order_List::Search_Order_ID(string order_ID){
for(vector<Order>::iterator it=order.begin();it!=order.end();it++){
if(order_ID==it->GetOrderID()){
return it;
}
}
return order.end();
}
void Order_List::Search_Order(string order_ID){
if(ordernum==0){
cout<<"没有任何订单"<<endl;
return;
}
vector<Order>::iterator item=Search_Order_ID(order_ID);
if(item==order.end()){
cout<<"没有此订单"<<endl;
}else{
item->Print_Order_All();
}
}
void Order_List::Edit_Order(string order_ID){
if(ordernum==0){
cout<<"没有任何订单"<<endl;
return;
}
vector<Order>::iterator item=Search_Order_ID(order_ID);
if(item==order.end()){
cout<<"没有此订单"<<endl;
}else{
//item->Edit_Goods();
item->Print_Order_All();
}
}
void Order_List::Search_Order(){
string OrderID_Str=CDate().GetDateString().substr(0,8);
int month[13]={0,1,1,1,2,2,2,3,3,3,4,4,4};
bool over=1;
while(over){
int op;
cout<<" ------请选择操作------ "<<endl;
cout<<" | 1.指定订单 | "<<endl;
cout<<" | 2.今天订单 | "<<endl;
cout<<" | 3.本月订单 | "<<endl;
cout<<" | 4.本季订单 | "<<endl;
cout<<" | 5.本年订单 | "<<endl;
cout<<" | 6.全部订单 | "<<endl;
cout<<" | 7.筛选订单 | "<<endl;
cout<<" | 8.退出查询 | "<<endl;
cout<<" ---------------------- "<<endl;
scanf("%d",&op);
switch(op){
case 1:
{
cout<<" ----请输入订单编号---- "<<endl;
string seletID;
cin>>seletID;
vector<Order>::iterator tempitem=Search_Order_ID(seletID);
if(tempitem!=order.end()){
tempitem->Print_Order_All();
}else{
cout<<" ----查无此编号订单---- "<<endl;
}
break;
}
case 2:
{
int cnt=0,i=0;
for(vector<Order>::iterator it=order.begin();it!=order.end()&&i<ordernum;i++,it++){
if(OrderID_Str.substr(0,8)==(it->GetOrderID()).substr(0,8)){
it->Print_Order_All();
cnt++;
}
}
if(!cnt)cout<<"没有任何订单"<<endl;
break;
}
case 3:
{
int cnt=0,i=0;
for(vector<Order>::iterator it=order.begin();it!=order.end()&&i<ordernum;i++,it++){
if(OrderID_Str.substr(0,6)==(it->GetOrderID()).substr(0,6)){
it->Print_Order_All();
cnt++;
}
}
if(!cnt)cout<<"没有任何订单"<<endl;
break;
}
case 4:
{
int cnt=0,i=0;
for(vector<Order>::iterator it=order.begin();it!=order.end()&&i<ordernum;i++,it++){
if(OrderID_Str.substr(0,4)==(it->GetOrderID()).substr(0,4)){
int a,b;
a=atoi(OrderID_Str.substr(4,2).c_str());
b=atoi((it->GetOrderID()).substr(4,2).c_str());
if(month[a]==month[b]){
it->Print_Order_All();
cnt++;
}
}
}
if(!cnt)cout<<"没有任何订单"<<endl;
break;
}
case 5:
{
int cnt=0,i=0;
for(vector<Order