大连海事大学课程设计实验报告姓名:周慧敏班级:2011级电子商务1班学号:2220113494指导老师:张偲2专业班级:电子商务______学生姓名:周慧敏__指导教师(签名):一、课程设计题目会员信息管理系统二、本次课程设计应达到的目的1.通过该题目的设计,使学生掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;三、本次课程设计任务的主要内容和要求(包括原始数据、技术参数、设计要求等)使用窗体等控件构建会员信息管理系统界面,实现简单的会员信息管理功能,每次录入完会员信息之后就能实现对其删除,查询,修改等操作。要求:1.1人完成2.功能实现,界面友好四、进度安排1.第1天:选题、查阅资料;2.第2天:确定设计方案;3.3-8天:方案的实现、调试与验证;4.9-10天:撰写课程设计报告初稿并修改;五、主要参考文献:1.《Javas实用教程(第2版)》,郑阿奇,电子工业出版社2.MSDN3一、应用技术及开发环境1.JAVA语言及JDKJDK(JavaDevelopmentKit)是SunMicrosystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的JavaSDK。JDK是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。JDK是学好Java的第一步。而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。2.eclipseEclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。二、结构设计与结构功能图1.结构设计根据对系统进行需求分析,本系统将分为4个模块:●会员基本信息管理管理会员基本信息,包括个人信息的添加、修改、删除以及查询。●会员消费信息管理管理会员的消费信息,包括消费记录的添加、修改、删除以及查询。●会员积分信息管理管理会员积分信息,包括会员积分的添加、修改、删除以及查询。。2.功能结构图会员信息管理系统功能结构如图2.1所示。图2.1会员信息管理系统功能结构图会员信息管理系统会员基本信息管理模块会员消费信息管理模块会员积分信息管理模块查询修改删除添加查询修改删除添加显示查询修改删除添加4三、系统实现该系统由4个模块构成,包括会员信息管理系统主界面模块、会员基本信息管理模块、会员消费信息管理模块和会员积分信息管理模块。下面分别加以叙述:①会员信息管理系统主界面模块图3.1会员信息管理系统主界面②会员基本信息管理模块图3.2会员基本信息管理模块的运行界面5③会员消费信息管理模块图3.3会员消费信息管理模块运行界面④会员积分信息管理模块图3.4会员积分信息管理模块的运行界面6四、系统调试与测试4.1测试的定义及目的软件测试就是在软件投入运行之前,对软件需求分析、设计规格说明和编码的最终复审,是保证软件质量的关键步骤。如果要给软件测试下定义,可以这样讲,软件测试是为了发现错误而执行程序的过程。测试的目的在于将软件设计时设计者与程序开发者之间理解不一致的地方、功能与需求不一致的地方、不符合逻辑思维的情况都反映给质量控制部门,由质量控制部门调配需求部门统一做出一个明确解答,再由开发人员进行修改和补充。4.2系统功能测试功能测试主要是测试程序模块是否实现了设计中所要求的功能。功能测试中需要注意的有:(1)查询功能中,是按会员号进行查询的。每次查询前需要先输入会员号,如果没有,程序运行时会弹出提示信息窗口,告诉用户输入会员信息。(2)录入功能中,需要注意的是前台设置的数值长度是否大于后台数值长度,以及前台和后台的数据结构是否相符,很多时候录入功能无法实现是由于这些原因。还有就是必须录入的字段的设置时候有误。(3)测试删除功能中需要注意的是单击删除按钮后,一般会出现提示信息,询问是否确定删除。通常情况下,我们单击确认按钮查看信息是否被删除掉了,而忽略了单击取消按钮后程序的反应:这时有可能的是没有删除,还有一种可能是即便单击了取消按钮,也一样删除了数据。(4)关于修改功能的测试主要是看修改确认后是否数据真正已被修改了。这是最基本的功能,需要注意的是看是否能把不应该修改的数据也修改成功了。4.3系统调试常见错误1.NullPointerException异常一般是对一个为NULL值的变量进行操作引起的。为避免这种异常,最好在对变量操作之前检查,看它是否为NULL值。2.NumberFormatException异常这是由于数字的格式错误而出现的例外。为了避免出现此类错误,一般必须保证数据格式输入正确。7结束语经过这次课题的设计并实现,尽管会遇到很多难题,但是让我更加受益的是在这次课题中得到的经验、心得和锻炼。我发现开发项目的过程其实就是个不断的解决问题的过程,从中也感觉到项目开发的快乐,一个人永远有学不完的知识,就算是项目开发中的知识点都学了,但在实际的开发过程中仍然会遇到不少问题,遇到问题时要做到两点:一个是“查”,一个是“问”。不懂的地方就得要自己找答案,可以从书本、网络中查找解决的答案;再一个就是问周边的同学。比如,在本科课题的编写代码部分,本人就参考了《java核心技术》,从中得到了图形编程的很多有用的方法。这次课程的设计给我以前所学的知识做了一个总结,为我深入学习编程做了铺垫。在本课题中存在的不足之处是在所难免的,本人将在日后加于改进。致谢在本课题的设计和实现的过程中遇到的不少的难题,我要感谢那些给我带来帮助的书籍和internet,还有周边的同学们。如果没有他们的帮助,本课题的设计和实现就不会如期顺利完成。还要感谢我们的指导老师给我们这么多学生的文档认真批改,让我们知道在课程设计与实现的过程中存在的问题。8附录:程序源代码(1)Menu.java(主窗口)packageCRM;importjava.awt.*;importjava.awt.event.*;importjava.io.*;importjava.util.*;importjavax.swing.*;importjavax.swing.border.*;importjava.util.*;classMenuextendsJFrameimplementsActionListener{JButtonCustomerManager=newJButton(会员信息);JButtonConsumptionManager=newJButton(消费信息);JButtonScore=newJButton(会员积分信息);JMenuBarmb=newJMenuBar();//菜单栏JPaneljp=newJPanel();//用来填放子模块Containercp=getContentPane();Stringusername;Menu(){}Menu(Stringusername){this.username=username;mb.add(CustomerManager);mb.add(ConsumptionManager);mb.add(Score);cp.add(mb,North);//设置边框jp.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.blue,2),null,TitledBorder.CENTER,TitledBorder.TOP));jp.setLayout(newBorderLayout());JLabellabel1=newJLabel(newImageIcon(4.jpg));jp.add(label1);JLabellabel2=newJLabel(newImageIcon(2.jpg));jp.add(label2,South);9JScrollPanescrollpane=newJScrollPane(jp);cp.add(scrollpane);Toolkitkit=Toolkit.getDefaultToolkit();Dimensionscreen=kit.getScreenSize();intx=screen.width;/*取得显示器窗口的宽度*/inty=screen.height;/*取得显示器窗口的高度*/setSize(600,600);intxcenter=(x-600)/2;intycenter=(y-600)/2;setLocation(xcenter,ycenter);/*显示在窗口中央*/setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//注册临听器CustomerManager.addActionListener(this);ConsumptionManager.addActionListener(this);Score.addActionListener(this);}publicvoidactionPerformed(ActionEvente){Stringcmd=e.getActionCommand();if(cmd.equals(会员信息)){newCustomerManager();}if(cmd.equals(消费信息)){newConsumptionManager();}if(cmd.equals(会员积分信息)){newScore();}}publicstaticvoidmain(String[]args){newMenu();}}(2)Score.java(会员积分管理界面)packageCRM;10importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.io.*;importjava.util.*;classCustomer1implementsjava.io.Serializable{/****/privatestaticfinallongserialVersionUID=1L;Stringnumber,name,lastmonth,thismonth,sex,total;publicCustomer1(){};publicvoidsetNumber(Stringnumber){this.number=number;}publicStringgetNumber(){returnnumber;}publicvoidsetName(Stringname){this.name=name;}publicStringgetName(){returnname;}publicvoidsetlastmonth(Stringlastmonth){this.lastmonth=lastmonth;}publicStringgetlastmonth(){returnlastmonth;}publicvoidsetthismonth(Stringthismonth){this.thismonth=thismonth;11}publicStringgetthismonth(){returnthismonth;}publicvoidsetSex(Stringsex){this.sex=sex;}publicStringgetSex(){returnsex;}publicvoidsettotal(Stringtotal){this.total=total;}publicStringgettotal(){returntotal;}}publicclassScoreextendsJFrame{/****/privatestaticfinallon