




免费预览已结束,剩余20页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-软件工程实践报告设计题目: 商品销售统计 学校: 南昌航空大学 班级: 姓名: 学号: 指导老师: 邱天 完成日期: 2014年2月19日 欢迎下载-摘要商品销售统计系统程序设计利用计算机技术,使得企业生产、库存和销售能够有利结合起来,提高企业的效率和效益。利用该系统可以为决策者和管理者及时掌握时常动态和企业的生产状况,以及对员工销售额的统计。销售统计系统是一个商品企业单位不可缺少的部分,它的内容对于公司的决策者和管理者来说都至关重要,所以销售统计系统应该能够为管理人员提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对员工信息及业绩进行管理,具有手工管理所无法比拟的优点。关键字:计算机技术、提高效益、日渐成熟、不可或缺。目录第一章、课设设计目的与要求11.1 目的与要求2第二章、课题介绍-商品销售系统32.1课设题目32.2 任务和要求3第三章、算法的设计53.1 本程序的流程图53.2 算法的思路5第四章、详细设计与调试84.1 系统界面管理84.2 商品管理界面84.3 商品管理各功能的实现94.3.1 商品的添加94.3.2 商品的删除94.3.3 商品的查找104.3.4 商品的显示104.4 购物功能的实现11第五章、调试手册与测试数据125.1 调试手册125.2 测试数据12第六章 实验心得与体会13附录一14附录二21前言近年来,随着商品销售市场的不断扩大,有关商品的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致商品销售管理上的混乱,人力与物力过多浪费,用于支付职员的工资不断增加,从而使各大商品经销商的负担过重,影响整个销售部门的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的商品销售管理系统,对欲要销售的商品进行集中统一的管理。本系统开发的总设计目标是实现商品经销商对商品的系统化、规范化和自动化管理,实现对所经销商品的集中统一管理。第一章 课设设计目的与要求1.1目的 Visual C+面向对象与可视化程序设计是计算机专业一门重要的专业基础课。此次课程设计的目的是以程序设计语言为基础,通过完成一些具有一定难度的课程设计题目的编写、调试、运行工作,进一步掌握面向过程和面向对象程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实际相结合。从而提高自我分析问题、解决问题的能力。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1) 进一步巩固、加深学生所学专业课程Visual C+面向对象与可视化程序设计的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。(3)利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。(5)掌握面向对象的程序设计方法。(6)进一步掌握在集成环境下如何调试程序、修改程序和程序的测试。1.2 要求从课程设计的目的出发,通过设计工作的各个环节,达到以下教学要求:1) 根据实现的功能,划分出合理的对象类,明确对象类间的关系。 2)利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。3)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。4) 为每个对象类设计正确的域和方法,为每个方法设计合理的方法体。同时,为对象类及内部的域和方法运用正确的修饰符,如访问控制符等。5)编程简练,程序功能齐全,能正确运行。6)进一步掌握在集成环境下如何调试程序、修改程序和程序的测试。第二章 课题介绍-商品销售系统2.1课设题目编写商品销售统计程序,商品的信息有:商品的名称,计量单位(重量或件),单价。所有商品的信息事先已存入计算机,屏幕上显示所有商品的名称,选择商品名,输入商品计量单位(如重量,件数等),根据单价算出总价。客户一次购物可能购买多种商品,程序应计算出客户应付的钱款数。2.2 任务和要求程序分为两个部分:第一部分用于输入商品的信息并允许修改和删除;第二部分实现销售统计。程序运行时由用户选择进入哪一部分功能,并能在运行时在两部分之间切换。第二部分运行时,首先显示所有商品名称及代码(商品数目较多时,应考虑分屏显示),用户输入商品代码及商品重量或件数,用户一次操作可输入若干商品的购买信息,然后输入一个特殊的代码(如-1)表示本次购物结束。此时。程序计算出应付钱款数并显示。 测试数据:程序应输入不少于10种商品的信息,并进行模拟运行。实现提示:本程序的商品信息管理可采用既定义一个商品类,每种商品作为商品类的实例(对象)存储在链表节点中的数据结构。2.3 问题分析:按照要求这个程序的编写要求,由于包含多种实现要求,所以在编写时需要多个实现函数,这样就要定义一个类或机构体来统筹各个函数以及用链表或指针数组来储存输入的常量数据,并且在各个转换点设置相应的提示语句使整个程序便于操作。在修改数据的函数实现时,由于一个商品包含多个变量,要想在修改某一个数据后而不影响其他的数据,所以就必须要有一个switch语句;在商品信息显示函数的实现时,由于中间要有一个购买函数的实现,所以商品数量会随着商品的购买而减少,所以要将购买的数量另外定义一个变量。关于switch语句的运用在这个程序这可能要多次使用,主要在一个函数拥有多个变量或变量函数。第3章 算法的设计3.1 本程序的流程图开始输入产品编号或产品名称 添加、删除、查询、排序显示、保存、汇总、计算判断编号或名称 结束结束3.2 算法的思路3.2.1 定义一个结构体,该结构体用来存放商品的代码,名称等信息:struct shangpinint number;char name30;float weight;float price;shangpin *next;3.2.2 定义list链表类,用来动态的存放商品的信息:class list /定义链表类 shangpin *elems; public: list() elems=0; list(); virtual bool insert(); void insert1(shangpin *pr,float wgt);/此虚函数在派生类中可重新定义 bool insert2(); virtual bool deletes(int); /此虚函数在派生类中可重新定义 bool contain(int); /定义重载的构造函数 bool contain1(int); shangpin *chazhao(int); void print(); void print1(); void shanchu();3.2.3 定义list的派生类set类,用来对商品进行操作:class set:public list int card;/将集合类set定义为链表类list的派生类 struct shangpin shp; public: set() bool insert(); /重定义此函数 bool deletes(int); /重定义此函数;第四章 详细设计与调试采用C+6.0作为开发工具,用面向对象编程,对所要处理的商品信息进行存储,分别调用各个功能函数来处理。4.1 系统界面管理void inr() coutendl;cout*endl;cout 欢迎进入商店系统,请选择相应的功能,如 按 1 键,进行商品管理操作endl;cout 1 :商品管理 2 :购物endl;cout a :退出endl;cout*endl;4.2 商品管理界面void ini() coutendl;cout*endl;cout 欢迎进入商品管理系统,请选择相应的功能,如 按 1 键,进行添加操作endl;cout 1 :添加 2 :删徐 endl;cout 3 :查找 4 :显示 endl;cout q :退出endl;cout*endl;cout请选择:;4.3 商品管理各功能的实现4.3.1 商品的添加bool list:insert() /定义list类中插入元素的成员函数int num;cout请再次输入商品的代码num; shangpin *elem=new shangpin; /为新元素分配存储 if (elem!=0) elem-number=num; cout请输入商品的名称elem-name; cout请输入商品的价格(单位:元)elem-price;/将新元素插入到链表头 elem-next=elems; elems=elem; return true; else return false;4.3.2 商品的删除bool list:deletes(int number) /定义list类中删除元素的成员函数 if(elems=0) return false; /若表为空,返回false shangpin *tmp=elems; if(elems-number=number) /若待删除的元素为表头元素 elems=elems-next; delete tmp; return true; else for(shangpin *elem=elems; elem-next!=0; elem=elem-next) if(elem-next-number=number) /循环查找待删除元素 tmp=elem-next; elem-next=tmp-next; delete tmp; return true; return false;4.3.3 商品的查找bool list:contain1(int number)if(elems=0)cout没有此商品number=number)cout商品代码:number商品名称:name商品价格:pricenext!=0; elem=elem-next)if(elem-next-number=number)cout商品代码:next-number商品名称:next-name商品的价格:next-price元endl;return true;cout没有此商品next) cout商品代码:number 商品名称:name 商品价格:price元endl; coutnext) cout商品代码:number 商品名称:name 商品价格:price元商品的重量或件数:weightendl; coutendl;4.4 购物功能的实现cout请输入你所要购买的商品的代码num4;cout请输入你要购买的件数或重量weight;shangpin *p;p=ptr-chazhao(num4);ptr1-insert1(p,weight);zonge=zonge+(p-price)*weight;cout是否购物完毕?endl;cout如果购物完毕,请输入* b *结束购物endl;cout如果继续购物,请随机输入一个字符,但不要输入*b*或*B*ch2;cout你购买的商品清单如下:print1();ptr1-shanchu();cout你所要支付的总金额为:zongeendl;zonge=0;第五章 调试手册与测试数据5.1 调试手册(1)、error C2143: syntax error : missing ; before 行246少了一个分号(2)、error C2562: main : void function returning a value空类型不能有返回值(3)、error C2679: binary : no operator defined which takes a right-hand operand of type (or there is no acceptable conversion) ti.getName后面少了()5.2 测试数据:进入演示程序后,即显示对话形式的提示操作过程:第六章 实验心得与体会c+课程设计在基本知识上由老师引导,自己很多都靠自学,不明白的问老师,但由此自学能力得到了很大的培养。在设计过程中,我感觉到一点:程序是不能一气呵成的,至少一气呵成的程序不会尽善尽美,程序编写要一步一步的完成。首先,对于要编写的程序要有一个总体思想,要明确想要什么,只要把思想理顺清楚了,如此才能够把程序分割成几个模块,即多个函数,一块一块的编写,然后将分散的函数用另外的函数链接起来或者用main函数链接。到了这一步,程序的框架也就完成了,之后就是调试查错误以及修改了。为了让自己的程序更加的美观和更加的简洁,最后我们还得对程序再进行进一步的修改,优化程序的阶段是很重要的。附录一源程序:#include#include struct shangpinint number;char name30;float weight;float price;shangpin *next;class list /定义链表类 shangpin *elems; public: list() elems=0; list(); virtual bool insert(); void insert1(shangpin *pr,float wgt);/此虚函数在派生类中可重新定义 bool insert2(); virtual bool deletes(int); /此虚函数在派生类中可重新定义 bool contain(int); bool contain1(int); shangpin *chazhao(int); void print(); void print1(); void shanchu();class set:public list int card;/将集合类set定义为链表类list的派生类 struct shangpin shp; public: set() bool insert(); /重定义此函数 bool deletes(int); /重定义此函数;shangpin *list:chazhao(int number) /若表为空,返回false shangpin *tmp=elems; if(elems-number=number) /若待删除的元素为表头元素 return tmp; else for(shangpin *elem=elems; elem-next!=0; elem=elem-next) if(elem-next-number=number) /循环查找待删除元素 tmp=elem-next; return tmp; void list:shanchu() shangpin *tmp=elems; for(shangpin *elem=elems; elem!=0;) tmp=elem; elem=elem-next; delete tmp; list:list() /list类得析构函数定义,循环释放各元素所占的存储 shangpin *tmp=elems; for(shangpin *elem=elems; elem!=0;) tmp=elem; elem=elem-next; delete tmp; void list:insert1(shangpin *pr,float wgt)shangpin *elem=new shangpin; /为新元素分配存储 if (elem!=0) elem-number=pr-number; int i; for(i=0;inamei=pr-namei; elem-weight=wgt; elem-price=pr-price;/将新元素插入到链表头 elem-next=elems; elems=elem; bool list:insert2()int num;cinnum; shangpin *elem=new shangpin; /为新元素分配存储 if (elem!=0) elem-number=num; elem-next=elems; elems=elem; return true; else return false;bool list:insert() /定义list类中插入元素的成员函数int num;cout请再次输入商品的代码num; shangpin *elem=new shangpin; /为新元素分配存储 if (elem!=0) elem-number=num; cout请输入商品的名称elem-name; cout请输入商品的价格(单位:元)elem-price;/将新元素插入到链表头 elem-next=elems; elems=elem; return true; else return false;bool list:deletes(int number) /定义list类中删除元素的成员函数 if(elems=0) return false; /若表为空,返回false shangpin *tmp=elems; if(elems-number=number) /若待删除的元素为表头元素 elems=elems-next; delete tmp; return true; else for(shangpin *elem=elems; elem-next!=0; elem=elem-next) if(elem-next-number=number) /循环查找待删除元素 tmp=elem-next; elem-next=tmp-next; delete tmp; return true; return false;bool list:contain(int number) /判元素val在链表中是否存在if(elems=0)return false; if(elems-number=number) return true; else for(shangpin *elem=elems; elem-next!=0; elem=elem-next) if(elem-next-number=number) return true; return false;bool list:contain1(int number)if(elems=0)cout没有此商品number=number)cout商品代码:number商品名称:name商品价格:pricenext!=0; elem=elem-next)if(elem-next-number=number)cout商品代码:next-number商品名称:next-name商品的价格:next-price元endl;return true;cout没有此商品next) cout商品代码:number 商品名称:name 商品价格:price元endl; coutnext) cout商品代码:number 商品名称:name 商品价格:price元商品的重量或件数:weightendl; coutendl;bool set:insert() /在set类中的insert的重定义版本int num1;cout请输入商品代码num1; if(list:contain(num1)=false&list:insert() /先判断此元素是否存在,然后再调用基类的此函数版本 +card; return true; return false;bool set:deletes(int number) /在set类中的deletes的重定义版本 if(list:deletes(number) /调用基类中的此函数版本 card-; return true; return false;void ini() coutendl;cout*endl;cout 欢迎进入商品管理系统,请选择相应的功能,如 按 1 键,进行添加操作endl;cout 1 :添加 2 :删徐 endl;cout 3 :查找 4 :显示 endl;cout q :退出endl;cout*endl;cout
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年城市轨道交通车站整体改造工程设计与施工一体化合同
- 2025年度大型购物中心消防安全系统升级改造综合服务合同
- 2025年度绿色低碳校园建筑抹灰工程劳务分包合同
- 2025年生态餐饮区租赁合同绿色环保条款保障承租人权益
- 2025年一人有限责任公司股权置换及品牌使用权推广合同
- 2025年品牌形象宣传册定制合同-都市风尚生活品牌推广
- 2025年酒吧吧台运营托管及时尚潮流主题定制合同
- 2025年城市自来水厂生活设施升级改造项目施工合同
- 2025年跨境电商仓储货物储存权交易合同范本
- 2025年绿茶种植与深加工技术研发及市场拓展合作框架协议
- 2025年检验检测机构资质认定(授权签字人)试题(含答案)
- 八五普法考试试题及答案
- 商业秘密培训课件
- 合同基础知识培训课件
- 2025年通信工程师-初级通信工程师历年参考题库含答案解析(5套典型考题)
- 电梯安全教学课件
- 2025-2026学年【秋】第一学期少先队工作计划:青春筑梦扬队旗励志前行绘未来
- 2025年评茶员职业技能鉴定题库(含答案)
- 数学集体备课汇报展示
- 2025年 江苏苏州昆山国创投资集团有限公司第一期招聘考试试卷附答案
- DL∕T 617-2019 气体绝缘金属封闭开关设备技术条件
评论
0/150
提交评论