课程论文.docx

上传人:b****4 文档编号:11355961 上传时间:2023-05-31 格式:DOCX 页数:37 大小:154KB
下载 相关 举报
课程论文.docx_第1页
第1页 / 共37页
课程论文.docx_第2页
第2页 / 共37页
课程论文.docx_第3页
第3页 / 共37页
课程论文.docx_第4页
第4页 / 共37页
课程论文.docx_第5页
第5页 / 共37页
课程论文.docx_第6页
第6页 / 共37页
课程论文.docx_第7页
第7页 / 共37页
课程论文.docx_第8页
第8页 / 共37页
课程论文.docx_第9页
第9页 / 共37页
课程论文.docx_第10页
第10页 / 共37页
课程论文.docx_第11页
第11页 / 共37页
课程论文.docx_第12页
第12页 / 共37页
课程论文.docx_第13页
第13页 / 共37页
课程论文.docx_第14页
第14页 / 共37页
课程论文.docx_第15页
第15页 / 共37页
课程论文.docx_第16页
第16页 / 共37页
课程论文.docx_第17页
第17页 / 共37页
课程论文.docx_第18页
第18页 / 共37页
课程论文.docx_第19页
第19页 / 共37页
课程论文.docx_第20页
第20页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

课程论文.docx

《课程论文.docx》由会员分享,可在线阅读,更多相关《课程论文.docx(37页珍藏版)》请在冰点文库上搜索。

课程论文.docx

课程论文

 

西北林科技大学信息工程学院

面向对象编程实习报告

题目:

网上购物管理系统

学号

2013012972

姓名

申金顺

专业班级

计算机科学与技术131

指导教师

胡少军

实践日期

2015年3月2日—3月13日

目录

一、综合训练目的与要求1

二、综合训练任务1

三、总体设计1

四、详细设计说明1

五、调试与测试1

六、实习日志1

七、实习总结1

八、附录:

核心代码清单1

一、综合训练目的与要求

1.通过团队协作,采用面向对象程序设计思想(类的设计,抽象,封装,包含与继承,多态性,简易UML图)进行项目开发,并能够解决一定的实际问题;

2.掌握撰写规范程序设计文档的能力,训练语言组织与表达能力。

3.通过综合实训,使我们更加牢固的掌握有关面向对象的知识,同时加深对面向对象和C++编程技术的理解和掌握,培养实际的应用程序开发能力。

4.培养我们使用MFC或者QT设计程序,使我们学会用这些工具去开发软件

二、综合训练任务

1.网上购物管理系统中存在如下业务实体:

顾客(编号、名称、级别、email、注册时间等),商品(编号、名称、价格、库存量、分类、上架时间等),商品分类目录(编号、名称、级别、创建时间、其他说明等,该目录需要支持嵌套亦即目录下面还可以设定子目录),购物车(编号、顾客编号、创建时间、失效时间、商品清单信息等),购物车商品信息(流水号、购物车编号、商品编号、数量、单价、应付款、添入时间等);

2.支持对以上相关业务实体的新增、删除、属性编辑、查询等操作;

3.网上购物管理中以上所有业务实体的保存与打开等文件操作。

4.我的主要任务是:

购物单类的设计,manage类中有关顾客的操作,还有文件的读写,以及main函数的结构设计和代码编写。

 

三、总体设计

我们做的网上购物管理系统,主要功能有:

对顾客和商品的查询,添加,删除,信息更改,以及查看销售总额和购买记录等。

我们做的这个一共有五个类分别有:

普通顾客类,VIP类,管理员类,购物清单类和货物类。

我设计的类有:

购物清单类和管理员类的一部分。

四、详细设计说明

(1)购物单类UML图:

buy_list

#product_id:

long

#product_discount:

double

#product_price:

double

#once_used_money:

double

+buy_list()

+~buy_list()

+set_buy_list(id:

long,discount,price,money:

double):

void

+show_buy_list():

void

1set_buy_list()函数说明:

在购物单中创建一条新的记录,入口参数为商品编号id,折扣

discount,价格price,和应付金额money。

②show_buy_list()函数说明

分别输出每条记录中的product_id,product_discount,product_price,

once_used_money

(2)管理员类UML图:

manage

-provec:

vector

-cusvec:

vector

-nomvec:

vector

-list:

buy_list

+total_money:

double

+cus:

customer

