客户消费积分管理系统的设计与实现-课程设计_第1页
客户消费积分管理系统的设计与实现-课程设计_第2页
客户消费积分管理系统的设计与实现-课程设计_第3页
免费预览已结束,剩余33页可下载查看

下载本文档

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

文档简介

1、编号衣春理工久学Changchun University of Science and Technology课程设计报告20152016学年第一学期客户消费积分管理系统的设计与实现The Design and Implementation of a Client IntegralManagement System实习类别课程设计学生姓名 李志莹专业软件工程学号 140521329指导教师刘丹、何巍学院计算机科学技术学院客户消费积分管理系统的设计与实现李志莹二一五年十二月起止周17 18周数2实习地点南研1213/1208/1201实验室课程设计目的:了解并掌握数据结构与算法的设计方法,具备初步

2、的独立分析和设计能力; 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和 技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练学生用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。课程设计要求:1、独立思考,独立完成:课程设计中各任务的设计和调试要求独立完成,遇 到问题可以讨论,但不可以拷贝。2、做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调 试步骤和有关环境的设置方法,准备好有关的文件。3、实践设计以实际应用中的小型题目为主,要求学生独立完成或合作完成。要求学生能根据不同的题目类型选择一种或两种开发

3、模式,完成从系统定义,指定开发计划,需求分析,设计,编码 /测试,直至运行/维护的软件生存期的全过程。完成课程设计题目客户消费积分管理系统的设计与实现进度安排及主要内容:第1次课:布置任务;第 2次课:冋题分析及解决方案确疋;第3次课:形成编程思路;第 4次课:使用具体语言实现算法;第5次课:上机调试程序;第 6次课:编写课程设计报告;成绩:指导教师(签字)一、概述1.1设计主要完成的任务题目要求针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不 同程度的打折优惠。采用一定的存储结构进行客户信息的存储;对客户的信息可以进行修改、删除、添加;能够根据消费情况进行客户积分的累加;根据

4、积分情况,对客户实行不同程度的打折优惠;1.2解决的主要问题采用何种数据结构和编程语言实现客户抽象由于客户数目不定,所以采用链表结构实现客户的增删改查等基本操作, 用C#窗体图形用户界面技术编写程序。C#本程序要运用链表对客户信息进行存储,首先对结点进行定义,采用泛型思想和接口建立单链表类,并实现单链表的基本操作,代码主要参考的是 数据结构(C#语言版),但是在实际编写过程中略有调整。界面设计(1) 主界面:功能按钮导航;(2) 添加界面:添加新客户的信息;(3) 删除界面:按客户 ID 删除已有客户。(4) 修改界面:按客户 ID 修改已有客户信息。(5) 查找界面:按客户 ID 查找已有客

5、户。(6) 显示界面:遍历显示表中所有的客户的所有信息。(7) 消费界面:按客户 ID 对已有客户进行消费操作。1.2.3 数据结构中单链表的 C# 实现 对于单链表的操作,主要用到两个类,一个是 Node 类,一个是 List 类。Node 类主要是建立节点的类, 这个类包含数据内容 data 和“指针” next 用于指向下一个节点,实现单链表的连接。 List 类主要是进行对单链表的各种 操作:? 初始化头节点为空的链表。? 求单链表的长度。? 清空单链表。? 判断链表是否为空。? 在单链表尾部追加数据元素。? 在单链表的第 i 个结点的位置前插入一个值为 value 的结点。? 删除单

