`
javasalatu
  • 浏览: 753965 次
  • 性别: Icon_minigender_2
  • 来自: 北京
博客专栏
96df99eb-e89d-3228-9c8e-967fc745ec52
程序员的自我经营之道
浏览量:7804
文章分类
社区版块
存档分类
最新评论

ProductManager

 
阅读更多
/*
*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

    ProductManager.rarProductManager.rarProductManager.rar

    Product Manager Desk Reference

    《产品经理手册》作为产品经理的百科全书,提供了一个系统性的框架,帮助产品经理理解产品从企划、开发到上市的整个流程。该手册在呈现材料时采取了一种易于理解和逻辑性强的格式,其中包括了许多有用的模板和大纲。...

    Digital Product Manager-开源

    【标题】"Digital Product Manager-开源" 在IT领域,"Digital Product Manager" 是一款基于PHP的开源软件,专为在线销售数字产品而设计。这款工具的核心功能是与PayPal的Instant Payment Notification (IPN)系统...

    人人都是产品经理静态页面_productManager.github.io.zip

    人人都是产品经理静态页面_productManager.github.io

    【网易云】Axure8.0产品经理(全集)_-wangyiyun-Axure8.0ProductManager.zip

    【网易云】Axure8.0产品经理(全集)_-wangyiyun-Axure8.0ProductManager

    good Product Manager Properties

    ### 优秀产品经理必备的核心素质深度解析 在当今竞争激烈的市场环境中,产品经理的作用变得越来越关键。一个优秀的产品经理不仅能够引领产品的成功发展,还能为公司带来显著的竞争优势。本文将基于提供的内容,深入...

    ProductManager-REST

    【标题】"ProductManager-REST" 是一个基于Java 11和Spring Boot 2.4.4构建的RESTful Web服务示例项目,它利用了JPA(Java Persistence API)来处理MySQL数据库中的数据,并使用Redis作为缓存系统。此外,该项目还...

    ProductManager:无缝连接Colin Sidberry与产品经理

    而“ProductManager:无缝连接Colin Sidberry与产品经理”这个标题可能指的是一个项目或平台,旨在促进产品管理流程中的沟通与协作,特别是强调了Colin Sidberry与产品经理之间的紧密合作。在这个场景中,Colin ...

    productManager

    在这个场景中,"productManager"可能是一个专门针对产品管理的工具、框架或者应用。结合标签"JavaScript",我们可以推测这可能是一个使用JavaScript语言开发的产品管理工具或平台。 JavaScript,作为全球最广泛使用...

    m4l6-ProductManager-JPA

    【标题】"m4l6-ProductManager-JPA"是一个基于Java开发的项目,它主要使用了Java Persistence API(JPA)来管理产品数据。这个项目可能是为了实现一个产品管理系统,帮助用户进行产品的增删改查操作。通过JPA,...

    java多语言商城源码-ProductManager:为产品工程师/产品经理/产品设计师/产品独立开发者准备的资源集和,Resourcefor

    我把productmanager resources做成了一个serverless应用 此后的持续更新会发布于note.so,找时间再汇总到github,Thanks♪(・(* ̄︶ ̄)・)ノ 目录 关于产品 碎片 产品设计流程 产品经理 原型设计工具 团队效率工具 ...

    ProductManager2

    "ProductManager2"可能是一个项目、产品或服务的代号,它强调了产品经理在产品生命周期中的关键作用。产品经理是连接市场需求、用户需求与技术实现的重要桥梁,他们负责产品的规划、设计、开发、上线及后续优化。在...

    product manger

    我为自己使用而编的简单商品管理系统,用borland c#编写, 原代码找不到了。

    Cracking the PM Interview

    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

Global site tag (gtag.js) - Google Analytics