CIOC GTM文档

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的初衷了,往日,老师们都是用offileexcel来进行学生信息的管理,excel是微软的重点产品,功能强大是不可置疑的,但是功能强大并不是好事,我们老师使用的只是那么的一少部分,而且功能过于繁杂,有些老师还逊于操作。还有excel是基于全球广大用户开发的,没有专门用于管理学生信息的特殊功能,老师们的有些需要不能满足。因此,我们团队(2L团队)鉴于excel的不足和老师们的需求在春节后就计划设计开发GTM

 

二.    软件开发运行环境和技术

1.开发和运行环境

开发环境:eclipse3.51+windowsbuilder7.21RCP,JFace,Form,SWT+JFreeChart

2.运行环境:

Mysql5.0以上+JDK1.6JRE1.6

3.主要开发技术:

本项目主要使用:RCPRich Client Plantform富客户端应用平台)插件开发,JFace的对话框和向导对话框,Form(表单)的编辑器,最具体特色的是取用了JFreeChart报表插件,进行图形分析。

三.    软件概要设计

1.     项目概述

登陆界面:宛如一个eclipse,界面非常美观友好

 

 

 

输入用户名密码登陆(默认都是:admin,详见登陆设置)

 

很像eclipse吧。。。。。。。。。。

2.     主窗口

 

放不下我把它缩小了,各模块还有特殊功能哦,(详看特殊功能设计)

 

3. 各种对话框

 

 

 

 

 

 

 

 

4. 主要框架设计

1)各个控件的分布,之间可以拖动重叠(详看特殊功能)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2)包类设计

帮助内容文档的html

项目包含的图片包

外部导入的jar包的包

插件连接其他平台的接口

插件的构建打包,导出的文件

产品配置文件

启动屏幕的配置文件

声明插件的扩展和扩展点配置

启动屏幕图片

帮助内容文档

 

主目录,里面含有Active

包含一些Action操作的类

包含一些义务逻辑类

数据库访问的类包

对话框和向导的类包

编辑器类

RCP插件生成的主类

设计业务模型的类business的接口

Pojos类,封装了实体对象的包

首选项类包

MVC模式的表格包含的类包

工具栏,里面包含布局类

视图类包

项目名

外部JARmysqljar,和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图,由于接口太多无法一一罗列,要想知道详细请看具体源代码,这里用“……“代替了

 



[键入提要栏内容。提要栏独立于主文档,是对主文档的补充。提要栏通常放置在页面的左侧或右侧,也可以放置在页面的顶端或底端。可使用文本框工具选项卡更改提要栏文本框的格式。]

6. 数据库层设计 (UML )

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");

               //不显示null0数据的信息

               pie.setIgnoreZeroValues(true);

               pie.setIgnoreNullValues(true);

              

               //分割出来怎么不行?

                // pie.setExplodePercent("优秀(80-100 /n "+x+"%", x);

               return chart; 

                 }

特色功能四.其他RCP特有的特色功能

1.     视图的随意拖动组合分离

视图的组合,形成了一个选项卡

 

视图的分离,产生另外一个窗口

 

 

 

 

 

 

 

2.     快速视图

 

以上都是RCP插件开发的特有功能,只是初始化窗口时添加一些方法即可实现

状态条

透视图

快速视图

RCP插件开发还有很多的特色,请自己去体验吧。。。。

 

 

.软件测试和使用说明

我们团队在开发过程也不断的对软件的运行进行测试,我们对GTM测试取用了两个方式:

1.使用eclipsedebug进行单步/单行测试;

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.

 

 

 

 

你可能感兴趣的:(CIOC GTM文档)