6、链表的第 i 个结点,只是修改引用域,逻辑上的删除,由垃圾回收 器回收。? 获得单链表中第 i 个数据元素。? 在单链表中查找值为 value 的结点。所有的操作都是基于List中的私有变量head和通过方法得到的长度,利 用他们实现节点的查找和定位。124客户的抽象客户用类进行抽象建模,在客户类 Consumer中定义相关字段(信息)、属性(字段的操作方式)、构造方法(客户创建方式)和实例方法(操作函数)所要定义的属性、字段和方法参见图-1public double consumef string amoumText)/.肖费ID/IIDConsumer/-Name) ( name/ 名 Q

7、lDnum: Dtiuni”身份证号)Typw J type会员类型 J馆1电话) payouts um/7 累计逋勤 MiscountRate /享受优惠(3 一 I(PayoutSum (iscountRate)-Q Integral积分_)*%_ :public double clisccuntfdouble amount)/ 计算折扣图-1客户类的结构图-1中类要调用消费方法时,消费方法又调用计算折扣方法。左边一列没有注释的内容为类中各字段对应的属性,用于对外写入和读入字段的值。右边 带有注释的内容为属于类的字段,是对客户信息的抽象。、需求分析2.1 客户(管理对象)需求2.1.1 客

8、户的基本信息注册登记时,每个客户都有唯一的ID,在方便管理的基础上,管理员可对 客户的基本个人信息,如ID,姓名,电话等等,进行增加、删除、修改和查找, 但是无法直接修改客户的累计消费、享有优惠、积分,这三个信息是执行消费 操作时由系统后台自动更改的。2.1.2 积分设置 当用户每消费一次,都由管理员用系统执行添加消费操作,操作成功就有 一笔积分与以前的积分进行累加,记录在系统中,并按照相关的积分政策,可 享受打折优惠等,或累计一定的积分,可为会员类型进行升级。2.1.3 消费设置 在系统中,每次消费操作得到管理员输入的有效消费金额,调用折扣计算 函数访问客户的享有优惠信息,计算出实际支付款,

9、显示次实付款以及此次消 费享有的优惠,购买成功后显示最新积分。2.2 数据需求应使用 string 对每个客户的基本信息进行存储。 用户消费、积分用 double 类型存储。然后运用链表的存储结构将用户所有信息进行保存。继而完成各种 功能。2.3 题目的功能? 采用一定的存储结构进行客户信息的存储;? 对客户的信息可以进行修改、删除、添加;? 能够根据消费情况进行客户积分的累加;? 根据积分情况,对客户实行不同程度的打折优惠;2.4系统各项功能描述根据不同的积分区间对客户进行打折具体如下:积分满500享受1元优惠,积分满1000享受2元优惠,积分满2000享受5元优惠,积分满5000享受9折优

10、惠,积分满10000享受VIP的7折优惠。用例分析? 用例1?用例名:录入客户及商品信息 行为者:超市管理员?目的:完成对客户及商品信息的录入管理?过程描述:? 录入客户(商品)的详细信息包括客户的姓名、身份证号、及现有的积分(商品名、商品的序列号、商品的价格、商品的数量)通过客户文件in.txt ( in2.txt )文件或者键盘输入读取客户(商品)信息对键盘输入的客户 的积分初始化为0 ;输入客户(商品)名称能查找到相应信息; 根据客户 的积分信息及打折信息给客户实现打折优惠;? 异常处理:无。? 用例2?用例名:客户信息管理行为者:超市管理员? 目的:完成对客户信息的管理。? 过程描述:

11、? 超市管理员输入客户的姓名和 ID 号。 对客户进行相应的增、删、查、 改的操作并能正确的显示客户信息 对客户进行报表统计;保存客户信息录 入客户信息文件 out.txt? 异常处理:无。? 用例 3? 用例名:客户消费管理 。 行为者:超市管理员。? 目的:完成对客户购买消费的计算并根据客户消费返回客户积分;? 过程描述:? 超市管理员输入客户的身份证号查找到相应的客户并显示客户的积分 及打折信息,如果客户不存在则打印此用户不存在;输入客户购买的商品 序号 打印出商品的信息。输入客户购买的商品数量并累加到 consumer 的消费中;退出系统;? 异常处理:无。三、技术方案3.1 软硬件环

