“学士之路”系统设计

整体概况

  • 1.代码规范
  • 2.数据库构成
    • (1)PowerDesigner设计图
    • (2)ER图
  • 3.MVC模型
  • 4.需求分析PDF的更新
  • 5.燃尽图
  • 6.工作比例

1.代码规范

(1) 命名规范

  • 命名不允许以下划线或美元符号开始或结束,不允许使用拼音与英文混合的方式
  • 变量名力求简洁易懂,避免不必要的修饰,如不建议提到变量类型,但也不要自己随意缩写
  • 即使是生存周期很短的变量,也要使用有意义的命名方式,i,j,k等只允许在短循环中用做索引
  • 常量命名全部大写,单词间用下划线分开,力求语义表达完整清楚,不要嫌名字长,不要使用原义数字或原义字符串
  • 类名使用UpperCamelCase风格,方法名、参数名、成员变量、局部变量使用lowerCamelCase风格
  • 包名统一使用小写,点分隔符之间有且只有一个自然语义的单词

(2)格式规范

  • 使用四个空格缩进
  • 任何运算符左右必须加一个空格
  • if/for/while/switch/do等保留字与左右括号之间都必须加空格
  • 如果大括号内为空,简洁地写成“{}”即可,不需要换行;如果是非空代码块则:
    • 左大括号前不换行,在左大括号后换行
    • 右大括号后还有else 等代码不换行,表示终止的右大括号后必须换行
    • 左大括号和左边字符间加一个空格,右大括号和右边字符(如果有的话)加一个空格

    形如:
	    Java
	    if (condition) {
	        DoSomething();
	    } else {
	        DoSomethingElse();
	    }

  • 不要把多条语句写在一行上,不要在一行定义多个变量
  • 方法参数在定义和传入时,多个参数逗号后边必须加空格
  • 推荐在代码中不同的业务逻辑之间或者不同的语义之间插入一个空行
  • 单行代码过长(超过120个字符)需要换行,运算符与下文一起换行,超长参数在逗号后换行,第二行缩进四个空格,第三行及以下和第二行对齐
  • SQL语句中,关键字全部大写
  • 将一条SQL语句的不同子句放在不同的行上

(3) 注释规范

  • 类、类属性、类方法的注释使用/**内容*/格式
  • 方法内部单行注释,在被注释代码上方另起一行,使用“//”注释。方法内部多行注释在相应代码上使用“/**/”注释,并与代码对齐
  • 注释要能帮助代码阅读者迅速地理解代码逻辑和设计思想,推荐与其用“半吊子”英文来注释,不如用中文注释把问题说清楚, 不要注释怎么做(How),而是程序在做什么(What)以及为什么这么做(Why)
  • 不要滥用注释,避免不必要的注释,好的命名和代码结构是自解释的,注释力求精简准确,表达到位
  • 注释要随着代码的修改而做出相应的调整
  • 参考特殊注释标记:待办事宜(TODO),错误(FIXME)

(4)编码原则

1> OOP

  • 避免通过一个类的对象引用访问此类的静态变量或方法,无谓增加编译器解析成本,直接用类名来访问即可
  • 所有的覆写方法,必须加@Override注解
  • 所有相同类型的包装类对象之间值的比较,全部使用equals方法比较
  • 构造方法简单初始化就好,不要加入复杂的操作,如果需要,请放在init方法中
  • 当一个类有多个构造方法或多个同名的方法时,推荐将它们放置在一起,便于阅读
  • 类内方法定义顺序依次是:公有方法或保护方法>私有方法>getter/setter方法
  • setter方法中,参数名称与类成员变量名称一致,this.成员名 = 参数名
  • 慎用Object的clone方法来拷贝对象,其默认是浅拷贝,深拷贝需要自己重写clone方法

2> 控制语句

  • 在一个switch块内,每个case都要有break来终止,最后都要加上一个default语句,即使它什么代码也没有
  • 在if/else/for/while/do语句中必须使用大括号,即使只有一行代码
  • 推荐尽量少用else,if()...else if()...else最好不要超过三层
  • 循环体中的语句要考量性能,思考是否可以移到循环体外,如定义对象、变量之类

