课程设计-报刊订阅管理系统
报刊订阅系统java课程设计

报刊订阅系统java课程设计一、课程目标知识目标:1. 理解Java面向对象编程的基本概念,掌握类与对象的设计与实现;2. 学会使用Java集合框架管理数据,实现报刊订阅系统中数据的有效组织;3. 掌握Java异常处理机制,提高程序的健壮性;4. 理解Java多态性的概念,并能够运用多态性优化程序结构。
技能目标:1. 能够运用面向对象思想设计并实现一个简单的报刊订阅系统;2. 能够运用Java集合框架存储和管理报刊订阅信息,实现基本的数据操作;3. 能够编写合适的异常处理程序,提高报刊订阅系统的稳定性和可靠性;4. 能够运用多态性设计可扩展的程序结构,为后续功能拓展奠定基础。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发他们主动探索新技术的欲望;2. 培养学生良好的编程习惯,强调编码规范和团队协作的重要性;3. 通过报刊订阅系统课程设计,使学生认识到计算机技术在实际应用中的价值,增强社会责任感。
本课程针对高年级学生,在掌握了Java基本语法和面向对象编程知识的基础上,通过设计一个具有实际意义的报刊订阅系统,提高学生运用Java编程解决实际问题的能力。
课程注重培养学生的编程实践能力、团队协作能力和创新精神,旨在使学生在完成课程学习后,能够独立设计和实现具有一定复杂度的Java应用程序。
二、教学内容1. 面向对象设计基础- 类的定义与实现- 对象的创建与使用- 封装、继承与多态2. Java集合框架- Collection接口及其实现类- Map接口及其实现类- 集合框架在报刊订阅系统中的应用3. Java异常处理- 异常分类与异常体系- try-catch-finally结构- 异常抛出与自定义异常4. 多态性在实际应用中的运用- 抽象类与接口- 方法重载与方法重写- 多态在实际项目中的优势与实现5. 报刊订阅系统功能模块设计- 用户模块设计- 报刊模块设计- 订单模块设计- 数据存储与管理教学内容按照课本知识体系进行组织,以报刊订阅系统为实际案例,使学生将所学理论知识与实际应用紧密结合。
我的数据库课程设计报刊订阅管理系统

报刊订阅管理系统报刊订阅管理系统是一种用于管理报刊订阅信息的软件系统,它可以帮助用户更加有效地管理报刊订阅信息。
本文将介绍报刊订阅管理系统的功能,系统的设计,以及系统的实现。
一、系统功能1、订阅管理:用户可以使用该系统进行报刊订阅管理,可以添加、删除、修改报刊订阅信息,并可以查看订阅信息列表,以及查看某一期报刊的订阅情况。
2、订阅提醒:系统可以根据用户订阅的报刊信息,提前提醒用户新一期报刊的发行,以及提醒用户订阅的报刊即将到期。
3、报刊推荐:系统可以根据用户的订阅信息,推荐用户可能感兴趣的报刊,以及报刊的最新信息。
二、系统设计1、系统结构:系统的主要结构包括前端界面、后台管理系统、数据库系统和报刊推荐系统。
2、数据库设计:数据库系统包含用户信息表、报刊信息表、订阅信息表和报刊推荐表。
用户信息表记录用户的基本信息,报刊信息表记录报刊的基本信息,订阅信息表记录用户订阅的报刊信息,报刊推荐表记录系统推荐的报刊信息。
3、系统架构:系统采用B/S架构,前端采用HTML/CSS/JavaScript等技术,后台采用PHP/MySQL等技术,数据库采用MySQL数据库,报刊推荐系统采用基于用户的推荐算法。
三、系统实现1、前端界面:前端界面设计采用HTML/CSS/JavaScript等技术,实现用户的注册登录,报刊订阅管理,报刊推荐等功能。
2、后台管理系统:后台管理系统采用PHP/MySQL等技术,实现用户信息管理,报刊信息管理,订阅信息管理,报刊推荐管理等功能。
3、数据库系统:数据库系统采用MySQL数据库,实现用户信息、报刊信息、订阅信息和报刊推荐信息的存储和管理。
4、报刊推荐系统:报刊推荐系统采用基于用户的推荐算法,根据用户的历史订阅信息,推荐用户可能感兴趣的报刊,以及报刊的最新信息。
四、总结报刊订阅管理系统是一种用于管理报刊订阅信息的软件系统,它可以帮助用户更加有效地管理报刊订阅信息。
本文介绍了报刊订阅管理系统的功能,系统的设计,以及系统的实现。
课程设计-报刊订阅管理系统