12、境3.1.1 系统软件:本课程设计的系统开发平台为 Windows XP 及以上。程序设计语言为 C#语言,程序运行平台可 Windws98/2000/XP/Seven 。 需要 Visual Studio2013 编程软件和 .Net Framework 组件。系统硬件的需求:Pentium4 800MHZ 或者更高主频CPU 512MB 以上内存。3.2配置方案Windows7 操作系统,VS2013开发工具及平台。3.3关键技术C#窗体应用技术,c#泛型和面向对象编程,数据结构原理及算法,单链 表的基本操作。四、总体设计4.1系统功能架构系统的功能架构参见图-2 :图-2系统功能的结构4

13、.2各模块功能架构添加图-3添加客户422删除图-4删除客户423修改图-5修改客户查找图-6查找客户425添加消费图-7添加消费426查看所有图-8查看所有五、详细设计5.1节点的定义class Node/定义单链表数据结构private T data; / 数据域 字段public T Data /数据域属性get return data; set data = value; private Node next; / 指针域 字段public Node Next/ 指针域 属性get return next; set next = value; / 构造函数public Node() /

14、空节点 this.data = default(T);this.next = null;/ 数据域,指针域 节public Node(T data, Node next)点八、this.data = data;this .n ext = n ext; public Node(T data) / 数据域 节点n ext = nu II;this.data = data;public Node(Node next) / 指针域 节点this .n ext = n ext;5.2单链表的实现以及基本操作接口单链表的字段、构造方法:class List : IListDSprivate Node he

15、ad; /单链表头结点 字段/头结点属性public Node Headgetreturn head;sethead = value;/ 构造方法public List()head = null;5.2.2 单链表类接口:/ 接口的定义public interface IListDSint GetLength(); / 求长度void Clear(); / 清空操作bool IsEmpty(); / 判断线性表是否为空bool Appe nd(T item); /附加操作bool In sert(T item, i nt i); /插入操作T Delete(i nt i); /删除操作T Ge

