一个教务管理系统的Demo
Last modified:2013-04-06 23:52:58
***********************************************
系统设计说明书:
1.登陆 |
1.1登录(学生、教师、管理员自动区分) |
1.1.1登陆(根据帐号显示对应页面) |
|
2.管理员 |
2.1学生信息管理 |
2.1.1添加学生信息 |
|
2.1.2 删除学生信息 |
|||
2.1.3 查询学生信息 |
2.1.3.1查所有,根据成绩排序(指定科目) |
||
2.1.3.2根据学号查询 |
|||
2.1.3.3根据姓名查询[一批] |
|||
2.4成绩管理 |
2.2.1成绩录入 |
为选修了指定课程号的学生录入成绩 |
|
2.2.2 成绩修改 |
原理同2.2.1都是更新 |
||
2.2.3 成绩查询 |
按照指定学号查询成绩 |
||
2.5管理员信息管理 |
2.3.1密码修改 |
||
2.3课程管理 |
2.4.1添加课程 |
||
2.4.2删除课程 |
|||
2.4.3 修改课程 |
|||
2.4.4 查询课程 |
|||
2.6公告管理 |
2.5.1发布公告 |
||
2.5.2 修改公告 |
|||
2.5.3 删除公告 |
|||
2.5.4 查看公告 |
2.5.4.1按照条件查看 |
||
2.5.4.2根据内容的关键字进行匹配查看 |
|||
2.2教师信息管理(同学生信息管理) |
|||
3.学生 |
3.1个人信息维护 |
3.1.1个人信息的填写和修改 |
|
3.2 成绩查询 |
3.2.1 查询各科成绩 |
||
3.3密码维护 |
3.3.1密码修改 |
||
3.4签到 |
3.4.1实现每天的签到 |
每天签到、签退各一次,多签提示。 |
|
3.4.2实现每天的签退 |
|||
3.5查看公告(同管理员的查看权限) |
3.5.1按照条件查看 |
||
3.5.2根据内容的关键字进行匹配查看 |
|||
3.6 选课管理 |
3.6.1通过课程号选课 |
||
3.6.2取消选课 |
|||
4.教师 |
4.1个人信息维护(同学生) |
||
4.2成绩管理(同管理员) |
|||
4.3密码维护(同管理员) |
|||
4.4签到(同学生) |
|||
5.注销 |
5.1退出登录 |
退出java虚拟机 |
数据库设计:
1,student(id,pass,name,birthday) 主键:id
2,admin(id,pass)主键:id
3,teacher(id,pass,name,birthday)主键:id
4,Course(id,name,tea_id)主键:id
5,sc(cou_id,stu_id,grade) id + id为主键,参照student和course
6,notice(id,title,content,time)id为主键
7,stuMark(id,arrive,leave) stu_id 和arrive为主键;stu_id参照student
8,teaMark(id,arrive,leave) tea_id 和arrive为主键;tea_id参照teacher
相应的sql语句:
CREATE TABLE student (
id varchar2(10),
pass varchar2(10),
name varchar2(10),
birthday date,
constraint s_pk primary key(id)
);
CREATE TABLE admin (
id varchar2(10),
pass varchar2(10),
constraint a_pk primary key(id)
);
CREATE TABLE teacher (
id varchar2(10),
pass varchar2(10),
name varchar2(10),
birthday date,
constraint t_pk primary key(id)
);
CREATE TABLE course (
id varchar2(10),
name varchar2(20),
tea_id varchar2(10),
constraint c_pk primary key(id),
constraint c_fk foreign key(tea_id) references teacher(id)
);
CREATE TABLE sc (
cou_id varchar2(10),
stu_id varchar2(10),
grade number,
constraint sc_pk primary key(cou_id,stu_id),
constraint sc_fk_1 foreign key(cou_id) references course(id),
constraint sc_fk_2 foreign key(stu_id) references student(id)
);
CREATE TABLE notice (
id varchar2(10),
title varchar2(20),
content varchar2(3999),
time date default sysdate,
constraint n_pk primary key(id)
);
CREATE TABLE stuMark (
id varchar2(10),
arrive date ,
leave date ,
constraint sm_pk primary key(id,arrive),
constraint sm_fk foreign key(id) references student(id)
);
CREATE TABLE TeaMark (
id varchar2(10),
arrive date,
leave date,
constraint tm_pk primary key(id,arrive),
constraint tm_fk foreign key(id) references teacher(id)
);
1.登录
1.1 用户登录
1.1.1登陆(根据帐号显示对应页面)
事件描述:用户在登录界面输入用户名和密码,选择登录用户的类型,点击登录,如果登录成功就跳转到相应的页面,登录失败就提示。
分析:
1, 在文本框内输入用户名和密码;选择登录用户的类型;
2, 查找对应的表,通过getById获得password,验证密码是否一致;
3, 一致则登录成功,提示登录成功,并显示相应的管理页面;
备注:
1, student(stu_id,stu_pass,stu_name,stu_birthday )
2, admin(adm_id,adm_pass )
3, getById()
4, LogView.java,AdmView.java, StuView.java
2.管理员
2.1 学生信息管理
2.1.1添加学生信息
事件描述:在textFiled中输入stu_id、stu_pass、stu_name、stu_birthday,点击提交按钮,将数据封装为一个学生对象,在数据库中检索看有没有学号重复的,如果有就提示,如果没有就插入(并提示)。
分析:
1, 填写数据,生日要特殊处理,输入是将出生年月分开获取,然后整体在dao层中转换为date;
2, 在数据库中通过getById进行检索,如果没有检索到,就添加,如果检索到就提示重复。
备注:
1,boolean add();
2.1.2 删除学生信息
事件描述:在textFiled中输入要删除学生的stu_id,点击删除按钮。
分析:
1, 将stu_id通过getById进行获取,如果获取到就删除,并提示删除学生的信息,如果没有找到就提示没有这个学生。
备注:
1,student delete(student);
2.1.3 查询学生信息
2.1.3.1查所有,根据成绩排序(指定科目)
事件描述:点击查询所有,显示所有学生的信息,并且按照成绩排序;
分析:
1,select * from (
select rownum r,ename,sal from (select * from emp order by sal))
where r between 3(star) and 5(end);
2,点击上一页,下一页,实现翻页效果。
备注:
1,List getSub(int star,int end);
2.1.3.2根据学号查询
事件描述:输入学号,通过getById获取相应的学生信息。
分析:student getById(String id);
2.1.3.3根据姓名查询[一批]
事件描述:输入姓名,通过List getByName()获取相应的学生信息
分析:List getByName();
2.2成绩管理
2.2.1成绩录入
事件描述:选择相应的课程编号;为选择相应课程的学生进行分数的录入;
分析:
1, 查找sc表中的选课信息;获取选择了指定课程id的学生;
2, 如果没有对应的课程号就提示。
备注:
1, sc(course_id,stu_id,grade) course_id+stu_id为主键。
2, List getById(String Course_id)
3, Int Update(sc obj);
4, Course(Course_id,course_name,t_name)
2.2.2 成绩修改
事件描述:获得要修改的课程号course_id、学生号stu_id和新的成绩grade;点击更新;
分析:
1, 将要更新的数据封装为一个sc对象。
2, 更新sc对应在数据库中的那个对象。
备注:
1,int update(sc)
2.2.3 成绩查询
事件描述:输入学生的学号,查询所有的成绩信息;
分析:
1,输入学号,List getGrade(String id)
备注:List getGrade(String id)
2.3管理员信息管理
2.3.1密码修改
事件描述:输入原来的密码,输入两次新的密码,点击修改密码按钮。
分析:如果原来的密码与数据库中的一样并且两次输入的密码也相同就更新数据;
备注:
1,admin getbyId(String id);
2,update();
3,control中的全局id;
2.4课程管理
2.4.1添加课程
事件描述:输入Course_id(课程id),course_name(课程名),t_name(授课老师)
分析:getbyid()先查找又没有相同的记录,如果有就提示已经有相同的记录,如果没有就插入add()
2.4.2删除课程
事件描述:输入要删除课程的课程号,点击删除;
分析:course delete(course);
备注:如果course为空就提示没有这个课程;
2.4.3 修改课程
事件描述:获取输入的Course_id(课程id),course_name(课程名),t_name(授课老师),点击修改
分析:int update(course c)
2.4.4 查询课程
事件描述:getbyid(String course_id);
getsub(int starRow ,int endRow);
2.5公告管理
2.5.1 发布公告
事件描述:输入标题title,内容content,时间time;点击发布按钮;
分析:notice(no,title,content,time)
2.5.2 修改公告
事件描述:int update(notice n)
2.5.3 删除公告
事件描述:notice delete(notice n)
2.5.4查看公告
2.5.4.1按照条件查看
事件描述:
基本流:
备选流:
2.5.4.2根据内容的关键字进行匹配查看
事件描述:notice selectbyname(String title);模糊查找
3.学生
3.1个人信息维护
3.1.1个人信息的填写和修改
事件描述:通过全局的id获取登录用户的信息getById(String id);
int updata(student stu)
基本流:
备选流:
3.2 成绩查询
3.2.1 查询各科成绩
事件描述:List getGrade(String id)
基本流:
备选流:
3.3密码维护
3.3.1密码修改
事件描述:
1,student getbyId(String id);
2,boolean update();
3,control中的全局id;
3.4签到
3.4.1实现每天的签到
事件描述:sign_in(stu_id,arrive,leave) stu_id 和arrive为主键;
分析:1,boolean add(signFrom sign)
3.4.2实现每天的签退
事件描述:int update(signFrom sign)
基本流:
备选流:
3.5查看公告(同管理员的查看权限)
3.6选课管理
3.6.1通过课程号选课
事件描述:boolean add(sc sscc)
3.6.2取消选课
事件描述:sc delete(sc)
4.教师(略)
5.注销
5.1退出登录
事件描述:点击退出登录,退出系统。
分析:也就是退出java虚拟机。
相关类的搭建:
domain:
1,Student
2,Admin
3,Teacher
4,Course
5,SC
6,Notice
7,StuMark
8,TeaMark
------------------------------------------------
Dao:
1,IBaseDao
obj getById(String id)
int add();
int delete(obj);
int Update(obj)
public abstract int add(E e);
public abstract int delete(E e);
public abstract int update(E e);
public abstract E getById(String id);
--------------------------------------------------
2,IStuDao:(StuDaoImpl)
student表特有操作:
List getByName();
3,ITeaDao:(TeaDaoImpl)
List getByName();
4,ICouDao:(CouDaoImpl)
List getSub(int star,int end);
5,ISCDao:(SCDaoImpl)
sc表特有操作:
List getGrade(String stuid)
List getSub(int star,int end);查找多条记录是会使用到
6,INoticeDao:(NoticeDaoImpl)
notice表特有操作:
notice selectbyname(String title);模糊查找
7,IStuMarkDao:(StuMarkImpl)
8,ITeaMarkDao:(TeaMarkImpl)
------------------------------------------------
IServer:
1,
2,
3,
4,
5,
6,
7,
8,