软件工程课程设计报告目录1.开发环境和相关技术介绍 (3)1.1开发环境 (3)1.2相关技术介绍 (3)2.需求分析 (3)2.1系统需求和功能 (3)2.2数据字典 (4)2.2.1数据结构 (4)2.2.2数据项 (4)2.2.3数据流 (5)2.3安全性要求 (5)2.4一致性要求 (5)2.5完整性要求 (5)3面向对象分析 (5)订单表(SUBSCRIBE):用于存放用户下达的订阅报刊的基本信息,包括数据项:订单编号用户编号(用户表的主码)、报刊代号(报刊信息表的主码)、订阅份数、订阅月数等。
(6)3.2系统结构图 (8)4.数据库实施 (8)4.1数据库创建 (8)4.1.1各数据表说明 (8)4.1.2数据库创建 (9)4.2数据库备份和恢复方案 (10)4.2.1应用辅助工具进行备份和恢复 (10)4.2.2分离数据库法 (10)4.3用户界面设计和应用程序编码 (10)4.3.1用户界面设计 (10)4.3.2类文件功能描述 (11)4.3.3主要代码分析 (11)5.系统测试方案和测试报告 (16)5.1测试方案 (16)5.2测试过程 (16)5.2.1登陆测试 (16)5.2.2目录管理功能测试 (17)5.2.3订户管理功能测试 (20)5.2.4订单管理功能测试 (21)5.2.5统计查询测试 (23)6.完成情况和总结 (24)6.1完成情况 (24)6.2总结 (24)7.参考文献1.开发环境和相关技术介绍1.1开发环境系统结构:C/S结构数据库系统:Microsoft SQL Server 2000 sp3宿主语言:JAVA数据库连接方式:JDBC连接方式开发工具:Eclipse 3.21.2相关技术介绍Microsoft SQL Server 2000数据库管理系统是微软公司研制开发的关系型数据库管理系统。
该系统支持并扩展了SQL语言标准,可以运用标准SQL语句对数据进行操作,也可以使用功能强大的GUI工具进行灵活的数据管理。
数据库课程设计--报刊订阅管理系统03163

网络教育学院《数据库原理》课程设计题目:报刊订阅管理系统数据库设计学习中心:榆林市奥鹏学习中心层次:专升本专业:网络工程年级: 2014 年秋季学号: 201309745363学生:吴彩银辅导教师:龙珠完成日期: 2015年3 月 2 日题目三:报刊订阅管理系统数据库设计1. 系统需求分析1.1信息需求分析1.3.1 资料收集:业务流程中用到的相关单据主要是报刊信息还有订单信息1.2业务流程分析:本系统主要面向的用户有系统管理员、读者。
下面分角色对该系统的不同操作范围做说明。
下图为该系统的业务流程图1.3功能需求分析本系统的主要结构功能图如下:(1)登陆功能:登陆系统为身份验证登录。
分为管理员登录和一般用户登录。
分别通过不同的用户名和密码进入报刊订阅管理界面。
(2)录入新信息功能:对于管理员,包括新用户信息和新报刊信息的录入功能,信息一旦提交就存入到后台数据库中;普通用户自行注册进行录入个人信息。
(3)订阅功能:用户可以订阅报刊,系统自动计算所需金额,并显示在界面上;管理员不可订阅报刊,必须以用户身份订阅报刊。
(4)查询功能:用户可以查询并显示自己所订阅的信息;管理员可以按人员、报刊、部门分类查询。
查询出的信息显示在界面上。
(5)统计功能:管理员可以按用户、部门、报刊统计报刊的销售情况,并对一些重要的订阅信息进行统计;普通用户可以统计出自己的订阅情况。
(6)系统维护功能:管理员可以对用户、报刊、部门、订阅等信息进行添加、删除、更改等维护工作;用户可以更改自己的注册信息,但用户名不能更改。
1.4 数据流图图1.6.1 报刊订阅管理系统顶层图图1.6.2 系统1层图图1.6.3 系统2层图图1.6.4 系统3层图图1.6.5 系统4层图1.5 数据字典(1)数据结构管理员用户=管理员帐户+管理员密码订户=订户编号+订户名+联系电话+联系地址目录=目录编号+目录名+单价+批注信息订单=订单号+订户编号+下订日期订单细节=订单号+目录编号+订阅数量+订阅期数+单价+总价(注:为保证订单确定后价格不随目录单价变动,订单细节中应该有独立的单价来记录下订时目录的单价)(2)数据项理员统Cid,Ono)5 查询结果应用系统系统管理员被查询对象具体信息6 管理请求系统管理员应用系统识别符(Cid,Ono等)+类型7 管理结果信息应用系统系统管理员被管理对象处理结果8 非法请求应用系统系统管理员非法请求提示信息表2.2 数据流表2 系统设计2.1系统功能结构设计系统功能结构图如下图所示:图2.1.1 系统功能结构图2.2数据库概念设计基本项构思ERD的四条基本原则:①原则 1 (确定实体):能独立存在的事物,例如人、物、事、地、团体、机构、活动、事项等等,在其有多个由基本项描述的特性需要关注时,就应把它作为实体。
C课程设计杂志订阅管理系统

