Java初级实训教程


-1- C/S 结构项目实训__JAVA 语言版 全国信息化计算机应用技术资格认证推荐教材 翰子昂软件实训体系指定教材 C/S 结构项目实训_Java 开发 -2- C/S 结构项目实训__JAVA 语言版 J2SE 课程体系结构图 J2SE 基础部分 高级部分 java环境搭建 基本程序结构设计 oop基础 封装、继承、多态 异常与调试 IO流 集合框架 反射机制 多线程 网络编程 GUI编程 JDBC J2SE -3- C/S 结构项目实训__JAVA 语言版 Java 1.整体介绍 2.Java概述 3.Java语言基础 4.面向对象编程 5.Java异常处理 6.数组 7.常用类 8.容器API 9.I/O流 10.线程 11.网络编程 12.GUI编程 Java 软件工程师的职业素质是一个软件从业人员的价值体现,它决定了软件工程师的职业 未来。本课程为软件工程师的职业道德、职业素质起点,用启发性的故事解释程序员如何先 做人再做事,接着介绍了软件行业的概括和软件企业文化,让学员看到外面精彩的世界,融 入 IT 文化氛围之中,做一个真正的、职业的 IT 人。从业于软件行业中所体现出的如知识产 权保护意识、沟通能力、团队协作、敬业精神等,并遵循软件技术人才职业道德规范与职业 实践准则。 -4- C/S 结构项目实训__JAVA 语言版 目录 第一阶段:Java 面向对象 ............................................................................................................... 7 门禁系统 ................................................................................................................................... 8 1. 需求分析 ..................................................................................................................... 9 1.1 项目背景 ............................................................................................................ 9 1.2 功能划分 ............................................................................................................ 9 2.概要设计 ....................................................................................................................... 9 3.详细设计 ..................................................................................................................... 10 4.界面设计 ..................................................................................................................... 11 动物特性的 OO ........................................................................................................................ 13 1.需求分析 ..................................................................................................................... 14 1.1 项目背景 .......................................................................................................... 14 1.2 模块划分 .......................................................................................................... 14 2.详细设计 ..................................................................................................................... 14 3.界面设计 ..................................................................................................................... 15 第二阶段:Java 核心类型库 ......................................................................................................... 16 图书租赁系统 ......................................................................................................................... 17 1.需求分析 ..................................................................................................................... 18 1.1 项目背景 .......................................................................................................... 18 1.2 功能划分 .......................................................................................................... 18 2.详细设计 ..................................................................................................................... 18 3.界面设计 ..................................................................................................................... 20 文字处理系统-NoteSys ......................................................................................................... 21 1.需求分析 ..................................................................................................................... 22 1.1 项目背景 .......................................................................................................... 22 1.2 功能划分 .......................................................................................................... 22 2.概要设计 ..................................................................................................................... 23 3.详细设计 ..................................................................................................................... 24 银行管理系统-BSWS ............................................................................................................... 26 1.需求分析 ..................................................................................................................... 27 1.1 项目背景 .......................................................................................................... 27 1.2 功能划分 .......................................................................................................... 27 2.界面设计 ..................................................................................................................... 28 第三阶段:Java-JDBC ..................................................................................................................... 31 学生管理系统 ......................................................................................................................... 32 1.需求分析 ..................................................................................................................... 33 1.1 项目背景 .......................................................................................................... 33 1.2 功能划分 ......................................................................................................... 33 2.界面设计 ..................................................................................................................... 33 网吧计费系统 ......................................................................................................................... 36 1.需求分析 ..................................................................................................................... 37 1.1 项目背景 .......................................................................................................... 37 -5- C/S 结构项目实训__JAVA 语言版 1.2 功能划分 .......................................................................................................... 37 2.界面设计 ..................................................................................................................... 38 个人账目管理系统 ................................................................................................................. 40 1.需求分析 ..................................................................................................................... 41 1.1 项目背景 .......................................................................................................... 41 1.2 需求分析 .......................................................................................................... 41 2.详细设计 ..................................................................................................................... 41 3.界面设计 ..................................................................................................................... 43 图书管理系统 ......................................................................................................................... 45 1.需求分析 ..................................................................................................................... 46 1.1 项目背景 .......................................................................................................... 46 1.2 功能划分 .......................................................................................................... 46 2.数据库设计 ................................................................................................................. 47 2.1 逻辑关系图 ...................................................................................................... 47 2.2 表汇总 .............................................................................................................. 47 3.界面设计 ..................................................................................................................... 50 固定资产管理系统 ................................................................................................................. 53 1.需求分析 ..................................................................................................................... 54 1.1 项目背景 .......................................................................................................... 54 1.2 功能划分 .......................................................................................................... 54 2.界面设计 ..................................................................................................................... 56 汽车销售管理系统 ................................................................................................................. 59 1.需求分析 ..................................................................................................................... 60 1.1 项目背景 .......................................................................................................... 60 1.2 功能划分 .......................................................................................................... 60 2.数据库设计 ................................................................................................................. 61 2.1 逻辑关系图 ...................................................................................................... 61 2.2 表汇总 .............................................................................................................. 61 2.3 数据库说明 ...................................................................................................... 61 3.界面设计 ..................................................................................................................... 63 第四阶段:Java 综合 ..................................................................................................................... 66 进销存系统 ............................................................................................................................. 67 1.需求分析 ..................................................................................................................... 68 1.1 项目背景 .......................................................................................................... 68 1.2 功能划分 .......................................................................................................... 69 2.详细设计 ..................................................................................................................... 70 3.数据库设计 ................................................................................................................. 76 3.1 表汇总 .............................................................................................................. 76 3.2 数据库说明 ...................................................................................................... 76 4.界面设计 ..................................................................................................................... 83 4.1 登录界面 ......................................................................................................... 83 4.2 系统主操作界面 ............................................................................................. 83 4.3 维护销售员工资料操作界面 ......................................................................... 85 4.4 维护商品资料操作界面 ................................................................................. 86 -6- C/S 结构项目实训__JAVA 语言版 4.5 维护客户资料操作界面 ................................................................................. 86 4.6 维护供应商资料的操作界面 ......................................................................... 88 4.7 维护采购单据界面 ......................................................................................... 90 4.8 维护采购退货数据 ......................................................................................... 90 4.9 销售出库操作界面 ......................................................................................... 91 4.10 维护销售退货单据操作界面 ....................................................................... 92 4.11 库存查询 ....................................................................................................... 93 4.12 维护用户资料操作界面 ............................................................................... 94 4.13 修改密码 ....................................................................................................... 95 4.14 打印商品资料报表 ....................................................................................... 95 4.15 打印采购汇总报表 ....................................................................................... 96 4.16 打印采购年报表 ........................................................................................... 97 4.17 库存预警报表 ............................................................................................... 97 企业即时通 ............................................................................................................................. 98 1.需求分析 ..................................................................................................................... 99 1.1 项目背景 .......................................................................................................... 99 1.2 功能划分 .......................................................................................................... 99 2.概要设计 ..................................................................................................................... 99 3.数据库设计 ............................................................................................................... 109 4.界面设计 ................................................................................................................... 110 4.1 客户端程序界面设计 .................................................................................... 110 4.2 服务器端程序界面设计 ................................................................................ 115 附录一:编程规则 ............................................................................................................... 121 附录二:代码重构 ............................................................................................................... 124 -7- C/S 结构项目实训__JAVA 语言版 第一阶段:Java 面向对象 本阶段项目 1. 门禁系统 2. 动物特性的 OO -8- C/S 结构项目实训__JAVA 语言版 门禁系统 项目编号:S1-CS-JAVA-001  项目概述 门禁系统简介 项目名称 门禁系统 时间安排 共 6-8 课时,理论 2, 实践 4-6 代码量 300-500 行 项目难度 ★☆☆☆☆ 项目简介 某公司安装了电子门,要设计门禁系统:  公司的雇员可以凭借密码、胸卡或指纹进入公司  计算机根据雇员的验证方式对其身份进行验证  管理员在监控室可以通过按钮直接开启电子门  访客可以按门铃请求进入,由管理员为其放行 项目目的 学习面向对象的主要特征和基本概念,包括类、对象、继承、接口、封装、 继承、多态、方法的重载和重写、Java 的访问修饰符与其它关键字等。 涉及主要 技术 1、 流程控制语句 2、 类、对象、继承、接口 3、 封装、继承、多态 4、 方法的重载、重写 5、 访问修饰符 6、 static、finally 数据库 无 编程环境 开户工具:JDK1.6,Eclipse 或 Myeclipse7.5 项目特点 单机版简单程序。 技术重点 封装、继承、多态的用法 方法的重载与重写 接口的用法 技术难点 无 -9- C/S 结构项目实训__JAVA 语言版 1. 需求分析 1.1 项目背景 在数字技术网络技术飞速发展的今天门禁技术得到了迅猛的发展。门禁系统早已超越了 单纯的门道及钥匙管理,它已经逐渐发展成为一套完整的出入管理系统。它在工作环境安全、 人事考勤管理等行政管理工作中发挥着巨大的作用。 在该系统的基础上增加相应的辅助设备可以进行社区流动人员和出租屋管理、电梯控 制、车辆进出控制,物业消防监控、保安巡检管理、餐饮收费管理等,真正实现区域内一卡 智能管理。 某公司安装了电子门,要设计门禁系统:  公司的雇员可以凭借密码、胸卡或指纹进入公司  计算机根据雇员的验证方式对其身份进行验证  管理员在监控室可以通过按钮直接开启电子门  访客可以按门铃请求进入,由管理员为其放行 1.2 功能划分 系统基本模块包括: 功能点 难度 与用户相关类的创建 ★★★ 验证接口的创建 ★★★ 3 个验证实现类的创建 ★★★★ 计算机类的创建 ★★★★ 电子门类的创建 ★★★ 测试类 ★★★★ 表 1-1 模块划分 2.概要设计 从面向对象的角度进行分析设计,抽象类和对象的基本方法:  电子门、计算机 如,电子门开门/关门的方法;计算机验证的方法  管理员、 雇员、 访客 如,访客只有按门铃的方法;雇员还有输入身份信息的方法;管理员还有监听门铃 和通过监控室的按钮直接开启电子门的方法  验证接口、验证实现 如,进行密码验证;胸卡验证;指纹验证 要求,按照如下结构创建包:  com.handson.sys 包:放置门禁系统相关类 -10- C/S 结构项目实训__JAVA 语言版  com.handson.user 包:放置访客、雇员、管理员类  com.handson.validate 包:放置验证身份的接口及其实现类  com.handson.test 包:放置测试类 3.详细设计 图 1-1 类图-用户 图 1-2 类图-验证信息 -11- C/S 结构项目实训__JAVA 语言版 4.界面设计 图 1-3 访客的工作界面 图 1-4 雇员的工作界面 -12- C/S 结构项目实训__JAVA 语言版 图 1-5 管理员的工作界面 -13- C/S 结构项目实训__JAVA 语言版 动物特性的 OO 项目编号:S1-CS-JAVA-002  项目概述 动物特性简介 项目名称 动物特性 时间安排 共 6-8 课时,理论 2, 实践 4-6 代码量 300-500 行 项目难度 ★★☆☆☆ 项目简介  狗生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。 狗通常的时候和人打招呼会通过“摇摇尾巴”,在被抚摸感到舒服的 时候,会“旺旺叫”,而在受到惊吓情绪烦躁时,会发出“呜呜”声;  猫也生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性 的。猫通常的时候和人打招呼会发出“喵~”的声音,在被抚摸情绪 很好时,会发出“咕噜咕噜”声,而在受到惊吓时,会发出“嘶嘶”声;  青蛙是一种两栖动物(既是水生动物也是陆生动物),既不是哺乳 类的也不是肉食性的,属于卵生。当青蛙情绪好的时候,会在岸边“呱 呱呱”的唱歌,而在受到惊吓时,会“扑通一声跳入水中”; 项目目的 学习面向对象的主要特征和基本概念,包括类、对象、继承、接口、封装、 继承、多态、方法的重载和重写、Java 的访问修饰符与其它关键字等。 涉及主要 技术 1、 流程控制语句 2、 类、对象、继承、接口 3、 封装、继承、多态 4、 方法的重载、重写 5、 访问修饰符 6、 static、finally 数据库 无 编程环境 开户工具:JDK1.6,Eclipse 或 Myeclipse7.5 项目特点 单机版简单程序。 技术重点 封装、继承、多态的用法 方法的重载与重写 接口的用法 技术难点 无 -14- C/S 结构项目实训__JAVA 语言版 1.需求分析 1.1 项目背景 狗生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。狗通常的时候和人 打招呼会通过“摇摇尾巴”,在被抚摸感到舒服的时候,会“旺旺叫”,而在受到惊吓情绪烦 躁时,会发出“呜呜”声; 猫也生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。猫通常的时候和 人打招呼会发出“喵~”的声音,在被抚摸情绪很好时,会发出“咕噜咕噜”声,而在受到 惊吓时,会发出“嘶嘶”声; 青蛙是一种两栖动物(既是水生动物也是陆生动物),既不是哺乳类的也不是肉食性的, 属于卵生。当青蛙情绪好的时候,会在岸边“呱呱呱”的唱歌,而在受到惊吓时,会“扑通 一声跳入水中”; 1.2 模块划分 功能点 难度 抽象父类的创建 ★★★ 2 个接口的创建 ★★★ 3 个子类的创建 ★★★★ 测试类 ★★ 表 2-1 模块划分 2.详细设计 从面向对象的角度进行分析设计,抽象类和对象的基本方法:  抽取对象的基本的方法:找出句子中所使用的名词 例如:在句子“小猫喵喵叫”中,我们能够确定一个对象:猫;  确定对象发出的行为动作的基本的方法:找出句子中的动词 例如:“旺旺叫”、“喵喵叫”都属于对象发出的动作;  确定对象的属性或者特征的基本的方法:找出句子中的形容词 例如:“哺乳性的”“肉食性的”“卵生的”等等;  “是”的关系一般抽象为继承 例如:狗是一种动物,意味着:“狗”类 继承自“动物”类;  “有”的关系一般抽象为类的属性 例如:动物都有情绪,意味着:“情绪”是“动物”类的一个属性; -15- C/S 结构项目实训__JAVA 语言版 图 2-1 类图 3.界面设计 图 2-2 类图 -16- C/S 结构项目实训__JAVA 语言版 第二阶段:Java 核心类型库 本阶段项目 1. 图书租赁系统 2. 文字处理系统-NoteSys 3. 银行管理系统-BSWS -17- C/S 结构项目实训__JAVA 语言版 图书租赁系统 项目编号:S1-CS-JAVA-003  项目概述 图书租赁系统简介 项目名称 图书租赁系统 工作量 4 课时理论,2 课时上机 代码量 600 行 项目难度 ★★★☆☆ 课时安排 共 6 课时 讲授 4,实验 2 项目类型 Learning Case 项目简介 通过 Java 控制台程序完成一个图书租赁系统,每次图书出租过程 中能够计算总书款金额以及显示借书列表清单。 项目目的 通过一个 Java 控制台程序,锻炼学生 Java 语言的使用熟练度,流 程控制语句的熟练运用程度,对于 Java 异常处理的掌握和运用程度, 以及编码规范度。 通过对项目进行重构,使学生了解基本重构规则,深入领悟 OOP 技术。 涉及主要技术 Java 基本语法 Java 输入输出 Java 异常控制 Java 输入输出 Java 容器类 数据库 无 编程环境 JDK 5.0 JCreator/EditPlus/NetBeans/Eclipse 项目特点 控制台界面,单机版简单程序。 技术重点 Java 流程控制语句的熟练运用 Java 异常处理 从面向过程思想到面向对象思想的转变 技术难点 Java I/O 使用(从控制台接收和输出信息) Java 容器类基本使用 OOP 的具体实现 -18- C/S 结构项目实训__JAVA 语言版 1.需求分析 1.1 项目背景 “小小书屋”是一个以图书租赁为主要业务的个体单位。 其图书按租价不同分为三类:1:普通图书;2:计算机图书;3:新书。不同类别图书 的租赁规则不同: 普通图书:每天租金 1 元; 计算机图书:每天租金 1.5 元; 新书:前三天每天租金 1.5 元,三天之后,每天租金 2 元。 借书者必须先交纳押金办卡后,才能租书。借书者租书之前先说明要租图书租赁几天, 并先期交纳租金,方可租走图书。 店主苏小小意向编写一套简单的图书租赁系统,用来计算每位借书者每次租书应交纳的 租金。 1.2 功能划分 系统主要功能: 图书借阅:每位顾客可以借多本图书,不同类型书定价规则不同。 生成借阅清单:根据每位顾客借阅图书情况生成一个清单,并显示出总租金。 借书者 租赁图书 生成清单 图书租赁系统 «include» 图 3-1 图书租赁系统用例图 2.详细设计 书籍类:用来存储顾客所借书籍的具体信息,包括书名,书籍类型等。 顾客类:用来存储借书者信息,包括顾客姓名,顾客所借书籍信息等。 租赁类:用来存储顾客租书信息,例如,书名,租赁天数等。 -19- C/S 结构项目实训__JAVA 语言版 对照下面给出的类图,看看我们讨论的结果与图 1-2 中给出的有何不同: Book + COMMON_BOOK : int = 0 + NEW_BOOK : int = 2 + COMPUTER_BOOK : int = 1 - _title : String - _typeCode : int + «constructor» Book ( ) + getTypeCode ( ) + setTypeCode ( ) + getTitle ( ) Rental - _leaseDays : int + Rental ( ) + getBook ( ) + getLeaseDays ( ) Customer - _name : String + Customer ( ) + addRental ( ) + getName ( ) + bill ( ) 1..* *..1 图 3-2 图书租赁系统类图 通过以上讨论与分析,我们基本分析清了系统中的主要类以及类之间的相互关系。我们 仍需要一个包含 main()函数的主类,用来接收用户输入,生成其他类对象,完成系统功能, 并输出结果给顾客。 主类中 main()函数的主要功能如下图 3-3 所示: 知识点: 以上图称为 UML 类图(Class Diagram)。类图由被两条水平直线分隔成三 个矩形的一个大矩形组成,最上面部分标明类名,中间部分是类的属性,最下面 部分是类的行为。 属性和方法前面的符号含义如下: + 表示 public 公有的 - 表示 private 私有的 # 表示 protected 受保护的 -20- C/S 结构项目实训__JAVA 语言版 提示顾客输入姓名 提示顾客输入书籍名称 提示用户输入借阅 天数 显示错误 计算租金 提示用户是否继续 借书 显示借阅详细信息 提示顾客输入书籍类型 类型输入错误 继续借书 完成借阅 图 3-3 图书租赁系统活动图 3.界面设计 样式如下: XXX 借书记录: ------------------------------------------ 书名:XXXXXXXXXX 借阅天数:2 租金:2.0 元 书名:YYYYYYYYYY 借阅天数:5 租金:7.5 元 书名:ZZZZZZZZZZ 借阅天数:3 租金:4.5 元 ------------------------------------------- 总租金:XY.Z 元 杜秀明 借书记录: ------------------------------------- 书名:细节决定成败 借阅天数:2 租金:2.0 元 书名:Java 编程思想 借阅天数:5 租金:7.5 元 书名:达芬奇的密码 借阅天数:3 租金:4.5 元 书名:兄弟 借阅天数:4 租金:6.5 元 ---------------------------------------- 总租金:20.5 元 -21- C/S 结构项目实训__JAVA 语言版 文字处理系统-NoteSys 项目编号:S1-CS-JAVA-004  项目概述 文字处理系统-NoteSys 简介 项目名称 文字处理系统-NoteSys 工作量 2 课时理论,4 课时上机 代码量 600 行 项目难度 ★★★☆☆ 课时安排 共 6 课时 讲授 2,实验 4 项目类型 Learning Case 项目简介 如果你经常进行一些简单的文本文件的编辑,那么你一定非常熟悉 Windows 自带的文本编辑器 NotePad 工具。它可以帮助我们编辑文本, 并提供了最基本、最简单的文字处理功能。但它属于 Windows 内建程 序,外观也不够理想。 利用 Java 的特性可以开发一款跨越平台的文字处理系统,我们可 以将它带入任何一个平台去使用,还可以让我们的文字处理系统变得更 加美观,还等什么,让我们赶紧开始吧! 项目目的 基于 NetBeans 对界面开发的强大支持,通过使用 NetBeans 对界面 程序的开发,使学生熟练掌握 NetBeans IDE 5.0 的使用方法及技巧, 并掌握 NetBeans 的界面应用程序开发过程。 通过文字处理系统-NoteSys 的开发,使学生熟练掌握 swing 各种组 件的使用方法;AWT 的事件机制;掌握线程开发及自定义组件的开发 使用并熟知文件及输入、输出流的各种操作。 项目开发完毕后,学生应熟练使用 NetBeans IDE 5.0,掌握 swing 的各种组件的使用,并深入理解面向对象编程的概念。 涉及主要技术 NetBeans 使用 swing API 使用 Java 线程操作 Java 流操作 数据库 无 编程环境 Java JDK 5.0 、NetBeans IDE 5.0 项目特点 熟悉 NetBeans 强大的界面开发功能,该项目为窗体界面,单机版程序。 技术重点 NetBeans 的使用 swing API 技术难点 NetBeans 组件制作 文件,线程操作 图形绘制 -22- C/S 结构项目实训__JAVA 语言版 1.需求分析 1.1 项目背景 在日常办公中,我们经常会和文字打交道,或许我们需要记录一些日 常工作,或许我们需要做会议记录。在纸张应用的时代逐步消退的时候, 电子计算机为我们带来了新的办公观念,改变了我们的办公环境。 在新的办公环境中,应用程序给我们的工作带来了翻天覆地的变化, 定制个性软件也成了大家的业余爱好,这节课就带领大家制作一款属于我 们自己的文字处理软件 NoteSys。 文字处理系统-NoteSys 仿照 Windows NotePad 文字编辑系统的功能制作,以美观实用 为主导。Windows NotePad 内建于 Windows 操作系统,它无法跨越微软的操作系统,而我 们却可以利用 Java 的特性将我们的 NoteSys 带入任何一个平台,无论是 Windows、Linux 还 是 U-NIX,都可以使用 NoteSys 来进行简单的文本处理。 1.2 功能划分 文字处理系统-NoteSys 的需求较为简单,我们来看下面的需求描述: 功能概述: 文字处理系统-NoteSys 以文本编辑为主,包括一些编辑器的主要功能如新建、打开、保 存、剪切、复制、粘贴等,同时也拥有一个产品应有的一些特性如关于。 系统主要功能: 新建:可以新建一个文本文件,重新输入编辑内容。 打开:可以通过打开对话框,选取本地文件,可选取文件类型为 txt 或 html,并将文件 内容显示在文本编辑器中。 保存:通过保存对话框,选取本地文件,将显示在文本编辑器中的内容保存到本地文件 中,可保存类型为 txt 或 html。 退出:退出 NoteSys 系统。 剪切:将文本编辑器中内容剪切。 拷贝:将文本编辑器中内容复制。 粘贴:将文本编辑器中内容粘贴。 全选:将文本编辑器中的内容全部选中。 插入时间/日期:将当前时间插入文本编辑器的光标所处位置,插入日期格式为:hh:m m:ss yyyy-MM-dd 关于:包括关于和详细信息,关于中显示版权图片,详细信息中显示如下信息: 产品版本、操作系统版本、JDK 版本、供应商名称、网址、开发小组名称。 -23- C/S 结构项目实训__JAVA 语言版 2.概要设计 保存文件 新建文件 打开文件 文件编辑 用户 打开关于 图 4-1 用例图 我们以打开文件用例为例子,对其进行描述。 中文名称:打开文件 1.1 简要说明: 本用例的主要功能:打开本地文档文件。 1.2 事件流: 1.2.1 基本流: 1. 用户打开菜单,点击“打开”菜单。 2. 编辑器弹出文件选择对话框。 3. 用户点击“撤销”,返回编辑器原始文档内容,用户选择本地文件,点击“打开”按钮,打 开文件。如果打开失败,转向备选流 1。 4. 编辑器显示本地文件内容,用例结束。 1.2.2 备选流: 1.2.2.1 备选流 1: 系统弹出对话框,提示用户“不能打开文件”,用例结束。 -24- C/S 结构项目实训__JAVA 语言版 1.3 前置条件: 正常打开文本处理器。 1.4 后置条件: 将文件内容显示在文本编辑器上。 3.详细设计 WinNote NoteHelpDialog 图 4-2 文字处理系统界面设计 窗体详细信息如下表所示: 窗体名称 用户输入 功能 WinNote 编辑文本 各种指令 进行文本编辑操作,根据用户指 令,完成文本的打开、保存、剪 切、复制、粘贴 NoteHelpDialog 无 显示关于和详细信息 表 4-1 文字处理系统窗体说明 根据界面设计,最终确定界面如下图所示: -25- C/S 结构项目实训__JAVA 语言版 图 4-3 NoteSys 程序界面 图 4-4 NoteSys 界面 -26- C/S 结构项目实训__JAVA 语言版 银行管理系统-BSWS 项目编号:S1-CS-JAVA-005  项目概述 银行管理系统-BSWS 简介 项目名称 银行管理系统-BSWS 工作量 总共 10 课时,理论 2 课时, 上机 8 课时 代码量 1000 行 项目难度 ★★★☆☆ 课时安排 共 10 课时 讲授 2,实验 8 项目类型 Learning Case 项目简介 银行存取款系统(BSWS)软件是一款通用性极强的银行存取款管 理系统,软件功能囊括了银行从用户开户到最终销户等业务的全过程。 软件适用于各级各类的银行。软件覆盖银行业的现金办理与金融转帐业 务,软件的各个模块操作界面简单、实用,软件帮助系统让用户可以在 最短的时间内掌握软件的使用方法,助用户生意早日更上一层楼。软件 系统采用银行软件业务能用的控制台操作界面,操作简单易学! 项目目的 学习面向对象的主要特征和基本概念,包括类、对象、继承、接口、 封装、继承、多态、方法的重载和重写、Java 的访问修饰符与其它关键 字等。 涉及主要技术 1、 I/O 流 2、 ArrayList 的使用 3、 HashMap 的使用 4、 异常的处理 5、 scanner 的使用 数据库 无 编程环境 Java JDK 5.0 、Myeclipse7.5 项目特点 熟悉银行业务流程,掌握 Java 的基本特性。 技术重点 I/O 流操作 技术难点 I/O 流操作 多态的使用 -27- C/S 结构项目实训__JAVA 语言版 1.需求分析 1.1 项目背景 银行存取款系统(BSWS)软件是一款通用性极强的银行存取款管理系统,软件功能囊 括了银行从用户开户到最终销户等业务的全过程。软件适用于各级各类的银行。软件覆盖银 行业的现金办理与金融转帐业务,软件的各个模块操作界面简单、实用,软件帮助系统让用 户可以在最短的时间内掌握软件的使用方法,助用户生意早日更上一层楼。软件系统采用银 行软件业务能用的控制台操作界面,操作简单易学。 由于性能要求,软件采用文档(文本文件或 XML 文件)作为持久化存储设备。 1.2 功能划分 功能点 难度 开户 ★★ 存款 ★★★ 取款 ★★★ 转帐 ★★★★ 查询 ★★★ 修改密码 ★★ 销户 ★★ 图 5-1 模块划分 1、开户 开户时需要储户输入个人信息,包括姓名,开户金额,完成后储户信息被保存到一个储 户基本信息文件中,并反馈给储户开户后的账号,初始密码(提示信息尽快修改长度为 6 位),开户金额,开户日期。同时生成一个操作记录包括账号,操作类型,操作金额,本次 操作的具体时间,旧密码,新密码 2、存款 存款时储户提供事先获得的账号及存储的金额(现金),将金额加到账户原有金额中, 然后返回本次操作的信息包括存储的金额,账号中现有金额,操作时间。同时生成一个操作 记录包括账号,操作类型,操作金额,本次操作的具体时间,旧密码,新密码。 3、取款 取款时储户提供事先获得的账号及要提取的金额(现金),将账号中原有的金额减去要 提取的金额,将现金交给储户,然后返回本次操作的信息包括提取的金额,账号中现有的金 额,操作时间。同时生成一个操作记录包括账号,操作类型,操作金额,本次操作的具体时 间,旧密码,新密码 4、转帐 转帐时储户提供事先获得转出账号,转出账号密码,转入账号,转帐金额,将转出账号 中的金额减去转帐金额,转入账号中的金额加上转帐金额,然后返回本次操作的信息包括转 -28- C/S 结构项目实训__JAVA 语言版 帐的金额,转出账号现有的金额,本次操作的时间。同时生成一个操作记录包括账号,操作 类型,操作金额,本次操作的具体时间,旧密码,新密码 5、查询 查询时储户提供账号,密码。返回查询信息包括账号,操作类型,操作金额,操作具体 时间,旧密码,新密码 6、修改密码 修改密码时储户提供账号及密码,根据提示输入新密码两次(两次输入必须相同),完 成后密码修改成功。同时生成一个操作记录包括账号,操作类型,操作金额,本次操作的具 体时间,旧密码,新密码 7、销户 销户时储户提供账号及密码,将账号中的金额全部取出,然后将本账号的信息从文件中删除, 返回销户成功 2.界面设计 图 5-1 主菜单 图 5-2 开户 -29- C/S 结构项目实训__JAVA 语言版 图 5-3 存款 图 5-4 取款 图 5-5 转账 图 5-6 查询 -30- C/S 结构项目实训__JAVA 语言版 图 5-7 修改密码 图 5-8 销户 -31- C/S 结构项目实训__JAVA 语言版 第三阶段:Java-JDBC 本阶段项目 1. 学生管理系统 2. 网吧计费系统 3. 个人账目管理系统 4. 固定资产管理系统 5. 汽车销售管理系统 -32- C/S 结构项目实训__JAVA 语言版 学生管理系统 项目编号:S1-CS-JAVA-006  项目概述 学生管理系统简介 项目名称 学生管理系统 时间安排 共 10 课时,理论 2,实践 8 代码量 2000 行 项目难度 ★★☆☆☆ 项目简介 用户需要我们设计一个学生管理系统,要求登录后可以实现对学 员的增加和查询的功能,并提供良好的操作界面。经过分析系统的需 求,抽象出管理员实体、学生实体,从管理员实体中抽象出来的数据 有用户名和密码,从学生实体中抽象出来的数据有学生 Id,学生姓名, 出生日期,电话,地址。 项目目的 学习使用 JAVA+JDBC 对数据库的数据进行增加、修改、删除、查询等 操作;学习 JDBC 调用存储过程;学习主要数据库操作对象 Connection、 Statement、PreparedStatement、ResultSet 的使用。 涉及主要技术 1、 使用 JDBC 操作 sqlserver2005 数据库 2、 常用数据库操作对象的使用 3、 ArrayList 和 Vector 的使用 4、 加深对集合框架的理解 5、 异常的处理 6、 scanner 的使用 数据库 Microsoft SQL Server 2000 编程环境 开发平台:JDK 1.6.0 以上版本 开发工具:Myeclipse7.5 数 据 库:Microsoft SQL Server 2000 及以上版本 项目特点 通过学习本案例,学生掌握利用 JAVA+JDBC 开发程序,了解三 层架构的设计模式。 技术重点 1. 系统架构层次 2. 使用 JDBC 访问数据库 技术难点 -33- C/S 结构项目实训__JAVA 语言版 1.需求分析 1.1 项目背景 用户需要我们设计一个学生管理系统,要求登录后可以实现对学员的增加和查询的功 能,并提供良好的操作界面。经过分析系统的需求,抽象出管理员实体、学生实体,从管理 员实体中抽象出来的数据有用户名和密码,从学生实体中抽象出来的数据有学生 Id,学生姓 名,出生日期,电话,地址。 1.2 功能划分 功能点 难度 登录 ★★ 添加学生 ★★★ 查看所有学生 ★★★ 删除学生 ★★★★ 修改学生 ★★★ 界面类 ★★ 表 6-1 模块划分 2.界面设计 1、 根据题目要求自行设计相对应的数据库。 2、 现要求设计管理员 Admin 类和学生 Student 类来存储相应信息,分别要提供一个缺 省的和带参数的构造函数来获取数据,同时不能打破面向对象的封装特性。 图 6-1 登陆 当管理员正确登录之后才能进行下一步操作。 图 6-2 主菜单 -34- C/S 结构项目实训__JAVA 语言版 为学生类添加 toString()的方法,toString()方法内容是将字段连接成一个字符串,然后返 回。 3、 选择 1-5 相应的选项之后,显示的界面效果图如下: 图 6-3 添加学生 图 6-4 学生列表 图 6-5 修改学生 图 6-6 删除学生 4、 打包要求: 图 6-7 项目结构图 a) com.sdsc.stumanager.dao:存放有关数据库操作的类及方法 -35- C/S 结构项目实训__JAVA 语言版 b) com.sdsc.stumanager.entity:存放系统中出现的实体 c) com.sdsc.stumanager.tools:工具类 Tools,把方法改成 static 的,且把之前程序 中的打印输出全都换成当前类的方法调用 d) com.sdsc.stumanager.view:设计一个界面类,用于创建登录界面、主界面、添 加界面、显示所有界面设计 -36- C/S 结构项目实训__JAVA 语言版 网吧计费系统 项目编号:S1-CS-JAVA-007  项目概述 网吧计费系统简介 项目名称 网吧计费系统 时间安排 共 16 课时,理论 4,实践 12 代码量 3000 行 项目难度 ★★☆☆☆ 项目简介 飞速网吧需要一个简易的网吧计费系统,要求上网人输入卡号和 密码上机,卡号或密码不正确,不能上机,卡余额不足不能上机;正 在使用的机器不能被再使用;上机需要记录卡号、机器号、上机时间; 下机时需要记录下机时间、发生费用和自动从卡里扣款,该机器能再 被使用;下机时,需要向用户显示本次上机的详细信息。 项目目的 加强对面向对象的理解,加强使用 JAVA+JDBC 对数据库的数据进行增 加、修改、删除、查询等操作;学习 JDBC 调用存储过程;学习主要数 据库操作对象 Connection、Statement、PreparedStatement、ResultSet 的使用。 涉及主要技术 1、 使用 JDBC 操作 sqlserver2005 数据库 2、 常用数据库操作对象的使用 3、 ArrayList 和 Vector 的使用 4、 加深对集合框架的理解 数据库 Microsoft SQL Server 2000 编程环境 开发平台:JDK 1.6.0 以上版本 开发工具:Myeclipse7.5 数 据 库:Microsoft SQL Server 2000 及以上版本 项目特点 通过学习本案例,学生掌握利用 JAVA+JDBC 开发程序,了解三 层架构的设计模式。 技术重点 1. 系统架构层次 2. 使用 JDBC 访问数据库 技术难点 -37- C/S 结构项目实训__JAVA 语言版 1.需求分析 1.1 项目背景 飞速网吧需要一个简易的网吧计费系统,要求上网人输入卡号和密码上机,卡号或密码 不正确,不能上机,卡余额不足不能上机;正在使用的机器不能被再使用;上机需要记录卡 号、机器号、上机时间;下机时需要记录下机时间、发生费用和自动从卡里扣款,该机器能 再被使用;下机时,需要向用户显示本次上机的详细信息。 1.2 功能划分 功能点 难度 创建数据库 ★★ 上机 ★★★ 下机 ★★★★ 注册新用户 ★★★ 查看历史记录 ★★★★ 退出 ★ 表 7-1 功能划分 1) 上机业务流程  卡号和密码的校验;  卡的余额的检验;  获取当前系统时间作为上机开始时间;  记录上机操作;  修改该机器的使用标志 2) 下机业务流程  选择被使用的机器号;  获取系统当前时间作为下机时间;  计算费用;  扣费;  记录下机时间和此次费用;  修改该机器的状态为可用 -38- C/S 结构项目实训__JAVA 语言版 2.界面设计 图 7-1 主窗体 图 7-2 上机 图 7-3 下机 -39- C/S 结构项目实训__JAVA 语言版 图 7-4 注册新会员 图 7-5 查看历史记录 -40- C/S 结构项目实训__JAVA 语言版 个人账目管理系统 项目编号:S1-CS-JAVA-008  项目概述 个人账目管理系统简介 项目名称 个人账目管理 时间安排 共 12 课时,理论 2,实践 10 代码量 2000 行 项目难度 ★★☆☆☆ 项目简介 飞速网吧需要一个简易的网吧计费系统,要求上网人输入卡号和 密码上机,卡号或密码不正确,不能上机,卡余额不足不能上机;正 在使用的机器不能被再使用;上机需要记录卡号、机器号、上机时间; 下机时需要记录下机时间、发生费用和自动从卡里扣款,该机器能再 被使用;下机时,需要向用户显示本次上机的详细信息。 项目目的 加强对面向对象的理解,加强使用 JAVA+JDBC 对数据库的数据进行增 加、修改、删除、查询等操作;学习 JDBC 调用存储过程;学习主要数 据库操作对象 Connection、Statement、PreparedStatement、ResultSet 的使用。 涉及主要技术 5、 使用 JDBC 操作 sqlserver2005 数据库 6、 常用数据库操作对象的使用 7、 ArrayList 和 Vector 的使用 8、 加深对集合框架的理解 数据库 Microsoft SQL Server 2000 编程环境 开发平台:JDK 1.6.0 以上版本 开发工具:Myeclipse7.5 数 据 库:Microsoft SQL Server 2000 及以上版本 项目特点 通过学习本案例,学生掌握利用 JAVA+JDBC 开发程序,了解三 层架构的设计模式。 技术重点 1. 系统架构层次 2. 使用 JDBC 访问数据库 技术难点 -41- C/S 结构项目实训__JAVA 语言版 1.需求分析 1.1 项目背景 个人记帐本记录个人每个月的开销、收入,开销和收入都划分详细的类别,可快速的统 计出每个月相关类别的开销收入。据了解,如今的上班族都希望记录自己每个月的收入和开 销明细,而限于这类免费用软件不多,功能不全,用 Excel 等表格统计太不方面,而且麻烦 等各种原因,都放弃了对自己收入开销的记录;个人记帐本在于操作方便,分类管理收入开 销,统计数据快捷等优点,后期版本中可以根据数据,用相关专业知识来指导个人理财(后 期版本需求还在收集中)。 开发一个账目明细管理软件,用于记录和查询个人的账目情况,记录的内容包括:账目 类型(支出/收入)、账目金额、记录日期(日期格式为:yyyy-MM-dd)和备注信息。 1.2 需求分析 1、添加账目 添加账目时,首先,系统自动生成一个账目流水编号,如果为第一条账目记录,则编号 为预设值“1”;如果不是第一条记录,则获取最后一条账目记录,取出编号并加一,即为新 账目记录编号。然后需要用户输入账目信息,包括账目类型、金额、日期和备注,其中日期 为系统自动生成,完成后账目信息被保存到一个文件中,并反馈给用户一条账目信息。 2、修改账目 账目记录修改功能描述:首先,提示用户输入要修改的账目记录编号,并进行有效性验 证。然后显示此笔账目记录详细信息,提示修改(日期不修改)。修改完成后,将此账目记 录保存到账目记录文件中。 3、删除账目 账目记录删除功能描述:首先,提示用户输入要修改的账目记录编号,并进行有效性验 证。然后显示此笔账目记录详细信息,提示删除。待用户确认后,将此记录从账目记录文件 中删除。 4、查询账目 查询账目功能包括:查询单个和查询全部。 查询单个账目信息:首先,提示用户输入要修改的账目记录编号,并进行有效性验证。 然后显示此笔账目记录详细信息。 查询全部账目信息:显示全部账目记录详细信息,如果没有账目信息,则提示没有账目 记录。 2.详细设计 功能点 难度 添加账目 ★★★ 修改账目 ★★★ -42- C/S 结构项目实训__JAVA 语言版 删除账目 ★★★ 查询账目 ★★ 退出 ★ 表 8-1 功能划分 要求,按照如下结构创建包: com.handson.entity com.handson.main com.handson.services com.handson.util 类关系图如下: 图 8-1 类图 -43- C/S 结构项目实训__JAVA 语言版 3.界面设计 图 8-2 主菜单 图 8-3 添加账目 -44- C/S 结构项目实训__JAVA 语言版 图 8-4 修改账目 图 8-5 删除账目 图 8-6 查询单个账目(文件中没有账目信息) 图 8-7 查询单个账目信息(账目信息存在) 图 8-8 查询单个账目信息(账目信息不存在) 图 8-9 查询全部账目 -45- C/S 结构项目实训__JAVA 语言版 图书管理系统 项目编号:S1-CS-JAVA-009  项目概述 图书管理系统简介 项目名称 图书管理系统 时间安排 共 20 课时,理论 4,实践 16 代码量 4000 行 项目难度 ★★★★★ 项目简介 图书馆管理系统是图书馆管理工作中不可缺少的部分,它对于图书馆 的管理者和使用者都非常重要,所以图书馆管理系统应该为管理者与 读者提供充足的信息和快捷的数据处理手段,但长期以来,人们使用 传统的人工方式或性能较低的图书馆管理系统管理图书馆的日常事 务,操作流程比较繁琐。一个成功的图书馆管理系统应提供快速的图 书信息检索功能、快捷的图书借阅、归还流程。从读者与图书馆管理 员的角度出发,本着以读者借书、还书快捷、方便的原则,本系统具 有以下特点:  确保系统具有良好的系统性能,友好的用户界面。  较高的处理效率,便于使用和维护。  采用成熟技术开发,使系统具有较高的技术水平和较长的生 命周期。  系统尽可能简化图书馆管理员的重复工作,提高工作效率。  简化数据查询、统计难度。 项目目的 掌握 SQL2005 数据 掌握 JDBC 连接 SQL2005 掌握窗体的使用 涉及主要技术 Swing API、JAVA EXCEL API、JDBC 数据库访问、多层架构模式 数据库 Microsoft SQL Server 2005 编程环境 开发平台:JDK 1.5.0 以上版本 开发工具:NetBeans IDE 5.0 以上版本 数 据 库:Microsoft SQL Server 2005 及以上版本 项目特点 通过学习本案例,学生掌握利用 JAVA 开发大型 C/S 软件的各项 技巧,在开发文档齐全的情况下,学生可以自行完成项目的开发,通 过该项目的实践开发,学生可提高自学能力,并对整个软件开发过程 有了较为深刻的认识。 技术重点 1. 系统架构层次 2. 使用 JDBC 访问数据库 技术难点 JAVA 桌面应用程序开发高级技巧 -46- C/S 结构项目实训__JAVA 语言版 1.需求分析 1.1 项目背景 图书馆管理系统是图书馆管理工作中不可缺少的部分,它对于图书馆的管理者和使用者都非 常重要,所以图书馆管理系统应该为管理者与读者提供充足的信息和快捷的数据处理手段, 但长期以来,人们使用传统的人工方式或性能较低的图书馆管理系统管理图书馆的日常事 务,操作流程比较繁琐。一个成功的图书馆管理系统应提供快速的图书信息检索功能、快捷 的图书借阅、归还流程。从读者与图书馆管理员的角度出发,本着以读者借书、还书快捷、 方便的原则,本系统具有以下特点:  确保系统具有良好的系统性能,友好的用户界面。  较高的处理效率,便于使用和维护。  采用成熟技术开发,使系统具有较高的技术水平和较长的生命周期。  系统尽可能简化图书馆管理员的重复工作,提高工作效率。  简化数据查询、统计难度。 1.2 功能划分 根据图书管理系统的特点,可以将本系统分为 4 大功能模块,分别为基础数据维护、图书借 阅管理、新书预购管理、系统维护。本系统各个部分及其包括的具体功能模块如下图所示 图 9-1 模块图 -47- C/S 结构项目实训__JAVA 语言版 2.数据库设计 2.1 逻辑关系图 FK_TB_BOOKI_REFERENCE_TB_BOOKT FK_TB_BORRO_REFERENCE_TB_OPERA FK_TB_BORRO_REFERENCE_TB_BOOKIFK_TB_ORDER_REFERENCE_TB_BOOKI FK_TB_STOCK_REFERENCE_TB_BOOKI FK_TB_BORRO_REFERENCE_TB_READE tb_stockpile ISBN amount varchar(13) int tb_reader name sex age identityCard date maxNum tel keepMoney zj zy ISBN bztime varchar(10) varchar(2) int varchar(30) datetime int varchar(50) money int varchar(50) varchar(13) datetime tb_order ISBN date number operator checkAndAccept zk varchar(13) datetime int varchar(6) int float tb_operator id name sex age identityCard workdate tel admin password int varchar(12) varchar(2) int varchar(30) datetime varchar(50) bit varchar(10) tb_borrow id bookISBN operatorId readerISBN isback borrowDate backDate varchar(20) varchar(13) int varchar(13) int datetime datetime tb_bookType id typeName days fk int varchar(20) int float tb_bookInfo ISBN typeId bookname writer translator publisher date price varchar(13) int varchar(40) varchar(21) varchar(30) varchar(50) smalldatetime money 图 9-2 类图 2.2 表汇总 图 9-3 图书信息表 -48- C/S 结构项目实训__JAVA 语言版 图 9-4 图书类型表 图 9-5 图书借阅表 图 9-6 系统操作员表 -49- C/S 结构项目实训__JAVA 语言版 图 9-7 新书预阅表 图 9-8 读者信息表 图 9-9 库存表 -50- C/S 结构项目实训__JAVA 语言版 3.界面设计 图 9-10 登录界面 图 9-11 主界面 -51- C/S 结构项目实训__JAVA 语言版 图 9-12 读者信息添加 图 9-13 读者信息删除与修改 -52- C/S 结构项目实训__JAVA 语言版 图 9-14 图书信息添加 图 9-15 图书信息修改 -53- C/S 结构项目实训__JAVA 语言版 固定资产管理系统 项目编号:S1-CS-JAVA-010  项目概述 固定资产管理系统简介 项目名称 固定资产管理系统 时间安排 共 10 课时,理论 2,实践 8 代码量 3000 行 项目难度 ★★★★★ 项目简介 师创软件开发公司业务不断发展,人员越来越多,固定资产的管 理人员压力逐渐增大,需要建立数据库和使用软件系统来进行管理。 公司对固定资产的定义为:价值超过 2000 元人民币的设备。例如 彩色喷墨打印机、计算机、扫描仪、机房其他设备,而打印纸、书籍 等不属于固定资产,属于易耗品。 通过同资产管理人员和该公司领导的面谈,总结和归纳之后,他 们需要软件具备以下的功能: 1、 管理员登录 2、 固定资产信息管理 3、 人员信息管理 4、 资产的领用 5、 资产的归还 6、 资产信息浏览和查询 项目目的 掌握 SQL2005 数据 掌握 JDBC 连接 SQL2005 掌握窗体的使用 涉及主要技术 Swing API、JDBC 数据库访问、多层架构模式 数据库 Microsoft SQL Server 2005 编程环境 开发平台:JDK 1.5.0 以上版本 开发工具:NetBeans IDE 5.0 以上版本 数 据 库:Microsoft SQL Server 2005 及以上版本 项目特点 通过学习本案例,学生掌握利用 JAVA 开发大型 C/S 软件的各项 技巧,在开发文档齐全的情况下,学生可以自行完成项目的开发,通 过该项目的实践开发,学生可提高自学能力,并对整个软件开发过程 有了较为深刻的认识。 技术重点 1. 系统架构层次 2. 使用 JDBC 访问数据库 技术难点 JDBC 操作 -54- C/S 结构项目实训__JAVA 语言版 1.需求分析 1.1 项目背景 师创软件开发公司业务不断发展,人员越来越多,固定资产的管理人员压力逐渐增大, 需要建立数据库和使用软件系统来进行管理。 公司对固定资产的定义为:价值超过 2000 元人民币的设备。例如彩色喷墨打印机、计 算机、扫描仪、机房其他设备,而打印纸、书籍等不属于固定资产,属于易耗品。 通过同资产管理人员和该公司领导的面谈,总结和归纳之后,他们需要软件具备以下的 功能: 1、 管理员登录 2、 固定资产信息管理 3、 人员信息管理 4、 资产的领用 5、 资产的归还 6、 资产信息浏览和查询 1.2 功能划分 功能点 难度 登录 ★★ 添加资产 ★★★★ 修改资产 ★★★ 删除资产 ★★★ 查询资产 ★★★★ 借用资产 ★★★ 归还资产 ★★★ 表 10-1 功能划分 1) 管理员登录 要使用本系统必须先登录,并且只有固定资产管理员能够登录。登录的时候需要填写正 确的用户名和密码,管理员可以修改自己的密码。 系统允许有有多个固定资产的管理员,每个管理员的权限相同。 2) 固定资产信息管理 固定资产信息管理又分为:  固定资产类别管理 固定资产的类别在录入资产信息之前就定义好,录入资产信息之后可以增加新的类别。 类别要求分为两级,如大类可以是办公外设、数码产品、计算机等;小类分为办公外设:传 -55- C/S 结构项目实训__JAVA 语言版 真机、复印机、打印机、其它;数码产品:数码相机、投影仪;计算机:笔记本电脑、台式 机、服务器等。 类别应允许添加和删除操作。  固定资产信息管理 资产的信息包括编号、名称、类别、型号、价值、购买日期、状态、使用者、备注等。 资产型号是文本信息,资产的状态分为:正常、维修、报废,使用者为空表示资产未被使用。 资产应允许执行添加、修改和删除操作。 3) 人员信息管理 这里的“人员”是指可能领用资产的人,人员的信息包括人员编号、姓名、职务和备注。 4) 资产的领用 已经登记的人员,可以领用固定资产,领用时需要记录的信息有:设备编号、领用日期、 管理员、用途、备注。 只有状态为正常且使用者为空的资产才能被领用,在维修或者已经报废的资产不能够领 用。 5) 资产的归还 资产使用完毕后要归还给管理员,归还时根据要依据领用时的记录来填写如下信息:归 还日期、管理员等。 6) 资产信息浏览和查询 资产信息查询又可以分为:  按资产类别浏览 按资产类别浏览资产信息,类别分成两级,要求能够显示大类和小类下面的资产情况、 资产状况。  查询资产信息 可以按资产编号、资产类别、使用者查询资产详细信息,按使用者查询显示该人员领用 的所有资产。 -56- C/S 结构项目实训__JAVA 语言版 2.界面设计 图 10-1 登录 图 10-2 主界面 -57- C/S 结构项目实训__JAVA 语言版 图 10-3 添加资产 图 10-4 修改资产 -58- C/S 结构项目实训__JAVA 语言版 图 10-5 删除资产 图 10-6 借用/归还资产 -59- C/S 结构项目实训__JAVA 语言版 汽车销售管理系统 项目编号:S1-CS-JAVA-011  项目概述 汽车销售管理系统 项目名称 汽车销售管理系统 时间安排 共 20 课时,理论 6,实践 14 代码量 5000 行 项目难度 ★★★☆☆ 项目简介 目前大多数厂商忽略了汽车销售管理系统的重要性,而本系统专为 具有一定规模和经济条件的大型汽车厂设计。从进货管理:车辆采购、 车辆入库,销售管理到车辆销售、收益统计等,为每个环节明确分工, 并通过可视化的软件支持,有效减小了人为差错的概率,代之以高效、 便捷、准确的数字化服务系统,使汽车销售管理更加规范化。 根据所学的数据库原理与程序设计的知识,能够针对一个小型的数据库 管理系统进行系统的需求分析,系统设计,数据库设计,编码,测试等, 完成题目要求的功能,加深对数据库系统、软件工程、程序设计语言的 理论知识的理解和应用水平,通过设计实际的数据库系统应用课题,进一 步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解 决问题的能力。从而达到掌握开发一个小型数据库的目的。 项目目的 掌握 SQL2005 数据 掌握 JDBC 连接 SQL2005 掌握窗体的使用 涉及主要技术 Swing API、JDBC 数据库访问、多层架构模式 数据库 Microsoft SQL Server 2005 编程环境 开发平台:JDK 1.5.0 以上版本 开发工具:NetBeans IDE 5.0 以上版本 数 据 库:Microsoft SQL Server 2005 及以上版本 项目特点 通过学习本案例,学生掌握利用 JAVA 开发大型 C/S 软件的各项技 巧,在开发文档齐全的情况下,学生可以自行完成项目的开发,通过该 项目的实践开发,学生可提高自学能力,并对整个软件开发过程有了较 为深刻的认识。 技术重点 1. 系统架构层次 2. 使用 JDBC 访问数据库 技术难点 JDBC 操作 -60- C/S 结构项目实训__JAVA 语言版 1.需求分析 1.1 项目背景 进行需求分析首先是调查清楚用户的实际要求,与用户达成共识,然后分析与表达这些需求。 调查厂商与各部门需求的具体步骤如下: (1).调查厂商组织情况。包括了解各组织的部门组成情况,各部门的职责等,为分析 信息流程做准备。 (2).调查各部门的业务活动情况。包括了解各个部门和使用什么数据,如何加工处理 这些数据,输出什么信息,输出到什么部门,输出结果的格式是什么,这些是调查的重点。 (3).在熟悉了业务活动的基础上,协助用户明确对新系统的各种要求,包括信息要求, 处理要求,安全性与完整性要求,这是调查的又一重点。 (4).确定新系统的边界。对前面调查的结果进行初步分析,确定哪些功能由计算机完 成或将来准备让计算机完成,哪些活动由人工完成。 调查本地从事汽车销售的企业,根据企业汽车销售的情况,设计用于汽车销售的管理系统, 主要功能有: ①基础信息管理:厂商信息、车型信息和客户信息; ②进货管理:车辆采购、车辆入库; ③销售管理:车辆销售(处理车辆销售单)、销售代办(处理销售代办单)、 车辆查询、销售日记录、销售月记录; ④仓库管理:库存车辆、仓库明细、进销存统计; ⑤系统维护:如数据安全管理(含备份与恢复)、操作员管理、权限设置等; 1.2 功能划分 一、市场工作 1、 获取订单(有能力可做) A、联络经销商仓管员,了解经销商库存; B、联络经销商采购购─报价; C、结合经销商库存情况,主动争取订单; D、寻找经销商的配货意向进行展异议处理; E、获得订单,并交由分公司助理安排送货; F、跟踪送货员贷物交接情况及协助送贷员解决收款中遇到的困难。 二、 客户拜访及市场工作 第一步 准备工作: A、检查每周工作记事表,确定当日拜记路线; B、 准备当日需解决的问题,预约当日需拜访客户; 第二步 销售拜访: A、接触:问候或自我介绍通过改变交谈环境、车轮话术等方法,确定良好的沟通氛围; B、收集市场资讯及客户销售资料及填报表; C、了解竞争对手及品牌机型的市场动向; D、进行异议处理、协助客户在销售中存在的问题。 第三步 总结与调整: -61- C/S 结构项目实训__JAVA 语言版 A、回顾当日工作进展状况,填写每日《工作日记》; B、总结当时工作中遇到的问题,失误与成就,并及时做出调整; C、根据当时进展状况,对《每周工作记事》表做出调整。 2.数据库设计 2.1 逻辑关系图 图 11-1 数据库关系图 2.2 表汇总 表名 功能说明 tbl_customer (客户信息表) 存储客户信息 tbl_carinfor(车辆基本表) 存储车辆基本信息 tbl_supply(厂商基本信息) 存储厂商基本信息 tbl_ depository(仓库表) 存放仓库具体信息 tbl_car_sale( 车 辆 销 售 基 本 表) 存放车辆销售信息 tbl_order(订单表) 存放订单信息 表 11-1 表汇总 2.3 数据库说明 1) 客户基本表 -62- C/S 结构项目实训__JAVA 语言版 编号 名称 描述 数据类型 大小 备注 1 C_NO 客户号 CHAR 20 主键 2 User_NAME 客户姓名 CHAR 20 3 User_SEX 服务员性别 CHAR 4 4 User_AGE 服务员年龄 INT 18-100 5 User_tel 联系电话 CHAR 11 6 UNIT 工作单位 CHAR 20 表 11-2 客户基本表 2) 车辆基本表 编号 名称 描述 数据类型 大小 备注 1 CAR_NO 车型号 CHAR 10 主键 2 CAR_NAME 车辆名称 CHAR 20 车辆名称 3 INDUSTTY_NAME 厂商名 CHAR 4 PRICE 价格 FLOAT 5 STATUS 车辆状态 INT 被订 1、未订 0 表 11-3 表汇总 3) 厂商基本表 编号 名称 描述 数据类型 大小 备注 1 INDUSTTY_NO 厂商号 CHAR 10 主码:厂商统一编 号,具有唯一性 2 INDUSTTY_NAME 厂商名 CHAR 文本类型 有唯 一性 3 ADDRESS 地址 CHAR 10 4 STATUS 厂商状态 INT 5 CAR_AMOUNT 生产车辆总 数 INT 表 11-4 厂商基本表 4) 仓库表 编号 名称 描述 数据类型 大小 备注 1 BOX_NO 仓库号 CHAR 20 主键 2 ADDRESS 地址 CHAR 20 3 IN_AMOUNT 进货车辆数 CHAR 4 4 OU_AMOUNT 出货车辆数 INT 5 REMAIN_AMOUNT 库存车辆总 数 INT 表 11-5 仓库表 5) 车辆销售基本表 编号 名称 描述 数据类型 大小 备注 1 CAR_NO 车型号 CHAR 10 外码:参照车辆表的 车型号 2 INDUSTTY_NO 厂商号 CHAR 10 外码:依照厂商表的 厂商号 3 Sale_amount 出售车辆数 INT -63- C/S 结构项目实训__JAVA 语言版 编号 名称 描述 数据类型 大小 备注 4 CAR_MONEY 车辆总成本 FLOAT 车辆进货的成本 5 MONEY 获取总金额 FLOAT 6 BENIFT 利润 FLOAT 表 11-6 车辆销售基本表 6) 订单表 编号 名称 描述 数据类型 大小 备注 1 order_NO 订单号 INT 10 主键 2 C_NO 客户号 CHAR 20 外码:参照客户表的 客户号 3 order_date 订货日期 Date 订货时间 4 Hand_date 交货日期 Date 交货期限 5 INDUSTTY_NO 厂商号 CHAR 10 外码:依据厂商表中 的厂商号 6 MADE 是否存有 BOOLEAN 默认:false(没有) 7 orders 是否已订 BOOLEAN 默认:false (未订) 表 11-7 订单表 3.界面设计 图 11-2 登陆界面 图 11-3 登陆界面 -64- C/S 结构项目实训__JAVA 语言版 图 11-4 操作员管理界面 图 11-5 车辆添加界面 图 11-6 车辆销售管理界面 -65- C/S 结构项目实训__JAVA 语言版 图 11-7 车辆库存查询界面 -66- C/S 结构项目实训__JAVA 语言版 第四阶段:Java 综合 本阶段项目 1. 进销存系统 2. 企业即时通 -67- C/S 结构项目实训__JAVA 语言版 进销存系统 项目编号:S1-CS-JAVA-012  项目概述 PSS 进销存系统简介 项目名称 PSS-进销存系统 时间安排 共 20 课时,理论 4,实践 16 代码量 5000 行 项目难度 ★★★★★ 项目简介 PSS 进销存软件是一款通用性极强的商业企业进销存管理系统, 软件适用于食品、服装、保健品、电子、电器、物资、化妆品等商业 领域的企业。软件覆盖商业企业商品的采购、销售、库存、管理决策 支持等各个环节。软件的采购管理、销售管理、库存管理功能强大, 灵活,同时为用户提供方便实用的模糊查询功能,用户可以在最短时 间内找到自己所需要的信息。 项目目的 掌握 MIS 软件开发技巧 掌握进销存软件的基本业务流程 掌握 JAVA 桌面开发的基本技巧 学习 JAVA 的 Excel 导出技术 涉及主要技术 Swing API、JAVA EXCEL API、JDBC 数据库访问、多层架构模式 数据库 Microsoft SQL Server 2000 编程环境 开发平台:JDK 1.5.0 以上版本 开发工具:NetBeans IDE 5.0 以上版本 数 据 库:Microsoft SQL Server 2000 及以上版本 项目特点 通过学习本案例,学生掌握利用 JAVA 开发大型 C/S 软件的各项 技巧,在开发文档齐全的情况下,学生可以自行完成项目的开发,通 过该项目的实践开发,学生可提高自学能力,并对整个软件开发过程 有了较为深刻的认识。 技术重点 1. 系统架构层次 2. 使用 JDBC 访问数据库 技术难点 JAVA 桌面应用程序开发高级技巧 -68- C/S 结构项目实训__JAVA 语言版 1.需求分析 1.1 项目背景 在市场经济中,销售是企业运作的重要环节。为了更好地推动销售,业务信息交流是这 些企业业务活动的主要特点。如何更加有效的处理企业的各种业务活动是企业需要迫切解决 的问题。 在传统方式上,公司之间通常采用电 传、电报、电话等方式传递订货、发货、到 货、压货、换货、退货等信息。总公司的商 务部门在接到分公司或代理商传来的定单 和银行汇款单据传真件后,开据产品出库通 知,然后再把相关的进、销、存信息手工存 档,再对这些信息进行统计分析,才能了解 到整个公司的生产、销售和库存情况。 进销存管理是商业企业经营管理中的 核心环节,也是一个企业能否取得效益的关 键。如果能做到合理生产、及时销售、库存 量最小、减少积压,那么企业就能取得最佳 的效益。 传统的信息传递和管理方式不仅效率低,可靠性、安全性和保密性也无法满足要求,而 且数据统计时间严重滞后,往往是当领导了解到企业的“进、销、存”出现问题时,早已产 生了严重的后果。即使是没有分公司的企业,使用传统的手工方式管理也存在同样的问题: 信息化不足,计算机使用率低,大量的日常工作皆是手工处理,导致工作效率低落,企业内 部沟通不良等等问题很难克服,仓库管理很不合理,不能及时根据需要调整库存。而且在手 工管理的情况下,销售人员很难对客户做出正确的供货承诺,同时企业的生产部门也缺少一 份准确的生产计划,目前的生产状况和市场的需求很难正确反映到生产中去。这在激烈的市 场中是非常不利的。 -69- C/S 结构项目实训__JAVA 语言版 存货 销售 付给 $ 采购请购单 付给 $ 销售订单 $ $ $ 采购 付给 $ 采购单 仓库 图 12-1 进销存流程图 1.2 功能划分 根据与客户实际调研获得的关键需求与我们对数据流的具体分析,我们可以得到如下功 能模块: 图 12-2 进销存流程图 各功能模块分析: 基本资料维护模块 商品信息、供货商、客户、员工等基本参数的设置。 采购管理模块 进行商品采购入库、采购退货、进/退单据和当前库存查询、管理与供货商的往来情况。 -70- C/S 结构项目实训__JAVA 语言版 销售管理模块 进行商品销售、顾客退货、销/退单据和当前库存查询、管理与客户的往来情况。 库存管理模块 包括库存盘点功能和库存商品报警查询。 系统维护模块 包括用户资料、用户权限的维护及用户密码的修改。 报表打印模块 完整的统计查询功能,可以对商品材料、采购报表及年采购报表进行查询并打印。 2.详细设计 进销存系统的角色主要为系统用户,他掌管着所有用例,依据不同的权限员工可以处理 不同的用例。系统中维护一个超级管理员,他隶属于员工,他对任何用例都有权限,并在系 统中不能被删除,是永久用户。 采购 销售 库存 系统维护 报表导出 登录系统 员工 维护基本资料 图 12-3 进销存用例图 根据总用例图,我们可以了解到在进销存系统中,我们的主要角色是员工,员工可以操 作的用例包括系统登录、基本资料维护、采购、销售、库存、系统维护以及报表导出。下面 我们来分析每一个子用例。 3.1 系统登录 登录为用户使用系统的起始点,用户必须先通过身份验证,然后系统根据其身份确定他 的操作权限后,方可对进销存的业务进行相关操作,登录流程如下图所示: -71- C/S 结构项目实训__JAVA 语言版 员工 基本资料维护 销售员数据维护 维护产品数据 维护客户数据 维护供应商数据 <> <> 图 12-4 基本资料维护用例图 在基本资料维护中可以对商品信息、供货商、客户、销售员工进行设置。 3.2 基本资料维护 销售员工基本资料维护: 销售员工在企业中负责联络客户,将商品销售给客户。该用例主要是用户对企业销售员 工的统一管理。企业增加新的销售员工时,用户可以在系统中添加该员工的基本信息,如销 售员工资料发生变动,可以对其资料进行修改,对于离职的销售员工可以将其删除,但 该销 售员工必须没有业务客户。可修改的资料内容包括销售员工编号、中文姓名、英文姓名、电 话、移动电话以及联络地址。 商品资料维护: 商品资料是企业经营商品的基本信息,是库存资料的保障。该用例主要维护商品资料信 息的各项操作,对商品的增加、删除及修改进行管理。用户可以增加新的商品信息,可以对 已有商品资料进行修改,如果某个商品没有其交易记录,那么员工也可以将此商品删除。商 品资料主要内容包括商品编号、商品名称、安全存量、当前数量、建议采购价、建议销售价、 最后一次采购日期以及最后一次销售日期。 客户资料维护: 客户资料是企业经营的核心,也是销售订单的来源。该用例主要管理客户资料信息的各 项操作,对客户资料的增加、删除及修改进行管理。员工可以新增和修改客户资料,如果客 户没有过交易记录,员工可以将此客户删除。需维护的客户资料内容包括客户编号、公司简 称、公司全称、负责人称谓、负责人、电话、传真、移动电话、销售员、客户地址及送货地 址。客户的联络资料也是属于客户资料的一部分,其中包括联络人编号、中文名称、英文名 称、联络人称谓、电话、移动电话。员工还可以查看客户的交易记录,交易记录主要记载交 易单号、交易日期、售货员、送货地址、发票号及总交易金额。 供应商资料维护: 供应商是货物的提供者。该用例主要管理供应商资料信息的各项操作,对供应商资料的增 加、删除及修改进行管理。员工可以新增和修改供应商资料,如果供应商没有过交易记录, 员工可以将此供应商删除。供应商需维护的资料内容包括供应商编号、供应商简称、供应商 -72- C/S 结构项目实训__JAVA 语言版 全称、负责人称谓、负责人姓名、电话、传真、移动电话、供应商地址、工厂地址及最近一 次进货日期。供应商的联络资料也是属于供应商资料的一部分,其中包括:中文名称、英文 名称、联络人称谓、电话、移动电话。员工还可以查看供应商的交易标志、交易单号、交易 日期、总交易金额。 3.3 采购 员工 采购 采购入库 采购退货 <> <> 图 12-5 采购用例图 在采购维护中可以对采购入库和采购退货进行设置。 采购入库: 用于录入公司的采购订单,并将合格产品置于库存。该用例说明了员工可以修改入库单 据、增加入库单据、删除及查询入库单据。 当采购入库单发生变化时可以对其进行修改,但需满足如下条件:删除商品时保证当前 库存数量-该商品在单据上的数量大于等于 0。 商品采购入库时,可以新增采购入库单,录入单据及单据的详细内容。新增商品时系统 根据单据中进货日期和该单据上的供应商最近一次进货日期比较,如果本单据的进货日期在 供应商最近一次进货日期之后,用本次进货日期的值替换供应商的最近一次进货日期。同时, 更新每种商品的库存数量,更新公式为当前库存数量=当前库存数量+本次进货数量。 采购入库单可以被删除,但必须保证单据中每种商品的当前库存量-该商品在单据上的 数量大于 0。 采购入库单主要内容包括供应商编号、供应商名称、采购单单号、采购日期、总金额以 及商品明细,其中商品明细包括商品编号、商品数量、单价及金额。 采购退货: 用于管理公司的采购退货单,记录商品退货情况。该用例说明了员工可以修改采购退货单 据,增加采购退货单据,删除单据。 当采购单发生变化时可以对其进行修改,但需满足如下条件:新增一个退货商品时保证当 前库存数量-新增商品数量大于等于 0。对采购入库单进行修改后,库存数量按照当前商品 库存数量+修改前数量-修改后数量进行计算。 -73- C/S 结构项目实训__JAVA 语言版 商品采购退货时,可以新增采购退货单,录入退货单据及单据的详细内容。同时,更新每 种商品的库存数量,更新公式为当前库存数量=当前库存数量-本次进货数量。 采购退货单可以被删除,删除后更新库存量公式为当前库存量+删除前采购入库单据的商 品数量。 采购退货单主要内容包括供应商编号、供应商名称、单号、退货日期、总金额以及商品明 细,其中商品明细包括商品编号、商品数量、单价及金额。 3.4 销售 员工 销售 销售出库 销售退货 <> <> 图 12-6 销售用例图 维护销售过程中的销售出库单和销售退货单。 销售出库: 用于录入公司的销售单,并将销售商品出库。该用例说明了员工可以修改销售出库单据、 增加销售出库单据、删除及查询销售出库单据。 当销售出库单发生变化时可以对其进行修改,但需满足如下条件:增加销售商品时保证 当前库存数量-该商品在单据上的数量>=0。 商品销售出库时,可以新增销售出库单,录入单据及单据的详细内容。新增销售商品时 系统根据单据中出货日期和该单据上的客户最近一次购货日期比较,如果本单据的出货日期 在供应商最近一次购货日期之后,用本出货日期的值替换客户的最近一次购货日期。同时, 更新每种商品的库存数量,更新公式为当前库存数量=当前库存数量-本次单据中商品数 量。 销售出库单可以被删除,删除后更新商品库存量,公式为库存量=当前库存量+被删除 的单据的商品数量。 销售出库单主要内容包括客户编号、客户名称、单号、销售日期、送货地址、业务员编 号、总金额以及销售明细,每条销售明细数据包括商品编号、商品数量、单价及金额。 销售退货: 用于管理公司的销售退货单,记录销售商品退货情况。该用例说明了员工可以修改销售退 货单据,增加销售退货单据,删除及查询单据。 商品销售退货时,可以新增销售退货单,录入退货单据及单据的详细内容。同时,更新每 -74- C/S 结构项目实训__JAVA 语言版 种商品的库存数量,更新公式为当前库存数量=当前库存数量+本次单据上的商品数量。 销售退货单可以被删除,删除后更新库存量公式为库存量=当前库存量-被删除退货单据 的商品数量。 销售退货单主要内容包括客户编号、客户名称、单号、退货日期、总金额以及商品明细, 其中商品明细包括商品编号、商品数量、单价及金额。 3.5 库存 员工 库存 库存查询 <> 图 12-7 库存用例图 依据各种条件对数据库进行查询。 库存查询: 库存是进销存系统的一个核心单元,每日盘点库存也是企业必须的工作,库存查询可以 根据不同的条件组合对商品的库存情况进行盘点核对。并及时发现和处理库存问题。查询的 库存内容包括:库存编号、当前数量、商品名称、安全存量、最后进货日期、最后送货日期、 建议购买价、建议销售价。 3.6 系统维护 员工 系统维护 用户资料维护 用户权限管理 密码修改 <> <> <> 图 12-8 用户资料维护用例图 对员工资料进行维护,设置员工权限。 -75- C/S 结构项目实训__JAVA 语言版 用户资料维护: 员工是进销存系统的使用用户,它负责触发各项业务,员工的资料管理是非常重要的。 该用例主要负责对用户资料进行设置。 可以设置新进员工的资料,为其提供用户名和密码。 当员工资料发生变化时,可以修改员工的资料。 可以将某一员工禁用,使其无法在使用该进销存系统。 用户资料主要包括如下内容:用户编号、用户真实姓名、用户密码。 密码修改: 登录员工可以设置自己的密码。 密码修改用例描述: 3.7 打印报表 员工 报表打印 打印库存预警报表 打印商品资料 打印采购报表 打印采购年报表 <> <> <> <> 图 12-9 报表打印用例图 员工可以将报表打印,查看。 库存预警: 对当前库存数量低于安全存量的商品进行预警。 商品资料报表: 打印商品资料内容。 采购报表: 指定汇总开始日期和截止日期对供应商供货进行汇总,打印汇总报表。用户还可以按供 应商、商品、按供应商(商品)、商品(供应商)等 4 种方式进行汇总。并将其打印。 -76- C/S 结构项目实训__JAVA 语言版 3.数据库设计 3.1 表汇总 表 功能说明 Users 用于存放用户的基本资料。 SupplierContactMan 用于存放供应商的联络人资料。 Supplier 用于存放供应商的除联络人资料外的其他资料。 SalesMan 用于存放公司销售员工的资料。 PurchaseMaster 用于存放每张采购单据的基本资料。 PurchaseDetail 用于存放每张采购单据的商品购买明细。 Product 用于存放公司的商品资料。 DeliveryMaster 用于存放每张销售单据的基本资料。 DeliveryDetail 用于存放每张销售单据的商品明细。 CustomerContactMan 用于存放客户的联络人资料。 Customer 用于存放客户的除联络人资料外的其他资料。 表 12-1 PSS 系统表汇总 3.2 数据库说明 客户信息表 Customer 表字段定义 表名 Customer(客户信息表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 CustomerID varchar(8) 非空 PK 编号 CustomerSimpleName varchar(20) 非空 客户公司简 称 CustomerName varchar(60) 空 客户公司全 称 Owner varchar(30) 空 负责人 Title varchar(30) 空 负责人称谓 Telephone varchar(20) 空 电话 -77- C/S 结构项目实训__JAVA 语言版 MobilePhone varchar(20) 空 移动电话 Fax varchar(20) 空 传真 SalesManID varchar(8) 空 FK 销售员编号 CutomerAddress varchar(100) 空 客户地址 DeliveryAddress varchar(100) 空 客户送货地 址 InvoiceAddress varchar(100) 空 开票地址 LastDeliveryDate datetime 空 最后送货日 期 补充说明 表 12-2 Customer 表字段定义 Customer 表外键定义 外键 子 父 FK_Customer_SalesMan SalesManID SalesMan.SalesManID FK_CustomerContactMan_Cust omer CustomerContactMan.Customer Id CustomerID Customer_DeliveryMaster_FK1 DeliveryMaster.CustomerID CustomerID 表 12-3 Customer 表外键定义 客户联系人表 CustomerContactMan 表字段定义 表名 CustomerContactMan(客户联系人) 列名 数据类型(精度范围) 空/非空 约束条件 说明 ContactID int 非空 PK(自增) 编号 ChineseName varchar(10) 非空 中文名称 EnglishName varchar(60) 空 英文名称 Ttitle varchar(10) 空 联络人称 谓 Telephone varchar(20) 空 电话 MobilePhone varchar(20) 空 移动电话 CustomerId varchar(8) 空 FK 客户编号 补充说明 表 12-4 CustomerContactMan 表字段定义 CustomerContactMan 表外键定义 -78- C/S 结构项目实训__JAVA 语言版 外键 子 父 FK_CustomerContactMan_Customer CustomerId Customer.CustomerI D 表 12-5 CustomerContactMan 表外键定义 销售明细表 DeliveryDetail 表字段定义 表名 DeliveryDetail(销售明细表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 DeliveryID varchar(8) 非空 FK 销售单单 号 ProductID varchar(8) 非空 FK 产品编号 SalesQuantity decimal(18,0) 非空 Default:0 销售数量 SalesUnitPrice decimal(18,0) 非空 Default:0 单价 SalesAmount decimal(18,0) 非空 Default:0 金额 补充说明 表 12-6 DeliveryDetail 表字段定义 DeliveryDetail 表外键定义 外键 子 父 FK_DeliveryDetail_DeliveryMaste r DeliveryID DeliveryMaster.DeliveryID Product_DeliveryDetail_FK1 ProductID Product.ProductID 表 12-7 DeliveryDetail 表外键定义 销售主表 DeliveryMaster 表字段定义 表名 DeliveryMaster(销售主表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 DeliveryID varchar(8) 非空 PK 销售单单号 DeliveryPropert y int 非空 Default:1 销售 1,销售退货 -1 DeliveryDate datetime 非空 销售日期/退货日 期 CustomerID varchar(8) 非空 FK 客户编号 SalesManID varchar(8) 非空 FK 销售员工编号 DeliveryAddres varchar(100) 空 送货地址 -79- C/S 结构项目实训__JAVA 语言版 s 补充说明 表 12-8 DeliveryMaster 表字段定义 DeliveryMaster 表外键定义 外键 子 父 Customer_DeliveryMaster_FK1 CustomerID Customer.CustomerID SalesMan_DeliveryMaster_FK1 SalesManID SalesMan.SalesManID FK_DeliveryDetail_DeliveryMaste r DeliveryDetail.DeliveryID DeliveryID 表 12-9 DeliveryMaster 表外键定义 产品表 Product 表字段定义 表名 Product(产品表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 ProductID varchar(8) 非空 PK 编号 ProductName varchar(30) 非空 产品名称 SafeStock decimal(18,0) 非空 Defalut:0 安全存量 LastPurchaseDate datetime 空 最后进货日 期 LastDeliveryDate datetime 空 最后送货日 期 Quantity decimal(18,0) 非空 Defalut:0 当前数量 SuggestBuyPrice decimal(18,0) 空 建议购买价 SuggestSalePrice decimal(18,0) 空 建议销售价 补充说明 表 12-10 Product 表字段定义 Product 表外键定义 外键 子 父 Product_DeliveryDetail_FK1 DeliveryDetail.ProductID ProductID Product_PurchaseDetail_FK1 PurchaseDetail.ProductID ProductID 表 12-11 Product 表外键定义 采购明细表 -80- C/S 结构项目实训__JAVA 语言版 PruchaseDetail 表字段定义 表名 PurchaseDetail(采购明细表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 PurchaseID varchar(8) 非空 FK 采购单号 ProductID varchar(8) 非空 FK 产品编号 PurchaseQuantity decimal(18,0) 非空 Defalut:0 数量 PurchaseUnitPrice decimal(18,0) 非空 Defalut:0 单价 PurchaseAmount decimal(18,0) 非空 Defalut:0 金额 补充说明 表 12-12 PruchaseDetail 表字段定义 PurchaseDetail 表外键定义 外键 子 父 Product_PurchaseDetail_FK1 ProductID Product.ProductID FK_PurchaseDetail_PurchaseMast er PurchaseID PurchaseMaster.PurchaseID 表 12-13 PruchaseDetail 表外键的定义 采购主表 PurchaseMaster 表字段定义 表名 PurchaseMaster(采购主表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 PurchaseID varchar(8) 非空 PK 编号 PurchaseDate datetime 空 采购日期/退货日期 SupplierID varchar(8) 空 FK 供应商编号 PurchasePropert y int 空 采购单入库 1,采购退货 -1 补充说明 表 12-14 PruchaseMaster 表字段定义 PurchaseMaster 表外键定义 外键 子 父 FK_PurchaseMaster_Supplier SupplierID Supplier.SupplierID FK_PurchaseDetail_PurchaseMast er PurchaseDetail.PurchaseID PurchaseID 表 12-15 PruchaseMaster 表外键定义 -81- C/S 结构项目实训__JAVA 语言版 销售人员表 SalesMan 表字段定义 表名 SalesMan(销售人员表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 SalesManID varchar(8) 非空 PK 编号 ChineseName varchar(10) 非空 中文名称 EnglishName varchar(60) 空 英文名称 Telephone varchar(20) 空 电话 MobilePhone varchar(20) 空 移动电话 ContactAddress varchar(50) 空 联络地址 Email varchar(30) 空 电子邮件 补充说明 表 12-16 Salesman 表字段定义 SalesMan 表外键定义 外键 子 父 FK_Customer_SalesMan Customer.SalesManID SalesManID SalesMan_DeliveryMaster_FK1 DeliveryMaster.SalesManID SalesManID 表 12-17 Salesman 表外键定义 供应商资料表 Supplier 表字段定义 表名 Supplier(供应商资料表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 SupplierID varchar(8) 非空 PK 编号 SupplierSimpleNa me varchar(20) 非空 供应商简称 SupplierName varchar(60) 空 供应商全称 Owner varchar(30) 空 负责人 Title varchar(30) 空 负责人称谓 Telephone varchar(20) 空 电话 MobilePhone varchar(20) 空 移动电话 Fax varchar(20) 空 传真 -82- C/S 结构项目实训__JAVA 语言版 CompanyAddress varchar(100) 空 公司地址 FactoryAddress varchar(100) 空 工厂地址 LastPurchaseDate datetime 空 最后进货日期 补充说明 表 12-18 Supplier 表字段定义 Supplier 表外键定义 外键 子 父 FK_PurchaseMaster_Supplier PurchaseMaster.SupplierID SupplierID FK_SupplierContactMan_Suppli er SupplierContactMan.SupplierId SupplierID 表 12-19 Supplier 表外键定义 供应商联系人表 SupplierContactMan 表字段定义 表名 SupplierContactMan(供应商联系人表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 ContactID int 非空 PK(自增) 编号 ChineseName varchar(10) 非空 中文名称 EnglishName varchar(60) 空 英文名称 Ttitle varchar(50) 空 联络人称谓 Telephone varchar(20) 空 电话 MobilePhone varchar(20) 空 移动电话 SupplierId varchar(8) 空 FK 供应商编号 补充说明 表 12-20 SupplierConstantMan 表字段定义 SupplierContactMan 表外键定义 外键 子 父 FK_SupplierContactMan_Suppli er SupplierId Supplier.SupplierID 表 12-21 SupplierConstantMan 表外键定义 用户表 Users 表的字段定义 表名 Users(用户表) -83- C/S 结构项目实训__JAVA 语言版 列名 数据类型(精度范围) 空/非空 约束条件 说明 UserID varchar(8) 非空 PK 用户编号 UserName varchar(30) 非空 用户名 PasswordCode char(128) 非空 Defalut:0000 00 密码 IsUse int 空 Defalut:1 正常 1,禁用-1 补充说明 表 12-22 users 表字段定义 Users 表的外键定义 外键 子 父 FK_UserAuthority_Users UserAuthority.UserID UserID 表 12-23 users 表外键定义 4.界面设计 4.1 登录界面 登录窗体用于验证登录用户的合法性及权限。 图 12-10 登录界面 界面说明: 图片绘制使用的是 bean 包中的 PicturePanel 控件,用户名、密码字样使用 Jlabel 控件, 用户名输入使用 JTextField 控件,密码输入使用 JPasswordField 控件,确定和取消使用 JBut t-on 控件。 4.2 系统主操作界面 系统操作主界面,我们使用多文档窗体,符合一般人员的使用习惯。主窗体设七个菜单 项,用户使用这七个菜单项完成系统提供的全部功能。其中使用基本资料菜单项可以完成对 基本资料的维护和查询。使用采购菜单项可以完成企业的采购单据的录入、维护、查询。使 用销售菜单项可以完成企业的销售单据的录入、维护、查询。使用库存菜单项可以执行对库 存的查询。使用系统菜单项完成用户资料的维护,用户权限的分配,密码的修改。使用报表 -84- C/S 结构项目实训__JAVA 语言版 菜单项用户可以得到管理决策需要的信息。在帮助菜单项下面用户可以获得系统使用的常规 帮助和软件的相关信息。 图 12-11 主界面 主操作界面除了通过菜单项为用户提供具体操作的入口外,还通过工具栏为用户经常执 行的操作提供快捷入口。工具栏按钮共支持以下几种常用操作:维护商品资料、维护销售员 工资料、维护客户资料、维护供应商资料、采购、采购退货、库存查询、维护用户资料、分 配用户权限、退出系统、查看软件信息。 界面说明: MDI 窗体使用 JFrame 窗体。菜单使用 JMenuBar、JMenu、JMenuItem 控件,工具条使 用 JToolBar,其中工具条和背景图片放置在继承自 JDesktopPane 的 DeskPanel 类中。具体菜 单项如下表所示: 菜单项 菜单变量名 快捷键 加速器 【基本资料】【销售员资料】 【BasicData】【SaleManData】 DS Ctrl+S 【基本资料】【客户资料】 【BasicData】【CustomerData】 DC Ctrl+C 【基本资料】【商品资料】 【BasicData】【ProductData】 DP Ctrl+P 【基本资料】【供应商资料】 【BasicData】【SupplierData】 Ctrl+U 【采购管理】【采购单录入】 【StockManage】【StockLog】 SL 【采购管理】【退货单录入】 【StockManage】【StockBackLog】 SB 【销售管理】【销售单录入】 【DeliveryManage】【DeliveryLog】 Ctrl+E 【销售管理】【退货单录入】 【DeliveryManage】【DeliveryBackLog】 Shift+E 【库存管理】【库存查询】 【Store】【StockQuery】 OQ 【报表导出】【库存预警】 【Report】【StockReport】 RS 【报表导出】【商品资料】 【Report】【ProductReport】 RP 【报表导出】【采购汇总】 【Report】【SCollectReport】 Ctrl+R 【报表导出】【采购年报表】 【Report】【SYearReport】 Shift+R 【系统维护】【用户资料管理】 【Hold】【UserInfo】 【系统维护】【密码修改】 【Hold】【PasswordModify】 UM -85- C/S 结构项目实训__JAVA 语言版 【帮助】【帮助】 【Help】【UseHelp】 Ctrl+H 【帮助】【关于】 【Help】【About】 HA 表 12-24 系统界面说明 4.3 维护销售员工资料操作界面 图 12-12 维护销售员工资料操作界面 通过 JTable 控件就可以让用户方便的查看销售员工的资料。 图 12-13 维护销售员工资料操作界面 通过操作界面就可以让用户方便的录入新的销售员工的资料、修改或删除已有的员工资 料。 界面说明: 销售员工资料的操作界面是 javax.swing.JInternalFrame 窗体。 手工编号、中文姓名、英文姓名、电话、E-mail、移动电话、联络地址字样用 JLabel 控件显示,新增按钮、取消按钮、保存按钮、删除按钮及退出按钮采用 JButton 控件。输入 项采用 JTextField 控件。 -86- C/S 结构项目实训__JAVA 语言版 4.4 维护商品资料操作界面 图 12-14 维护商品资料操作界面 通过 JTable 控件就可以让用户查看商品资料。 图 12-15 维护商品资料操作界面 通过操作界面就可以让用户录入新的商品的资料、修改或删除已有的商品资料。 界面说明: 商品资料维护的操作界面是 javax.swing.JInternalFrame 窗体。 手工编号、产品名称、安全存量、建议购买价、建议销售价字样用 JLabel 控件显示, 新增按钮、取消按钮、保存按钮、删除按钮及退出按钮采用 JButton 控件。输入项采用 JTe xtFi-eld 控件。 4.5 维护客户资料操作界面 由于客户资料相对于销售员工资料而言,需要维护的内容较多,操作界面也稍微复杂一 些。我们采用 JTabbedPane 分别放置客户信息的基本操作,联络资料的操作及客户交易记录 的查询。 -87- C/S 结构项目实训__JAVA 语言版 图 12-16 客户基本资料 图 12-17 客户基本资料维护 客户的资料除了基本资料外,还包括联络人资料,每个客户都可能有多个联络人,使用 另外一个 JTable 让用户为客户添加新的联络人、或者修改、删除客户已经存在的联络人信 息。操作界面如图 12-18 所示。 图 12-18 客户的联络资料 在用户维护客户资料的时候,有时候需要查看客户和公司的交易记录。我们通过使用另 -88- C/S 结构项目实训__JAVA 语言版 外一个 JTable 让用户查看该客户与公司的所有交易记录。该 JTable 中列的设置如图 12-19 所示。 图 12-19 客户的交易记录 综上所述,维护客户资料操作界面提供数据录入和显示接口共分上下两部分,上面那一 部分如图 12-16 所示。下面那一部分是一个选项卡控件,该控件上设置了 3 个页。一个页用 来放置客户资料操作,如图 12-17 所示。一个页用来放置客户的联络人资料,如图 12-18 所 示。最后一个用来放置客户与公司的交易记录。如图 12-19 所示。 界面说明: 客户资料维护操作界面是 javax.swing.JInternalFrame 窗体。 本窗体采用 JLabel 作为标签显示,按钮类型均为 JButton 类型,销售员采用下拉选择框 为 JComboBox 控件,其他输入项采用 JTextField 类型控件。选项卡采用 JTabbedPane 控件, 表格均为 JTable。 4.6 维护供应商资料的操作界面 供应商资料情况和客户资料情况很相似,我们使用相似的操作界面完成对供应商资料的 维护和查询。 供应商基本资料的操作界面如图 12-20 和图 12-21 所示。供应商的联络人资料的维护界 面如图 12-22 所示。供应商和公司的交易查询记录如 12-23 所示。 图 12-20 供应商基本资料主操作界面 -89- C/S 结构项目实训__JAVA 语言版 图 12-21 供应商基本资料辅助操作界面 图 12-22 供应商联络人资料操作界面 图 12-23 供应商和公司交易记录查看界面 界面说明: 供应商资料维护操作界面是 javax.swing.JInternalFrame 窗体。 本窗体采用 JLabel 作为标签显示,按钮类型均为 JButton 类型,输入项采用 JTextField 类型控件。 -90- C/S 结构项目实训__JAVA 语言版 4.7 维护采购单据界面 维护采购单据操作界面主要由两部分组成,窗体上部的操作区控件让用户录入、删除 和修改采购单据的基本资料,如图 12-24 和图 12-25 所示。窗体下部的 JTable 控件让用户录 入、删除和修改采购单据的商品明细,如图 12-26 所示。 图 12-24 维护采购单据基本资料操作界面 图 12-25 维护采购单据基本资料操作界面 图 12-26 维护采购单据基本资料操作界面 界面说明: 采购入库单操作界面是 javax.swing.JInternalFrame 窗体。 本窗体采用 JLabel 作为标签显示,按钮类型均为 JButton 类型,供应商名称采用下拉列 表框,采购日期采用 bean 包中的自定义控件 DateChooserJButton 作为日期的输入。手工单 号采用 JTextField 控件。表格采用 JTable 操作。 4.8 维护采购退货数据 由于采购退货单据数据和采购进货的单据数据相似,因此采购退货单据操作界面也采用 了相似界面,窗体上部的操作界面用来维护采购退货单据上的基本资料,窗体下部的 JTabl e 用来维护采购退货单据上的商品明细资料。如图 12-27 所示。 -91- C/S 结构项目实训__JAVA 语言版 图 12-27 采购退货操作界面 界面说明: 采购退货单操作界面是 javax.swing.JInternalFrame 窗体。 本窗体采用 JLabel 作为标签显示,按钮类型均为 JButton 类型,供应商名称采用下拉列 表框,退货日期采用 bean 包中的自定义控件 DateChooserJButton 作为日期的输入。手工单 号采用 JTextField 控件。表格采用 JTable 操作。 4.9 销售出库操作界面 维护销售出库单据的操作界面如图 12-28 所示。窗体上部的操作界面为用户提供了增 加、删除、修改单据基本资料的操作界面。 窗体下部的 JTable 控件为用户提供了维护销售单据上销售商品明细的操作界面。 图 12-28 维护销售单据基本资料操作界面 -92- C/S 结构项目实训__JAVA 语言版 图 12-29 维护销售单据基本资料操作界面 图 12-30 维护销售单据基本资料操作界面 界面说明: 销售出库单操作界面是 javax.swing.JInternalFrame 窗体。 本窗体采用 JLabel 作为标签显示,按钮类型均为 JButton 类型,客户名称采用下拉列表 框,销售日期采用 bean 包中的自定义控件 DateChooserJButton 作为日期的输入。手工单号 采用 JTextField 控件。表格采用 JTable 操作。 4.10 维护销售退货单据操作界面 维护销售退货单据的操作界面与销售出库的界面非常类似,如图 12-31 所示。窗体上部 的操作界面为用户提供了增加、删除、修改退货单据基本资料的操作界面。 窗体下部的 JTable 控件为用户提供了维护销售退货单据上商品明细的操作界面。 -93- C/S 结构项目实训__JAVA 语言版 图 12-31 销售退货 界面说明: 销售退货单操作界面是 javax.swing.JInternalFrame 窗体。 本窗体采用 JLabel 作为标签显示,按钮类型均为 JButton 类型,客户名称采用下拉列表 框,退货日期采用 bean 包中的自定义控件 DateChooserJButton 作为日期的输入。手工单号 采用 JTextField 控件。表格采用 JTable 操作。 4.11 库存查询 库存界面分为两个部分,一部分用来显示查询到的信息,另一部分用来输入查询条件。 我们使用一个 JTable 来显示用户查询到的商品库存信息。用户在查询操作框中指定查询条 件后,系统将符合条件商品的库存信息显示给用户。操作界面如图 12-32 所示。 -94- C/S 结构项目实训__JAVA 语言版 图 12-32 库存查询操作界面 界面说明: 库存查询操作界面是 javax.swing.JInternalFrame 窗体。 本窗体采用 JLabel 作为标签显示,按钮类型均为 JButton 类型,大小限制符号采用下拉 列表框,其中内容包括<、>、=,其他查询输入选项采用 JTextField 控件。表格采用 JTable 操作。 4.12 维护用户资料操作界面 我们通过一个 JTable 控件显示用户的信息,通过操作部分增加新用户、修改已有用户 的资料、禁用已有的用户。操作界面如图 12-33 所示。 图 12-33 用户管理 界面说明: -95- C/S 结构项目实训__JAVA 语言版 用户资料维护界面是 javax.swing.JInternalFrame 窗体。 本窗体采用 JLabel 作为标签显示,按钮类型均为 JButton 类型,密码输入采用 JPasswor -dField 控件。其他输入选项采用 JTextField 控件。表格采用 JTable 操作。 4.13 修改密码 我们使用两个对话框完成用户密码的修改,图 12-34 中操作界面供用户输入用户的旧密 码和新密码,在系统核对了用户的旧密码后,弹出图 12-35 中对话框要求用户输入确认密码, 在用户输入确认密码之后,系统验证用户第一遍输入的密码和确认密码是否一致,在两者一 致的情况下,系统完成用户密码的修改。 图 12-34 修改密码 图 12-35 验证密码 界面说明: 用户密码修改界面是 javax.swing.JInternalFrame 窗体。 确认密码界面是 JOptionPane 对话窗体。 本窗体采用 JLabel 作为标签显示,按钮类型均为 JButton 类型,密码输入采用 JPasswor -dField 控件。 4.14 打印商品资料报表 报表打印功能主要是通过用户查询将报表内容显示在窗体的 JTable 中,然后用户点击 “打印”按钮,对表格数据进行打印。 商品资料报表主要是对商品资料所有内容的查询,用户可以对商品资料的详细信息进行 -96- C/S 结构项目实训__JAVA 语言版 打印分析。窗体界面如下: 图 12-36 商品资料表 界面说明: 商品资料报表界面是 javax.swing.JInternalFrame 窗体。 本窗体按钮类型均为 JButton 类型,内容显示表格为 JTable。 4.15 打印采购汇总报表 打印采购汇总报表可以通过开始日期和结束日期对采购进行汇总,并将汇总内容输出到 JTalbe 上,也可以根据用户选择的汇总方式对采购进行汇总,汇总后通过“打印”按钮将汇 总内容进行打印。打印汇总报表窗体如下图所示: 图 12-37 采购按商品汇总表 界面说明: 采购汇总报表界面是 javax.swing.JInternalFrame 窗体。 本窗体采用 JLabel 作为标签显示,按钮类型均为 JButton 类型,汇总方式采用下拉列表 框,开始日期和结束日期采用 bean 包中的自定义控件 DateChooserJButton 作为日期的输入。 表格采用 JTable 操作。 -97- C/S 结构项目实训__JAVA 语言版 4.16 打印采购年报表 采购年报表将打印出某一年份中各个月份的采购金额。用户可以输入汇总年份,JTable 将显示该年各月的采购金额。采购年报表的窗体如下图所示: 图 12-38 采购年报表 界面说明: 采购年报表界面是 javax.swing.JInternalFrame 窗体。 本窗体采用 JLabel 作为标签显示,按钮类型均为 JButton 类型,年份调节采用 JSpinner 类型控件,表格采用 JTable 操作。 4.17 库存预警报表 库存预警表将打印商品当前存量低于安全存量的所有商品。窗体如下图: 图 12-39 库存报警表 界面说明: 库存预警报表界面是 javax.swing.JInternalFrame 窗体。 本窗体按钮类型均为 JButton 类型,内容显示表格为 JTable。 至此,我们对界面窗体的设计就结束了,我们对每一个窗体及窗体中的控件都进行了详 细介绍,相信大家对 PSS 进销存系统有了更深层次的认识。希望大家能够认真学习本章, 为 PSS 进销存系统的开发铺好道路。 -98- C/S 结构项目实训__JAVA 语言版 企业即时通 项目编号:S1-CS-JAVA-013  项目概述 企业即时通软件简介 项目名称 企业即时通 时间安排 共课 30 时,理论 16,实践 14 代码量 2000-3000 行 项目难度 ★★★★☆ 项目简介 本项目的目标是开发一款供企业或公司内部使用的网络聊天工 具。该工具主要用于员工之间的即时通信与交流。该软件由两部分组 成:服务器端程序和客户端程序。 项目目的 学习使用 Socket(套接字类)开发网络通信程序。 学习使用 JDBC 驱动程序访问数据库。 学习在 NetBeans IDE 中使用高级界面控件。 涉及主要技术 Socket(套接字) Thread(线程) JDBC(数据库访问) 数据库 Microsoft SQL Server 2000 编程环境 开发平台:JDK 1.5.0 以上版本 开发工具:NetBeans IDE 5.0 以上版本 数 据 库:Microsoft SQL Server 2000 及以上版本 项目特点 通过学习本案例,学生不仅可以熟悉使用 Java 开发网络应用程序 的方法,而且可以加深对 Java 多线程技术的理解。 技术重点 使用 Socket(套接字类)实现网络连接与通信。 使用 JDBC 访问数据库。 技术难点 Java 多线程技术在网络通信程序开发中的应用。 -99- C/S 结构项目实训__JAVA 语言版 1.需求分析 1.1 项目背景 一家 IT 公司随着规模的扩大,公司内部员工之间的及时沟通与交流也愈发重要。虽然 市面上有很多即时通讯工具(例如 MSN、QQ、ICQ),但是上述工具都不能对员工进行有 效管理,特别是不能杜绝员工在上班时间与公司外人员聊天的现象。于是公司决定自行开发 一套仅限公司内部使用的即时通讯工具。这个项目如果交给你来完成,你能圆满完成任务 吗? 1.2 功能划分 根据用户的角色及其功能需求,可以将整个软件划分为两个组成部分:服务器端程序与 客户端程序。每部分程序的主要功能见表 1-2: 功能类别 子功能 客户端程序 用户登录 更新用户信息 聊天 查看好友信息 维护聊天记录(显示、清除、导出文件) 服务器端程序 启动服务 停止服务 查看服务器配置信息 查看在线用户详细信息 添加、更新公司信息 部门信息维护(增加、修改、删除部门的基本信息) 用户信息维护(增加、删除、修改用户基本信息,初始化密码) 表 13-1 程序功能划分 2.概要设计 功能简介主要针对每个模块的功能进行简要说明,主要包含以下几部分: 1. 模块名称 2. 功能要求 3. 业务流程(可选) -100- C/S 结构项目实训__JAVA 语言版 4. 输入输出数据说明 4.1 项目:数据项目名称 4.2 数据类型:数字、字符 4.3 I/O:I 代表输入数据 O 代表输出数据 4.4 要求 1. 必填/必显:I(输入数据)必填 O(输出数据)应为必显 2. 范围:数据的有效范围或有效位数 3. 举例:每个数据项的实例说明 3.1 客户端功能 1. 登录 1.1 要求 用户向指定的服务器发送连接请求。连接成功后,服务器验证用户提供的用户名与密码。如 果验证通过,显示主窗体,否则提示错误消息。 1.2 业务流程 符号与术语: 在阅读“输入输出数据”说明部分之前,你应该对一些符号和术语的含义有所了解: √:代表肯定 例如:登录时的用户名为必填项 ×:代表否定 例如:用户信息维护时的电话信息为可选项 -:代表不适用 例如:用户提示消息是在某些条件满足时才显示的内容,因此既不属于“必填”项, 也不属于“必选”项 定制:不受用户干预的数据 例如:“查看好友信息”是把从数据库中读取的数据显示出来。“用户信息维护”中 的“来自”和“头像”信息用户只能选择,不能输入。对类似上面数据的“范围”说明一 般使用“定制”。 -101- C/S 结构项目实训__JAVA 语言版 登录 发送请求 身份验证 成功 主窗体 结束 错误消息 失败 服务器响应 有 没有 图 13-1 登陆流程 1.3 输入输出数据 项目 数据类型 I/O 要求 必填/必显 范围 举例 用户名 字符 I √ 大于 8 位 CoolerCat 密码 字符 I √ 大于 6 位 掩码“*”显示 服务器 IP 地 址 数字和“.”的组 合 I √ 格式:xxx.xxx.xxx.xxx xxx 的范围:0-255 192.168.1.104 服务器端口 号 数字 I √ 4 位 8000 消息提示 字符 O — 定制 密码不能为空 表 13-2 登录 数据输入/输出 2. 用户信息维护 2.1 要求 用户向服务器提交修改后的个人信息资料。服务器收到更新个人信息的请求后,将数据库中 的数据更新,然后向用户返回提示信息。 2.2 业务流程 -102- C/S 结构项目实训__JAVA 语言版 更改基本信息 发送更新请求和变更 后的用户信息 更新数据 成功 结束 返回失败消息返回成功消息 失败 图 13-1 用户信息维护 2.3 输入输出数据 项目 数据类型 I/O 要求 必填/必显 范围 举例 昵称 字符 O/I √ 大于 1 位 CoolerCat 密码 字符 O/I √ 大于 6 位 ******** 密码确认 字符 O/I √ 大于 10 位 ******** 真实姓名 字符 O/I √ 1-10 位 郭靖 性别 字符 O/I √ 定制 男或女 电话 数字 O/I × 0-13 位 13725964752 Email 字符 O/I × 0-50 位 格 式 电 子 邮 件 : zy@163.com 来自 字符 O/I × 定制 北京 头像 字符 O/I √ 定制 default.gif 个人资料 字符 O/I × 0-50 喜欢读书、郊游 消息提示 字符 O — 定制 密码不能为空 表 13-3 用户信息维护 数据输入/输出 3. 聊天 3.1 要求 向服务器提交用户发送的聊天信息,显示服务器转发的聊天信息。 3.2 业务流程 -103- C/S 结构项目实训__JAVA 语言版 填写消息 结束 发送消息 接收消息 显示消息 图 13-3 聊天 3.3 输入输出数据 项目 数据类型 I/O 要求 必填/必显 范围 举例 好友昵称 字符 O √ 定制 紫云 好友姓名 字符 O √ 定制 张无忌 好友所在部 门 字符 O √ 定制 国际部 接收消息 字符 O × — 你好 登录用户昵 称 字符 O √ 定制 CoolerCat 登录用户姓 名 字符 O √ 定制 郭靖 用户所在部 门 字符 O √ 定制 国际部 发送消息 字符 I √ 定制 — 消息提示 字符 O — 定制 不能发送空消息 表 13-4 聊天 数据输入/输出 4. 查看在线用户信息 4.1 要求 显示在线用户的详细资料。 4.2 业务流程 略 4.3 输入输出数据 项目 数据类型 I/O 要求 必填/必显 范围 举例 昵称 字符 O √ 定制 CoolerCat 真实姓名 字符 O √ 定制 郭靖 性别 字符 O √ 定制 男或女 电话 数字 O × 定制 13725964752 Email 字符 O × 定制 zy@163.com 来自 字符 O × 定制 北京 部门 字符 O √ 定制 国际部 头像 图片 O √ 定制 default.gif 个人资料 字符 O × 定制 — -104- C/S 结构项目实训__JAVA 语言版 表 13-5 查看在线用户信息 数据输入/输出 5. 重新登录 5.1 要求 注销用户的登录信息,显示登录窗体。 5.2 业务流程 请参考 1.2 5.3 输入输出数据 请参考 1.3 4. 维护聊天记录 4.1 要求 显示从上次清空操作到现在这段时间内与某用户的所有聊天历史记录,可以把这些记录导出 至用户指定的文件中,也可以清除这些记录。 4.2 业务流程 读取聊天记录 记录是否存在 存在 结束 用户提示信息显示记录信息 不存在 导出聊天记录 保存聊天历史至 文件 清除聊天记录 清空聊天历史 图 13-4 维护聊天记录 4.3 输入输出数据 项目 数据类型 I/O 要求 必填/必显 范围 举例 聊天记录内 容 字符 O × 破折号 在吗? 保存的文件 名 字符 I √ — myChat.txt 消息提示 字符 O — 地址 没有聊天内容 表 13-6 维护聊天记录 数据输入/输出 3.2 服务器端功能 1. 启动服务 1.1 要求 自动设置服务器端的端口号,启动后监听客户端的请求,同时显示连接状态和消息日志。 1.2 业务流程 -105- C/S 结构项目实训__JAVA 语言版 启动服务 接收请求 结束 处理请求内容 无请求 侦听客户端 图 13-5 启动服务 1.3 输入输出数据 项目 数据类型 I/O 要求 必填/必显 范围 举例 日志信息 字符 O √ 定制 CoolerCat 上线 服务器状态 字符 O √ 定制 服务器已启动 表 13-7 启动服务 数据输入/输出 2. 停止服务 2.1 要求 向客户端发送消息,断开服务器与客户端的连接,显示服务器的连接状态。 2.2 业务流程 图 13-6 停止服务 2.3 输入输出数据 项目 数据类型 I/O 要求 必填/必显 范围 举例 日志信息 字符 O √ 定制 紫云下线 -106- C/S 结构项目实训__JAVA 语言版 服务器状态 字符 O √ 定制 服务器已停止 表 13-8 停止服务 数据输入/输出 3. 查看服务器配置 3.1 要求 显示服务器端的 IP 地址和端口号。 3.2 业务流程 略 3.3 输入输出数据 项目 数据类型 I/O 要求 必填/必显 范围 举例 服务器 IP 数字和“.”的 组合 O √ 格 式 : xxx.xxx.xxx.xxx xxx 的范围:0-255 192.168.1.104 服务器端口 号 数字 O √ 4 位 8000 表 13-9 查看服务器端配置 数据输入/输出 4. 查看在线人员详细信息 4.1 要求 显示当前所有在线人员的详细资料。 4.2 业务流程 略 4.3 输入输出数据 项目 数据类型 I/O 要求 必填/必显 范围 举例 昵称 字符 O √ 定制 CoolerCat 真实姓名 字符 O √ 定制 郭靖 性别 字符 O √ 定制 男或女 电话 数字 O × 定制 13725964752 Email 字符 O × 定制 zy@163.com 来自 字符 O × 定制 北京 部门 字符 O √ 定制 国际部 个人资料 字符 O × 定制 喜欢阅读、郊游 表 13-10 查看在线人员详细信息 数据输入/输出 5. 公司信息维护 5.1 要求 提供更新公司信息的操作。 5.2 业务流程 -107- C/S 结构项目实训__JAVA 语言版 更新公司信息 发送更新请求和更 改后的公司信息 更新数据 成功 结束 返回失败消息返回成功消息 失败 图 13-7 公司信息更新 5.3 输入输出数据 项目 数据类型 I/O 要求 必填/必显 范围 举例 公司名称 字符 I √ 1-20 河北新龙 公司地址 字符 I √ 1-30 河北省石家庄市 域名 字符 I × 1-30 www.systop.cn 电话 数字 I × 0-13 0311-81234567 电邮 字符 I × 0-50 格式 zy@163.com 传真 数字 I × 0-50 0311-81234567 消息提示 字符 O — 定制 公司名称不能为空! 表 13-11 公司信息维护 数据输入/输出 4. 部门信息维护 4.1 要求 提供增加、删除、更新部门信息的功能。 4.2 业务流程 -108- C/S 结构项目实训__JAVA 语言版 删除部门信息 处理变更请求 成功 结束 失败 更新部门信息增加部门信息 发送部门信息变更请求 返回成功消息 返回失败消息 图 13-8 部门信息维护 4.3 输入输出数据 项目 数据类型 I/O 要求 必填/必显 范围 举例 部门名称 字符 I/O √ 1-20 国际部 部门描述 字符 I × 0-30 主管对外业务 消息提示 字符 O — 定制 部门名称不能为空 表 13-12 部门信息维护 数据输入/输出 7. 用户信息维护 7.1 要求 提供增加用户,更新用户基本信息,删除用户,初始化用户密码等操作 7.2 业务流程 删除用户 处理变更请求 成功 结束 失败 更新用户信息 增加用户信息 发送用户信息变更请求 返回成功消息 返回失败消息 密码初始化 图 13-9 用户信息维护 -109- C/S 结构项目实训__JAVA 语言版 7.3 输入输出数据 项目 数据类型 I/O 要求 必填/必显 范围 举例 帐号 字符 O √ 大于 8 位 CoolerCat 密码 字符 O √ 大于 6 位 掩码“*”显示 姓名 字符 I √ 1-10 位 郭靖 性别 字符 I √ 定制 男或女 部门 字符 I √ 定制 国际部 消息提示 字符 O — 定制 帐号不能为空 表 13-13 用户信息维护 数据输入/输出 3.数据库设计 下面我们将为本案例创建数据库和表。数据库的名称确定为 corperation_msg。 通过需求分析,我们在概念设计阶段得到三个数据实体:用户实体,部门实体和公司实 体。每个实体的属性按照用户需求中的输入输出数据设定。我们根据三个实体创建了三张数 据库表:公司信息表、用户信息表、部门信息表。表 2-1、表 2-2、表 2-3 分别是三张表的数 据字典说明: 1. 公司信息表: 表名 t_Corp(公司信息表) 列名 描述 数据类型(精度范围) 空/非空 约束条件 CORPNAME 公司名 VARCHAR(50) 非空 CORPADDR 公司地址 VARCHAR(20) 非空 CORPDOMAIN 公司域名 VARCHAR(30) CORPEMAIL 公司电邮 VARCHAR(50) CORPPHONE 公司电话 VARCHAR(15) CORPFAX 公司传真 VARCHAR(15) 表 13-14 公司信息表 2. 用户信息表: 表名 t_UserInfo(用户信息表) 列名 描述 数据类型(精度范围) 空/非空 约束条件 USERACCOUNT 用户帐号 VARCHAR(20) 非空 PK USERNAME 用户姓名 VARCHAR(20) 非空 NICKNAME 昵称 VARCHAR(20) 空 PASSWORD 密码 VARBINARY(128) 非空 默认值约束 111111 SEX 性别 INT 非空 Default:0 0:男 1:女 PHONE 电话 VARCHAR(15) 空 EMAIL 电子邮件 VARCHAR(50) 空 REGION 来自 VARCHAR(10) 空 MYINFO 个人信息 VARCHAR(50) 空 HEADPIC 头像图片名 VARCHAR(20) 非空 Default:default.gif -110- C/S 结构项目实训__JAVA 语言版 DEPTID 部门编号 INT 非空 FK t_Dept 表 DEPTID 列 表 13-15 用户信息表 3. 部门信息表: 表名 t_Dept(部门信息表) 列名 描述 数据类型(精度范围) 空/非空 约束条件 DEPTID 部门编号 INT 非空 PK、标识列 DEPTNAME 部门名称 VARCHAR(30) 非空 DEPTDESCR 部门描述 VARCHAR(100) 表 13-16 部门信息表 根据上面三个表的数据字典,就可以在 Microsoft SQL Server 2000 数据库管理系统中建表了 (你当然可以使用企业管理器创建所有表,但为了练习编写 T-SQL 语句,建议你使用查询分 析器创建 SQL 脚本文件)。在建表的过程中,记着为表中的字段添加约束,并且为“用户信 息表”和“部门信息表”创建主——外键关系。 4.界面设计 下面将为企业即时通软件设计用户界面。因为本软件分为客户端程序和服务器端程序, 所以我们必须分别设计两个应用程序的界面。 4.1 客户端程序界面设计 1. 登录窗体 登录窗体的主要功能是验证登录用户的用户名和密码。 界面上的输入输出数据项请参照第一章的表 1-3,设计界面图见图 2-24。 图 13-10 登录界面设计 本窗体界面上包含的控件种类有:JFrame(窗体)、JLabel、JTextField(用户帐号、IP 地址和 端口号)、JPasswordField(密码)、JButton。 2. 主窗体 用户可以通过主窗体查看在线用户信息,可以更改个人信息,打开聊天窗口聊天,查看与某 用户的聊天记录。考虑到大部分用户使用过 MSN、QQ 等即时通讯工具,客户端主窗体界面 最终设计为用户熟悉的仿 QQ 界面,见图 2-25: -111- C/S 结构项目实训__JAVA 语言版 图 13-11 主界面设计 本窗体界面上包含的控件种类有:JFrame(窗体)、JLabel(登录用户昵称)、PicPanel(显示 头像),JScrollPane(做 JTree 控件的容器)、JTree(显示在线用户树视图)、JMen-uBar(菜 单栏)、JMenu(菜单)、JMenuItem(菜单项)、JPopupMenu(右键菜单)、JSe-perator(菜 单分隔条)。 3. 更新信息 用户可以通过该窗体修改个人信息,然后向服务器提交“个人信息更新”的请求。 界面上的输入输出数据请参照第一章的表 1-4,该窗体的界面设计见图 2-26。 注意: 1.界面中的 PicPanel(显示头像)控件是一个自定义控件。Learning 部分 已介绍过该控件的使用方法,因此本案例中不再赘述。 2.为每个菜单和菜单项设置键盘访问键,例如:用户(U)→ 信息维护(M) -112- C/S 结构项目实训__JAVA 语言版 图 13-12 “用户信息更新”界面设计 本窗体界面上包含的控件种类有:JFrame(窗体)、JLabel、JTextField、JRadioButton、ButtonGroup (为 JRadioButton 分组)、JComboBox、PicPanel(头像),JScrollPane(做 JT-extArea 控件的 容器)、JTextField(个人资料)、JButton。 4. 查看用户信息 本窗体界面显示在线用户的详细信息。 界面上的输入输出数据项请参照第一章的表 1-6,该窗体的界面设计见图 2-27。 本窗体界面上包含的控件种类有:JFrame(窗体)、JLabel、PicPanel(头像)、JScroll-Pane(做 JTextArea 控件的容器)、JTextField(个人资料)、JButton。 注意: 界面中带“*”的输入项为必填选项,下同。 性别默认选中“男”。 -113- C/S 结构项目实训__JAVA 语言版 图 13-13 “查看在线用户信息”界面设计 5. 聊天 聊天是客户端程序的核心功能,用户可通过本窗体与其他在线用户进行即时通信,而且可以 查看聊天历史记录。 界面上的输入输出数据请参照第一章表 1-5,窗体界面设计见图 2-28。 -114- C/S 结构项目实训__JAVA 语言版 图 13-14 聊天界面设计 本窗体界面上包含的控件种类有:JFrame(窗体)、JPanel(控件分组用)、JScrollPane(JTextArea 控件的容器)、JTextArea、PicPanel(显示头像)、JButton。 4. 维护聊天记录 本界面将显示用户的聊天历史记录,而且用户可以把聊天记录导出到文件中。 界面上的输入输出数据请参照第一章的表 1-7,界面设计见图 2-29。 图 13-15 维护聊天记录界面设计 本窗体界面上包含的控件种类有:JFrame(窗体)、JScrollPane(做 JTextArea 控件的容器)、 JTextArea、JButton。 7. 关于 关于对话框主要包含“企业即时通软件”的版本信息和运行环境说明,以及开发小组的介绍。 该界面的设计使用了 Learing 部分的 JDialog 自定义控件,该控件的使用方法不再赘述。窗体 界面设计见图 2-30。 注意: 1.JFrame 窗体控件可以最大化。 2.JFrame 窗体最大化之后,显示聊天信息的 JPanel 控件宽与高随 JFrame 变化,发送聊天信息窗体的 JPanel 控件宽度随 JFrame 变化,高度不变。 3.两个 JScrollPane 控件的变化与 JPanel 的变化一致。 4.两个 JTextArea 控件的变化与 JScrollPane 控件的变化一致。 5.显示聊天消息的 JTextArea 控件禁止用户编辑。 注意: 1.JFrame 窗体控件可以最大化。JFrame 窗体最大化之后,显示聊天记录的 JScrollPane 控件的宽度与高度随 JFrame 变化。 2.JTextArea 控件的变化与 JScrollPane 变化一致。 3.显示聊天历史记录的 JTextArea 控件禁止用户编辑。 -115- C/S 结构项目实训__JAVA 语言版 图 13-16 “关于”界面设计 4.2 服务器端程序界面设计 1. 主窗体 服务器端的主窗体包含服务器端程序的核心功能。服务器管理员可以通过该窗体执行下面的 操作:启动服务器、关闭服务器、查看服务器配置信息、显示在线用户。我们将在主窗体上 设置菜单栏,把“公司信息维护”、“部门信息维护”、“用户信息维护”等功能项集中放置在 “信息维护”菜单中;把“启动服务器”、“停止服务器”、“查看服务器配置信息”等功能项 放置在“系统管理”菜单中。除此之外,为方便用户操作,我们将“启动服务器”、“停制服 务器”、“查看服务器配置信息”和“用户信息维护”这四个常用功能项放置在工具栏中。 界面上的输入输出数据请参考第一章表 1-7,界面设计见图 2-31。 注意: 1.JFrame 窗体控件可以最大化。JFrame 窗体最大化之后,JScrollPane 控件 的宽度与高度随 JFrame 变化。 2.JTextArea 控件的变化与 JScrollPane 变化一致。 3.显示服务器消息日志的 JTextArea 控件禁止用户编辑。 -116- C/S 结构项目实训__JAVA 语言版 图 13-17 “启动服务器”界面设计 本窗体界面上包含的控件种类包括:JPanel(作 JToolBar 和 JTextArea 的容器)、JToo- lBar、 JScrollPane(JTextArea 的容器)、JTextArea、JMenuBar、JMenu、JMenuItem、JSepe-rator。其 中 JMenuItem 的界面设计见图 2-10。 图 2-32 “主窗体”菜单界面设计 2. 公司信息维护 要求: 1.当服务器端程序启动时,将自动启动服务,“启动服务器”按钮和菜单 功能禁用。服务停止时,“启动服务器”按钮和菜单功能可用,“停止服务器” 按钮和菜单功能禁用。 2.启动服务时,在 JTextArea 控件中显示图 2-31 的消息内容。 3.服务启动成功后,按下列格式显示消息: yyyy-MM-dd 上午/下午 hh:mm:ss 服务器启动成功,监听中… 4.有用户登录服务器,按下列格式显示消息: yyyy-MM-dd 上午/下午 hh:mm:ss 用户昵称上线[在线人数:xx 人] 5.用户下线,按下列格式显示消息: yyyy-MM-dd 上午/下午 hh:mm:ss 用户昵称下线[在线人数:xx 人] 6.服务器停止,按下列格式显示消息: yyyy-MM-dd 上午/下午 hh:mm:ss 服务器停止 -117- C/S 结构项目实训__JAVA 语言版 用户可以通过本窗体更新公司信息。 界面上的输入输出数据请参考第一章的表 1-12,界面设计见图 2-33 图 13-18 “公司信息维护”界面设计 本界面包含的控件种类:JFrame(窗体)、JLabel、JTextField、JButton。 3. 部门信息维护 用户在本界面上可以执行更新、删除部门信息的操作。 该界面上的输入输出数据请参照第一章表 1-13,界面设计见图 2-34。 图 13-19 “部门信息维护”界面设计 本界面上包含的控件种类有:JFrame(窗体)、JTextField、JList(显示注册部门)、J-ScrollPane (JList 和 JTextArea 的容器)、JTextArea、JButton。 -118- C/S 结构项目实训__JAVA 语言版 4. 添加部门信息 用户在本界面上可以完成新部门的注册操作。 本界面的输入输出数据请参照第一章表 1-13,界面设计见图 2-35。 图 13-20 “添加部门信息”界面设计 本界面中包含的控件种类包括:JFrame(窗体)、JLabel、JTextField、JTextArea、JScr-ollPane (JTextArea 的容器)、JButton。 5. 用户基本信息维护 服务器管理员可以通过本界面完成用户信息的更新、删除操作。 该界面上的输入输出数据请参照第一章表 1-14,界面设计见图 2-36。 该界面包含的控件种类包括:JFrame(窗体)、JLabel、JTextField、JList、JScrollPane(JList 的容器)、JComboBox、JRadioButton、ButtonGroup(为 JRadioButton 分组)、JBut-ton。 要求: 1. 当用户选中 JList 中的部门时,立刻显示该部门的部门名称和部门描述。 2. 当某部门下还有用户时,不允许删除该部门,提示下面的消息: 该部门下还有用户存在,不允许删除该部门! 3. 如果要删除的部门中不存在用户,应提示下面的消息提示框: 您确认要删除该部门吗?并提供用户“确认”和“取消”两种选择。 -119- C/S 结构项目实训__JAVA 语言版 图 13-21 “用户基本信息维护”界面设计 4. 添加用户基本信息 用户在本界面上可以完成新用户的注册操作。 本界面的输入输出数据请参照第一章表 1-14,界面设计见图 2-37。 图 13-22 “添加用户基本信息”界面设计 该界面包含的控件种类包括:JFrame(窗体)、JLabel、JTextField、JComboBox、JRad-ioButton、 ButtonGroup(为 JRadioButton 分组)、JButton。 7. 在线用户信息 要求: 删除用户时,应提示下面的消息提示框: 您确认要删除该用户吗?并提供用户“确认”和“取消”两个按钮。 注意: 本界面中的密码要以明文显示,即在注册新用户的时候,将为新用户提供 默认密码。 -120- C/S 结构项目实训__JAVA 语言版 服务器管理员可以通过本界面查看在线用户的详细信息。 本界面的输入输出数据请参照第一章的表 1-11,界面设计见图 2-38。 图 13-23 “在线用户信息”界面设计 该界面包含的控件种类包括:JFrame(窗体)、JTable、JScrollPane(JTable 的容器)、JButton。 8. 查看服务器配置 本界面的功能是查看服务器端的配置信息。 界面上的输入输出数据请参照第一章的表 1-10,界面设计见图 2-39。 图 13-24 “服务器配置信息”界面设计 “服务器配置信息”界面只是一个 Information 对话框,不用另外设计窗体。 注意: 1. 本界面中的 JFrame 窗体可以调节尺寸。当窗体调节大小时,JScrollPane 的宽度与高度随之变化。 2. JTable 的大小随 JScrollPane 的变化而变化。 -121- C/S 结构项目实训__JAVA 语言版 附录一:编程规则 基本原则 基本原则为编程时应该坚持的指导思想。 【原则 1】保持代码的简明清晰,易读易维护,避免过分的编程技巧。 【原则 2】所有的代码尽量遵循 SUN JAVA 标准。 【原则 3】编程时首先达到正确性,其次考虑效率。 【原则 4】避免或少用全局变量。 【原则 5】尽可能重用、修正老的代码。 命名规则(Naming Conventions) 项目(Project)(视不同的开发工具) 规则 说明 举例 <工程代号>  单 project 工 程 中 , project 名 即 为 工 程 代 号。  首字母大写,其余字母 小写;如果是缩写,需 要全部为大写。 ACEX <工程代号>_  多 project 工 程 中 , project 名称由工程代号 和 project 组成。  每个单词首字母大写, 其余字母小写;如果是 缩写,需要全部为大写。 ACEX_Portal 包(Package) 原则上,所有的包名都必须以 com.strong 开头,系统必须提供完整的包类型命名规则, 如果是各种不同的项目需要,可以使用不同的项目包名,如:gov.chinapost 规则 说明 举例  单 package 的 project 中, package 名即为 project 名,首写字母大写。 com.strong  多 package 的 project 中, package 名体现包功能。  包名的所有字母都是小 写字母 com.strong.system.monitor 类(Class) 规则 说明 举例 <标识符>  class 名称选取有意义的 代表该 class 实际含义的 名词或名词词组,要求 Debugger FileProcessor -122- C/S 结构项目实训__JAVA 语言版 为英文单词,不可以取 汉语拼音。  每个单词首字母大写, 其余字母小写。 Exception 名 说明 举例 <标识符>+Exception  Exception 的名字由有意 义 的 标 识 符 和 关 键 字 Exception 组成。  每个单词首字母大写, 其余字母小写。 SQLException 接口(Interface) 规则 说明 举例 <标识符>  接口的名称选取有意义 的代表该 Interface 实际 含 义 的 名 词 或 名 词 词 组,要求为英文单词, 不可以使用汉语拼音。  接口的首字母为大写的 I,以及接口单词的首字 母为大写,其余字母小 写。 IQuery IMessageListener 属性(Property) 规则 说明 举例 <标识符>  property 名称选取有意 义的代表该 property 实 际含义的名词或名词词 组,不可以取汉语拼音。  第一个单词的所有字母 均小写,以后每个单词 的首字母大写,其余字 母均小写。  第一个单词不允许只有 1 个字符 password fileName 方法(Method) 规则 说明 举例 <标识符>  method 名称选取有意义 的代表该method实际含 义的动词或动宾词组。  第一个单词的所有字母 均小写,以后每个单词 的首字母大写,其余字 startServices -123- C/S 结构项目实训__JAVA 语言版 母均小写。 特殊 method 名称 说明 举例  构造函数与 class 同名。  字母大小写同 class 名的 字母的大小写。 Thread is+<标识符>  用于判断一个标志位的 method。  返回一个布尔值。 isAlive can+<标识符>  用于判断能否执行一个 动作。  返回一个布尔值。 canSleep get+<标识符>  用于取得一个属性或一 个值。  如果属性为布尔类型, 则get方法被is方法替代 getProperty set+<标识符>  用于设置一个属性或一 个值。 setProperty -124- C/S 结构项目实训__JAVA 语言版 附录二:代码重构 代码评审(CodeReview)是 Java 项目开发过程中的一个重要步骤,代码评审可以帮助发现静 态代码分析过程中无法发现的一些问题,例如 代码的编写是否符合编码规范,代码在逻辑 上或者功能上是否存在错误,代码在执行效率和性能上是否有需要改进的地方,代码的注释 是否完整正确,代码是否存在 冗余和重复。代码评审还可以帮助新进入项目组的成员快速 学习和了解项目,促进经验分享,同时也能保证项目成员的良好沟通。代码评审主要包括两 种形式,同级 评审(PeerReview)和小组评审(GroupReview)。同级评审主要指项目成员间 的互相评审,小组评审是指通过召开评审会议,项目成员一起 对项目代码进行评审。 为了提高代码评审的有效性和效率,可以借助一些外部工具,比较常用的代码评审工具有 Jupiter 和 CodeStriker。Jupiter 是 一款开源的 Eclipse 插件,允许成员将评审意见定位到 真实代码的具体行,由于代码评审的结果以 XML 文件的形式保存,所以可以把结果提交到 版本管理服务器进 行共享。图 18 显示了使用 Jupiter 进行代码评审的界面。 图 1.Jupiter 代码评审界面 -125- C/S 结构项目实训__JAVA 语言版 在代码评审任务创建后,Jupiter 将代码评审分成三个阶段,个人评审阶段(IndividualPhase)、 团队评审阶段 (TeamPhase)和问题修复阶段(ReworkPhase)。在个人评审阶段,评审成员 将发现的代码问题或者缺陷记录下来,每个问题都会作为一个记 录保存在评审表格中。在 团队评审阶段,团队的全部或者部分成员会一起对个人评审阶段发现的问题进行定性,如果 问题确实存在,就将该问题分配给某个成员去解 决,并在 Jupiter 中将该问题设置成相应的 状态。在问题修复阶段,团队成员会修复属于自己的问题,并将相应的记录设置成已解决等 正确的状态。 Codestriker 是一款基于 Web 的常用代码评审工具,对代码的评审可以针对某一具体行,也 可以针对整个代码文件,评审意见会被保存在数据库中。评审人员可以同时看到其他人的评 论,代码作者也可以针对某一具体的评 论回复。Codestriker 支持邮件通知,还可以同版本 控制服务器进行集成,以跟踪和显示文件内容的改变。图 19 显示了 Codestriker 的界 面。 图 2.Codestriker 报告界面 在实践中对所有代码进行小组评审会比较费时,所以可以根据实际情况来挑选一些核心代码 进行小组评审,或者在项目的前期安排较多的小组评审,等项 目组的成员对代码评审的标 -126- C/S 结构项目实训__JAVA 语言版 准和要求有较好的理解,进行代码评审的经验提高后,就可以逐渐减少小组评审的次数,从 而达到大部分代码即使只进行同级评审也能保 证很好的质量。 通过代码评审发现的问题要通过代码重构及时解决掉,较小的不涉及多人代码的重构可以由 项目成员自己借助 Eclipse 的重构功能完成,不同项目 成员写的实现相同功能的不同代码 要通过讨论整合成公共的类或者方法。比较复杂的或者比较高层次的重构工作,例如整个项 目层面的代码组织形式的改变需要由整 个项目组共同讨论完成。
还剩125页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

s2333420

贡献于2015-09-06

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf