GdpuTeacherManager(广药老师助手)项目使用说明文档
开发团队:GDPU 2L (2010.2.20-2010.4.24)
目录:
一.软件开发需求分析…………………………………………………………………………………………………1
二.软件开发运行环境和技术…………………………………………………………………………………….1
三.软件概要设计…………………………………………………………………………………………………………1
1. 项目概述…………………………………………………………………………………………………………………1
2. 主窗口…………………………………………………………………………………………………………………….2
3. 各种对话框…………………………………………………………………………………………………………….2
4. 主要框架设计………………………………………………………………………………………………………..4
5. 业务层设计(UML图)………………………………………………………………………………………..5
6. 数据库层设计(UML图)…………………………………………………………………………………….7
7. Mysql数据库关系表……………………………………………………………………………………………..8
四.功能概述和代码分析
功能一.增删改查………………………………………………………………………………………………………………….7
功能二.信息关键字搜索………………………………………………………………………………………………………8
功能三.学生功能集……………………………………………………………………………………………………………..8
功能四.帮助文档………………………………………………………………………………………………………………….8
特色功能一.考试成绩分析………………………………………………………………………………………………….9
特色功能二.联系学生………………………………………………………………………………………………………….9
特色功能三.成绩图形分布…………………………………………………………………………………………………10
特色功能四:其他RCP特色功能………………………………………………………………………………………11
五.软件测试及使用说明…………………………………………………………………………………………….12
六.团队分工和开发日程说明…………………………………………………………………………………….13
七.项目总结…………………………………………………………………………………………………………………16
一. 软件开发需求分析
广药老师助手(以下简称GTM),主要开发理念是基于方便我校任课老师(兼辅导员)管理学生各项工作进行设计开发的。鉴于我校没有一个完整学籍管理系统软件,任课老师和辅导员管理学生的各项信息的不易,我们就有了开发GTM的初衷了,往日,老师们都是用offile的excel来进行学生信息的管理,excel是微软的重点产品,功能强大是不可置疑的,但是功能强大并不是好事,我们老师使用的只是那么的一少部分,而且功能过于繁杂,有些老师还逊于操作。还有excel是基于全球广大用户开发的,没有专门用于管理学生信息的特殊功能,老师们的有些需要不能满足。因此,我们团队(2L团队)鉴于excel的不足和老师们的需求在春节后就计划设计开发GTM。
二. 软件开发运行环境和技术
1.开发和运行环境
开发环境:eclipse3.51+windowsbuilder7.21(RCP,JFace,Form,SWT)+JFreeChart
2.运行环境:
Mysql5.0以上+JDK1.6(JRE1.6)
3.主要开发技术:
本项目主要使用:RCP(Rich Client Plantform富客户端应用平台)插件开发,JFace的对话框和向导对话框,Form(表单)的编辑器,最具体特色的是取用了JFreeChart报表插件,进行图形分析。
三. 软件概要设计
1. 项目概述
登陆界面:宛如一个eclipse,界面非常美观友好
输入用户名密码登陆(默认都是:admin,详见登陆设置)
很像eclipse吧。。。。。。。。。。
2. 主窗口
放不下我把它缩小了,各模块还有特殊功能哦,(详看特殊功能设计)
3. 各种对话框
4. 主要框架设计
(1)各个控件的分布,之间可以拖动重叠(详看特殊功能)
(2)包类设计
帮助内容文档的html页 项目包含的图片包 外部导入的jar包的包 插件连接其他平台的接口 插件的构建打包,导出的文件 产品配置文件 启动屏幕的配置文件 声明插件的扩展和扩展点配置 启动屏幕图片 帮助内容文档
|
主目录,里面含有Active类 包含一些Action操作的类 包含一些义务逻辑类 数据库访问的类包 对话框和向导的类包 编辑器类 RCP插件生成的主类 设计业务模型的类business的接口 Pojos类,封装了实体对象的包 首选项类包 MVC模式的表格包含的类包 工具栏,里面包含布局类 视图类包 |
项目名 外部JAR,mysqljar,和JFreeChart 项目依赖的必需插件 |
下面为RCP主要包的内容
此包由是RCP的主要框架,在新建RCP插件时自动生成
Application.java:应用程序类,程序开始执行就是运用此类找到plugin.xml的扩展点
ApplicationActionBarAdvisor.java:操作类,一下eclipse 操作Action都可以在这添加,菜单栏和公开栏就是在这添加的
ApplicationWorkBenchAdvisor.java:用于窗口工作台对象的类,初始化工作台的各项对象
ApplicationWorkbenchWindowAdvisor.java:工作台窗口类,通过调用preWindowOpen()方法实现对工作台的设置
Perspective.java:透视图类,可以定义多个透视图类,设置主窗口的布局
5. 业务层设计(UML图)
Superfactory(from model) Attributes private SuperFactory(){ } public static ISuperApplication getSuperApplication(){} |
IStudentService(from model) Attributes Public studentEo addStudent(StudentEo student); Public studentEo getStudent(); Public List getAllStudent(); ……. |
ISuperApplication(from model) Attritutes Public IClassService getStudentService(); Public IStudentService getStudentService();
|
IClassService(from model) Attritutes Public ClassEo addClass(ClassEo class); Public void updateClass(ClassEo class); Public ClassEo getClass(int id); ……. |
StudentService(from business) Attributes Public StudentService(){} Public StudentEo addStudnet(StudentEo student) Public StudentEo getStudent(int id) …… |
RCPApplication(from business) Attributes Public IClassService getStudentService(); Public IStudentService getStudentService();
|
cLassService(from business) Attributes Public classServise(){} Public ClassEo addClass(ClassEo class); Public void updateClass(ClassEo class); Public ClassEo getClass(int id); …….
|
IStudentDao(from Dao) Attributes Public StudentEo findByid(int id); Public List getAllStudent(); Public List getStudentResult(String sql); …… |
IClassDao(from Dao) Attributes Public ClassEo findByid(int id); Public List getAllClass(); Public List getClassResult(String sql); …… |
app |
implements |
implements
|
implements
|
StudentService |
ClassService |
StudentDao |
ClassDao |
注意:上下分别GTM的业务层和数据库层的UML类图,当初设计时是用的简单E-R图,由于接口太多无法一一罗列,要想知道详细请看具体源代码,这里用“……“代替了 |
[键入提要栏内容。提要栏独立于主文档,是对主文档的补充。提要栏通常放置在页面的左侧或右侧,也可以放置在页面的顶端或底端。可使用“文本框工具”选项卡更改提要栏文本框的格式。] |
DaoFactory(from Dao) Attributes Public String dbType=”Mysql” Public DaoFactory() Public IStudentDao getStudentDao() Public IClassDao getClassDao() …… |
IStudentDao(from Dao) Attributes Public StudentEo findByid(int id); Public List getAllStudent(); Public List getStudentResult(String sql); ……
|
IClassDao(from Dao) Attributes Public ClassEo findByid(int id); Public List getAllClass(); Public List getClassResult(String sql); ……
|
StudentDaoMysql(from Dao) Attributes Public StudentEo findByid(int id){} Public List getAllStudent(){} Public List getStudentResult(String sql){} ……
|
ClassDaoMysql(from Dao) Attributes Public ClassEo findByid(int id){} Public List getAllClass(){} Public List getClassResult(String sql){} ……
|
StudentDao |
ClassDao |
implements |
implements |
Mysql数据库关系表
四.功能概述和代码分析
功能一.增删改查
增删改查是每个学籍管理系统都必须有的,GTM是通过执行sql语句进行对信息的操作,具体使用了如下接口:
但值得称道的是,GTM的信息修改不是直接在表格(Table)进行,而是在编辑器进行,我们使用了一个public void doSave(IProgressMonitor monitor)方法,生成一个状态条(statusline)和进度条(process)
实现的效果真的很好
功能二.信息关键字搜索
通过sql语句进行模糊搜索
功能三.学生功能集
学生功能全部集合在视图的工具栏上
从左到右:联系学生(Connection),学生成绩分布(MathsAnalyse),删除学生(Delete),刷新表格(Reflsh),全选(AllSelect),成绩排名(orgerby),优秀学生(Excellent),考试成绩分析(Analyse),学生考勤(Check)
注:红色字体的为GTM特色功能,下面进行详细分析
下面以我们班的英语成绩作例:
成绩排名
优秀学生:
考勤:
代码就不作具体分析了,其实不难的,详细看源码
功能四.帮助功能
一个成功软件的帮助功能是非常重要的,例如eclipse的帮助功能非常强大
GTM通过导入插件实现这个功能的
特色功能一.学生考试成绩分析:
其实也没什么的,只是一些功能的集合,sql语句的集合使用。
但是这些简单的的功能组合在一起就是这样一个完整的强大功能了,
对我们的老师有绝对的用处
我们班的英语成绩不错吧,医软08是永远最棒的
特色功能二.联系学生
本功能的实现是通过调用Tencent的一条url:语句实现QQ联系的,调用别人的东西的确难登大雅之堂。。。。。
输入学生的联系QQ,点击联系
就出来了一个QQ聊天对话框了。。。。。。。。。。
代码也不复杂
特色功能三.成绩图形分布
本功能是通过运用JFreeChart插件()实现的,效果真的是很直观
很直观的把各个分数段的的百分比表现了出来了。。。。。
代码分析:
private PieDataset createDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("优秀(80-100)/n ", new Double(x));
dataset.setValue("良好(70-80) /n", new Double(y));
dataset.setValue("中等(60-70) /n", new Double(z));
dataset.setValue("不及格(<60)/n", new Double(s));
return dataset;
}
private JFreeChart createChart(PieDataset dataset) {
JFreeChart chart = ChartFactory.createPieChart3D("成绩分布", dataset, true,
true, true);
// 设置图片的背景色
chart.setBackgroundPaint(java.awt.Color.white);
// 设置图片标题的字体和大小
Font font = new Font("黑体", Font.CENTER_BASELINE, 20);
//去除锯齿状,使字体清晰
chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
TextTitle title = new TextTitle(titleStr);
title.setFont(font);
chart.setTitle(title);
PiePlot3D pie = (PiePlot3D) chart.getPlot();
//控制输出数据格式
// 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位
pie.setLabelGenerator((PieSectionLabelGenerator) new StandardPieSectionLabelGenerator(
"{0} ={1}%", NumberFormat.getNumberInstance(),
new DecimalFormat("0.00%")));
pie.setLegendLabelGenerator(new StandardPieSectionLabelGenerator( "{0} ={1}%"));
pie.setLabelFont(new Font("黑体", Font.BOLD, 12));
//标签框格式
pie.setInsets(new RectangleInsets(5, 5, 5, 5));
// 指定 section 轮廓线的颜色
pie.setOutlinePaint(java.awt.Color.BLACK);
// 指定 section 轮廓线的厚度
pie.setOutlineStroke(new BasicStroke(1));
// 设置第一个 section 的开始位置,默认是12点钟方向,90度,逆时针
pie.setStartAngle(90);
// 指定 section 的色彩
//pie.setSectionPaint(1, new Color(0x99, 0x88, 0xFF));
// 指定显示的饼图上圆形还椭圆形。true为圆形,false为椭圆形。默认为false
//pie.setCircular(true);
// 指定图片的透明度
pie.setForegroundAlpha(0.6f);
pie.setLabelGap(0.01);// 间距
pie.setNoDataMessage("No data available");
//不显示null和0数据的信息
pie.setIgnoreZeroValues(true);
pie.setIgnoreNullValues(true);
//分割出来怎么不行?
// pie.setExplodePercent("优秀(80-100) /n "+x+"%", x);
return chart;
}
特色功能四.其他RCP特有的特色功能
1. 视图的随意拖动组合分离
视图的组合,形成了一个选项卡
视图的分离,产生另外一个窗口
2. 快速视图
以上都是RCP插件开发的特有功能,只是初始化窗口时添加一些方法即可实现
状态条 |
透视图 |
快速视图 |
RCP插件开发还有很多的特色,请自己去体验吧。。。。
五.软件测试和使用说明
我们团队在开发过程也不断的对软件的运行进行测试,我们对GTM测试取用了两个方式:
1.使用eclipse的debug进行单步/单行测试;
2.通过System.out.println();方法进行测试(这个测试是最有效的,可以清楚每一部分执行情况)
通过查看控制台的信息就知道程序运行 的具体情况了
使用说明:GTM的使用操作很简单明了,登陆用户名:admin(默认);登陆密码:admin(默认);可以设置是否使用密码验证登陆和修改密码(详细看GTM帮助文档)
六.团队分工和开发日程说明
GTM项目是由2L团队(JACK,小莲)联合开发,在开发过程中,我们通力合作,下面是我们具体分工说明
项目第一阶段:(年初五-开学第二周)小莲负责设计GTM框架,撰写项目开发方案计划书,和功能接口的编写,JACK负责项目需要资料的收集整理;
项目第二阶段:(3.21完成)JACK编写具体接口实现代码;
项目第三阶段:(3.23-4.9)小莲测试项目,并提出改善意见,JACK完善项目代码;
项目第四阶段:(4.10-4.23)离比赛还有半个月左右,小莲进一步测试项目,并提出新功能的实现,JACK巩固项目代码和编写项目的使用说明文档
我们每一日的开发具体进程都有用QQ心情记录的
项目总结:
GTM项目开发完成时间总共使用了2个月零4天(共63天).在开发过程中我们遇到不少的困难,也曾经沮丧过.但我们2L从来没有放弃过项目.特别在第二阶段的作业,因为是第一个项目,很多的知识需要现学先用,特别是数据库方面的,所以进度相当的慢,但我们没有过放弃的念头.引用”亮剑”的一句话:”2L团队没有一个活着退出战斗的!”.我们还是坚持下来了.后来上手了进度就快了很多,还有时间扩展了很多特色功能.在这过程中我们学会了坚持忍耐,项目开发并不是一朝一夕的事情;懂得了”软件编程并不是技术活,更多的是体力活”,要想成为出色的项目开发者,必须要坚持不懈的努力学习;在实践过程把基础打牢固,基础才是根本,大项目就是基础的集合.
最后,希望在比赛取得好成绩.2L永远在努力……
GDPU 2L团队(JACK)
2010.4.24
6.