C 课程设计杂志订阅管理系统一、教学目标本课程的教学目标是使学生掌握C语言编程的基本技能,学会使用C语言编写简单的程序,培养学生的逻辑思维能力和问题解决能力。
具体包括以下三个方面:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础知识。
2.技能目标:学生能够运用C语言编写简单的程序,解决实际问题,提高编程实践能力。
3.情感态度价值观目标:通过本课程的学习,使学生培养对编程的兴趣和热情,增强自主学习的能力,培养团队合作的精神。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础知识,以及简单的编程实践。
具体安排如下:1.第一章:C语言概述,介绍C语言的发展历程、特点和应用领域。
2.第二章:数据类型和运算符,讲解C语言的基本数据类型、运算符及其使用方法。
3.第三章:控制结构,讲解条件语句、循环语句等控制结构的用法。
4.第四章:函数,讲解函数的定义、声明、调用和返回值。
5.第五章:编程实践,通过实际案例使学生掌握编程技巧,提高编程能力。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学。
具体包括以下几种方法:1.讲授法:教师讲解C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础知识。
2.案例分析法:通过分析实际案例,使学生掌握编程技巧,提高编程能力。
3.实验法:安排实验课,让学生动手实践,巩固所学知识。
4.讨论法:学生进行小组讨论,培养团队合作精神和问题解决能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将采用以下教学资源:1.教材:《C程序设计语言》(谭浩强著)2.参考书:《C Primer Plus》(Stephen Prata著)3.多媒体资料:教学PPT、视频教程等。
4.实验设备:计算机、网络等。
通过以上教学资源的使用,为学生提供丰富的学习体验,提高教学效果。
五、教学评估本课程的教学评估将采用多元化的评估方式,包括平时表现、作业、考试等,以全面、客观、公正地评估学生的学习成果。
jsp报刊订阅管理系统课程设计

jsp报刊订阅管理系统课程设计一、课程目标知识目标:1. 让学生掌握JSP技术的基本原理和应用方法,理解其与数据库的连接方式,并能运用此技术实现报刊订阅管理系统的功能模块。
2. 使学生深入理解MVC设计模式,并能够在实际项目中灵活运用。
3. 帮助学生掌握HTML、CSS和JavaScript等前端技术,以实现用户界面的友好交互。
技能目标:1. 培养学生运用JSP技术进行网络应用程序开发的能力,包括数据库连接、数据处理和页面跳转等。
2. 培养学生分析问题、设计解决方案以及编程实现的能力,通过完成报刊订阅管理系统项目,提升学生的项目实践能力。
3. 提高学生运用前端技术进行界面设计的能力,增强用户体验。
情感态度价值观目标:1. 激发学生对计算机编程和网络技术的兴趣,培养其主动学习和探究的精神。
2. 培养学生的团队协作意识,学会在项目中分工合作、共同解决问题。
3. 引导学生关注信息技术在生活中的应用,认识到编程对于社会发展的重要意义。
本课程针对高中年级学生,结合课程性质、学生特点和教学要求,将目标分解为具体的学习成果。
通过本课程的学习,学生将能够独立完成一个简单的报刊订阅管理系统项目,掌握JSP技术及相关前端技术,提升编程实践能力和团队协作能力,同时培养对计算机科学的兴趣和热爱。
内容”见下:教学内容:1. JSP基础:讲解JSP的基本概念、原理以及与Servlet的关系,重点介绍JSP的内置对象、指令和脚本元素。
2. 数据库连接:介绍JDBC的使用方法,通过具体的实例使学生掌握如何在JSP页面中连接数据库,执行SQL语句,并进行数据处理。
3. MVC设计模式:深入剖析MVC模式,通过案例教学使学生理解并能够在实际项目中分离视图、控制器和模型,提高代码的可维护性和复用性。
4. 报刊订阅管理系统功能模块设计:包括用户注册、登录、报刊浏览、订阅管理等功能,指导学生如何分析需求、设计数据库表结构、编写业务逻辑代码。
杂志订阅管理系统java课程设计

