面向对象编程实习报告-网上购物管理系统.doc_第1页
面向对象编程实习报告-网上购物管理系统.doc_第2页
面向对象编程实习报告-网上购物管理系统.doc_第3页
面向对象编程实习报告-网上购物管理系统.doc_第4页
面向对象编程实习报告-网上购物管理系统.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

附件二 【学生用】西北林科技大学信息工程学院面向对象编程实习报告题目: 网上购物管理系统 学 号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 set_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_customermanage()+ 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(product pro):void+ vip_load():void+vip_write(vip: vip_customer):void buy_product()函数说明此函数用来普通顾客购买商品,不需要入口参数,调用此函数时,函数内部需要你输入商品编号和商品数量,并且计算出应付金额,在购物单内建一条新的记录,将该商品的库存量相应的减少 buy_product_vip(vipid:string)函数说明此函数用来VIP购买商品,入口参数为vip号,函数内部功能和普通顾客的区别是计算应付金额时要打九折,还要增加一条购物历史 deal_end_buy(once_used_money:double)函数说明当普通顾客选择结束购买时,就会调用此函数,入口参数为一次的消费金额,在函数内部判断once_used_money是否大于1000,如果大于1000,就将该顾客添加为会员,否则输出消费金额 deal_end_buy_(once_used_money:double)函数说明当顾客选择结束购买时,将消费总额输出 product_load() ,vip_load()函数说明这两个函数用来将文件中的数据读到product 和 vip的容器之中,方便以后的使用 product_write(product pro) ,vip_write(vip_customer vip)函数说明这两个函数用来将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+中的一些主要知识点和应用点,如类的定义,类的实现,对象的定义,类的继承等等。可以所学有所学,所有所用,不至于自己所学知识由于没有经历可用过程,而放弃对它的兴趣。面向对象程序设计作为一门软件设计的课程,具有极强的实践性,使我加强了灵活应用理论知识的能力及面向对象程序设计技能。 这次网上购物管理系统的设计和创建,经历了平时在课堂中和考试中,决不会有的重重难题和问题。而这些问题,又都是课本上很少提到的、更深一层的知识领域和应用领域。这些问题,并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们面对难题,自己思索,自己探索,自己查资料发现问题、解决问题的能力。当然,此次任务的完成,也体现出同学之间的团结精神。所遇种种难以解决的问题,大家都会把它当作共同遇到的问题,在一起共同探讨,共同发挥自己所学和所知,投入式的互相帮助和解决困难。八、附录:核心代码清单我写的类和主函数代码:class buy_list /购买清单类public: buy_list(); buy_list(); void set_buy_list(long id,double discount,double price,double money); void show_buy_list();protected: long product_id; double product_discount; double product_price; double once_used_money;buy_list:buy_list()buy_list:buy_list()void buy_list:set_buy_list(long id,double discount,double price,double money) product_id=id; product_discount=discount; product_price=price; once_used_money=money;void buy_list:show_buy_list() printf(%-12s, 商品ID); printf(%-17s, 销售折扣); printf(%-12s, 商品价格); printf( %-12sn, 应付总额); coutproduct_id product_discount product_price once_used_moneyendl;class manage /管理员类public: manage(); virtual manage(); static double total_money; void add_product(product &pro); void add_product(); void delete_product(); void show_product(long id= 0); void change_product(); void show_product_amount_smaller(); void add_vip_customer(vip_customer &vip); void add_vip_customer(); void show_vip_customer(string vip_id= 0); void delete_vip(); void buy_product(); void buy_product_vip(string vipid); void deal_end_buy(double once_used_money); void deal_end_buy_vip(double once_used_money ); void show_vip_buy_history(string); void show_total_money(); void product_load(); void product_write(product pro); bool check(); void vip_load(); void vip_write(vip_customer vip); customer cus; vip_customer vip; double once_used_money;public: vector provec; vector cusvec; vector nomvec; buy_list list;void manage:buy_product() long id; long amount; coutid; coutamount; for (vector:iterator i=provec.begin(); iprovec.end(); +i) if (*i).product_show_id() = id) if (*i).product_show_amount() -amount 0) coutendl; cout=endl; cout对不起,该商品数量不够! endl; cout请重新操作,谢谢! endl; cout=endl; 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(); void manage:buy_product_vip(string vipid) long id; long amount; coutid; coutamount; vector:iterator iter = nomvec.begin(); for (; iternomvec.end(); +iter) if (*iter).show_vip_id() = vipid) break; vector:iterator i=provec.begin(); for (; iprovec.end(); +i) if (*i).product_show_id() = id) if (*i).product_show_amount() -amount 0) coutendl; cout=endl; cout对不起,该商品数量不够! endl; cout请重新操作,谢谢! endl; cout=endl; 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; void manage:deal_end_buy(double once_used_money ) cout - endl; cout 你消费了 once_used_money 元 = 1000) cout 恭喜您!您已经成为我们的会员! endl; string temp_name, temp_tel, temp_id,temp_address; cout endl; cout 请告诉我们一些您的信息,谢谢 endl; coutendl; cout temp_name; cout temp_tel; long m=customer:customer_id; stringstream stream; string result; stream result; temp_id=VIP; temp_id+=result; cout 这是您的ID- temp_id endl; cout 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;void manage:deal_end_buy_vip(double once_used_money ) cout = endl; cout 你消费了 once_used_money 元 duct_duct_duct_duct_amount) add_product(pro); in.close(); else cerr打开文件失败!vip.customer_namevip.customer_telvip.vip_idvip.customer_address) add_vip_customer(vip); in.close(); else cerr打开文件失败!endl; void manage:product_write(product pro) ofstream out(product.txt,ios:app); if(out) duct_id duct_name duct_price duct_amountn; out.close(); else cerr打开文件失败!endl; void manage:vip_write(vip_customer vip) ofstream out(vip.txt,ios:app); if(out) outendlvip.customer_name vip.customer_tel vip.vip_id vip.customer_addressn; out.close(); else cerr打开文件失败!endl; void manage:show_vip_buy_history(string id) string Name; long Amount,Id; vector:iterator iter = nomvec.begin(); for (; iternomvec.end(); +iter) if (*iter).show_vip_id() = id) break; cout - endl; cout 购物历史 endl endl; vector:iterator i = (*iter).historyvec.begin(); printf(商品ID 商品名 商品数量n); for ( ; i(*iter).historyvec.end(); +i) Name=(*i).product_show_name(); Id=(*i).product_show_id(); Amount=(*i).product_show_price(); coutId Name Amountchoose; manage dba; duct_load(); dba.vip_load(); switch(choose) case 1: system(cls); for(;) if(dba.check() cout = endl; cout 登录成功! endl; cout = endl; break; else cout = endl; cout 密码或用户名错误! endl; cout 请重新输入: endl; cout = endl; coutendl; system(pause); system(cls); number1: coutttt endl; coutttt 1.货物管理 endl; coutttt endl; coutttt 2.VIP管理 endl; coutttt endl; coutttt 3.查看销售总额 endl; coutttt endl; coutttt 4.返回上一页 endl; coutttt endl; coutendl; coutm; switch(m) case 1: system(cls); number2: couttttendl; coutttt 1.显示所有商品 endl; coutttt 2.增加商品 endl; coutttt 3.更改商品信息 endl;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论