软件工程实践报告设计题目:商品销售统计学校:南昌航空大学班级:姓名:学号:指导老师:**完成日期: 2014年2月19日商品销售统计系统程序设计利用计算机技术,使得企业生产、库存和销售能够有利结合起来,提高企业的效率和效益。
利用该系统可以为决策者和管理者及时掌握时常动态和企业的生产状况,以及对员工销售额的统计。
销售统计系统是一个商品企业单位不可缺少的部分,它的内容对于公司的决策者和管理者来说都至关重要,所以销售统计系统应该能够为管理人员提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对员工信息及业绩进行管理,具有手工管理所无法比拟的优点。
关键字:计算机技术、提高效益、日渐成熟、不可或缺。
第一章、课设设计目的与要求 01.1 目的与要求 (1)第二章、课题介绍------商品销售系统 (2)2.1 课设题目 (2)2.2 任务和要求 (2)第三章、算法的设计................................ 错误!未定义书签。
3.1 本程序的流程图 (4)3.2 算法的思路 (4)第四章、详细设计与调试 (7)4.1 系统界面管理 (7)4.2 商品管理界面 (7)4.3 商品管理各功能的实现 (8)4.3.1 商品的添加 (8)4.3.2 商品的删除 (8)4.3.3 商品的查找 (9)4.3.4 商品的显示 (9)4.4 购物功能的实现 (10)第五章、调试手册与测试数据 (11)5.1 调试手册 (11)5.2 测试数据 (11)第六章实验心得与体会 (12)附录一 (13)附录二 (20)前言近年来,随着商品销售市场的不断扩大,有关商品的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致商品销售管理上的混乱,人力与物力过多浪费,用于支付职员的工资不断增加,从而使各大商品经销商的负担过重,影响整个销售部门的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的商品销售管理系统,对欲要销售的商品进行集中统一的管理。
本系统开发的总设计目标是实现商品经销商对商品的系统化、规范化和自动化管理,实现对所经销商品的集中统一管理。
第一章课设设计目的与要求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.1 本程序的流程图3.2 算法的思路3.2.1 定义一个结构体,该结构体用来存放商品的代码,名称等信息:struct shangpin{int number;char name[30];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(){ cout<<endl;cout<<"************************************************************** **"<<endl;cout<<" 欢迎进入商店系统,请选择相应的功能,如按1 键,进行商品管理操作"<<endl;cout<<" 1 :商品管理"<<" "<<"2 :购物"<<endl;cout<<" a :退出"<<endl;cout<<"************************************************************** **"<<endl;4.2 商品管理界面void ini(){ cout<<endl;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<<"请再次输入商品的代码"<<endl;cin>>num;shangpin *elem=new shangpin; //为新元素分配存储if (elem!=0) {elem->number=num;cout<<"请输入商品的名称"<<endl;cin>>elem->name;cout<<"请输入商品的价格(单位:元)"<<endl;cin>>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; //若表为空,返回falseshangpin *tmp=elems;if(elems->number==number){ //若待删除的元素为表头元素elems=elems->next;delete tmp;return true;}elsefor(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<<"没有此商品"<<endl;return false;}if(elems->number==number){cout<<"商品代码:"<<elems->number<<"商品名称:"<<elems->name<<"商品价格:"<<elems->price<<endl; return true;}elsefor(shangpin *elem=elems; elem->next!=0; elem=elem->next)if(elem->next->number==number){cout<<"商品代码:"<<elem->next->number<<"商品名称:"<<elem->next->name<<"商品的价格:"<<elem->next->price<<"元"<<endl;return true;}cout<<"没有此商品"<<endl;return false;}4.3.4 商品的显示void list::print() //输出链表中各元素{if(elems==0) return;for(shangpin *elem=elems; elem!=0; elem=elem->next)cout<<"商品代码:"<<elem->number<<" "<<"商品名称:"<<elem->name<<" "<<"商品价格:"<<elem->price<<"元"<<endl;cout<<endl;}void list::print1() //输出链表中各元素{if(elems==0) return;for(shangpin *elem=elems; elem!=0; elem=elem->next)cout<<"商品代码:"<<elem->number<<" "<<"商品名称:"<<elem->name<<" "<<"商品价格:"<<elem->price<<"元"<<"商品的重量或件数:"<<elem->weight<<endl;cout<<endl;}4.4 购物功能的实现cout<<"请输入你所要购买的商品的代码"<<endl;cin>>num4;cout<<"请输入你要购买的件数或重量"<<endl;cin>>weight;shangpin *p;p=ptr->chazhao(num4);ptr1->insert1(p,weight);zonge=zonge+(p->price)*weight;cout<<"是否购物完毕?"<<endl;cout<<"如果购物完毕,请输入** b **结束购物"<<endl;cout<<"如果继续购物,请随机输入一个字符,但不要输入**b**或**B**"<<endl;cin>>ch2;}cout<<"你购买的商品清单如下:"<<endl;ptr1->print1();ptr1->shanchu();cout<<"你所要支付的总金额为:"<<zonge<<endl;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) t[i].getName后面少了()5.2 测试数据:进入演示程序后,即显示对话形式的提示操作过程:第六章实验心得与体会c++课程设计在基本知识上由老师引导,自己很多都靠自学,不明白的问老师,但由此自学能力得到了很大的培养。