3> 其它

  • 函数只做一件事,并且要做好
  • 对可预见的错误,加上条件判断来避免发生;对不可预见或者难以解决的错误进行“try{...}catch(e){...}”捕捉处理

2.数据库构成

(1)PowerDesigner设计图

  • 概念模型

  • 转化为物理模型

  • 生成数据库语句

/*==============================================================*/
/* DBMS name:      MySQL 5.0                                    */
/* Created on:     2017/10/27 8:24:51                           */
/*==============================================================*/


drop table if exists Character;

drop table if exists Course;

drop table if exists Department;

drop table if exists DepartmentActivities;

drop table if exists sponsor;

/*==============================================================*/
/* Table: Character                                             */
/*==============================================================*/
create table Character
(
   CHid                 int not null,
   CHName               longtext,
   CHNo                 bigint,
   CHClass              int,
   CHImage              int,
   CHCurrentEnergy      int,
   CHMaximumEnergy      int,
   CHCredit             int,
   CHComprehensiveTest  int,
   CHCurrentTime        time,
   CHIsFirstTimeLogin   bool,
   CHCurrentWeek        int,
   primary key (CHid)
);

/*==============================================================*/
/* Table: Course                                                */
/*==============================================================*/
create table Course
(
   Cid                  int not null,
   CHid                 int,
   CName                longtext,
   CSchooltime          time,
   CClassLocation       int,
   CMaximumCredit       int,
   CIsJoinCourse        bool,
   primary key (Cid)
);

/*==============================================================*/
/* Table: Department                                            */
/*==============================================================*/
create table Department
(
   Did                  int not null,
   CHid                 int,
   DName                longtext,
   DIsJoinDepartment    bool,
   primary key (Did)
);

/*==============================================================*/
/* Table: DepartmentActivities                                  */
/*==============================================================*/
create table DepartmentActivities
(
   DAid                 int not null,
   CHid                 int,
   DADid                int,
   DAName               longtext,
   DAActivityTime       time,
   DAMaximumComprehensiveTest int,
   DAIsJoinActivity     bool,
   primary key (DAid)
);

/*==============================================================*/
/* Table: sponsor                                               */
/*==============================================================*/
create table sponsor
(
   DAid                 int not null,
   Did                  int not null,
   primary key (DAid, Did)
);

alter table Course add constraint FK_CCJoin foreign key (CHid)
      references Character (CHid) on delete restrict on update restrict;

alter table Department add constraint FK_CDJoin foreign key (CHid)
      references Character (CHid) on delete restrict on update restrict;

alter table DepartmentActivities add constraint FK_CDAJoin foreign key (CHid)
      references Character (CHid) on delete restrict on update restrict;

alter table sponsor add constraint FK_sponsor foreign key (DAid)
      references DepartmentActivities (DAid) on delete restrict on update restrict;

alter table sponsor add constraint FK_sponsor2 foreign key (Did)
      references Department (Did) on delete restrict on update restrict;
      


(2)ER图示

3.MVC模型

  • 注册信息

  • 查看人物属性

  • 上课信息
    MVC模型

  • 参加部门活动
    MVC模型

  • 加入部门


4.需求分析文档更新

  • (1)将具体的验收标准表格化
  • (2)更改了开发工具
  • (3)对一些错误进行了修改
  • (4)增加了工作计划

5.燃尽图及计划安排

(1)Android Studio学习DEMO的燃尽图

(2)α版本进度的燃尽图

(3)计划安排


6.工作量及比例

学号 姓名 工作比例
031502109 陈文举 13%
031502253 叶己峰 20%
031502240 杨艺 13%
031502232 王钦泽 13%
031502142 张鹏 15%
031502404 陈邡 13%
031502106 陈涵 13%
posted @ 2017-10-27 23:25  kobe96  阅读(295)  评论(2编辑  收藏  举报