软工实践之销售管理系统GUI开发

项目简介

销售管理系统是大型企业等不可或缺的软件系统之一。本次课题是简单的销售管理系统图形用户界面的实现。课题要求:
       1、要有可独立运行的可执行程序(.exe);
       2、要求该系统具有用户登陆界面、个人信息管理界面、销售管理界面。库存数据的增删改查功能;
       3、可采用VS2017的MFC、或者Qt的GUI框架来进行开发。

整体概况

GitHub链接如下:
   [1] (https://github.com/13110538870/Software-Engineering/tree/master/SaleSystem)   

项目历程

项目分析:

   拿到题目后,首先想到用用VS的MFC来进行开发。这个系统应该至少包含6个界面,即至少应该写6个不同的类。分别是:登陆界面(CloginDlg类),个人信息界面(CUserDlg类),销售管理界面(CSellDlg类),库存信息界面(CInfoDlg类),库存添加界面(CAddDlg类),库存删除界面(CDelDlg类)。刚开始没有想到目录界面和显示界面这两个类,随着项目继续进行,逐渐完善。下面是项目的类图。

运行和效果图:

  • 工程文件截图:
  • 程序运行截图:
    • 登陆界面
    • 个人信息界面
    • 销售管理界面
    • 库存信息界面
    • 库存添加界面
    • 库存删除界面

项目中遇到的困难:

1.对于项目中所需要的数据文件在C++中不知道用何种方式引入。最后百度得到的方法是用声明宏的方法引入文件;
2.在数据库文件中所存储的商品名称name是string类型,但在MFC中却要使用CString类型。类型转换从CString转为string成为困扰我的主要问题。后来百度了好多相关资料,才知道原来要用中间类型char 来帮忙。即://CString 转为string
CStringA temp;
temp = name;
char
ptr = temp.GetBuffer();
tmp.name = ptr;
3.知道了在windows环境下文档的读取中"\r"与“\n"是两个完全不同的概念。一个表示回车,另一个表示换行;而在Unix系统中,只有换行,即”\n";
4.在登陆界面时候,不论你输入的用户名是否正确,都显示“用户名输入错误!”。最后得知是没有更新让控件获取最新的值。应在按钮事件中加上:UpdateData(TRUE);
5.在程序运行时,显示错误“class CSaleSystemApp 没有成员 GetContextMenuManager",最后按照提示,给这个类加了该成员方法,并进行了初始化。使其返回一个指针。(ps:这个是VS2017MFC的小bug,天生就没有加进去该方法,需要你自己查阅文档重写该方法。)
6.登陆界面出现两个bug。(1)直接在编辑框中按回车不需输入任何信息就可以登陆进去---->修复:重写按钮事件。将OnOk注释掉;(2)点击取消的符号直接进入主界面---->修复:重写消息中的WM_CLOSE,使其直接退出程序。
7.学到了两个按钮初始化中重要的方法:
m_combol.SetCurSel(0);//默认选中第一个
OnCbnSelchangeCombo1(); //初始化第一个商品中的数据
8.在加载完商品,进行库存添加功能的时候,自己写的商品名称name总是显示为乱码。同时数据库中的文件也被同步为乱码。最后检查了好多遍才发现。自己在类型转换CString转string时,返回的类型不对,应返回指针,而我返回的是具体的值。

效能分析与测试:

单元测试:

  • 登陆界面测试
  • 个人信息界面测试
  • 销售管理界面测试
  • 库存添加界面测试
  • 库存删除界面测试

《构建之法》启示:

  • 任何一个项目都不是凭空产生的,必定有需求才会到一个项目,所以,需求分析很重要,不能忽视任何一个环节。在进入设计阶段后,一定要认真设计,否则会为后面的编码带来巨大的困难。
  • 软工团队的重要性。虽然这次是个人项目,但是明显能感受到一个人在完成项目,尤其是没有项目经验时的困难非常大,团队不仅带来的是新思想,新方式,高效率,还带来了过程中的欢声笑语,这点很重要。

图表:

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 30
- Estimate - 估计这个任务需要多少时间 30 30
Development 开发 900 1700
· Analysis · 需求分析 (包括学习新技术) 180 480
· Design Spec · 生成设计文档 30 30
· Design Review 设计复审 (和同事审核设计文档) 10 10
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 20 10
· Design · 具体设计 40 60
· Coding · 具体编码 300 450
· Code Review · 代码复审 60 150
· Test · 测试(自我测试,修改代码,提交修改) 40 500
Reporting 报告 240 -
· Test Report · 测试报告 60 -
· Size Measurement · 计算工作量 30 -
· Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 150 -
合计 780 -

心得体会:

  • 首先呢,得感谢帮助我解决问题的学姐,无论什么时候,我们不懂的东西问她,她都能很耐心的讲解,帮忙。实践,尤其是软件工程实践,不仅枯燥,而且难度大,需要花费很长时间,如果没有学姐和朋友的帮助,相信自己要坚持下去一定很难。
  • 然后呢,就是在实践中学到了很多书本上没有学到的东西,接触到新的东西。如:MFC、C++中的STL、Github等。体会到了作为一个开发人员的难处,体会到了一次又一次熬夜修复bug,熬夜写文档的心累......总之,这是一段宝贵的经历,会给我的人生增色不少。
  • 更新日志:
    10.15 发现了类中缺少一个成员导致的错误,正在处理中。。。。
    10.17 发现了登陆页面的两个小bug,紧急修复中。
    10.20 作业基本完成,基础版本可以发布,同步到Github中。
    10.22.1 发现了商品名称显示乱码的bug,紧急修复中。
    10.22.2 bug已修复,但是由于自己开发中使用的VS版本不一致,导致兼容性出现问题,在windows环境下运行参数有部分错误,但是碍于时间问题,只好放弃修复,进行下一个项
    目。
posted @ 2018-10-22 17:37  琪安  阅读(330)  评论(1)    收藏  举报