还剩22页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
课程设计报告课程名称面向对象程序设计C++设计题目销售管理系统专业计算机科学与技术姓名学号指导教师李晓虹2016年1月6日目录TOC\o1-3\h\z\uHYPERLINK\l_Toc
4398802361.系统分析3HYPERLINK\l_Toc
4398802372.设计3HYPERLINK\l_Toc
4398802382.1设计题目3HYPERLINK\l_Toc
4398802392.2设计要求3HYPERLINK\l_Toc
4398802403.详细设计3HYPERLINK\l_Toc
4398802413.1销售管理系统设计3HYPERLINK\l_Toc
4398802424.调试4HYPERLINK\l_Toc
4398802434.1Sale.h文件4HYPERLINK\l_Toc
4398802444.2Sale.cpp文件6HYPERLINK\l_Toc
4398802454.3main.cpp文件16HYPERLINK\l_Toc
4398802465.分析结果17HYPERLINK\l_Toc
4398802476.实验总结
201.系统分析做这次设计是为了进一步巩固《C++程序设计》所学的知识,特别加强类,对象,指针,引用,文件数据类型等的应用,熟悉从面向过程逐渐转变成面向对象程序设计的方法,培养面向对象程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,锻炼程序设计的能力,以用C++语言解决实际问题的能力,为后续课程的学习打好基础
2.设计
2.1设计题目《销售管理系统》
2.2设计要求要求为输入销售信息、存储销售信息、删除销售信息、添加销售信息、查找销售信息、将销售信息写入文件、从文件读出销售信息假设有5个销售员,销售10种产品,每个销售员将每天销售的产品都用一条便条录入:销售员代号、所卖产品代号、这种产品当天销售额
3.详细设计
3.1销售管理系统设计表
3.
14.调试
4.1Sale.h文件#if!definedSALE_H#defineSALE_H//预处理#includefstream.h#includestdlib.h#includestdio.h#includestring.h#includeiostream.h//***************//*销售类*//***************classSale{private:intSalerNum;//销售员代号intProductNum;//销售产品代码floatSaleNum;//销售额public:Sale*Next;Sale*Head;Sale;SaleconstSales;voidInputDataSale*s;//输入便条voidAdd;//是否继续录入销售信息voidDisplayInfo;//显示所有销售信息voidDeleteSale*headintnum;voidReadFile;//从文件中读数据voidFind;//用销售员的代号查找销售记录voidWriteFile;//将数据写入文件~Sale;friendvoidHand_menu;};#endif//此外,还可以用链表结点的方式定义销售类如下/*structNode{intSalerNum;//销售员代号intProductNum;//销售产品代码floatSaleNum;//销售额Node*next;};//定义一个结点classSale{private:Node*head;public:Sale;SaleconstSales;voidInputDataSale*s;voidAdd;voidDisplayInfo;voidDeleteSale*headintnum;voidReadFile;voidFind;voidWriteFile;~Sale;friendvoidHand_menu;};*/
4.2Sale.cpp文件#includeSale.h//**************************************//*菜单显示函数*//*函数原型voidHand_Menu*//*功能处理选择的菜单命令*//*工作方式根据命令,显示相应操作*//**************************************voidHand_Menu{coutendl;cout\t**************欢迎查询销售管理系统**************\n;cout\t*
[1]添加销售记录*\n;cout\t*
[2]从文件读数据*\n;cout\t*
[3]把数据写入文件*\n;cout\t*
[4]查找销售记录*\n;cout\t*
[5]显示所有销售记录*\n;cout\t*
[6]删除销售记录*\n;cout\t*
[7]退出系统*\n;cout\t************************************************\n;}Sale::Sale{SalerNum=0;ProductNum=0;SaleNum=0;Next=NULL;Head=NULL;}//构造函数Sale::SaleconstSales{SalerNum=s.SalerNum;ProductNum=s.ProductNum;SaleNum=s.SaleNum;Next=s.Next;Head=s.Head;}//拷贝构造函数Sale::~Sale{ifNext!=NULLdeleteNext;ifHead!=NULLdeleteHead;}//析构函数//**************************************//*输入销售信息InputData函数*//*函数原型voidInputDataSale*s*//*功能输入便条*//**************************************voidSale::InputDataSale*s{cout请输入销售员的代号:;cins-SalerNum;coutendl;cout请输入销售产品的代号:;cins-ProductNum;coutendl;cout请输入销售员的销售额:;cins-SaleNum;coutendl;}//****************************************//*添加销售记录*//*函数原型voidAdd*//*功能确定是否继续录入销售记录*//****************************************voidSale::Add{Sale*p1*p2;charcChoose;//输入y/n进行下一步操作p1=newSale;//申请内存p1-Next=NULL;//置为空if!Head{Head=p1;}else{//找到最后的链接列表p2=Head;whilep2-Nextp2=p2-Next;p2-Next=p1;}//添加一个记录到链表的末尾while1{InputDatap1;cout还想继续添加数据?y/n;cincChoose;//输入的y/n进行操作ifn==cChoose||N==cChoose{//不进行操作p1-Next=NULL;//将p1的下一个节点置为空Hand_Menu;//返回主界面return;}else{//输入y继续添加信息的情况p2=p1;p1=newSale;//分配一个内存空间给p1p2-Next=p1;//将p1指向p2的下一个节点}}}//**********************************//*输出销售信息DisplayInfo函数*//*函数原型voidDisplayInfo*//*功能显示所有的销售信息*//**********************************voidSale::DisplayInfo{Sale*p;if!Head{//头指针为空,没有任何数据cout没有任何销售信息\n;systempause;//暂停,使用户能看到上一句话的显示Hand_Menu;//返回到主界面return;}else{//头结点不为空的情况cout\t\t显示所有销售信息\n;coutSalerNum\t\tProductNum\t\tSaleNum\n;p=Head;whilep{//循环,直到结点不为空coutp-SalerNum\t\t\t;//将销售员的代号录入到SalerNumcoutp-ProductNum\t\t\t;//将销售产品代码录入到ProductNumcoutp-SaleNum\t\t\t;//将销售额录入到SaleNump=p-Next;//指向下一个节点coutendl;}}}//**********************************************//*删除销售信息Delete函数*//*函数原型voidDeleteSale*headintnum*//*功能删除指定的销售记录*//**********************************************voidSale::DeleteSale*headintnum{Sale*p*p1;p=head;ifhead==NULL//判断头结点是否为空,为空就没有课删除的销售记录{cout***********友情提示,没有可删除的销售记录!***********\n\n;}whilep-SalerNum!=nump-Next!=NULL//循环输入的销售员代号是否和已输入的销售员代号相匹配而且p的下一个节点不为空{p1=p;p=p-Next;}ifp-SalerNum==num//当用户输入销售员的代号与已存在的销售员代号相匹配{ifp==head{head=p-Next;//将p的下一个节点与head链接}else{p1-Next=p-Next;//将p的下一个节点与p1的下一个节点相链接}cout************************被删除销售员的销售信息************************\n\n;cout--------------------------------------------------------------------------------;cout销售员代号\t\t销售产品代码\t\t销售额\n\n;coutp-SalerNum\t\t\t;coutp-ProductNum\t\t\t;coutp-SaleNum\t\t\t;coutendl;cout--------------------------------------------------------------------------------;deletep;//释放p节点,p节点里面的数据被删除}else{cout************************对不起,找不到该销售员的销售记录!************************\n\n;}}//**********************************************//*从文件中读取销售信息*//*函数原型voidDeleteSale*headintnum*//*功能从文件中读取数据*//**********************************************voidSale::ReadFile{Sale*p=NULL;Sale*p1*p2;charfilename
[50]ch;FILE*fr;//文件指针cout请输入要读入的文件名:;cinfilename;p=newSale;//分配一个内存空间Head=p1=p;//让p1和head都指向pch=fgetcfr;whilech!=EOF{//读取数据fscanffr%d\t\tp-SalerNum;//读取销售员代号到SalerNumfscanffr%d\t\tp-ProductNum;//读取销售产品代号到ProductNumfscanffr%f\t\tp-SaleNum;//读取销售额到SaleNump=newSale;//再为p分配一个内存空间p1-Next=p;p2=p1;p1=p;p-Next=NULL;}p2-Next=NULL;deletep;//释放p节点fclosefr;//关闭文件}//********************************************//*查找指定的销售记录*//*函数原型voidFind*//*功能用销售员的代号查找该销售记录*//********************************************voidSale::Find{intSalerNum;Sale*p;cout请输入要查找的销售员的代号:;cinSalerNum;coutendl;p=Head;whilep{//循环ifp-SalerNum==SalerNum{//输入的数字是在销售员的代号范围内,执行以下程序cout此销售员销售产品代号为:p-ProductNumendl;coutendl;cout此销售员销售额为:p-SaleNumendl;coutendl;cout恭喜您,查找成功!\n;coutendl;return;}p=p-Next;//p指向p的下一个节点}cout查找失败!\n;//输入的数字不在销售员代号范围内,退出程序}//********************************//*将销售信息存入到文件*//*函数原型voidWriteFile*//*功能将数据写入文件*//********************************voidSale::WriteFile{Sale*p;charfilename
[50];FILE*fw;//文件指针ifHead{//判断头结点是否为空cout没有数据被写入文件!\n;return;}cout请输入文件的名称:;cinfilename;iffw=fopenfilenamewt==NULL{//判断文件名是否有效cout无法创建filename文件\n;Hand_Menu;//返回主界面return;}p=Head;fprintffw\n;fprintffw销售员代号\t\t销售产品代号\t\t销售额\t\t\n;whilep{fprintffw%d\t\t\tp-SalerNum;//将数据写入SalerNum中fprintffw%d\t\t\tp-ProductNum;//将数据写入ProductNum中fprintffw%f\t\t\tp-SaleNum;//将数据写入SaleNum中fprintffw\n;p=p-Next;//将p指向下一个节点}cout数据写入文件成功!\n;coutendl;fclosefw;//关闭文件}
4.3main.cpp文件#includeSale.hintmain{intnum;Salesal;Hand_Menu;//显示主界面while1{cout\t请输入您要操作的指令阿拉伯数字1-8:;cinnum;coutendl;switchnum{case1:sal.Add;break;//手动输入销售记录case2:sal.ReadFile;break;//读文件case3:sal.WriteFile;break;//将数据写入文件case4:sal.Find;break;//查找销售记录case5:sal.DisplayInfo;break;//显示所有销售记录case6:{intcount;cout************************请输入要被删除的销售员的代号************************\n\n;cincount;sal.Deletesal.Headcount;break;}//删除销售记录case7:exit1;break;//退出程序}}return0;}
5.结果分析编译正确后,即可运行程序图5-1图5-2图5-3图5-4图5-
56.实验总结通过学生的分组设计,使学生能够基本掌握C++程序设计的方法,并且在此基础上掌握类的构造方法,明确类中构造函数、成员函数的建立以及调用,灵活运用派生与继承此外,并且,结合C++中,字符串函数的编译系统给定的库函数,采用一定的逻辑编译,实现题目中要求的各项要求,达到基本实验目的,提高自己的C++语言使用水平本课题的实质是完成对销售信息的添加、删除、查询等功能,可以首先抽象出实验所需的类,然后将每个功能写成一个成员函数从而完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果可将此系统分为如下模块:对销售信息进行添加、删除、按条件进行查询、退出系统功能模块文件输入输出记录维护退出系统浏览文件输入文件输出查找保存删除插入功能模块文件输入输出记录维护退出系统浏览文件输入文件输出查找保存删除插入。