/*
*File:Product.h
*Author:88250
*
*CreatedonMay2,2008,5:51PM
*/
#ifndef_PRODUCT_H
#define_PRODUCT_H
#include<string>
classProduct{
public:
Product(std::stringproductName){
name=productName;
}
std::stringname;
};
#endif/*_PRODUCT_H*/
/*
*File:RecordRow.h
*Author:88250
*
*CreatedonMay2,2008,5:54PM
*/
#ifndef_RECORDROW_H
#define_RECORDROW_H
#include<string>
classRecordRow{
public:
RecordRow(std::stringn,std::stringdir,intam,floatp,intm,intd){
name=n;
direction=dir;
amount=am;
price=p;
month=m;
day=d;
}
std::stringname;
std::stringdirection;
intamount;
floatprice;
intmonth;
intday;
};
#endif/*_RECORDROW_H*/
/**//*
*File:ProductManager.h
*Author:88250
*
*CreatedonMay2,2008,5:57PM
*/
#ifndef_PRODUCTMANAGER_H
#define_PRODUCTMANAGER_H
#include<vector>
#include"Product.h"
#include"RecordRow.h"
usingnamespacestd;
classProductManager...{
public:
voidinit();
voidsaveProduct(std::vector<Product>products);
voidreadProduct(std::vector<Product>&products);
voidsaveRecord(std::vector<RecordRow>records);
voidreadRecord(std::vector<RecordRow>&records);
voidnewProduct(stringname);
voidnewRecord(RecordRowrr);
voiddisplayName(void);
voiddisplayRecords(void);
voiddisplayStat(intproductNum,intstartM,intendM,intstartD,intendD);
voiddisplayAllStat(intstartM,intendM,intstartD,intendD);
vector<Product>productVector;
vector<RecordRow>recordVector;
private:
vector<RecordRow>getRRByName(stringname,vector<RecordRow>rrs);
vector<string>getNames(vector<RecordRow>rrs);
boolcontainsName(vector<string>names,stringname);
voiddisplayAProduct(vector<RecordRow>rr,float&mao,float&chun);
};
#endif/*_PRODUCTMANAGER_H*/
/*
*File:ProductManager.cpp
*Author:88250
*
*CreatedonMay2,2008,7:7PM
*/
#include"ProductManager.h"
#include<vector>
#include<string>
#include<fstream>
#include<iostream>
usingnamespacestd;
voidProductManager::displayAllStat(intstartM,intendM,intstarD,intendD){
vector<RecordRow>rrs;
for(inti=0;i<recordVector.size();i++){
RecordRowrr=recordVector[i];
if(rr.month>startM&&rr.month<endM){
rrs.push_back(rr);
continue;
}
if(rr.month==startM||rr.month==endM){
if(rr.day>=starD&&rr.day<=endD){
rrs.push_back(rr);
}
}
}
vector<string>names=getNames(rrs);
vector<vector<RecordRow>>rrss;
for(inti=0;i<names.size();i++){
rrss.push_back(getRRByName(names[i],rrs));
}
cout<<"品种 "<<"进总数 "<<"出总数 "<<"进总价 "
<<"出总价 "<<"阶段利润 "<<"总金额流量"<<endl;
floatmao=0.0;//毛利
floatchun=0.0;//纯利
for(inti=0;i<rrss.size();i++){
displayAProduct(rrss[i],mao,chun);
}
cout<<"当前的总毛收入:"<<mao<<endl;
cout<<"当前的总纯收入:"<<chun<<endl;
cout<<endl;
}
voidProductManager::displayStat(intproductNum,
intstartM,intendM,intstarD,intendD){
vector<RecordRow>rrs;
for(inti=0;i<recordVector.size();i++){
RecordRowrr=recordVector[i];
if(rr.name==productVector[productNum].name){
if(rr.month>startM&&rr.month<endM){
rrs.push_back(rr);
continue;
}
if(rr.month==startM||rr.month==endM){
if(rr.day>=starD&&rr.day<=endD){
rrs.push_back(rr);
}
}
}
}
cout<<"品种 "<<"进总数 "<<"出总数 "<<"进总价 "
<<"出总价 "<<"阶段利润 "<<"总金额流量"<<endl;
floatmao=0.0;
floatchun=0.0;
displayAProduct(rrs,mao,chun);
cout<<"当前的总毛收入:"<<mao<<endl;
cout<<"当前的总纯收入:"<<chun<<endl;
cout<<endl;
}
voidProductManager::displayAProduct(vector<RecordRow>rr,
float&mao,float&chun){
intiam=0;
intoam=0;
floatip=0.0;
floatop=0.0;
floatpro=0.0;
floatppro=0.0;
floatiavg=0.0;
intinum=0;
if(rr[0].name.length()>=8){
cout<<rr[0].name<<" ";
}else{
cout<<rr[0].name<<" ";
}
for(inti=0;i<rr.size();i++){
if(rr[i].direction=="进"){
iam+=rr[i].amount;
iavg+=rr[i].price;
ip+=rr[i].amount*rr[i].price;
inum++;
}else{
oam+=rr[i].amount;
op+=rr[i].amount*rr[i].price;
}
}
iavg=iavg/inum;
pro=op-ip;
ppro=op-oam*iavg;
cout<<iam<<" "<<oam<<" "<<ip<<" "<<op<<" "
<<ppro<<" "<<pro<<" "<<endl;
chun+=ppro;
mao+=op;
}
vector<RecordRow>ProductManager::getRRByName(stringname,
vector<RecordRow>rrs){
vector<RecordRow>ret;
for(inti=0;i<rrs.size();i++){
if(rrs[i].name==name){
ret.push_back(rrs[i]);
}
}
returnret;
}
vector<string>ProductManager::getNames(vector<RecordRow>rrs){
vector<string>ret;
for(inti=0;i<rrs.size();i++){
if(!containsName(ret,rrs[i].name)){
ret.push_back(rrs[i].name);
}
}
returnret;
}
boolProductManager::containsName(vector<string>names,stringname){
for(inti=0;i<names.size();i++){
if(names[i]==name){
returntrue;
}
}
returnfalse;
}
voidProductManager::init(){
std::vector<Product>products;
readProduct(products);
productVector=products;
std::vector<RecordRow>rrs;
readRecord(rrs);
recordVector=rrs;
}
voidProductManager::newProduct(stringname){
vector<Product>::iteratori;
boolisExisted=false;
for(i=productVector.begin();i!=productVector.end();i++){
if((*i).name==name){
isExisted=true;
}
}
if(!isExisted){
productVector.push_back(Product(name));
}
saveProduct(productVector);
}
voidProductManager::newRecord(RecordRowrr){
recordVector.push_back(rr);
saveRecord(recordVector);
}
voidProductManager::displayName(void){
for(inti=0;i<productVector.size();i++){
cout<<i<<"."<<productVector[i].name<<endl;
}
cout<<endl;
}
voidProductManager::displayRecords(void){
if(!recordVector.empty()){
cout<<"品种 "<<"流向 "<<"数量 "<<"单价 "<<"日期"<<endl;
for(inti=0;i<recordVector.size();i++){
if(recordVector[i].name.length()>=8){
cout<<recordVector[i].name<<" "<<recordVector[i].direction<<" "
<<recordVector[i].amount<<" "<<recordVector[i].price
<<" "<<recordVector[i].month<<"-"<<recordVector[i].day
<<endl;
}else{
cout<<recordVector[i].name<<" "<<recordVector[i].direction<<" "
<<recordVector[i].amount<<" "<<recordVector[i].price
<<" "<<recordVector[i].month<<"-"<<recordVector[i].day
<<endl;
}
}
cout<<endl;
}
}
voidProductManager::saveProduct(std::vector<Product>products){
ofstreamfout("name");
if(!fout){
cout<<"Cannotopenoutputfile! ";
return;
}
for(inti=0;i<products.size();i++){
fout<<products[i].name<<endl;
}
fout.close();
}
voidProductManager::saveRecord(std::vector<RecordRow>records){
ofstreamfout("data");
if(!fout){
cout<<"Cannotopenoutputfile! ";
return;
}
for(inti=0;i<records.size();i++){
fout<<"Record"<<endl
<<records[i].name<<endl
<<records[i].direction<<endl
<<records[i].amount<<endl
<<records[i].price<<endl
<<records[i].month<<endl
<<records[i].day<<endl;
}
fout.close();
}
voidProductManager::readProduct(std::vector<Product>&products){
ifstreamfin("name");
if(!fin){
cout<<"Cannotopeninputfile! ";
return;
}
stringaLine;
while(getline(fin,aLine)){
products.push_back(Product(aLine));
}
fin.close();
}
voidProductManager::readRecord(std::vector<RecordRow>&records){
ifstreamfin("data");
if(!fin){
cout<<"Cannotopeninputfile! ";
return;
}
stringaLine;
while(getline(fin,aLine)){
stringn,dir;
intam,m,d;
floatpr;
if(aLine.at(0)=='R'){
getline(fin,aLine);
n=aLine;
getline(fin,aLine);
dir=aLine;
getline(fin,aLine);
am=atoi(aLine.c_str());
getline(fin,aLine);
pr=atof(aLine.c_str());
getline(fin,aLine);
m=atoi(aLine.c_str());
getline(fin,aLine);
d=atoi(aLine.c_str());
records.push_back(RecordRow(n,dir,am,pr,m,d));
}
}
fin.close();
}
/*
*File:Main.cpp
*Author:88250
*
*CreatedonMay2,2008,9:36PM
*/
#include"ProductManager.h"
#include<iostream>
usingnamespacestd;
intmain(intargc,char**argv){
ProductManagerpm;
pm.init();
intinput;
intnum=0;
stringname;
intamount=0;
floatprice=0.0;
intmonth=1;
intday=1;
intdir=1;
intsm=1;
intsd=1;
intem=2;
inted=1;
intpn=0;
stringd;
charconfirm='n';
while(true){
cout<<"1.查看现有品种"<<endl;
cout<<"2.增加新品种"<<endl;
cout<<"3.添加销售记录"<<endl;
cout<<"4.查看所有销售记录"<<endl;
cout<<"5.统计帐目"<<endl;
cout<<"请选择:"<<"";
cin>>input;
switch(input){
case1:
pm.displayName();
break;
case2:
cout<<"请输入品种名称(111返回):"<<"";
cin>>name;
if(name=="111"){
break;
}
pm.newProduct(name);
cout<<"新建品种成功!"<<endl;
break;
case3:
pm.displayName();
cout<<"请输入产品编号(111返回):";
cin>>num;
if(num==111){
break;
}
if(num>=0&&num<=pm.productVector.size()){
name=pm.productVector[num].name;
}else{
cout<<"输入有误!";
break;
}
cout<<"请选择流向(1.进;2.出):";
cin>>dir;
if(dir==1){
d="进";
cout<<"请输入进货数量:";
cin>>amount;
cout<<"请输入进货单价:";
cin>>price;
cout<<"请输入进货月:";
cin>>month;
cout<<"请输入进货日:";
cin>>day;
}elseif(dir==2){
d="出";
cout<<"请输入卖出数量:";
cin>>amount;
cout<<"请输入卖出单价:";
cin>>price;
cout<<"请输入销售月:";
cin>>month;
cout<<"请输入销售日:";
cin>>day;
}else{
cout<<"输入有误!";
break;
}
cout<<"确定?(y.确定n.放弃)"<<endl;
cin>>confirm;
if(confirm=='y'){
pm.newRecord(RecordRow(name,d,amount,price,month,day));
}
break;
case4:
pm.displayRecords();
break;
case5:
cout<<"开始月(111返回):";
cin>>sm;
if(sm==111){
break;
}
cout<<"开始日:";
cin>>sd;
cout<<"结束月:";
cin>>em;
cout<<"结束日:";
cin>>ed;
cout<<"请选择统计方式(1.单项品种2.所有品种):";
cin>>num;
if(num==1){
pm.displayName();
cout<<"请输入产品编号:";
cin>>pn;
pm.displayStat(pn,sm,em,sd,ed);
}elseif(num==2){
pm.displayAllStat(sm,em,sd,ed);
}else{
cout<<"选择有误,返回!"<<endl;
}
break;
default:
cout<<"选择有误!"<<endl;
}
}
return(EXIT_SUCCESS);
}
分享到:
相关推荐
ProductManager.rarProductManager.rarProductManager.rar
《产品经理手册》作为产品经理的百科全书,提供了一个系统性的框架,帮助产品经理理解产品从企划、开发到上市的整个流程。该手册在呈现材料时采取了一种易于理解和逻辑性强的格式,其中包括了许多有用的模板和大纲。...
【标题】"Digital Product Manager-开源" 在IT领域,"Digital Product Manager" 是一款基于PHP的开源软件,专为在线销售数字产品而设计。这款工具的核心功能是与PayPal的Instant Payment Notification (IPN)系统...
人人都是产品经理静态页面_productManager.github.io
【网易云】Axure8.0产品经理(全集)_-wangyiyun-Axure8.0ProductManager
### 优秀产品经理必备的核心素质深度解析 在当今竞争激烈的市场环境中,产品经理的作用变得越来越关键。一个优秀的产品经理不仅能够引领产品的成功发展,还能为公司带来显著的竞争优势。本文将基于提供的内容,深入...
【标题】"ProductManager-REST" 是一个基于Java 11和Spring Boot 2.4.4构建的RESTful Web服务示例项目,它利用了JPA(Java Persistence API)来处理MySQL数据库中的数据,并使用Redis作为缓存系统。此外,该项目还...
而“ProductManager:无缝连接Colin Sidberry与产品经理”这个标题可能指的是一个项目或平台,旨在促进产品管理流程中的沟通与协作,特别是强调了Colin Sidberry与产品经理之间的紧密合作。在这个场景中,Colin ...
在这个场景中,"productManager"可能是一个专门针对产品管理的工具、框架或者应用。结合标签"JavaScript",我们可以推测这可能是一个使用JavaScript语言开发的产品管理工具或平台。 JavaScript,作为全球最广泛使用...
【标题】"m4l6-ProductManager-JPA"是一个基于Java开发的项目,它主要使用了Java Persistence API(JPA)来管理产品数据。这个项目可能是为了实现一个产品管理系统,帮助用户进行产品的增删改查操作。通过JPA,...
我把productmanager resources做成了一个serverless应用 此后的持续更新会发布于note.so,找时间再汇总到github,Thanks♪(・(* ̄︶ ̄)・)ノ 目录 关于产品 碎片 产品设计流程 产品经理 原型设计工具 团队效率工具 ...
"ProductManager2"可能是一个项目、产品或服务的代号,它强调了产品经理在产品生命周期中的关键作用。产品经理是连接市场需求、用户需求与技术实现的重要桥梁,他们负责产品的规划、设计、开发、上线及后续优化。在...
我为自己使用而编的简单商品管理系统,用borland c#编写, 原代码找不到了。
Cracking the PM InterviewHow many pizzas are delivered in Manhattan?... Learn how the ambiguously-named 'PM' (product manager / program manager) role varies across companies, what exp