杂志订阅管理系统java课程设计一、课程目标知识目标:1. 理解Java语言面向对象编程的基本原理,掌握类与对象的关系及运用;2. 学会使用Java集合框架,如List、Map等,存储和管理杂志订阅数据;3. 熟悉Java异常处理机制,提高程序的稳定性和可靠性;4. 了解Java数据库连接(JDBC)技术,实现杂志订阅数据的持久化存储。
技能目标:1. 能够运用面向对象思想,设计合理的类和对象,实现杂志订阅管理系统的功能模块;2. 掌握使用集合框架进行数据管理,实现对杂志订阅信息的增、删、改、查操作;3. 学会编写异常处理代码,提高程序的抗错能力;4. 熟练使用JDBC操作数据库,实现杂志订阅数据的存储与读取。
情感态度价值观目标:1. 培养学生独立思考、解决问题的能力,增强编程自信心;2. 激发学生团队协作精神,学会共同分析问题、分享经验;3. 培养学生关注实际应用,理解编程在现实生活中的价值;4. 增强学生对信息技术的兴趣,引导他们树立正确的信息伦理观念。
课程性质:本课程为Java程序设计实践课,结合实际应用场景,培养学生的编程能力和实际操作技能。
学生特点:学生已具备一定的Java基础,具有较强的学习兴趣和动手能力。
教学要求:教师需注重理论与实践相结合,引导学生主动参与、积极实践,确保学生能够掌握课程目标所设定的知识技能。
同时,关注学生的情感态度价值观培养,提高他们的综合素质。
在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。
二、教学内容1. 面向对象编程基础:- 类与对象的关系- 封装、继承、多态性原理- 抽象类与接口2. Java集合框架:- List、Set、Map等集合类的使用- 集合框架的遍历方法3. Java异常处理:- 异常处理机制- 常见异常类型- 自定义异常4. Java数据库连接(JDBC):- 数据库基础- JDBC API的使用- SQL语句的执行与结果处理5. 杂志订阅管理系统功能模块设计:- 系统需求分析- 功能模块划分- 数据模型设计6. 系统实现:- 用户界面设计- 业务逻辑实现- 数据持久化实现教学内容安排与进度:第1周:面向对象编程基础,学习类与对象的关系,掌握封装、继承、多态性原理。
杂志订阅管理系统java课程设计