+vip:

vip_customer

manage()

+~manage()

+add_product(pro:

product):

void

+add_product():

void

+delete_product():

void

+show_product(id:

long)void

+change_product():

void

+show_product_amount_smaller():

void

+add_vip_customer(vip:

vip_customer):

void

+add_vip_customer():

void

+show_vip_customer(vip_id:

string):

void

+delete_vip():

void

+buy_product():

void

+buy_product_vip(vipid:

string):

void

+deal_end_buy(once_used_money:

double):

void

+deal_end_buy_vip(once_used_money:

double):

void

+show_vip_buy_history(vipid:

string):

void

+show_total_money():

void

+check():

bool

+product_load():

void

+product_write(productpro):

void

+vip_load():

void

+vip_write(vip:

vip_customer):

void

1buy_product()函数说明

此函数用来普通顾客购买商品,不需要入口参数,调用此函数时,函数内部需要你输入商品编号和商品数量,并且计算出应付金额,在购物单内建一条新的记录,将该商品的库存量相应的减少

2buy_product_vip(vipid:

string)函数说明

此函数用来VIP购买商品,入口参数为vip号,函数内部功能和普通顾客的区别是计算应付金额时要打九折,还要增加一条购物历史

3deal_end_buy(once_used_money:

double)函数说明

当普通顾客选择结束购买时,就会调用此函数,入口参数为一次的消费金额,在函数内部判断once_used_money是否大于1000,如果大于1000,就将该顾客添加为会员,否则输出消费金额

4deal_end_buy_(once_used_money:

double)函数说明

当顾客选择结束购买时,将消费总额输出

5product_load(),vip_load()函数说明

这两个函数用来将文件中的数据读到product和vip的容器之中,方便以后的使用

6product_write(productpro),vip_write(vip_customervip)函数说明

这两个函数用来将pro和vip中的数据写入到文件当中,并使用追加模式

(3)主函数设计结构图

 

 

在main函数的设计中,我使用了switch层层嵌套;

虽然goto语句不被提倡,但是为了菜单的跳转,在main函数中我使用了goto语句.

 

五、调试与测试

(1)普通顾客购买商品

显示所有商品:

 

购买商品:

结束购买:

 

如果消费金额大于1000,提示你加入会员:

查看会员名单:

(2)VIP购买商品

结束购买:

还可以查看购物历史:

(3)main函数的调试

main函数没办法截图,所以不再截图。

在main函数调试过程之中因为switch之间的层层嵌套,以至于有时候会出现混乱,发生编译错误,如果不认真查看,是没办法找出来的。

虽然goto不被看好,但是为了菜单的跳转,也只能使用了goto。

六、实习日志

今天是开学的第一天,当然也是实习开始的第一天,似乎有点受不了,但是也没有办法。

早上,我和我的伙伴李承阳选好了题目——《网上购物管理系统》。

之所以选这个题目,是因为我们在数据库实习的时候,我和他做的就是网上销售的题目,所以c++实习的时候应该也会简单一些吧!

下午,我和他先把实习计划书写好,将进度划分好,而且分析了题目,我们应该做哪些工作。

2015.3.2

昨天我们只是进行了初步的分析,今天我们进行了更深一步的交流和分析。

网上购物管理系统,不仅要有管理员的操作而且要有顾客购买商品的操作。

由此可见,我们可以从管理员和顾客两个角度来写。

但是对类的设计,我们却还没有一个明确的目标,只有把类搞清楚了,网上管理系统的功能模块才能出来。

2015.3.3

 

今天我们一起进行了研究,做了关于类的分析和设计。

我们一共要写五个类,分别为管理员类,货物类,购物清单类,顾客类,以及VIP类。

我和他讨论了一下,决定我写购物清单类和管理员类中的有关顾客购物的函数,还有最终主函数的编写,主函数的编写主要是各种菜单之间的跳转。

其他的有李承阳来编写。

准备工作做了好几天,明天就可以编写代码了,何况还要用QT做界面,时间真的是有点紧啊!

2015.3.4

昨天我们已经分工明确,所以今天我们开始各干各的。

今天我先编写buy_list类,其中有四个数据成员,分别为商品编号,折扣,商品价格和应付金额。

还有构造函数,析构函数和购物单记录的添加,以及购物单的输出。

虽然看起来并不难,但是这也让我编写了整整一天。

