商品销售统计课程设计.docx
- 文档编号:13020198
- 上传时间:2023-06-10
- 格式:DOCX
- 页数:20
- 大小:345.95KB
商品销售统计课程设计.docx
《商品销售统计课程设计.docx》由会员分享,可在线阅读,更多相关《商品销售统计课程设计.docx(20页珍藏版)》请在冰点文库上搜索。
商品销售统计课程设计
一、课程设计概述
系统的主要目标
减轻收银时计算商品总价的复杂度
系统的开发环境及运行环境
操作系统:
Windos7
Java版本:
1.7.0.45
IDE:
myeclipse2017CI
二、系统的需求分析
1.系统可行性分析
技术复杂度相对简单
投入资金小
对于社会普遍存在的收银时计算问题得到良好解决
人员投入1人
2.系统功能需求分析
商品销售统计系统的完整功能如下:
2.1输入商品信息管理
对于输入的商品,可以进行数量上的修改,以及商品的删除
2.2销售统计管理
对已输入的商品进行总价统计,并能在商品数量多的时候进行分页显示
3.系统功能描述
此系统的主要功能就是把人们从繁琐的收钱计费中解脱出来,通过计算机来计算出所应收取的钱数。
4.系统的数据流图
商品销售统计系统是基于pc上的系统,通过数据库里的商品单价来进行计算总价操作。
商品销售统计系统的基本数据流图如图1所示。
图1
分析商品销售统计系统的功能需求,得到功能级数据流图如图2。
图2
5.系统UML建模设计:
6.系统的用例分析
7.系统的状态图
8.系统的UML类图
三、系统总体设计
系统结构方框图
各模块功能
详细的UML类图
设计数据管理子系统:
数据库只有一张图表故省略掉E-R图、数据表之间的关系、数据库表结构
数据库表
设计人机交互子系统
四、详细设计
各模块的流程图
主模块
结算商品
输入商品
修改商品
删除商品
查询商品
5、系统实现
想使用工厂模式来进行事务的调用,又因为种种因素而没直接使用,而直接装进了主调用功能类中
各模块、各个类的具体实现(包括截图)
对应与Mybatis的接口
statisticsModel模型类
SetXXX...getXXX...
intid;
Stringname;
intmea;
floatprice;
doubleamount;//考虑计量单位的不同
doubletotal;//单类商品的总价格
@Override
publicStringtoString(){
Stringstr;
if(mea==0){
str="件";
return"[编号:
"+id+",商品名称:
"+name+",计量单位:
"+str+",价格:
"+price+"/"+str+",数量:
"+amount
+"件,合计:
"+total+"]";
}else{
str="kg";
return"[编号:
"+id+",商品名称:
"+name+",计量单位:
"+str+",价格:
"+price+"/"+str+",重量:
"+amount
+"kg,合计:
"+total+"]";
}
}
重点功能的实现
statisticsUtil商品查询功能类
packagecom.util;
importjava.io.IOException;
importjava.io.Reader;
importjava.util.List;
importorg.apache.ibatis.io.Resources;
importorg.apache.ibatis.session.SqlSession;
importorg.apache.ibatis.session.SqlSessionFactory;
importorg.apache.ibatis.session.SqlSessionFactoryBuilder;
importcom.impl.statisticsOperation;
importcom.model.statisticsModel;
publicclassstatisticsUtil{
privatestaticSqlSessionFactorysqlSessionFactory;
privatestaticReaderreader;
static{
try{
reader=Resources.getResourceAsReader("com/conf/dbconf.xml");
sqlSessionFactory=newSqlSessionFactoryBuilder().build(reader);
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
publicvoidall_select(){
SqlSessionsqlSession=sqlSessionFactory.openSession();
List
try{
statisticsOperationstatisticsOperation=sqlSession.getMapper(statisticsOperation.class);
query_msg=statisticsOperation.all_select();
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
sqlSession.close();
}
for(intj=0;j System.out.println("query_msg: "+query_msg.get(j)); } } //查找商品 publicstatisticsModelstatistics_select(intid){ SqlSessionsqlSession=sqlSessionFactory.openSession(); statisticsModelmyModel=null; List try{ statisticsOperationstatisticsOperation=sqlSession.getMapper(statisticsOperation.class); query_msg=statisticsOperation.statistics_select(id); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ sqlSession.close(); } for(intj=0;j myModel=(statisticsModel)query_msg.get(j); System.out.println("query_msg: "+query_msg.get(j)); } returnmyModel; } } 主功能类test packagecom.serv; importjava.util.ArrayList; importjava.util.List; importjava.util.Scanner; importcom.model.statisticsModel; importcom.util.statisticsUtil; publicclasstest{ publicstaticstatisticsUtilstatisticsUtil=newstatisticsUtil(); publicstaticvoidmain(String[]args){ List statisticsModeltemp=null; doubletotal=0; booleanflag=true; //TODOAuto-generatedmethodstub System.out.println("欢迎进入商品销售管理系统"); System.out.println("请输入相应的数字执行对应的操作: "); Scannerscanner=newScanner(System.in); Stringkey=""; while(flag){ System.out.println("1.输入商品2.修改商品数量3.删除商品4.查看总价统计0.重新计算其他.退出系统"); System.out.println("----------------我是可爱的分隔符------------"); try{ key=scanner.nextLine(); }catch(Exceptione){ //TODO: handleexception e.printStackTrace(); } switch(key){ case"1": statisticsUtil.all_select(); while(true){ System.out.println("请输入商品编号: (非数字结束输入)"); intnumber; try{ number=scanner.nextInt(); }catch(Exceptione1){ //TODOAuto-generatedcatchblock break; } try{ temp=statisticsUtil.statistics_select(number); if(temp==null){ System.out.println("无此商品"); continue; } if(temp.getMea()==0){ System.out.println("清输入数量: "); }elseif(temp.getMea()==1){ System.out.println("请输入重量单位kg"); } doubleamount=scanner.nextDouble(); System.out.println(amount); temp.setAmount(amount); temp.setTotal(); sale.add(temp); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } scanner.nextLine(); break; case"2": System.out.println("请输入要修改的行号: "); try{ intindex=scanner.nextInt(); temp=(statisticsModel)sale.get(index); System.out.println("请输入要修改的数量: "); doublenumber=scanner.nextDouble(); temp.setAmount(number); temp.setTotal(); sale.set(index,temp); scanner.nextLine(); System.out.println("修改成功! "); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } break; case"3": System.out.println("请输入要删除的行号: "); try{ intindex=scanner.nextInt(); sale.remove(index); scanner.nextLine(); System.out.println("删除成功! "); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } break; case"4": for(inti=0;i System.out.println(i+"."+sale.get(i)); total+=((statisticsModel)sale.get(i)).getTotal(); } System.out.println("共计: "+total+"元"); total=0; break; case"0": sale.clear(); break; default: flag=false; break; } } System.out.println("再见"); } } 六、系统测试 测试用例 测试结果 TC1 TC2 TC3 TC4 TC5 TC6 TC7 七、课程设计总结 实际编程中出现了scanner的nextInt与nextDouble的不读取\n换行符出现nextLine被假跳过的问题。 在设计的时候对大体设计图上存在理解的模糊处理,在测试用例方面存在数据不足不知道该用什么用例来测试。 对于结构化的图标绘制还无法熟络的掌握。 八、参考文献 java里为什么使用nextLine();没有等我输入就“跳过了”? java中使用ArrayList如何修改里面的内容. 程序类课程设计报告书 商品销售合院何浩 怎么直接修改list里面元素的数值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 商品 销售 统计 课程设计