16、tElem(i nt i); / 取表元int Locate(T value); /按值查找5.3各功能模块流程图添加流程T七主畀面ini 单击创建对象一一获取各文本框的字符串分别转换为対应参数类型传给客户类的构造方法单击添加客户按钮X(添加按钮将新对象添加到链表尾消话提加,客息 出对,添功示信 禅息框示成显户关闭添加窗口图-9添加流程删除流程主界面单击删除客户按$钮单击一H获取输入ID值比较弹出对话 框提示成 功将链表第i个节点” 真 捌殊删除窗口关闭弹出对话框提示不存在图-10删除流程修改流程、查找流程我取議1十元爲的序 4墙厘一艇示在下 面的追0画版的立 4ID与哀中 元iSItK对话框

17、提 示不存在获驭鞘入的卷改信息.一一科按为豔裁类俎夜叙第i牛九棗的集计消费积分,词审/个更聂狗造債裁创楚新対象到第i个创除原第|牛元图-11修改流程、查找流程添加消费、查看所有客户流程主畀面-暉击査看所占客户*骐取 表中元素 畀輸出芒匸花V、宵咱直十a凤示康饥优it驚,5购功示S侍图-12添加消费、查看所有客户流程六、软件测试6.1针对目标系统的测试方案测试流程添加几个用例,删除其中之一,再试着查找不存在的客户,给存在的客户 添加消费,查看所有客户信息。用例以及测试结果添加4个客户-ID 姓名身份证号电话会员类型a普通,普通,普通,VIP,删除 a ,修改 b 为 babababaVIP,查找

18、f,为c添加消费500 元,查看所有客户。测试结果:|-ID-|-姓名-| | 身份证号 | 电话 -|会员类型| |-累计消费 -|- 积分 -|享受优惠|1 ba ba babaVIP 00 打七折普通500 500 减1元VIP 00 打七折6.1.3 测试结论程序可以正常增删改除客户,具有一定友好性。七、总结 在本次课程设计当中,我对许多以往掌握不够熟练或者是使用较少而易忽 略的知识点有了一定的掌握, 比如说泛型, 单链表的基本操作, new 和 delete 的动态内存分配与内存空间的释放,通过设计前对整个客户积分系统的分析, 使我对面向对象的结构化程序设计有了更深一层次的认识,通过

19、对用户需求所 作的人性化分析,在设计程序的过程中,我更加合理的构建了能够最大限度的 满足用户需求的系统功能,使用户在使用时可以随心所欲,在编写代码的过程 当中,我通过查阅有关的资料和分析实例,从中学到了很多能够不断优化自己 代码,可以提高代码利用率的知识,并且更加合理的构建了各个知识点之间的 联系,充分的利用了循环和选择性语句,在存储过程中,对文件的部分知识也 有了一个深层次的了解和掌握,对于如何修改文件信息以及保存有了一定的概 念和运用。当然,在代码的编写过程中,也遇到了许多问题,我通过自身的努力去改 正它们,在这个过程中我也学到了很多东西,在代码的调试过程中,我碰到了 许多以前所没有碰到过

20、的错误,在老师的悉心指导和自己的努力思考下, 最终把这些问题一一解决掉,并把教训牢记在心,努力使自己得到更大的收获 和提高。总之,在本次课程设计的过程中,我首先从代码的编写中发现了一些解决 问题所必须具备的基本能力和素质,在设计程序时,我感受到了作为一名软件 开发者所必须具备的统筹安排,注重层次与结构的素养,为我以后从事软件开 发工作标明了方向,自己设计的最终实现为自己以后的努力树立了信心,这次 课程设计使我受益匪浅。附录 1参考文献1 严蔚敏,吴伟民数据结构( C 语言版 )北京:清华大学出版社, 2007.2 谭浩强 C+ 程序设计(第 2 版)北京:清华大学出版社, 2011.8.3 刘

21、莉,李梅,姜志坚 C# 程序设计教程北京:清华大学出版社,2014.附录2关键源代码? private void addButt on_ Click(object sen der. Eve ntArgs e) /单击添加页的添加按钮函数:获取各文本框字符串,调用构造方法/创建新客户,以此调用构造链表的 Append()方法将新客户插入链表尾。stri ng type;if (radioButt on_ Normal.Checked = true) type =普通;else type = VIP;Con sumer con =new Con sumer(textBoxlD.Text,textB

22、oxName.Text,textBoxID nu m.Text, textBoxTel.Text, type);L.List.Appe nd(c on);MessageBox.Show(ID: + con.IID + ,姓名: + con.Name + ,身份证号 : + con.IIDnum + ,电话 : + con.Tel + ,会员类型 : + con.Type + 。 + n 客户总数: + L.List.GetLength(), 添加客户成功! ); this.Close();? private void modButton_Click(object sender, EventAr

23、gs e)/ 单击修改页的修改按钮函数/*省略: i 值获取和基本信息参数获取 */Consumer con = new Consumer(/* 省略:基本信息参数 */ 旧节点的累计消费 L.List.GetElem(i).PayoutSum,/ 旧节点的积分 L.List.GetElem(i).Integral);L.List.Insert(con,i); / 修改的实现: 1. 先在 i 位置插入新节点L.List.delete(value); / 2. 删除旧节点this.Close(); /* 省略消息对话框提示代码,与上文相似*/*删除和查找的代码实现与以上添加和修改原理相似,故不

24、赘述!*/?private void con fButt on _Click(object sen der. Eve ntArgs e)/添加消费页的确定按钮单击函数/*省略:i值获取*/if (i = 1)double amount = 0;tryamount = double.Parse(textBox_am oun t.Text);if (am ount 0)textBox_am oun t_show.Text =amoun t.ToStri ng();textBox_disco un tRate_show.Text =L.List.GetElem(i).Disco un tRate;double payout =L.List.GetElem(i).c on sume(textBox_a moun t.Text);textBox_payout_show.Text = payout.ToString();label_successBuy.Visible = true;textBox_integral_show.

温馨提示

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

最新文档

评论

0/150

提交评论