1、沈 阳 工 程 学 院课 程 设 计设计题目: 高级程序设计课程设计 - 药品销售管理系统 系 别 信息工程系 班级 计本071 学生姓名 罗 松、韩 余、古智海、成先镜、王博 学 号 13号、19号、12号、30号、06号 指导教师 张楠、吕海华 职称 讲师、讲师 起止日期:2023 年12月14日起至 2023 年12月25日止沈 阳 工 程 学 院课程设计任务书 课程设计题目: 药品销售管理系统 系 别 信息工程系 班 级 计本071 学生姓名 罗 松、韩 余、古智海、王博 、成先镜 学 号 13号、19号、12号、06号、30号 指导教师 张楠、吕海华 职 称 讲师、讲师 课程设计进行
2、地点: 实训F 任 务 下 达 时 间: 2023 年 12 月 10 日起止日期:2023年12月14日起至 2023 年 12 月25 日止教研室主任 姜柳 2023年12月 09 日批准一、课程设计的原始资料及依据查阅有关资料,进一步理解面向对象程序设计的思想,并运用MFC框架编写一个简朴的windows系统。通过本设计可以加深理解使用面向对象程序设计思想开发一个系统的方法,提高分析问题、解决问题和实际动手的能力。二、课程设计重要内容及规定设计内容:重要完毕药品销售信息的管理1) 实现销售登记,并作相应纪录,将记录保存在文献中2) 实现销售退货,并作相应纪录,将记录保存在文献中3) 实现
3、销售查询4) 实现销售退货查询设计规定:(1)规定运用面向对象的方法以及MFC框架来完毕系统的设计;(2)规定在设计的过程中建立清楚的类层次,并画出类图;(3)设计功能满足规定、易于操作的和谐界面;(4)界面中需有菜单、工具栏、状态栏;(5)在系统的设计中,至少要用到面向对象的一种机制:继承、多态等;(6)在完毕该题目时,小组人员进行具体的任务分工,并要在报告中体现出来。三、对课程设计说明书撰写内容、格式、字数的规定1课程设计说明书是体现和总结课程设计成果的载体,重要内容涉及:设计题目、设计目的、设备器材、设计原理及内容、设计环节、碰到的问题及解决方法、设计总结、参考文献等。一般不应少于300
4、0字。2在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。应做到文理通顺,内容对的完整,书写工整,装订整齐。3设计总结部分重要写本人完毕工作简介以及自己的设计体会,涉及通过课程设计学到了什么,哪里碰到了困难,解决的办法以及此后的目的。4课程设计说明书手写或打印均可。手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。5课程设计说明书装订顺序为:封面、任务书、成绩评估表、目录、正文、参考文献。
5、四、设计完毕后应提交成果的种类、数量、质量等方面的规定1完毕“任务书”中指定的功能,运营结果对的。2课程设计说明书。五、时间进度安排顺序阶段日期计 划 完 成 内 容备注1第1天进行设计准备,阅读资料,分析设计任务书,明确设计规定、内容和环节2第24天编写相应的程序代码3第57天程序调试4第89天整理程序,撰写课程设计报告5第10天成绩评估六、重要参考资料(文献)1 王育坚. 主编Visual C+面向对象编程教程(第二版). 北京:清华大学出版2 陈维兴, 林小茶.C高级程序设计教程. 北京:清华大学出版社3 谭浩强.C程序设计教程. 北京:中国科学技术出版社4 王燕.面向对象的理论与C实践
6、. 北京:清华大学出版社5 马石安, 魏文平. 主编Visual C+程序设计与应用教程. 北京:清华大学出版社6郑莉 董渊 张瑞丰 编着. C+语言程序设计(第3版). 北京:清华大学出版社.2023 沈 阳 工 程 学 院 高级程序设计 课程设计成绩评估表系 (部): 信息工程系 班 级: 计本071 学生姓名 : 罗松、 韩余、 古智海、 成先镜、 王博 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,可以独立完毕设计工作, 0.2543
7、2工作量按期圆满完毕规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质量说明书立论对的,论述充足,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导教师评审成绩(加权分合计乘8) 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55432说明书的质量说明书立论对的,论述充足,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.35432评
8、阅教师评审成绩(加权分合计乘以4)分加权分合计评 阅 教 师 签 名: 年 月 日答 辩 小 组 评 审 意 见评价内容具 体 要 求权重评 分加权分学生报告报告准备充足,思绪清楚;语言表达准确,概念清楚,论点对的,有层次,有重点,基本上反映了所完毕任务的所有内容;时间符合规定。0.55432答 辩思绪清楚;回答问题有理论依据,基本概念清楚;重要问题回答准确,进一步,有说服力。0.55432答辩小组评审成绩(加权分合计乘以8)分加权分合计答辩小组教师署名: 年 月 日课 程 设 计 总 评 成 绩分摘 要随着着社会的复杂化,传统的“一支笔,一本帐簿”的药品销售管理方式也慢慢的无法适应形势的变化
9、。随着信息技术的发展,计算机已被广泛的用于社会的各个领域,成为推动社会发展的技术动力。而在计算机应用中,软件的作用十分突出,软件已经发展成为信息技术的核心,主导着信息产品的开发和信息技术市场的进一步的开拓。软件产业已成为社会信息化进程中的一个战略性产业。在软件技术的应用中软件的开发技术特别是应用型软件产品的开发技术成了重中之重。不断开发适应用户需求、市场需要的新型软件产品。随着社会的发展,软件也在不断的更新换代。随着信息化的发展,为了让管理更快捷、更准确,实现商业活动的信息化管理已经成为各个领域的当务之急。我们知道Visual C+有许多组件组成,涉及编辑器、编译器、调试器以及程序向导AppW
10、izard、类向导ClassWizard等,这些组件通过一个名为Developer Studio的组件集成为一个和谐的开发环境。运用这个开发环境,我们可以很容易的编写一个应用于一个特定环境的软件系统。本次课设我们小组就是运用这个环境来开发我们的应用系统的。我们的这个系统重要是针对医药管理行业的,重要是用来对药品销售的商业活动进行管理的。应用本系统,我们可以使药品销售管理简朴而有效的运营,这就是计算机的优点。下来我来简朴介绍一下我们所开发出来的这个系统,在我们的这个系统中,重要有四大方面的功能,即登录系统功能、药品采购管理、药品销售管理、药品退货管理。此外,运用我们运用文献来对数据进行管理,从而
11、使系统更加完善,功能更加强大。关键词:Visual C+、AppWizard、ClassWizard、文献、Developer Studio目 录 摘 要I第1章 绪 论1第2章 系统功能介绍22.1系统功能总框图22.2 模块功能介绍2第3章 文献介绍33.1 文献的总体介绍33.2 保存文献33.3 打开文献4第4章 系统功能实现74.1 系统登录模块的实现74.2 采购模块的实现84.3 销售模块的实现104.4 退货模块的实现15结 论20致 谢21参考文献22附 录 小组内部分工23第1章 绪 论紧张而又繁忙的课程设计过去了,在这一个星期里,让我尝到了以前我没有体验过的辛劳与劳累。通
12、过本次的课程设计,使我克服了很多在程序设计上的弊端和难点,也让我体会到了冲出重围的幸福与喜悦。编写了几百行的代码最后写出一个程序觉得很有成就感。对Visual C+的掌握提高到了一个新的水平,可以运用Visual C+编程平台编写出一个实用的程序,很大限度提高了程序综合设计能力、分析能力和编程能力。掌握了很多新的编程技巧,积累了一些编程经验。世纪之初,以微电子、计算机、软件和通信技术为主导的信息技术革命给我们生存的社会所带来的变化令人目不暇接。Visual C+由许多组件组成,涉及编辑器、编译器、调试器、以及程序向导AppWizard、类向导ClassWizard等,这些组件通过一个名为Dev
13、eloper Studio的组件集成为一个和谐的开发环境。这给我们的编程提供了很大的方便。本组选择药品销售管理系统,它可以应用在任何医药公司和和医药销售有关的事业单位的药品销售管理中,为药品销售的各项管理及信息保存提供了一个良好的操作环境,为这些单位提供了很大的方便。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻结识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对药品销售进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点可以极大地提高公司对药品销售管理的效率
14、,从而使公司取得更大的利润。同时,这也是公司的科学化、正规化管理,与世界接轨的重要条件。我们的课程设计结束了,但是它留给我的印象是不可磨灭的。无论我以后会不会涉及这方面的研究,我想,我至少掌握了一种系统的研究方法,我们学习的目的就在于运用,我们运用这种研究方法的时候会很多,我最后要感谢课程设计,它的确教会我很多。紧张的设计时光接近收尾,我们的设计成果也达成了设计的规定,我们每个人的心里头都画上了圆满的句号,在这次实践中,让我感受到了团队的力量,无论我们碰到多么大的困难,只要我们齐心合力,没有什么事情可以难倒我们,虽然我们很累,但是我们很满足,由于我们学到了知识,学到了人与人之间更好的配合与合作
15、。、第2章 系统功能介绍2.1系统功能总框图在本次课程设计中,我们小组所做的课设题目是药品销售管理系统,根据它的基本规定和通过我们查阅相关资料。通过我们组成员之间的讨论研究,最后我们终于制定出了本系统的总体功能。由于我们所做的系统涉及到了销售,所以我们为它设计了四个重要的功能模块,即系统登录管理模块、药品采购管理模块、药品销售管理模块和药品退货管理模块。此外尚有两个文献管理模块,即文献的保存和文献的打开。系统总体功能框图如图2.1所示。药品销售管理系统药品采购管理药品销售管理药品退货管理系统登录管理保存文献打开文献图2.1 药品销售管理总框图2.2 模块功能介绍在系统功能总框图中我们已经介绍了
16、我们这个系统的总体功能模块,即系统登录管理模块、药品采购模块、药品销售管理模块、药品退货管理模块、打开文献和保存文献。下面我来具体介绍一下它们。(1)系统登录模块:此模块用来管理系统用户的登录,严禁非法的用户进入系统。(2)药品采购模块:此模块重要用来管理系统药品采购中的一些操作。有药品采购、显示采购的药品列表、显示采购的药品的单个信息和修改已采购药品的信息。(3)药品销售模块:此模块重要用来管理系统药品销售中的一些操作。有销售记录、修改销售的药品信息、显示销售列表、显示单个货品的销售具体信息、计算销售总价和查询系统中当前的销售情况。(4)药品退货模块:此模块重要用来管理系统药品退货中的一些操
17、作。有退货记录、退货列表、修改单个物品的退货信息、查询当前系统的退货情况和计算归还总价。第3章 文献介绍3.1 文献的总体介绍如图3.1所示为本系统的主操作界面。本系统采用文献的方式对系统中的信息进行管理。有保存文献、打开文献和关闭文献等操作。系统中定义一条信息的属性涉及:药名、种类、数量、价格,其作为文献保存的基本单位。系统一方面采用三组动态数组用来保存信息在内存中的存储,分别用来保存采购信息、销售信息、退货信息。当保存文献时,就将三组信息分别写到三个文献之中。当文献打开时,就将文献中的内容依次读到三个动态数组之中。图3.1 系统总体界面3.2 保存文献(1)当单击保存文献按钮时,系统就会出
18、现如图3.2所示的保存文献的界面。再此界面中,我们可以看到文献被默认为.ALC格式的,这是我们在代码中规定的。文献的保存类型为药品销售文献(*.ALC),这也是我们根据系统的功能设定的。当你选择好保存文献的途径,然后点击拟定按钮,文献就可以顺利的被保存到你所选择的位置。当然,在此过程中,你最佳能给文献起一个新的名称,由于我们一次性必须保存的文献有三个,即药品采购文献、药品销售文献、药品退货文献。这样就可以防止所要保存的文献被覆盖的情况。图3.2 保存文献界面(2)核心代码bool SinInf:WriteFile(CString &m_OFile,int a) /文献写入函数,参数为要写入的文
19、献途径 CMedManageApp *app = (CMedManageApp *)AfxGetApp();ofstream OFile(m_OFile);if(OFile.fail()TRACE(文献创建失败!);return false;int index=app-single.GetYaoNum(a);for(int i=0;iindex;i+) OFilesingle.GetYao(i,a)-YNameendl single.GetYao(i,a)-YKindendl single.GetYao(i,a)-YNumberendl single.GetYao(i,a)-YPriceP1P
20、2P3P4;CString TName(P1);CString TKind(P2);CString TNumber(P3);CString TPrice(P4);app-single.AddYao(TName,TKind,TNumber,TPrice,a);delete P1;delete P2;delete P3;delete P4;IFile.close();return true;第4章 系统功能实现4.1 系统登录模块的实现(1)在此模块中,重要实现对用户登录系统的管理。我们知道,对于每个软件应用系统都有其特定的使用人员,特别是用于商业活动的软件系统,就更应当注意它的保密功能,所以我们
21、必须为我们的系统设计一个用于保护本系统的密码登录功能。如图4.1所示为我们药品销售管理系统的登录界面。它所具有的功能是验证用户的登录信息,即用户名和相应的用户密码,检查预进入本系统的用户是不是合法用户。此外,为了加强其安全性,我们设定假如用户输入的非法信息超过三次,系统将强制退出,不允许其登录到主界面。图4.1 登录界面(2)核心代码int nCount=0;while(nCount=3)MessageBox(NULL,口令输入已经超过3次,请退出!, 错误信息,MB_OK|MB_ICONERROR); return FALSE;4.2 采购模块的实现(1)药品销售系统的药品采购功能模块实现药
22、品采购的相关操作,如图4.2 所示。为药品采购功能界面药品采购功能模块由药名、类别、数量、价格组成,此对话框由四个静态文本框、四个可编辑文本框、一个按钮构成,实现采购药品的功能,重要输入购买的药品的药名、类别、数量及价格即可完毕,对库存已有的药品不可再进行采购,否则,显示“列表已有该项”。图4.2 药品采购功能模块(2)各控件的说明如下:药品:输入销售的药品名,为字符型变量,否则犯错类别:输入销售的药品类别,为字符型变量数量:输入销售的药品数量,为整形变量,其值不能小于0,大于采购的数量,否则库存不够,无法进行销售价格:输入销售的药品价格,为整形变量,其值大于0OK按钮:点击,采购完毕,保存到
23、库存(3)核心代码:bool Check1(CString &m_Numberx) /检查是否含不是数字的项 for(int i = 0;i single.GetYaoNum(1);while(Index1-) if(app-single.GetYao(Index1,1)-YName=m_Name) MessageBox(列表中已有该项了);Jin=false; if(Jin=true) app-single.AddYao(m_Name,m_Kind,m_Number,m_Price,1); CDialog:OnOK();4.3 销售模块的实现(1)药品销售系统的药品销售功能模块实现药品销售的
24、相关操作,如图4.3所示,为药品销售界面。药品销售功能模块由药名、类别、数量、价格、总价、销售列表和销售详情组成,此对话框由七个静态文本框、四个可编辑文本框、列表和四个按钮构成,实现销售药品的功能,分为售出、查询、修改和退出等功能,在药品采购完之后,从库存里售出相应的药品,假如库存里没有相应药品的采购,则无法进行销售。 图4.3 药品销售界面 (2)各控件的说明如下:药品:输入销售的药品名,为字符型变量,否则犯错;类别:输入销售的药品类别,为字符型变量。数量:输入销售的药品数量,为整形变量,其值不能小于0,大于采购的数量,否则库存不够,无法进行销售。价格:输入销售的药品价格,为整形变量,其值大
25、于0。总价:在输入完药品名、类别、数量和价格之后,进行相应的操作时,总价会显示总的价格。销售列表:在输入完药品名、类别、数量和价格,售出药品之后,销售列表会显示当前销售的药品名。销售详单:在售出药品之后,在销售列表中有相应的药品名,而相应的销售记录在销售详单里,通过列表显示出来。售出:在输入完药品名、类别、数量和价格,点击售出,则将相应的药品名和记录添加到销售列表和销售详单里。查询:点击查询按钮之后,销售列表里会显示售出的药品名进行查询,通过销售详单显示相应的记录。修改:只能对销售的数量进行修改,修改成功后将记录添加到销售列表和销售详单里。退出:点击该按钮即实现退出销售界面。(3)核心代码:b
26、ool Check(CString &m_Numberx) /检查是否含不是数字的项 for(int i = 0;i single.GetYaoNum(1); if(Index1) while(Index1-) if(m_Name=app-single.GetYao(Index1,1)-YName) if(atoi(app-single.GetYao(Index1,1)-YNumber)single.GetYaoNum(2); while(Index1-) if(app-single.GetYao(Index1,2)-YName=m_Name) MessageBox(列表中已有该项了); Ji
27、n=false; if(Jin=true) app-single.AddYao(m_Name,m_Kind,m_Number,m_Price,2); int temp=atoi(app-single.GetYao(JiShu,1)-YNumber)-atoi(m_Number); app-single.GetYao(JiShu,1)-YNumber.Format(%d,temp); m_Total.Format(%d,atoi(m_Number)*atoi(m_Price); UpdateData(false); int Index; Index=app-single.GetYaoNum(2)
28、; m_XiaoList.ResetContent(); /列表清空 for(int i=0;isingle.GetYao(i,2)-YName); else MessageBox(库存中没有此货品); MessageBox(库存中还没有此货品); void Sell:OnOK() CDialog:OnOK();void Sell:OnSelchangeList1() CMedManageApp *app = (CMedManageApp *)AfxGetApp();int nIndex=m_XiaoList.GetCurSel();m_SingXiao.ResetContent();if(n
29、Index!=LB_ERR) m_SingXiao.AddString(app-single.GetYao(nIndex,2)-YName); m_SingXiao.AddString(app-single.GetYao(nIndex,2)-YKind); m_SingXiao.AddString(app-single.GetYao(nIndex,2)-YNumber); m_SingXiao.AddString(app-single.GetYao(nIndex,2)-YPrice); m_Name=app-single.GetYao(nIndex,2)-YName; m_Kind=app-s
30、ingle.GetYao(nIndex,2)-YKind; m_Number=app-single.GetYao(nIndex,2)-YNumber; m_Price=app-single.GetYao(nIndex,2)-YPrice; UpdateData(false);void Sell:OnButsearch() int Index;CMedManageApp *app = (CMedManageApp *)AfxGetApp(); Index=app-single.GetYaoNum(2);m_XiaoList.ResetContent(); /列表清空 for(int i=0;is
31、ingle.GetYao(i,2)-YName);void Sell:OnButalter() UpdateData(true);CMedManageApp *app = (CMedManageApp *)AfxGetApp(); int nIndex=m_XiaoList.GetCurSel();CString temp;if(nIndex!=LB_ERR) temp=app-single.GetYao(nIndex,2)-YNumber; app-single.GetYao(nIndex,2)-YName=m_Name; app-single.GetYao(nIndex,2)-YKind=
32、m_Kind; app-single.GetYao(nIndex,2)-YNumber=m_Number; app-single.GetYao(nIndex,2)-YPrice=m_Price; int nIndex1=app-single.GetYaoNum(1); while(nIndex1-) if(app-single.GetYao(nIndex1,1)-YName=m_Name) int temp1=atoi(app-single.GetYao(nIndex1,1)-YNumber)+atoi(temp)-atoi(m_Number); app-single.GetYao(nInde
33、x1,1)-YNumber.Format(%d,temp1); m_Total.Format(%d,atoi(m_Number)*atoi(m_Price);break; UpdateData(false);4.4 退货模块的实现(1)药品销售系统的退货功能模块,如图4.4所示,为退货功能界面。本功能界面由六个静态文本框、五个可编辑文本框、一个不可编辑文本框和四个按钮组成的。在退货这一功能模块中,重要有三大功能来实现药品的退货功能,分别是归还、查询和修改功能。其中在第一次归还药品的前提是,作为药品管理者,只有销售给客户才干实现退货,否则是不能进行退货的。图4.4 退货功能模块界面(2)各控件的说明如下药名:输入要退货的药品名称,字符型变量m_Name。类别:输入药品的类别,如处方类和非处方类等,字符型变量m_Kind。数量:输入要退货药品的数量,整形变量m_Number,其值为小于销售的数量并且不小于0。(假如在本栏输入其他类型变量会出现报错警告)价格:输入药品的退货价格,整形变量m_Price,其值为大于等于0。(假如在本栏输入其他类型变量会出现报错警告)应归还金额:系统自动计算出应退还给客户药