2015.3.5

既然购物单类我已经编写好了,那么我就开始着手编写顾客购买商品的函数。

顾客分为普通顾客和VIP,那自然他们的购买方式也是不一样的,我决定让VIP可以享受九折的优惠,普通顾客是没有的。

但是当普通顾客购买金额达到1000元时,就可以成为VIP,从此享受优惠。

2015.3.6

一周已经过去了,可我们程序还有好多都没有做。

老师看我们的进度有点慢,所以我们不用做界面了,只要把网上购物的基本功能实现就行了,看来也只能这样了。

幸亏我和李承阳在周六周日的时候加了班,不然的话真的做不完了。

现在,我就剩下main函数还没有写,要想写main函数必须把我的李承阳的代码合在一起才行,不然我是没办法写的。

2015.3.9

今天我和李承阳将我们编写的代码合在一起,由于不是同一个人写的,所以在命名上有一些差异,以至于编译不能通过,今天一整天我们将我们的代码进行了一些小小的修改。

在生成VIP编号的时候,我们需要将long类型变成string类型,我们两个人都不会,只能网上去查,最后我们才搞明白,需要一个的头文件。

2015.3.10

本来按老师的要求今天应该应该写实习论文了,可是我们的主函数还没有写呢,只能先缓缓了。

今天做了整整一天才把main函数做好,本来也并不难,可是由于switch之间的层层嵌套,很容易发生混乱。

我也算是认真细心地人了,可是也会弄错。

一般来说,goto语句是不被提倡的,可是为了菜单之间的跳转,我也就用了,实在是没办法,迫不得已。

2015.3.11

由于明天就要开始答辩了,而且我们就是第二个,所以我们决定先把PPT做好,等到明天答辩结束和星期六再写实习论文,不然的话连明天的答辩都没办法。

因为我们只在PPT里展示我们自己的内容,所以我在ppt里写了类图,还有主函数中的菜单之间的关系图,以及我们这个程序存在的缺陷。

2015.3.12

今天早上我们先进行了答辩,答辩还可以吧!

想一想实习就要结束了,还是比较高兴的。

不过我们的论文还没有完成,那就今天下午和明天写吧,反正老师留的时间还是比较充裕的!

2015.3.13

 

七、实习总结

通过完成本次面向对象程序设计的任务,使我熟练和掌握了上学期所学的有关c++中的一些主要知识点和应用点,如类的定义,类的实现,对象的定义,类的继承等等。

可以所学有所学,所有所用,不至于自己所学知识由于没有经历可用过程,而放弃对它的兴趣。

面向对象程序设计作为一门软件设计的课程,具有极强的实践性,使我加强了灵活应用理论知识的能力及面向对象程序设计技能。

  

这次网上购物管理系统的设计和创建,经历了平时在课堂中和考试中,决不会有的重重难题和问题。

而这些问题,又都是课本上很少提到的、更深一层的知识领域和应用领域。

这些问题,并不是我们平时只靠课本,就可以轻易解决的。

所以,锻炼了我们面对难题,自己思索,自己探索,自己查资料发现问题、解决问题的能力。

当然,此次任务的完成,也体现出同学之间的团结精神。

所遇种种难以解决的问题,大家都会把它当作共同遇到的问题,在一起共同探讨,共同发挥自己所学和所知,投入式的互相帮助和解决困难。

八、附录:

核心代码清单

我写的类和主函数代码:

 

classbuy_list//购买清单类

{

public:

buy_list();

~buy_list();

voidset_buy_list(longid,doublediscount,doubleprice,doublemoney);

voidshow_buy_list();

protected:

longproduct_id;

doubleproduct_discount;

doubleproduct_price;

doubleonce_used_money;

};

 

buy_list:

:

buy_list(){}

buy_list:

:

~buy_list(){}

voidbuy_list:

:

set_buy_list(longid,doublediscount,doubleprice,doublemoney)

{

product_id=id;

product_discount=discount;

product_price=price;

once_used_money=money;

}

voidbuy_list:

:

show_buy_list()

{

printf("%-12s","商品ID");

printf("%-17s","销售折扣");

printf("%-12s","商品价格");

printf("%-12s\n","应付总额");

cout<

}

 

classmanage//管理员类

