C商品销售统计课程设计.docx
- 文档编号:16001922
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:25
- 大小:143.57KB
C商品销售统计课程设计.docx
《C商品销售统计课程设计.docx》由会员分享,可在线阅读,更多相关《C商品销售统计课程设计.docx(25页珍藏版)》请在冰点文库上搜索。
C商品销售统计课程设计
一、问题描述
1.1目的
在《面向对象程序设计》课程教学的基础上,根据软件工程的方法与流程,在相对集中的实训教学时间内,通过一个功能较完整的小型应用系统的设计与开发,深入复习并进一步掌握面向对象的程序设计思想与方法。
同时,作为整个实践教学体系一部分,系统培养采用面向对象的方法分析问题与解决问题的能力及团体组织与协作能力。
1.2要求
从课程设计的目的出发,通过设计工作的各个环节,达到以下教学要求:
1)根据实现的功能,划分出合理的对象类,明确对象类间的关系。
2)为每个对象类设计正确的域和方法,为每个方法设计合理的方法体。
同时,为对象类及内部的域和方法运用正确的修饰符,如访问控制符等。
3)编程简练,程序功能齐全,能正确运行。
1.3商品销售统计
问题描述
编写商品销售统计程序,商品的信息有:
商品的名称,计量单位(重量或件),单价。
所有商品的信息事先已存入计算机,屏幕上显示所有商品的名称,选择商品名,输入商品计量单位(如重量,件数等),根据单价算出总价。
客户一次购物可能购买多种商品,程序应计算出客户应付的钱款数。
基本要求
程序分为两个部分:
第一部分用于输入商品的信息并允许修改和删除;第二部分实现销售统计。
程序运行时由用户选择进入哪一部分功能,并能在运行时在两部分之间切换。
第二部分运行时,首先显示所有商品名称及代码(商品数目较多时,应考虑分屏显示),用户输入商品代码及商品重量或件数,用户一次操作可输入若干商品的购买信息,然后输入一个特殊的代码(如-1)表示本次购物结束。
此时。
程序计算出应付钱款数并显示。
实现提示
本程序的商品信息管理可采用与课程设计题目二类似的数据结构,既定义一个商品类,每种商品作为商品类的实例(对象)存储在链表节点中。
二、问题分析:
按照要求这个程序的编写要求,由于包含多种实现要求,所以在编写时需要多个实现函数,这样就要定义一个类或机构体来统筹各个函数以及用链表或指针数组来储存输入的常量数据,并且在各个转换点设置相应的提示语句使整个程序便于操作。
在修改数据的函数实现时,由于一个商品包含多个变量,要想在修改某一个数据后而不影响其他的数据,所以就必须要有一个switch语句;在商品信息显示函数的实现时,由于中间要有一个购买函数的实现,所以商品数量会随着商品的购买而减少,所以要将购买的数量另外定义一个变量。
关于switch语句的运用在这个程序这可能要多次使用,主要在一个函数拥有多个变量或变量函数。
三、算法的设计
这个程序我是采用类以及函数的调用来写的。
先写一个tong类,在tong类中声明所需要的函数,classtong{
tong();
tong(charco[20],charn[20],chardw[20],doublepr,intqu);
~tong();
voidSet();//商品信息录入
voidAlter();//商品信息修改
voiddelete();//商品信息删除
voidlist();//商品信息显示
voidDisplay();
floatCheckout(intquantity);//单个商品小结
voidTotal();//总计
voidbuy();//商品买入
在写了两个操作函数。
在主函数中分别调用所需要的函数。
在存储数据方面,我声明了一个指针数组*S[i],将输入的商品信息数据按照一一对应方式存储的。
在tong类中一共包括十一个函数,分别为构造函数、析构函数以及各种功能函数。
1、在Set函数中通过输出语句的提示输入各种数据,并将输入的数据储存到定义的指针数组中,等一种商品数据信息输入完毕后,会弹出一个提示语句询问是否继续输入商品信息,可根据个人意愿输入Y(或y表示继续输入)N(或n表示中断输入),若输入Y(或y)则调用本函数,进行数据输入;若输入N(或n)弹出一个提示语句询问是否进行其他操作,在根据个人意愿输入正确的字符来进行相应的操作。
2、Delete函数是进行对原始数据(即商品信息)进行删除。
先根据输出语句的提示输入您要删除的商品名称,商品名称输入后通过if语句判断是否存在这种商品:
若不存在则会出现这种商品不存在的提示语句,并同时出现一个提示是否进行其他操作提示语句;若存在则会进行对该商品删除的操作并提示删除成功。
3、Alter函数是对输入的商品信息进行修改的。
函数运行时,会首先出现一个提示语句,提示管理者输入所要修改的商品名称,再通过一个for语句将该商品的所有信息调出,同时出现另一个提示语句,供管理者选择所要修改商品项,再通过switch语句供管理者输入所要修改的具体的商品信息,并将管理者修改的信息存入相应的商品信息库中(即该商品在原始输入数据时分配的储存空间中),一个商品信息修改完成后同样会出现一个询问是否继续修改的语句。
4、List函数是将输入的所有商品信息显示在屏幕上,根据提示语句将所有的输入或是修改的商品信息显示在操作屏幕上。
5、buy函数是消费者对屏幕上显示的商品进行购买的函数。
该函数在运行时,会首先出现一个提示语句,提示消费者输入需要购买的商品名称和购买数量,输入完毕后会调用Checkout、Display、Total,进行相应的操作。
6、Checkout函数是一个小记函数,主要将消费者购买的每一种商品进行一个初步计费并显示在屏幕上,这个函数主要是为total函数服务的。
7、Total函数则是总计函数,是将消费者购买的所有商品进行计费,并将消费者需要支付的费计算出来显示在屏幕上。
8、Display函数是将Checkout函数中各种商品费用进行累加,在将累加的结果返回给Total函数。
9、在主函数的运行过程中会出现一个提示语句将整个程序分成两个部分,分别为商品信息管理和商品销售管理。
在商品信息管理部分,主要运行Set、Alter三个函数(这三个函数是通过switchy语句封装在caozuoa这个子函数中的),而在商品销售统计部分,则运行list、buy两个函数(这两个函数是通过switch语句封装在caozuob这个子函数中的)。
四、UML图
五、测试结果及其分析
测试用的输入输出数据以及运行结果的截屏图如下:
请选择您的操作:
商品信息管理系统(M)商品销售系统(S)
m
商品信息录入(请输入0)删除信息(请输入1)修改信息(请输入2):
0
请输入商品代码及名称:
qqw
请输入计量单位:
jin
请输入商品单价:
1.2
请输入商品数量:
100
信息录入成功!
是否继续录入?
(yorn)
请输入商品代码及名称:
aas
请输入计量单位:
jin
请输入商品单价:
12
请输入商品数量:
120
信息录入成功!
是否继续录入?
(yorn)
您想继续进行其他操作吗?
(y/n)
y
请选择您的操作:
商品信息管理系统(M)商品销售系统(S)
m
*---------------------菜单选项--------------------
商品信息录入(请输入0)修改信息(请输入1)删除信息(请输入2)
1
请输入您所修改的商品名称:
as
你想要修改:
代码及名称(请按1)、计量单位(请按2)、单价(请按3)、数量(请按4)
3
请输入单价:
2.2(※将输入的原始数据:
单价为12修改为2.2)
数据修改成功!
是否继续修改?
(y/n)
您想继续进行其他操作吗?
(y/n)
y
请选择您的操作:
商品信息管理系统(M)商品销售系统(S)
s
*---------------------菜单选项--------------------*
*-------------------------------------------------*
显示商品信息(请输入0)商品买入(请输入1)
0
===================所有商品信息清单========================
货品代码=======货品名称======货品价格======货品数量======计量单位
qqw1.2100jin
aas2.2120jin
您想继续进行其他操作吗?
(y/n)
y
请选择您的操作:
商品信息管理系统(M)商品销售系统(S)
s
*---------------------菜单选项--------------------*
显示商品信息(请输入0)商品买入(请输入1)
1
请输入你想购买的商品的代码及名称:
qqw
请输入您想购买的商品的数量:
12
货品代码=======货品名称======货品价格======购买数量======计量单位=====小计(元)==
qqw1.212jin14.4
要结束商品买入请按'N/n',其继续买入请按'Y/y':
n
你应该付14.4元!
你实际付(元):
20
应该找回你5.6元!
您想继续进行其他操作吗?
(y/n)
n
其截屏图如下:
调试分析:
在起始阶段,出现提示语句,询问进入哪部分操作,输入字符m,进入商品信息管理部分,再根据提示,输入字符0,进入商品信息输入部分,按照提示输入的数据被储存在指针数组中,一个完整的商品信息录入后,就会出现一个询问是否继续输入的语句,按此方法输入几种商品信息后,终止商品信息的输入,在按照提示语句进入商品信息修改部分,在此部分修改部分商品信息后,退出,再在提示语句的提示下输入字符s进入商品销售管理部分,在此部分,输入字符0进入商品信息显示部分,将显示在第一部分输入以及修改后的所有商品信息,以供消费者选择,退出后再进入商品买入部分,根据提示输入正确的字符或字符串,购买您所需的商品,结束购买后会出现商品消费总计,输出消费者所需付的费用并根据实际付的费用计算出找零。
在测试与调试过程中,我是按照屏幕提示进行操作,输入符合程序编排的数据,一步一步进行调试的。
六、总结
经过了这次商品销售统计的课程设计我从中学到了很多,同时明白了做一个小型软件的步骤和流程.如何让自己设计的软件运用到具体的实际工作中,这是一个关键的环节.还有就是程序设计和运行测试中遇到的问题该如何解决,从解决问题中我也学到了许多平时课本上所没有的知识.当然,能够完成这个商品销售统计我自己也感觉很有成就感.
运用到的开发工具和软件技术:
此系统结合商品销售统计的要求,对C++、C语言的学习和应用,主要完成商品销售统计的分析,设计和实现,系统的设计,主控程序设计,并由此设计了类结构和应用程序。
系统运行结果证明,设计的商品销售统计可以满足商品管理者完成管理的日常工作,包括商品销售以及商品信息的管理等
软件还需要哪些改进:
在编写源程序代码的过程中对语言的运用还需要提高,应使写出来的程序更加简洁,易读懂,更加满足实际工作的需要.要想使做出来的程序更好的利用还需根据实际需要在今后的运用中不断的改进和完善.
七、代码附录
#include
#include
#include
#definenull0
#include
#include
#include
usingnamespacestd;
classtong
{
public:
tong();
tong(charco[20],charn[20],chardw[20],doublepr,intqu);
~tong();
voidSet();//商品信息录入
voidAlter();//商品信息修改
voiddelete1();//商品信息删除
voidlist();//商品信息显示
voidDisplay();
floatCheckout(intquantity);//单个商品小结
voidTotal();//总计
voidbuy();//商品买入
private:
charcode[20];charname[20];chardanwei[20];doubleprice;intquantity;
};
tong:
:
tong(){}
tong:
:
tong(charco[20],charn[20],chardw[20],doublepr,intqu){
strcpy(code,co);
strcpy(name,n);
strcpy(danwei,dw);
price=pr;
quantity=qu;}
tong:
:
~tong(){}
tong*s[50];
inti=0;
intj=0;
charcode[20];charname[20];chardanwei[20];doubleprice;intquantity;
voidtong:
:
Set()//商品信息录入
{
cout<<"请输入商品代码及名称:
"< cin>>code>>name; cout<<"请输入计量单位: "< cin>>danwei; cout<<"请输入商品单价: "< cin>>price; cout<<"请输入商品数量: "< cin>>quantity; j++; s[i]=newtong(code,name,danwei,price,quantity); i++; cout<<"信息录入成功! "< cout<<"是否继续录入? (yorn)"< if(getch()=='y') Set(); elsereturn; } voidtong: : Alter()//商品信息修改 { cout<<"请输入您所修改的商品名称: "< cin>>name; for(inth=0;h if(strcmp(name,s[h]->name)==0){ charnewcode,newname,newdanwei; doublenewprice; intnewquantity; intn; cout<<"你想要修改: 代码及名称(请按1)、计量单位(请按2)、单价(请按3)、数量(请按4)"< cin>>n; switch(n) { case1: {cout<<"请输入商品代码及名称: "< cin>>newcode>>newname; s[h]->code[20]=newcode; s[h]->name[20]=newname; cout<<"数据修改成功! "; }break; case2: { cout<<"请输入计量单位: "< cin>>newdanwei; s[h]->danwei[20]=newdanwei; cout<<"数据修改成功! "; }break; case3: { cout<<"请输入单价: "< cin>>newprice; s[h]->price=newprice; cout<<"数据修改成功! "; }break; case4: { cout<<"请输入数量: "< cin>>newquantity; s[h]->quantity=newquantity; cout<<"数据修改成功! "; }break; } } else cout<<"你所要修改的商品的信息不存在,请修正后再更改! "< } cout<<"是否继续修改? (y/n)"< if(getch()=='y') Alter(); elsereturn; } voidtong: : delete1()//商品信息删除 { cout<<"请输入您所删除的商品名称: "< cin>>name; for(inth=0;h if(strcmp(name,s[h]->name)==0){ charnewcode,newname,newdanwei; doublenewprice; intnewquantity; intn; cout<<"你想要删除: 代码及名称(请按1)、计量单位(请按2)、单价(请按3)、数量(请按4)"< cin>>n; switch(n) { case1: {cout<<"请输入商品代码及名称: "< cin>>newcode>>newname; s[h]->code[20]=newcode; s[h]->name[20]=newname; cout<<"数据删除成功! "; }break; case2: { cout<<"请输入计量单位: "< cin>>newdanwei; s[h]->danwei[20]=newdanwei; cout<<"数据删除成功! "; }break; case3: { cout<<"请输入单价: "< cin>>newprice; s[h]->price=newprice; cout<<"数据删除成功! "; }break; case4: { cout<<"请输入数量: "< cin>>newquantity; s[h]->quantity=newquantity; cout<<"数据删除成功! "; }break; } } else cout<<"你所要删除的商品的信息不存在,请修正后再更改! "< } cout<<"是否继续删除? (y/n)"< if(getch()=='y') delete1(); elsereturn; } voidtong: : list()//商品信息显示 { cout<<"=========================================================="< cout<<"===================所有商品信息==================="< cout<<"=========================================================="< cout<<"货品代码=======货品名称======货品价格======货品数量======计量单位"< if(i==0) cout<<"系统中没有录入商品信息或该商品信息已被删除! "< for(intk=0;k cout< } } voidtong: : buy()//商品买入 { cout<<"请输入你想购买的商品的代码及名称: "< cin>>code>>name; cout<<"请输入您想购买的商品的数量: "< cin>>quantity; Checkout(quantity); Display(); Total(); } voidtong: : Display() { cout<<"货品代码=======货品名称======货品价格======购买数量======计量单位=====小计(元)=="< cout< < < < < < < } floattong: : Checkout(intquantity)//单个商品小结 { intk=0; floatsum(0.0); sum=s[k]->price*quantity; returnsum; } voidtong: : Total()//总结帐 { floatsum=0; floatreal; charGoOn; while (1) { cout<<"要结束商品买入请按'N/n',其继续买入请按'Y/y': "< cin>>GoOn; if(GoOn=='Y'||GoOn=='y'){ intquantity; cout<<"请输入商品代码: "< cin>>code>>name; cout<<"请输入商品数量: "< cin>>quantity; sum+=Checkout(quantity); cout<<"你购买的商品为: "< Display(); } elseif(GoOn=='N'||GoOn=='n') break; } cout<<"----------------------------------------------------"< sum+=Checkout(quantity); cout<<"你应该付"< "< cout<<"你实际付(元): "; cin>>real; cout<<"应该找回你"< "< } voidcaozuo1(intp){ tongt; switch(p){ case0: t.Set();break; case1: t.Alter();break; case2: t.delete1();break; case8: exit(0);break; } } voidcaozuo2(intp){ tongt; switch(p){ case0: t.list();break; case1: t.buy();break; case8: exit(0);break; } } voidmain() { inta;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 商品 销售 统计 课程设计