c++课程设计报告-商品销售统计程序.doc_第1页
c++课程设计报告-商品销售统计程序.doc_第2页
c++课程设计报告-商品销售统计程序.doc_第3页
c++课程设计报告-商品销售统计程序.doc_第4页
c++课程设计报告-商品销售统计程序.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

信息科学与技术学院信息科学与技术学院 程序设计基础课程设计报告程序设计基础课程设计报告 题目名称题目名称: : 商商 品品 销销 售售 统统 计计 学生姓名:学生姓名: 000000 学学 号号: : 20125081072012508107 专业班级:专业班级: 000000 指导教师:指导教师: 000000 2013 年 3 月 9 日 石河子大学信息科学与技术学院 2 目录目录 目录目录 .2 1 1 课程设计题目与要求课程设计题目与要求 .3 1.1 设计题目3 1.2 设计要求3 2 2 总体设计总体设计 4 3 3 详细设计详细设计 .5 3.1 主界面流程图5 3.2 清除内存中的商品函数6 3.3 增加商品信息7 3.4 删除商品信息的过程8 3.5 修改商品信息的过程11 3.6 查询商品的过程:13 3.7 统计商品的过程15 3.8 显示商品过程17 4 4 运行结果运行结果 .18 4.1 运行结果截图18 5 总总 结结 .21 6 6 编程中的问题及解决方法编程中的问题及解决方法 22 7 7 心得体会心得体会 23 8 8 程序设计方法程序设计方法 24 9 9 程序运行环境程序运行环境 25 9.1 软件环境25 9.2 硬件环境25 1010 参考文献参考文献 26 附源代码附源代码 .27 石河子大学信息科学与技术学院 3 1 1 课程设计题目与要求课程设计题目与要求 1.11.1 设计题目设计题目 商品销售统计程序。 1.21.2 设计要求设计要求 商品销售统计 问题描述 编写商品销售统计程序,商品的信息有:商品的名称,计量单位(重量或 件) ,单价。所有商品的信息事先已存入计算机,屏幕上显示所有商品的名称, 选择商品名,输入商品计量单位(如重量,件数等),根据单价算出总价。客户 一次购物可能购买多种商品,程序应计算出客户应付的钱款数。 基本要求 程序分为两个部分:第一部分用于输入商品的信息并允许修改和删除;第 二部分实现销售统计。程序运行时由用户选择进入哪一部分功能,并能在运行 时在两部分之间切换。第二部分运行时,首先显示所有商品名称及代码(商品 数目较多时,应考虑分屏显示) ,用户输入商品代码及商品重量或件数,用户一 次操作可输入若干商品的购买信息,然后输入一个特殊的代码(如-1)表示本 次购物结束。此时,程序计算出应付钱款数并显示。 测试数据 程序应输入不少于 10 种商品的信息,并进行模拟运行。 实现提示 本程序的商品信息可用一个结构体数组或链表进行管理。 至少要有文本菜单实现。 石河子大学信息科学与技术学院 4 2 2 总体设计总体设计 商品销售统计系统设计 商品信息管理商品销售 商品信息录 入 商品信息修 改 商品信息保 存 商品信息显 示 商品买入 石河子大学信息科学与技术学院 5 3 3 详细设计详细设计 3.13.1 主界面流程图主界面流程图 设计超市管理系统的主界面,主界面相应的现实有下列菜单:增加商品、 删除商品、修改商品、查询商品、统计商品、显示商品、退出。 超市管理系统 商品 类 超市 类 查询 商品 统计 商品 修改 商品 增加 商品 删除 商品 显示 商品 找到 是 否 开始 结束 3.1 主界面流程图 石河子大学信息科学与技术学院 6 3.23.2 清除内存中的商品函数清除内存中的商品函数 在超市管理系统中,商品出售出去,库存中的商品信息必须清除。 类外定义一个函数 clear,在函数中定义一个指针 p,讲物品 goods 赋给 p, 为了使函数能够不断地清除内存中的数据,要使指针移动,首先将 p-next 赋予 goods ,然后删除 p 中的数据,清空 p 中的数据,然后将 goods 赋给 p,依次循环,从 而实现删除库存中的一个或多个商品。 开始 定义指针 goods 赋值 p 给 p 将 p 的 next 赋值给 goods 删除 p 中的数据 goods 赋值给 p 是否有需要 删除的商品 结束 yes no 图 3.2 清除内存商品流程图 石河子大学信息科学与技术学院 7 3.33.3 增加商品信息增加商品信息 类外定义一个函数 add,首先在函数中定义变量商品代码 num 和商品数量 count,都为 double 类型 ,商品名 name 和产地 address 为 char 类型 ,价格 price 为 int 类型,首先要求用户输入商品信息,依次输入商品的代码、商品 名称、商品产地、商品单价,判断单价是否在 065535 之间,如果不在范围内 重新输入直到在范围之内再继续向下面执行,输入商品库存量,库存在 099999 之间,如果超出范围重新输入,在范围之内继续执行,保存数据。 开始 定义变量 输入商品代码名称产地 输入商品价格 ( 065535 ) 输入商品库存 (099999) 保存 no no yes yes 图 3.3 增加商品流程图 3.43.4 删除商品信息的过程删除商品信息的过程 (1)在 supermarket 类下定义一个 delete 函数作为删除商品信息的函数, 然后定义商品名,输入商品信息。 (2)查找要删除的结点(节点中包含所有该商品的信息:商品代码、名称、 产地、数量、单价) ,分别定义两个指针,原商品表信息指针 p1 和输入的商品 信息指针 p2,在 p1 循环的过程中比较输入的商品名与原有的商品名是否一致, 如果一致则结束本次循环,否则 p2 指向 p1,使得两指针同化,p1 指针接着指 向下一指针,这样依次向后查询。 (3)删除结点,如果找到要删除的结点则删除,在这个条件下,如果删除 的结点是第一个结点,则继续将指针后移删除第一结点,如果删除的结点是后 续结点,则将 p2 下一指针指向 p1 下一指针,则删除相应的后续结点。 输出的结果是:找到并删除或者 sorry,未找到! 流程图如图 3.5 9 9 查找要删除的结点 定义指针 p1 p2 比较输入商品名和商品表已知 商品名是否一致 是否找到结点 继续向后查找 p2=p1;p1=p1-next 是否为第一结点 找到则删除 成功 查找后续结点 是 是 是 否 否 否 开始 结束 图 3.5 删除商品流程图 10 10 3.53.5 修改商品信息的过程修改商品信息的过程 (1)定义各参数变量的类型,然后是输入要查找等待修改的商品名称 (2)查找要修改的结点,定义 p1、p2 指针,p1 为指向 goods 商品表指针, p2 为输入的商品指针,判断 p1 指针,如果输入的商品名和原有的商品名一致, 则结束本次循环,否则,p1 和 p2 指针同化,p1 接着指向 p1 的下一指针。 (3)修改结点,若找到相应的要修改的结点,则 p1 指向 output 函数,接 着输出要修改的信息,利用 switch 语句来调用相应的修改信息。 (4)创建新商品的结点,把原来要修改的结点删除并重新替换要创建的商 品结点。如果找到等待修改的结点则修改,否则保持商品表信息不变。 流程图如图 3.6 11 11 输入要查的商品名 查找要修改的结点 比较输入商品名和商品表已知 商品名是否一致 是否找到第一结点 继续向后查找 p2=p1;p1=p1-next 继续查找后续结点 删除并替换 是 是 否 否 是 否 开始 结束 图 3.6 修改商品流程图 12 12 3.63.6 查询商品的过程:查询商品的过程: (1)在 supermarket 类下定义一个 query 函数作为查询商品信息的函数,输 入商品名。 (2)查找要查询的结点(结点中包含所有该商品的信息:商品代码、名称、 产地、数量、单价) ,定义一个原商品表信息指针 p1,在 p1 循环的过程中比较 输入的商品名与原有的商品名是否一致,如果一致则结束本次循环,否则 p1 指针接着指向下一指针,这样依次向后查询。 (3)查询结点,如果找到要查询的结点则输出:查询成功并输出其所有信息, 若没有找到输出:sorry 未找到! 流程图如图 3.7 13 13 定义指针 p1 比较输入商品名和商品表已知 商品名是否一致 是否找到商品 继续向后查找 p1=p1-next 是 是 否 否 输入要查询商品的名字 开始 结束 图 3.7 查询商品流程图 14 14 3.73.7 统计商品的过程统计商品的过程 (1)是在 supermarket 类下定义一个 add_up 函数作为统计商品信息的函 数,然后定义两个 double 型变量 amount 和 value 分别表示要求统计商品的总 量和总价值,输入商品名字 name。 (2)查找要统计的结点(结点中包含所有该商品的信息:商品代码、名称、 产地、数量、单价) ,定义一个指针 p1,原商品表信息指针 p1,在 p1 循环的过 程中比较输入的商品名与原有的商品名是否一致,如果一致则结束本次循环, p1 指针接着指向下一指针,这样依次向后查询。没找到则输出:sorry,未找到! (3)统计商品,每当找到一个商品后就将 amount 与 p1 所指 count 相加存 入 amount,并将此时 p1 所指的 count 与 price 相乘再加上 value 存入 value, 循环查找相加,最后分别输出。 流程图如图 3.8 15 15 查找要统计的结点 定义指针 p1 比较输入商品名和 商品表已知商品名 是否一致 是否找到结点 继续向后查找 p1=p1-next 是 是 否 否 否 amount+=p1-count; value+=p1-count*p1-price value+=p1- count*p1-price 从 当 前 指 针 p 1 输出 结束 图 3.8 统计商品流程图 开始 16 16 3.83.8 显示商品过程显示商品过程 (1)是在 supermarket 类下定义一个 out 函数作为显示商品信息的函数。 (2)将 goods 的首地址给 p1,判断 p1 是否为空,若空则输出“没有商品” 。否则输出该商品所有信息(商品代码、名称、产地、数量、单价)等。 (3)将 p1 赋给 p2,p1-next 赋给 p1,进入循环,输出下一个商品信息。 流程图如图 4.9 定义数据 p=goods 是否有商 品 输出该商品信息 指针移向下一个商品 输出没有商品 否 是 开始 图 3.9 显示商品流程图 17 17 4 4 运行结果运行结果 4.14.1 运行结果截图运行结果截图 4.1.1 软件进入界面 4.1.2 商品添加 18 18 4.1.2 商品查询信息 4.1.3 商品销售 19 19 4.1.4 商品删除 20 20 5 总总 结结 通过这次实践,我们成功的实现了数据的输入与保存,并在程序中实现了 使用类对各个学生的各参数的基本操作。该系统的难点在于不使用任何数据库, 只使用磁盘文件来实现对每个学生的信息的存储和读取。虽然测试的学生的信 息条数不够多,但是题目的要求是完全能够达到的,在现有的基础上只要稍加 修改就能够满足批量数据的存储和查阅。要想增加更多学生信息,只要增加相 应的对象的属性即可,前提是在拥有相似的属性的时候。若有不同的属性,可 以增加相应的类就可满足需求。其中重要的是打开文件,保存文件,也就是对 数据的妥善的存储和再次的调用的操作。本次的课程设计对我们也是一个很好 的实践的机会,锻炼了自己,提高了自己编程的能力,为今后的项目打好基础。 21 21 6 6 编程中的问题及解决方法编程中的问题及解决方法 (1) 录入数据难以保存,通过参考一系列的指导书得以解决。 (2) 对于预处理函数的概念不清楚,在同学的讲解下,自己才能得以明 白。 (3) 对于切换界面的方法不是特别理解,通过参考大量的资料,找到了 解决方法。 22 22 7 7 心得体会心得体会 。 a) 对于程序设计有了新的认识,一个好的程序员必须要对程序整体有足够 的认识,才能够写出一个完美的程序。 b) 要想对每一个代码熟悉,只有不停的实验和不停的变形不同的程序来检 验它的作用,正如“实验室检验真理的唯一标准” 。同样的对于编程也 是如此。 c) 熟悉程序是怎样运行的,每一个函数调用的目的、每一个函数的作用和 功能。具体是怎样执行的,这些问题都必须弄得透彻。 23 23 8 8 程序设计方法程序设计方法 根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法) ; (4)完成类中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告以及系统使用说明书。 24 24 9 9 程序运行环境程序运行环境 9.19.1 软件环境软件环境 操作系统: windows 98/2000/xp/7(推荐使用 windows xp) 调试环境: visual c+及以上版本。 9.29.2 硬件环境硬件环境 处理器:cpu 主频在 500mhz 以上 内存:128mb 以上 硬盘空间:10mb。 25 25 1010 参考文献参考文献 1c+面向对象程序设计 (第一版) 谭浩强 北京:清华大学出版社 2006 年 1 月 2c 程序设计 (第三版) 谭浩强 北京:清华大学出版社 2005 年 7 月 26 26 附源代码附源代码 #include #include #include #include using namespace std; ofstream outfile,outfile1,outfile2,outfile3,outfile4,outfile5,outfile6,outfile 7,outfile8,outfile9; ifstream infile,infile1,infile2,infile3,infile4,infile5,infile6,infile7,infile 8,infile9; void yh();/收货员登录 void mmyz();/校对密码 void xs();/登录 void js();/销售 void jscx();/销售查询 void tscx();/商品查询 void zlsr();/商品输入 void zlxg();/商品修改 void zlcx();/商品查询 void xsly();/备注 void zlgl();/商品管理 void xsgm();/密码修改 void ggck();/优惠信息 void gl();/经理 void ts();/商品管理 void tscg();/经理商品查询 void sc();/商品删除 void zlcg();/商品经理查询 void jscg();/销售经理查询 void tsz();/商品增加 void tss();/商品删除 void tsg();/商品更改 void tcb();/商品按编号查询 void tcm();/商品按名称查询 void tcz();/商品按日期查询 27 27 void tcl();/商品按种类查询 int mun=0; int jsjl=0;/销售商品个数记录 int skjl=0;/商品商品个数记录 int xsjl=0;/商品个数记录 int zhjl=0;/账号记录 string gg10;/公告 struct tsbg string mc; string zz; double jg; string zl; string czzt; double sl;bg10; int jszh10; struct zhbg int zh; string mm;zh10; struct xszl int xszh; string mz; string xb; string nl; string xy; string zy; string bj;xl10; int xszh; void main() yh(); void yh()/收货员登录登录 couta; if(a=1)gl(); if(a=2)mmyz(); void gl()/经理 couta; if(a=1)ts();/商品管理 if(a=2)tscx();/商品查询 if(a=3)tss();/商品删除 void ts()/商品管理 couta; if(a=1)tsz(); if(a=2)tss(); if(a=3)tsg(); void tsz()/商品增加 ifstream infile; infile.open(“skjl.xls“,ios:in); infileskjl; skjl=skjl+1; infile.close(); coutbgmun.mc; coutbgmun.zz; coutbgmun.jg; coutbgmun.mcbgmun.zzbgmun.jgbgmun.zlbgmun. sl; infile.close(); int a; couta; coutskjl; skjl=skjl-1; infile1.close(); ofstream outfile; outfile.open(“skjl.xls“,ios:out); outfilebgmun.mcbgmun.zzbgmun.jgbgmun.zlbgmun. sl; infile.close(); coutmun; mun=mun+1; infile1.open(“skjl.xls“,ios:in); infile1skjl; infile1.close(); coutbgmun.mc; coutbgmun.zz; coutbgmun.jg; coutbgmun.zl; coutbgmun.sl; ofstream outfile; 30 30 outfile1.open(“sk.xls“,ios:out); for(mun=0;muna; if(a=1)tcb();/商品按编号查询 if(a=2)tcm();/商品按名称查询 if(a=3)tcz();/商品按日期查询 if(a=0)gl();/返回 void tscx()/商品查询() couta; if(a=1)tcb();/商品按编号查询 if(a=2)tcm();/商品按名称查询 if(a=0)xs();/返回 void tcb()/商品按编号查询 infile.open(“sk.xls“,ios:in); for(mun=0;munbgmun.mcbgmun.zzbgmun.jgbgmun.zlbgmun. sl; infile.close(); string a; couta; for(mun=0;mun0)coutbgmun.mcbgmun.zzbgmun.jgbgmun.zlbgmun. sl; infile.close(); string a; couta; for(mun=0;mun0)coutbgmun.mcbgmun.zzbgmun.jgbgmun.zlbgmun. sl; infile.close(); string a; couta; for(mun=0;mun0)coutbgmun.mcbgmun.zzbgmun.jgbgmun.zlbgmun. sl; infile.close(); string a; couta; for(mun=0;mun0)coutzhmun.zhzhmun.mm; infile1.close(); int a; string b; couta; coutb; for(mun=0;muna; if(a=1) js();/销售 if(a=2) tscx();/商品查询 if(a=0) yh();/返回 void js()/销售 ifstream infile; infile1.open(“jsjl.xls“,ios:in); 33 33 infile1jsjl; infile1.close(); infile.open(“sk.xls“,ios:in); for(mun=0;munbgmun.mcbgmun.zzbgmun.jgbgmun.zlbgmun. sl; infile.close(); infile3.open(“skjl.xls“,ios:in); infile3skjl; ofstream outfile; outfile.open(“js.xls“,ios:app); couta; coutc; cout0) outfilejszhmunbgmun.mcbgmun.zzbgmun.jgbgmun. zl; infile5.close(); infile.open(“sk.xls“,ios:in); for(mun=0;munbgmun.mcbgmun.zzbgmun.jgbgmun.zlbgmun. sl; infile.close(); infile3.open(“skjl.xls“,ios:in); infile3skjl; infile3.close(); infile1.open(“jsjl.xls“,ios:in); infile1jsjl; infile1.close(); ofstream outfile; outfile.open(“js.xls“,ios:out); couta; for(mun=0;munly; ofstream outfile; outfile.open(“ly.xls“,ios:app); 35 35 outfilea; if(a=1) zlsr();/商品输入 if(a=2) zlxg();/商品修改 if(a=3) zlcx();/商品查询 if(a=0) yh();/返回 void zlsr()/商品输入 mun=0; ifstream infile; infile.open(“xsjl.xls“,ios:in); infilexsjl; infile.close(); xlmun.xszh=xszh; coutxlmun.mz; coutxlmun.xb; coutxlmun.n

温馨提示

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

评论

0/150

提交评论