{

public:

manage();

virtual~manage();

staticdoubletotal_money;

voidadd_product(product&pro);

voidadd_product();

voiddelete_product();

voidshow_product(longid=0);

voidchange_product();

voidshow_product_amount_smaller();

voidadd_vip_customer(vip_customer&vip);

voidadd_vip_customer();

voidshow_vip_customer(stringvip_id="0");

voiddelete_vip();

voidbuy_product();

voidbuy_product_vip(stringvipid);

voiddeal_end_buy(doubleonce_used_money);

voiddeal_end_buy_vip(doubleonce_used_money);

voidshow_vip_buy_history(string);

voidshow_total_money();

 

voidproduct_load();

voidproduct_write(productpro);

boolcheck();

voidvip_load();

voidvip_write(vip_customervip);

customercus;

vip_customervip;

doubleonce_used_money;

public:

vectorprovec;

vectorcusvec;

vectornomvec;

buy_listlist;

};

voidmanage:

:

buy_product()

{

longid;

longamount;

cout<<"请输入你需要购买商品的编号:

";

cin>>id;

cout<<"请输入你需要购买商品的数量:

";

cin>>amount;

for(vector:

:

iteratori=provec.begin();i

{

if((*i).product_show_id()==id)

{

if((*i).product_show_amount()-amount<0)

{

cout<

cout<<"==========================="<

cout<<"对不起,该商品数量不够!

"<

cout<<"请重新操作,谢谢!

"<

cout<<"==========================="<

break;

}

(*i).reduce_product_amount(amount);

total_money+=amount*((*i).product_show_price());

once_used_money+=amount*((*i).product_show_price());

list.set_buy_list((*i).product_show_id(),0,(*i).product_show_price(),once_used_money);

list.show_buy_list();

}

}

}

 

voidmanage:

:

buy_product_vip(stringvipid)

{

longid;

longamount;

cout<<"请输入你需要购买商品的编号:

";

cin>>id;

cout<<"请输入你需要购买商品的数量:

";

cin>>amount;

vector:

:

iteratoriter=nomvec.begin();

for(;iter

{

if((*iter).show_vip_id()==vipid)

{

break;

}

}

vector:

:

iteratori=provec.begin();

for(;i

{

if((*i).product_show_id()==id)

{

if((*i).product_show_amount()-amount<0)

{

cout<

cout<<"==========================="<

cout<<"对不起,该商品数量不够!

"<

cout<<"请重新操作,谢谢!

"<

cout<<"==========================="<

break;

}

(*i).reduce_product_amount(amount);

total_money+=(amount*((*i).product_show_price()))*0.9;

once_used_money+=(amount*((*i).product_show_price()))*0.9;

(*iter).historyvec.push_back(product((*i).product_show_id(),(*i).product_show_name(),(*i).product_show_price(),amount));

list.set_buy_list((*i).product_show_id(),0.9,(*i).product_show_price(),once_used_money);

list.show_buy_list();

(*iter).have_bought=true;

}

}

}

voidmanage:

:

deal_end_buy(doubleonce_used_money)

{

cout<<"---------------------------"<

cout<<"你消费了"<

if(once_used_money>=1000)

{

cout<<"恭喜您!

!

!

您已经成为我们的会员!

"<

stringtemp_name,temp_tel,temp_id,temp_address;

cout<

cout<<"请告诉我们一些您的信息,谢谢"<

cout<

cout<<"您的名字:

";

cin>>temp_name;

cout<<"您的电话:

";

cin>>temp_tel;

longm=customer:

:

customer_id;

stringstreamstream;

stringresult;

stream<

stream>>result;

temp_id="VIP";

temp_id+=result;

cout<<"这是您的ID----"<

cout<<"您的地址:

";

cin>>temp_address;

nomvec.push_back(vip_customer(temp_name,temp_tel,temp_id,temp_address));

vip_write(vip_customer(temp_name,temp_tel,temp_id,temp_address));

}

once_used_money=0;

}

voidmanage:

:

deal_end_buy_vip(doubleonce_used_money)

{

cout<<"======================================="<

cout<<"你消费了"<

}

voidmanage:

:

product_load()

{

ifstreamin("product.txt");

productpro;

if(in)

{

while(in>>pro.product_id>>pro.product_name>>pro.product_price>>pro.product_amount)

{

add_product(pro);

}

in.close();

}

else

{

cerr<<"打开文件失败!

"<

}

}

 

voidmanage:

:

vip_load(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2