1、1112212222112211221 西安建筑科技大学华清学院课程设计(论文)课程名称: 软件开发实验课程设计 题 目: 超市会员管理系统 院 (系):华清学院机械电子工程系 专业班级:计算机科学与技术 1101 姓 名: 学 号: 201106060136 指导教师: 2014 年 07 月 6 日2222222222222222222 西安建筑科技大学华清学院课程设计(论文)任务书专业班级:计算机1101 学生姓名: 指导教师 (签名): 一、课程设计(论文)题目超市会员管理系统二、本次课程设计(论文)应达到的目的通过软件开发大作业课程设计的操作与实践,使学生了解关系软件开发的相关理论知
2、识和有关工具软件的使用技巧,在一定程度上提高应用程序的综合开发能力和创新意识、创新能力。 三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术参数、设计要求等) 系统功能基本要求 :1. 加入会员的基本条件维护,包括:成为会员的基本条件、优惠政策、优惠时间等;2. 会员的基本信息,包括姓名、性别、年龄、工作单位、联系方式等;3. 会员购物信息:购买物品编号、物品名称、所属种类,数量,价格等;4. 会员返利信息,包括会员积分的情况,享受优惠的等级等;5. 对货物流量及消费人群进行统计输出。四、应收集的资料及主要参考文献: 1. 数据库:原理编程与性能(影印版)(第2版),高等教育出版
3、社, Parick ONeil,Elizabeth ONeil编著,2005.7 ;2. 数据库系统概论(第 4 版),高等教育出版社,王珊,萨师煊编著,2006.05; 五、审核批准意见教研室主任(签字) 3332232222332233223 摘要随着社会的快速发展,市场竞争越来越激烈,为了能在竞争中立于不败之地,商家推出了各种方式来吸引顾客,提升自己的竞争能力,会员制度的推行现在相当普遍,会员的加入不仅能使商家有固定的合作对象和顾客,还可以通过一定的优惠政策刺激消费者消费,所以对会员管理系统有更高的要求。本会员超市会员管理系统实际的业务流程为背景而设计的,后台数据库的设计用 SQL Se
4、rver 2008,前台用 MyEclipse 来开发。本超市会员信息管理系统已超市会员信息的管理为核心,兼有各种查询、添加、修改等功能,如对货物流量和消费人群的查询,对会员信息的查询等。本系统利用存储过程可以对数据库中的内容实现各种级联修改与信息的实时更新,可以化繁为简,提高效率,避免大量的重复性的工作。 整个系统由会员信息管理模块、会员优惠度模块、购物信息模块和商品信息模块组成。整个系统能独立运行,实现现实中的功能。关键字: 会员管理,数据库 4442242222442244224 目 录1 软件开发 第 1 页2 问题描述第 2 页3 需求分析第 2 页4 概要设计第 4 页5 详细设计
5、第 5 页6 调试分析第 8 页7 使用说明第 8 页8 实验总结第 11 页9 参考文献第 11 页- 1 - 1 - 1 - 1 -22- 1 -2222- 1 - 1 -22- 1 - 1 -22 - 1 -超市会员管理系统1. 软件开发1.1 开发的背景随着计算机软硬件技术的迅速发展,信息化己成为现代企业的一个重要标志和衡量企业综合实力的重要标准。信息化建设悄然地改变着国内广大中小企业的生存和运营模式。而会员管理系统也成为商家争取客户的必选。会员管理信息系统正在越来越多的被各种企业应用于消费管理领域。随着众多企业的管理者对管理信息系统的重视程度的提高,会员管理信息系统的管理功能也在不断
6、的增强,发挥的作用越来越大。使企业员工提高工作效率以及规范企业的多层次全方位管理,在企业与外界之间,它可帮助企业实现电子商务模式,以此拓宽交流范围,缩短交流的时间、丰富交流方式,并可协助维护企业与社会之间良好的关系。1.2 开发设计的意义网络管理可以实现信息资源共享,在网上发布会员信息,使会员在网上可以查看到自己最新的会员积分以及商家发布的各种有礼兑换活动。通过此项目的研究与实践,使网络管理更能为会员提供一个方便的自我管理环境,使会员能更好的对自己购物所获得的积分的管理以及能清楚的了解自己购物的商品列表和兑换礼物情况。商家可以利用系统对会员信息进行管理,例如对会员信息的添加、修改、查询以及积分
7、查询统计等。管理上更加规范,不再受时间和地理位置的限制,很大程度上提高了会员管理的效率,不再像过去的手工操作浪费时间、人力以及物力,也无形当中提高了商家对会员管理的效率,达到双赢的目的。1.3 系统研究的目标建立一个基于网络平台的,符合当代管理理念的,具有现代会员管理特色、综合会员卡积分的新型会员管理模式。- 2 - 2 - 2 - 2 -22- 2 -2222- 2 - 2 -22- 2 - 2 -22 - 2 -1.4 开发工具SQL Server简介SQL Server 2008 数据库管理系统具有以下主要特点。 (1) 丰富的图形化管理工具,使系统管理,操作更为直观方便。SQL Ser
8、ver 企业管理器是一个基于图形用户界面(GUI)的集成管理工具,利用它可以配置管理 SQL Server 服务器、管理数据库和数据库对象、备份和恢复数据,实现数据复制和转换等操作。(2) 动态自动管理和优化功能。即使 SQL Server 数据库管理员不做任何设置,SQL Server 也能够在运行过程中根据环境配置和用户访问情况动态自动配置,以达到最优性能,从而减轻管理员工作。(3) 充分的Internet技术支持。Internet网络发展至今已经成为一条重要的信息发布渠道,SQL Server增强了对Internet技术的支持,还增加了对XML和HTTP技术的支持。1. 问题描述客户信息
9、管理系统是企业管理新系统的重要组成部分,利用客户信息管理系统,企业能够有效的管理自己的客户,实现对客户信息的维护。客户便于对自己的消费情况进行查询,对产品进行购买并了解购买价格和个人信息。便于企业管理并了解客户信息。2. 需求分析3.1 可行性分析通过客户信息进行详细的管理使企业管理员能方便的管理客户日常信息以及方便客户对自己的个人信息的进行查询。由此系统的开发,可以节省大量的时间,使得管理人员对客户信息清晰明了,此外客户关系管理不再是局部的,可视化的工作流程,实现对客户日常消费记录,使客户信息规范化,大大提高了管理人员的工作效率。 3.2 功能需求- 3 - 3 - 3 - 3 -22- 3
10、 -2222- 3 - 3 -22- 3 - 3 -22 - 3 -会员卡管理系统,主要包括客户与商品之间的关系。主要功能需求如下。 (1)在会员卡管理部分,要求:a) 可以查询会员信息。b) 可以修改会员卡过期日期。c) 可以查看会员购物信息。d) 可以对会员的信息进行基本操作且会员有多种级别,级别的高低与消费总额成正比。 。(2)添加购物信息部分,要求:a.可以查看购买的商品信息。b.对商品信息进行维护,包括添加商品名称、商品价格、够买时间等操作。(3)购买新卡管理部分,要求:a.可以选择购卡价格。b.可以对会员的消费级别分类,普通会员输入手机号即可,高级会员需输入姓名、身份证号、手机号等
11、。3.3 性能需求a) 数据的精确度 应保证查询的准确率为 100%,所有在相应区域中包含查询关键字的都可以查到,不在相应域中或不包含查询关键字的都不能查到。b) 系统响应时间系统性能高反应速度快,1、2 秒之内找到特定的客户信息。c) 适应性满足运行环境在允许操作系统之间的安全转换和与其他应用软件的独立运行要求。3.4 非功能性需求用户界面需求:简洁、易用、易懂、友好的用户界面。硬件要求:装有MyEclipse、SqlServer的计算机。- 4 - 4 - 4 - 4 -22- 4 -2222- 4 - 4 -22- 4 - 4 -22 - 4 -可靠性需求:保证用户在正常使用本系统时,用
12、户的操作或误操作不会产生数据的丢失。4概要设计4.1 功能描述该课程设计的数据结构是线性的数据存储结构,采用的是单链表类型的存 储结构。客户信息管理系统主要是对企业的客户信息进行详细的管理,并方便的对客户信息进行创建,添加,删除,修改,查询等操作。客户信息管理系统结构分为基础信息维护,客户信息管理,商品信息管理,客户消费管理。管理人员可以浏览客户的信息,可以对客户信息进行维护。商品管理可以浏览商品的信息,可以对商品信息进行维护。客户消费管理可以显示当前数据库中客户的消费情况。简单而有效的发挥出它的效力,资源配置比较突出,这就是管理信息系统的开发的基本环境。4.2 系统包含的类和方法public
13、 class ShoppingCard/ 类public void actionPerformed(ActionEvent e)/ 事件监听器private void addSure()/ 添加购物信息确定的方法private void add()/ 点击后显示添加信息界面的方法private void buy()/ 显示购物信息的方法private void insert()/ 插入新购物卡的方法private void card1()/点击购买大于5000元购物卡的方法private void back() / 查询信息后返回private void card2()/ 点击购买小于5000
14、元购物卡的方法private void newCard()/ 点击购买新卡后执行的方法,显示6个按钮选择private void cardSure() / 点击cardsure执行的查询功能public boolean exist(String s)/ 判断卡是否存在或是否激活- 5 - 5 - 5 - 5 -22- 5 -2222- 5 - 5 -22- 5 - 5 -22 - 5 -public boolean idCard(String str)/判断身份证号是否符合规定4.3 系统包含的包其中在代码中导入了四个连接数据库和 java 宿主语言的四个 jar 包,分别是 msbase.j
15、ar 包,msssqlserver.jar 包,msutil.jar 包,sqlidbc.jar 包。使用了 javax.swing 包,包含了各种 swing 组件,实现按钮,窗体,对话框,面板,滚动条,二维单元表,编辑单行文本。使用了 java.sql 包,包含的接口和类采用传统的 C/S 体系结构设计思想.主要功能针对基本数据库编程服务,如生成连接,执行语句以及准备语句和运行批处理语句.也有一些高级功能如批处理更新,可滚动结果集,事务隔离以及 SQL 数据类型.使用了 java.awt 包, java.awt 有创建用户接口、绘图和图像的所有类。4.3 系统功能模块图超市会员管理系统会员
16、信息管理模块添加购物信息购买新卡会员信息过期日期修改购买商品名购买具体时间购买商品价格高级会员 普通会员购物信息查看高级会员信息 普通会员信息输入手机号会员姓名会员身份证号会员手机号购买日期图4-1 系统功能模块图- 6 - 6 - 6 - 6 -22- 6 -2222- 6 - 6 -22- 6 - 6 -22 - 6 -5详细设计5.1建立数据库连接public static void main(String args) new ShoppingCard();String DBDriver = “com.microsoft.sqlserver.jdbc.SQLServerDriver“;/
17、String connectionStr1 = “jdbc:sqlserver:/localhost:1433;DatabaseName=huiyuan“;Connection con = null;try Class.forName(DBDriver);/ 加载驱动器 catch (ClassNotFoundException e1) e1.printStackTrace();try con = (Connection) DriverManager.getConnection(“jdbc:sqlserver:/localhost:1433;DatabaseName=huiyuan“,“sa“
18、, “sa“);/ 建立数据库连接stmt = (Statement) con.createStatement(); catch (SQLException e2) e2.printStackTrace();5.2 系统功能模块介绍超市会员管理系统主要是对超市的会员信息进行详细的管理。- 7 - 7 - 7 - 7 -22- 7 -2222- 7 - 7 -22- 7 - 7 -22 - 7 -a) 查询会员信息:输入要查询的会员卡号,查询已有的会员信息到会员表,可查询到会员信息包括:会员卡号、会员姓名、会员性别、会员电话、会员卡购买日期、会员卡过期日期、会员卡余额等。b) 添加购物信息:添加
19、新的会员的购物信息到会员表,可添加包括:商品名称、商品价格、够买时间等基本信息。修改会员卡信息:用户可以在浏览客户信息时修改会员卡过期日期信息,并将修改后的客户信息更新到会员表中。c) 购买新卡信息:选择购物卡的价格输入持卡者信息,并将购买后的会员信息更新到会员表中。5.3 具体模块设计5.3.1 显示会员信息模块 5.3.2 显示购物信息模块图5-1 会员卡模块图 图5-2 购物信息模块图- 8 - 8 - 8 - 8 -22- 8 -2222- 8 - 8 -22- 8 - 8 -22 - 8 -5.3.3 显示购买新卡信息模块图5-1 购买新卡模块图6调试分析在 进 行 系 统 分 析
20、时 , 建 立 对 管 理 信 息 系 统 的 感 性 认 识 以 及 信 息 系 统 给 组织 和 个 人 带 来 的 影 响 。 运 用 了 有 管 管 理 信 息 系 统 的 知 识 , 可 以 方 便 企 业 各 种业 务 的 管 理 , 并 通 过 管 理 系 统 掌 握 企 业 各 方 面 发 展 情 况 。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。数据库试运行合格后,数据库即可投入正式运行。数据库投入运行标志着开发任务的基本完成和维护工作的开始。对数据库设计进行评价、调整、修改等维护工作,应用环境在不断变化,数据库运行过程中物理存储会不断变化。在数据库运行阶段,对
21、数据库经常性的维护工作主要是由 DBA 完成的,包括: 数据库的转储和恢复;数据库的安全性、完整性控制数据库性能的监督、分析和改进;数据库的重组织和重构造。7使用说明a) 超市会员管理系统主界面:- 9 - 9 - 9 - 9 -22- 9 -2222- 9 - 9 -22- 9 - 9 -22 - 9 -图7-1会员卡主界面b) 输入会员卡号显示会员信息:普通会员:手机号码、购买日期、过期日期、余额图7-2普通会员信息图高级会员信息:会员卡号、会员姓名、身份证号、余额、手机号码、购买日期、过期日期。- 10 - 10 - 10 - 10 -22- 10 -2222- 10 - 10 -22-
22、 10 - 10 -22 - 10 -图7-3高级会员信息图c) 显示购物信息:卡号、商品名称、商品价格、购买时间。图7-4购物信息图d) 添加模块:添加购物信息。图7-5添加购物信息图e) 购买新卡:选择购物卡价格。- 11 - 11 - 11 - 11 -22- 11 -2222- 11 - 11 -22- 11 - 11 -22 - 11 -图7-6购物卡价格选择图f) 输入持卡者信息:包括高级会员信息和普通会员信息。图7-7高级会员信息图图7-7普通会员信息图8实验总结- 12 - 12 - 12 - 12 -22- 12 -2222- 12 - 12 -22- 12 - 12 -22
23、 - 12 -通过这次实验,我对数据库这门课有了更深的理解和认识,为了做好本次实验,我综合运用了老师上课所讲部分内容,并查阅了很多相关资料,受益非浅,增长了很多方面的见识,使我深刻认识到以前所学的基础课程的重要性,也使我掌握了很多新的知识,特别是一些课本之外的知识,体会到了理论知识和实践相结合的重要性。本次实验对要处理的对象和系统的要求都有较明确的阐述,在对该系统进行测试时,实现了各个表上的各种查询、添加、删除、修改建立了相关视图等。功能相对比较完善,一些操作必须是有相关权限的人员可以执行,增加系统安全性,在本次实验中,很好地培养了我分析问题、解决问题的能力。同时,独立工作能力也得到了很好的提
24、高。在学习过程中,我也借鉴了上网不少资料,看了一些别人设计的客户信息管理信息系统的设计报告,学以致用,自我创新,独立完成了这份自己的报告,从中在学到用,从用又到学,不断修改,系统更新。在不断分析后明确并改正了错误和疏漏,使我的程序有了更高的质量。9参考文献1. 数据库:原理编程与性能(影印版)(第2版),高等教育出版社, Parick ONeil,Elizabeth ONeil编著,2005.7;2. 数据库系统概论(第4版),高等教育出版社,王珊,萨师煊编著,2006.05;附录系统实现的部分代码添加购物信息确定:private void addSure() / TODO Auto-gene
25、rated method stubtry stmt.executeUpdate(“insert into goodsinfo values (“- 13 - 13 - 13 - 13 -22- 13 -2222- 13 - 13 -22- 13 - 13 -22 - 13 -+ cardt.getText() + “,“ + goodNamet.getText() + “,“+ goodPricet.getText() + “,“ + goodDatet.getText() + “)“);JOptionPane.showMessageDialog(f, “购物信息已添加!“);float m
26、= Float.parseFloat(goodPricet.getText();rs = stmt.executeQuery(“select money from shoppingcard where card = “+ cardt.getText() + “);float n = 0;while (rs.next() n = Float.parseFloat(rs.getString(1) - m;if (n = 0) JOptionPane.showMessageDialog(f, “此卡余额不足,已删除!“);stmt.executeUpdate(“delete from shoppin
27、gcard where card = “+ cardt.getText() + “);stmt.executeUpdate(“delete from goodsinfo where card = “+ cardt.getText() + “);stmt.executeUpdate(“update shoppingcard set money = “ + n + “+ “ where card = “ + cardt.getText() + “);- 14 - 14 - 14 - 14 -22- 14 -2222- 14 - 14 -22- 14 - 14 -22 - 14 -goodNamet
28、.setText(“);goodPricet.setText(“);goodDatet.setText(“);back(); catch (SQLException e1) / TODO Auto-generated catch blockJOptionPane.showMessageDialog(f, “商品名称过长,请输入不超过10位的名称“);显示添加信息界面:private void add() / TODO Auto-generated method stubcard = cardt.getText().trim();try rs = stmt.executeQuery(“selec
29、t *from shoppingcard where card =“+ card + “);while (rs.next() if (card.equals(rs.getString(1) SimpleDateFormat fomat = new SimpleDateFormat(“yyyy-MM-dd“);Date date = new Date();snewDate = fomat.format(date);newCard.setVisible(false);- 15 - 15 - 15 - 15 -22- 15 -2222- 15 - 15 -22- 15 - 15 -22 - 15 -
30、cardSure.setVisible(false);cardt.setEditable(false);add.setVisible(false);north.validate();goodDatet.setText(snewDate);goodDatet.setEditable(false);center3.validate();f.add(center3, BorderLayout.CENTER);dateSure.setVisible(false);buy.setVisible(false);back.setVisible(true);mInfoSure.setVisible(false
31、);fInfoSure.setVisible(false);addSure.setVisible(true);newcard.setVisible(false);f.validate();break; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();显示购物信息:private void buy() - 16 - 16 - 16 - 16 -22- 16 -2222- 16 - 16 -22- 16 - 16 -22 - 16 -/ TODO Auto-generated method st
32、ubcenter1.setVisible(false);center4.add(all);center4.add(allBuy);center4.add(jScrollPane);f.add(center4, BorderLayout.CENTER);date.setVisible(false);dateSure.setVisible(false);buy.setVisible(false);back.setVisible(true);mInfoSure.setVisible(false);fInfoSure.setVisible(false);addSure.setVisible(false
33、);newcard.setVisible(false);f.validate();buyInfo.append(“ 卡号 t 商品名称t商品价格t购买时间n“);float f = 0;try rs = stmt.executeQuery(“select *from goodsinfo where card =“+ card + “);while (rs.next() f = f + Float.parseFloat(rs.getString(3);buyInfo.append(“ “ + rs.getString(1) + “t - 17 - 17 - 17 - 17 -22- 17 -22
34、22- 17 - 17 -22- 17 - 17 -22 - 17 -“+ rs.getString(2) + “t“ + rs.getString(3) + “t“+ rs.getString(4) + “ n“); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();allBuy.setText(f + “ + “ 元“);插入新购物卡:private void insert() / TODO Auto-generated method stubsname = namet.getText()
35、;/ 获得姓名sID = IDt.getText();/ 获得身份证号sph = pht.getText();/ 获得手机号while (true) try stmt.executeUpdate(“insert into shoppingcard values(“ + card+ “,“ + sname + “,“ + sID + “,“ + sph + “,“- 18 - 18 - 18 - 18 -22- 18 -2222- 18 - 18 -22- 18 - 18 -22 - 18 -+ snewDate + “,“ + soldDate + “,“ + money + “)“); catch (SQLException e) / TODO Auto-generated catch blockJOptionPane.showMessageDialog(f, “输入有误,执行失败!“);namet.setText(“);IDt.setText(“);pht.setText(“);break;JOptionPane.showMessageDialog(f, “已成功执行!“);namet.setText(“);IDt.setText(“);pht.setText(“);/ 清空文本框break;