杂志订阅管理系统java课程设计一、教学目标本节课的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握杂志订阅管理系统的基本概念和架构,理解Java语言在该系统中的应用。
技能目标要求学生能够运用Java语言设计和实现简单的杂志订阅管理系统,提高学生的编程能力和问题解决能力。
情感态度价值观目标要求学生培养对计算机科学和软件工程的兴趣,增强创新意识和团队协作精神。
二、教学内容本节课的教学内容主要包括杂志订阅管理系统的需求分析、系统设计和实现。
首先,学生将学习杂志订阅管理系统的基本概念和架构,了解系统的主要组成部分及其功能。
其次,学生将学习Java语言在系统中的应用,掌握Java编程的基本语法和常用类库。
然后,学生将进行小组讨论,共同设计和实现一个简单的杂志订阅管理系统,提高学生的编程能力和问题解决能力。
三、教学方法为了激发学生的学习兴趣和主动性,本节课将采用多种教学方法。
首先,教师将运用讲授法,为学生讲解杂志订阅管理系统的基本概念和架构,以及Java语言在系统中的应用。
其次,教师将学生进行小组讨论,运用案例分析法和实验法,引导学生共同设计和实现一个简单的杂志订阅管理系统。
最后,教师将采用问题驱动法,引导学生主动思考和解决问题,提高学生的创新意识和团队协作精神。
四、教学资源为了支持教学内容和教学方法的实施,本节课将选择和准备适当的教学资源。
教材方面,我们将使用《Java编程思想》作为主教材,辅助以《杂志订阅管理系统设计与实现》等参考书。
多媒体资料方面,我们将准备相关的PPT课件、教学视频和实验指导书。
实验设备方面,我们将安排学生在计算机实验室进行编程实践,确保每位学生都能够顺利开展实验。
通过丰富多样的教学资源,我们希望能够丰富学生的学习体验,提高教学效果。
五、教学评估本节课的教学评估将采用多种方式,以全面、客观地评估学生的学习成果。
平时表现方面,将通过观察学生在课堂上的参与程度、提问回答和小组讨论的表现来评估。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程课程设计报告目录1.开发环境和相关技术介绍1.1开发环境 (3)1.2相关技术介绍 (3)2.需求分析2.1系统需求和功能 (3)2.2数据字典 (4)2.2.1数据结构 (4)2.2.2数据项 (4)2.2.3数据流 (5)2.3安全性要求 (5)2.4一致性要求 (5)2.5完整性要求 (5)3面向对象分析3.1面向对象分析 (5)3.2系统的结构图 (8)4.数据库实施4.1数据库创建 (8)4.1.1各数据表说明 (8)4.1.2数据库创建 (9)4.2数据库备份和恢复方案 (10)4.2.1应用辅助工具进行备份和恢复 (10)4.2.2分离数据库法 (10)4.3用户界面设计和应用程序编码 (10)4.3.1用户界面设计 (10)4.3.2类文件功能描述 (11)4.3.3主要代码分析 (11)5.系统测试方案和测试报告5.1测试方案 (16)5.2测试过程 (16)5.2.1登陆测试 (16)5.2.2目录管理功能测试 (17)5.2.3订户管理功能测试 (20)5.2.4订单管理功能测试 (21)5.2.5统计查询测试 (23)6.完成情况和总结6.1完成情况 (24)6.2总结 (24)7.参考文献1.开发环境和相关技术介绍1.1开发环境系统结构:C/S结构数据库系统:Microsoft SQL Server 2000 sp3宿主语言:JAVA数据库连接方式:JDBC连接方式开发工具:Eclipse 3.21.2相关技术介绍Microsoft SQL Server 2000数据库管理系统是微软公司研制开发的关系型数据库管理系统。
该系统支持并扩展了SQL语言标准,可以运用标准SQL语句对数据进行操作,也可以使用功能强大的GUI工具进行灵活的数据管理。
同时,系统还提供功能完善的API,可以在应用程序中调用这些API来实现与数据库系统的连接以及相关数据的操作。
sp3是该系统的一个版本号,只有sp3以上的SQL 2000系统才能够支持纯JDBC连接方式。
Eclipse:功能强大的应用程序开发工具,主要支持基于Java语言的各种开发项目。
灵活的Plun-in功能,可以根据具体需要安装各种插件。
JDBC连接方式:Java与数据库系统的一种连接方式,Java程序使用JDBC API 与数据库进行通信,并用它操作数据库中的数据。
JDBC API使Java程序与具体数据库系统独立开来,保证了Java程序高度的可移植性。
2.需求分析2.1系统需求和功能设计一个报刊订阅应用系统,使系统满足以下功能和需求:1)a一个订户可订多种报刊;一种报刊可被多个用户订阅;订单只能订阅现有报刊目录内容;b投递时,必须根据订单的情况进行投递,不得超出订单的订阅品种、数量;2)、系统功能包括:a订户管理:订户添加、修改、删除;b 目录管理:目录添加、修改、删除;c订单管理:完成订户订阅数据的管理(包括添加、修改、删除);d 订单查询:按订户或者订单号查询订单详细情况;e统计查询:按报刊目录统计各类报刊的订阅数量及金额;f表单生成:根据统计查询结果导出统计信息到文件(.xl2.2数据字典2.2.1数据结构管理员用户=管理员帐户+管理员密码订户=订户编号+订户名+联系电话+联系地址目录=目录编号+目录名+单价+批注信息订单=订单号+订户编号+下订日期订单细节=订单号+目录编号+订阅数量+订阅期数+单价+总价(注:为保证订单确定后价格不随目录单价变动,订单细节中应该有独立的单价来记录下订时目录的单价)2.2.2数据项2.2.3数据流2.3安全性要求访问数据库时需要输入登陆帐号和密码。
在数据库内设有管理员表,登陆系统时会要求输入管理员帐号和密码。
登陆模块根据输入帐号和密码查管理员表,查到匹配记录则允许其登陆系统。
管理员帐号和密码可以在系统中添加和修改。
2.4一致性要求在管理系统相关的表之间,有较强的关联性。
为了实现一致性的需求,各个表之间均建立起了相应的一致性约束。
2.5完整性要求根据报刊订阅管理系统的要求,为保持数据的完整性,采用了数据库的事务机制,防止出现操作故障引起的数据不一致。
3面向对象分析3.1 面向对象分析设计报刊订阅系统,主要的目的是使得用户在订阅是能跟回家的方便快捷同时也使得报刊提供商能更加有效的管理企业的销售状况。
同时面向对象分析使得人员关注理解系统需要建立的内容,从而产生一个准确的完整的一致的和可验证的系统模型。
管理员表(Administrator):用于存放管理员的数据记录,包括数据项:管理员名、密码。
●部门表(Department):用来存放部门的相关记录,包括数据项:部门号,部门名。
●用户表(Consumer):用于存放注册用户的记录,包括数据项:用户账号、密码、真实姓名、身份证号、联系电话,联系地址,部门号(和部门表有关)等。
●报刊信息表(magazine):用于存放报刊记录,包括数据项:报刊代号、报刊名称、出版报社、出版周期、季度报价、内容介绍、分类编号(和报刊类别表有关)等。
订单表(subscribe):用于存放用户下达的订阅报刊的基本信息,包括数据项:订单编号用户编号(用户表的主码)、报刊代号(报刊信息表的主码)、订阅份数、订阅月数等。
用例图:由上面的分析需能够确定系统用例图:类图:在根据已定义的对象类及其联系,以及对象类的多重性、角色、导航等性质,可以画出对象类图 ,使用对象图的目的是分析系统的瞬间状态,以便进一步了解系统的结构和行为。
分析对象模型:也同时可以确定所有实体之间的E-R 图:处理管理员订单用户订制拥有订阅包含部门报刊报刊类别用户帐号真实姓名密码身份证号联系电话联系地址部门号部门号部门名称管理员名密码分类编号分类名称报刊代号报刊名称出版报社出版周期内容介绍季度订价分类编号订单编号用户账号报刊代号订阅份数订阅月数1M1M 1MMNM1图3.1 报刊订阅管理系统E-R 图3.2系统结构图图4.1 系统结构图4.数据库实施4.1数据库创建4.1.1各数据表说明表4.1 数据表描述表4.1.2数据库创建在Microsoft SQL Server 2000的企业管理器中完成数据库和数据表的创建CREATE TABLE [dbo].[Customer] ([Cid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,[Cname] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,[Phone] [varchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,[Address] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON [PRIMARY]GOCREATE TABLE [dbo].[Login] ([UName] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL , [UPassword] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON [PRIMARY]GOCREATE TABLE [dbo].[Diretory] ([Did] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,[Dname] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,[UnitPrice] [float] NOT NULL ,[Ifo] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL) ON [PRIMARY]GOCREATE TABLE [dbo].[Order] ([Ono] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,[Cid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,[Odate] [datetime] NULL) ON [PRIMARY]GOCREATE TABLE [dbo].[OrderDetail] ([Ono] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,[Did] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,[Quantity] [int] NOT NULL ,[QiShu] [int] NOT NULL ,[UnitPrice] [float] NOT NULL ,[Total] [float] NULL) ON [PRIMARY]GO4.2数据库备份和恢复方案4.2.1应用辅助工具进行备份和恢复应用数据库辅助工具(如sqlbackuptools…)进行备份,选择所需要备份的数据库和目标地址即可进行数据备份,恢复数据库只需要指定备份文件和需要恢复的数据库即可进行数据恢复。
4.2.2分离数据库法在企业管理器中右击需要备份的数据库,选择“所有任务”,“分离数据库”,执行分析操作,拷贝数据库MDF文件和LDF文件。
恢复方案:在企业管理器的控制台树中选择“数据库”节点,右击,“所有任务”,“附加数据库”,找到待恢复数据库的MDF文件,确定。
4.3用户界面设计和应用程序编码4.3.1用户界面设计本系统的用户界面用Java Swing编写,主要由1个主界面Newspaper.java 和10个辅助对话框组成。
主界面集合系统主要基本功能按键,辅助对话框负责采集用户输入信息和做基本的信息处理。
用户界面4.3.2类文件功能描述4.3.3主要代码分析//----------------------------------------------------------------------------- //所属类:Utilities//功能:取得应用程序与数据库系统的连接public static void getConnection() throws Exception {Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();//加载驱动程序String url ="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Newspaper";String user = "sa";String password = "";conn = DriverManager.getConnection(url, user, password);//取得连接stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);//创建语句conn2 = DriverManager.getConnection(url, user, password);stmt2 = conn2.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);}//----------------------------------------------------------------------------- //所属类:Utilities//功能:完成查询结果的表格显示public static void displayResultSet(JTable table, ResultSet rs)throws SQLException {rs.beforeFirst();// 指针移到结果集第一条记录前面boolean moreRecords = rs.next();if (!moreRecords) {// 如果没有记录,则提示一条消息JOptionPane.showMessageDialog(table, "无相关记录", "Check your input!", JOptionPane.ERROR_MESSAGE);return;}Vector columnHeads = new Vector();// 用于存储表格字段Vector rows = new Vector();// 用于存储记录行try {// 获取字段的名称ResultSetMetaData rsmd = rs.getMetaData();for (int i = 1; i <= rsmd.getColumnCount(); ++i)columnHeads.addElement(rsmd.getColumnName(i));do {// 获取记录集rows.addElement(getNextRow(rs, rsmd));} while (rs.next());// 建立相应的TableModel,并将TableModel应用到table中显示出来DefaultTableModel model = new DefaultTableModel(rows, columnHeads);table.setModel(model);return;} catch (SQLException sqlex) {sqlex.printStackTrace();}}//-----------------------------------------------------------------------------//所属类:Utilities//功能:被displayResultSet(JTable table, ResultSet rs)调用, 返回一个记录行private static Vector getNextRow(ResultSet rs, ResultSetMetaData rsmd)throws SQLException {Vector<String> currentRow = new Vector<String>();for (int i = 1; i <= rsmd.getColumnCount(); ++i)currentRow.addElement(rs.getString(i));return currentRow; // 返回一条记录}//----------------------------------------------------------------------------- //所属类:Utilities//功能:创建空白EXCEL文件,并将统计查询结果导出到该EXCEL文件//说明:使用到org.apache的POI包,表示感谢public static boolean outPut(ResultSet rs, File file) {if (rs == null)return false;try {HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("first sheet");sheet.setDefaultColumnWidth((short) 20);ResultSetMetaData metadata = rs.getMetaData();int columnCount = metadata.getColumnCount();// 获取属性列数HSSFRow row = sheet.createRow((short) 0);for (int i = 1; i <= columnCount; i++) {// 填写表格列名row.createCell((short) (i - 1)).setCellValue(metadata.getColumnName(i));}// 按行填写记录rs.beforeFirst();short counter = 1;while (rs.next()) {row = sheet.createRow(counter++);for (int i = 1; i <= columnCount; i++) {row.createCell((short) (i - 1)).setCellValue(String.valueOf(rs.getObject(i)));}}FileOutputStream fileOut = new FileOutputStream(file);wb.write(fileOut);// 结果输出到文件fileOut.close();// 关闭输出流} catch (Exception exc) {exc.printStackTrace();}return true;}}//----------------------------------------------------------------------------- //所属类:Newspaper//功能:统计查询final JMenuItem menuItem_9 = new JMenuItem();menuItem_9.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {String sql = "SELECT Diretory.Did AS 刊物编号,Dname AS 刊物名称,"+ "SUM(Quantity*QiShu) AS 总订阅数,SUM(Total) AS 总金额"+ " FROM Diretory LEFT JOIN OrderDetail ON(OrderDetail.Did=Diretory.Did) "+ " GROUP BY Diretory.Did,Diretory.Dname "+ " ORDER BY SUM(Total) DESC";try {Utilities.rs= Utilities.stmt.executeQuery(sql);// 执行统计查询Utilities.displayResultSet(table, Utilities.rs);//显示查询结果} catch (SQLException exc) {exc.printStackTrace();}}});//-----------------------------------------------------------------------------//所属类:UserCreateDlg//功能:创建新用户final JButton button = new JButton();button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if (textField_1.getText().trim().length() != 0&& textField_2.getText().trim().length() != 0&& textField_3.getText().trim().length() != 0) {String sql = "INSERT INTO Customer(Cid,Cname,Phone,Address) "+ "VALUES('"+ textField.getText().trim()+ "','"+ textField_1.getText().trim()+ "','"+ textField_2.getText().trim()+ "','"+ textField_3.getText().trim() + "')";try {Utilities.stmt.executeUpdate(sql);// 执行数据行插入JOptionPane.showMessageDialog(dialog, "用户:"+ textField_1.getText() + "添加成功\nID:"+ textField.getText(), "Success !",RMATION_MESSAGE);dispose();} catch (SQLException exc) {exc.printStackTrace();}} else {JOptionPane.showMessageDialog(dialog, "信息不全,无法添加","Check your input !", JOptionPane.ERROR_MESSAGE);}}});//-----------------------------------------------------------------------------//所属类:UserModifyDlg//功能:用户信息更新修改button_2 = new JButton();button_2.setEnabled(false);button_2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if (textField_1.getText().trim().length() != 0&& textField_2.getText().trim().length() != 0&& textField_3.getText().trim().length() != 0) {try {Utilities.rs.updateString("Cname", textField_1.getText().trim());Utilities.rs.updateString("Phone", textField_2.getText().trim());Utilities.rs.updateString("Address", textField_3.getText().trim());Utilities.rs.updateRow();// 更新数据行JOptionPane.showMessageDialog(dialog, "更新成功!","Success !", RMATION_MESSAGE);dispose();} catch (SQLException exc) {}} else {JOptionPane.showMessageDialog(dialog, "信息不全,无法修改","Check your input !", JOptionPane.ERROR_MESSAGE);}}});//-----------------------------------------------------------------------------//所属类:BookingDlg//功能:读取订单数据,向系统添加订单button_1 = new JButton();button_1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {try {String sql = "SELECT UnitPrice FROM Diretory WHERE Did='"+ comboBox.getSelectedItem() + "'";Utilities.rs = Utilities.stmt.executeQuery(sql);// 查询当前选择目录刊物的单价if (Utilities.rs.next()) {unitPrice = Utilities.rs.getFloat("UnitPrice");quantity = Integer.parseInt(textField_1.getText());qishu = Integer.parseInt(textField_2.getText());total = unitPrice * quantity * qishu;sum += total;s ql = "INSERT INTO OrderDetail (ONo, Did, Quantity, QiShu,UnitPrice, total)"+ "VALUES('"+ label_2.getText()+ "','"+ comboBox.getSelectedItem()+ "',"+ quantity+ ","+ qishu+ ","+ unitPrice+ ","+ total+ ")";sqls.add(sql);// 寄存订单细节插入语句comboBox.removeItem(comboBox.getSelectedItem());// 将已选择目录从下拉选择框中移除(一个订单不能有两个目录相同的订单项) }} catch (SQLException exc) {exc.printStackTrace();} catch (NumberFormatException exc) {JOptionPane.showMessageDialog(dialog, "错误数字输入","Check again !", JOptionPane.ERROR_MESSAGE);}}});button_1.setEnabled(false);button_1.setText("添加订单项");panel_1.add(button_1);button_2 = new JButton();button_2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if (sqls.size() > 1) {// 容器第一个空间放插入Order的sql语句,其它空间放插入OrderDetail的sql语句// sqls.size()==1表示只有一张空订单,不予插入int ans = JOptionPane.showConfirmDialog(dialog, "一共需要支付订金:"+ sum + "元\nContinue?", "We need your money",JOptionPane.YES_NO_CANCEL_OPTION);if (ans == JOptionPane.YES_OPTION) {try {for (int i = 0; i < sqls.size(); i++) {// 顺序取出sql语句,完成订单添加插入Utilities.stmt.executeUpdate(sqls.get(i));// 执行插入更新语句}dispose();JOptionPane.showMessageDialog(dialog, "订单添加成功!","Success!",RMATION_MESSAGE);} catch (SQLException exc) {exc.printStackTrace();}} else if (ans == JOptionPane.NO_OPTION) {dispose();}} else {JOptionPane.showMessageDialog(dialog,"订单为空,不能提交,请选择需要订阅的期刊", "Check again !",JOptionPane.ERROR_MESSAGE);}}});button_2.setEnabled(false);button_2.setText("提交订单");panel_1.add(button_2);5.系统测试方案和测试报告5.1测试方案由于系统规模较小,所以没有安排单独的白盒测试,而是相应地将这部分测试归并到系统编码过程中。