学生实训管理系统DOC.docx
- 文档编号:24943726
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:23
- 大小:678.48KB
学生实训管理系统DOC.docx
《学生实训管理系统DOC.docx》由会员分享,可在线阅读,更多相关《学生实训管理系统DOC.docx(23页珍藏版)》请在冰豆网上搜索。
学生实训管理系统DOC
中北大学
面向对象程序设计实训
说明书
学院、系:
软件学院
专业:
软件工程
学生班级:
13140A01
学生姓名:
王一平
学号:
1314010333
设计题目:
学生实训管理系统
起迄日期:
2015年6月29日-2015年7月10日
指导教师:
杨秋翔
2015年7月8日
实训任务书
1.设计目的:
进一步掌握面向对象程序设计的思想和方法,遵照软件工程中软件系统的开发流程,使用JAVA/JAVAWEB完成一个软件系统,在实践中提高分析问题、解决问题的能力,动手编程的能力和团队协作的能力。
2.系统设计内容和要求(包括原始数据、技术参数、条件、设计要求等):
设计内容:
学生实训管理系统包括以下功能:
实训学生信息、实训企业信息、实训课程、实训地点等信息的管理(录入、修改、删除等基本操作);能实现实训学生对实训企业的实训课程选择,某个企业的某门课程实训地点的管理(地点固定),选择结果的各种查询(按企业、学生、课程、地点等各种方式的查询)
要求:
(1)基于B/S模式,并采用MVC架构,分层合理,最大限度的减少代码冗余。
(2)遵照软件工程规范,严格按照软件系统的开发流程(需求分析,概要设计,详细设计,编码实现,测试)进行。
(3)系统中的数据表设计应在数据库实训的基础上进一步规范合理、高效,尽量减少数据冗余。
(4)最终完成的软件系统应操作简捷,友好,方便,实用。
3.设计工作任务及工作量的要求〔包括课程设计说明书(论文)、图纸、实物样品等〕:
(1)根据设计内容和要求进行需求分析,分析出系统要解决的问题。
(2)根据需求分析的内容进行概要设计和详细设计,并在小组中合理分工。
(3)按格式要求,每人根据自己完成的工作写出实训说明书
实训任务书
4.自己承担的任务
(1)企业信息增加、删除、修改、查询。
(2)企业添加实训课程。
(3)教师信息增加、删除、修改、查询。
(4)课程信息增加、删除、修改、查询。
5.设计成果形式及要求:
实训说明书
软件系统
6.工作计划及进度:
2015年
6.29-7.30需求分析
7.1-7.2概要设计和详细设计
7.3-7.7系统实现与测试
7.8撰写实训说明书
7.9验收答辩、成绩考核
7.10上交实训报告
一、需求分析
(1)、系统要求:
实训学生信息、实训企业信息、实训课程、实训地点等信息的管理(录入、修改、删除等基本操作);能实现实训学生对实训企业的实训课程选择,某个企业的某门课程实训地点的管理(地点固定),选择结果的各种查询(按企业、学生、课程、地点等各种方式的查询)
(2)、系统功能分析:
二、概要设计
(1)、概念模型:
关系模式:
学生(学生号,姓名,性别,专业,年龄,籍贯,...)
企业(企业编号,企业名称,企业信息,...)
课程(课程号,课程名,开课时间,开课教师,课程人数,...)
教师(教师号,姓名,企业编号,课程号,...)
学生留言(学生号,学生留言,...)
教师留言(教师号,教师留言,...)
课程人数统计(课程号,课程人数,已选人数,...)
选课(学生号,课程号,成绩,...)
实训课程表(教师号,课程号,企业编号)
三、详细设计
(1)、数据流图:
(2)、数据字典:
表1-student学生表
字段名称
含义说明
数据类型
长度
是否为空
备注
student_id
学生号
nvarchar
20
not
主码
student_name
姓名
nvarchar
20
not
sex
性别
nvarchar
1
not
dept
专业
nvarchar
20
not
age
年龄
int
1
not
homeland
籍贯
nvarchar
20
not
表2-company企业表
字段名称
含义说明
数据类型
长度
是否为空
备注
company_id
企业编号
nvarchar
20
not
主码
company_name
企业名称
nvarchar
20
not
company_info
企业信息
text
50
表3-class课程表
字段名称
含义说明
数据类型
长度
是否为空
备注
class_name
课程名
nvarchar
30
not
class_id
课程号
nvarchar
20
not
主码
class_place
开课地点
nvarchar
10
not
class_start
开课时间
date
class_stop
结束时间
date
表4-teacher老师表
字段名称
含义说明
数据类型
长度
是否为空
备注
teacher_id
教室号
nvarchar
20
not
主码
teacher_name
教师姓名
nvarchar
20
not
class_name
课程名称
nvarchar
30
not
company_id
企业id
nvarchar
20
not
表5-sc选课表
字段名称
含义说明
数据类型
长度
是否为空
备注
student_id
学生学号
nvarchar
20
not
class_id
课程号
nvarchar
20
not
grade
成绩
numeric
10
not
表6-tc实训课程表
字段名称
含义说明
数据类型
长度
是否为空
备注
teacher_id
老师编号
nvarchar
20
not
class_id
课程号
nvarchar
20
not
company_id
公司编号
numeric
20
not
表7-users用户登陆信息表
字段名称
含义说明
数据类型
长度
是否为空
备注
username
用户名称
nvarchar
20
not
passwd
用户登陆密码
nvarchar
20
not
ID
用户登陆ID
nvarchar
20
not
四、编码实现
(1)、所有文件
VO类:
Company.java、Course.java、Tc.java、Teacher.java
IDAO类:
ICompanyDAO.java、ICourseDAO.java、ITcDAO.java、ITeacherDAO.java
Proxy类:
CompanyDAOProxy.java、CourseDAOProxy.java、TcDAOProxy.java、TeacherDAOProxy.java
Impl类:
CompanyDAOImpl.java、CourseDAOImpl.java、TcDAOImpl.java、TeacherDAOImpl.java
Servlet类:
CompanyServlet.java、CourseServlet.java、TeacherServlet.java
JSP文件:
company_detailed.jsp、company_insert.html、company_list.jsp、company_update.jsp、course_insert.html、course_list.jsp、course_update.jsp、fun.js、teacher_insert.html、teacher_list.jsp、teacher_update.jsp、index.html、left.html、login.jsp
(2)、具体代码(以部分企业功能为例)
packagecom.dao.impl;
importjava.sql.*;
importjava.util.*;
importcom.dao.ITcDAO;
importcom.factory.DAOFactory;
importcom.vo.*;
publicclassTcDAOImplimplementsITcDAO{
privateConnectionconn=null;
privatePreparedStatementpstmt=null;
publicTcDAOImpl(Connectionconn){
this.conn=conn;
}
publicbooleandoCreate(Tctc)throwsException{
booleanflag=false;
Stringsql="{callinserttc(?
?
?
)}";
CallableStatementcs=null;
cs=this.conn.prepareCall(sql);
cs.setString(1,tc.getTeacher().getTeacher_id());
cs.setString(2,tc.getCourse().getClass_id());
cs.setString(3,tc.getCompany().getCompany_id());
if(cs.executeUpdate()>0){
flag=true;
}
returnflag;
}
publicbooleandoUpdate(Tctc)throwsException{
booleanflag=false;
Stringsql="updatetcsetclass_id=?
company_id=?
whereteacher_id=?
";
this.pstmt=this.conn.prepareStatement(sql);
this.pstmt.setString(1,tc.getCourse().getClass_id());
this.pstmt.setString(2,tc.getCompany().getCompany_id());
this.pstmt.setString(3,tc.getTeacher().getTeacher_id());
if(this.pstmt.executeUpdate()>0){
flag=true;
}
returnflag;
}
publicbooleandoDelete(Stringa,Stringb,Stringc)throwsException{
booleanflag=false;
Stringsql="deletefromtcwhereteacher_id=?
andclass_id=?
andcompany_id=?
";
this.pstmt=this.conn.prepareStatement(sql);
this.pstmt.setString(1,a);
this.pstmt.setString(2,b);
this.pstmt.setString(3,c);
if(this.pstmt.executeUpdate()>0){
flag=true;
}
returnflag;
}
publicList
List
ResultSetrs=null;
Stringsql="selectc.class_id,class_name,class_start,class_stop,class_place,te.teacher_name,pany_name,te.teacher_id,pany_id"
+"fromclassc"
+"leftouterjointcton(t.class_id=c.class_id)"
+"leftouterjointeacherteon(te.teacher_id=t.teacher_id)"
+"leftouterjoincompanycomon(pany_id=pany_id)"
+"wherepany_id=?
";
this.pstmt=this.conn.prepareStatement(sql);
this.pstmt.setString(1,companyId);
rs=this.pstmt.executeQuery();
while(rs.next()){
Coursecourse=newCourse();
course.setClass_id(rs.getString
(1));
course.setClass_name(rs.getString
(2));
course.setClass_start(rs.getDate(3));
course.setClass_stop(rs.getDate(4));
course.setClass_place(rs.getString(5));
Teacherteacher=newTeacher();
teacher.setTeacher_name(rs.getString(6));
teacher.setTeacher_id(rs.getString(8));
course.setTeacher(teacher);
Companycompany=newCompany();
company.setCompany_name(rs.getString(7));
company.setCompany_id(rs.getString(9));
course.setCompany(company);
all.add(course);
}
returnall;
}
}
packagecom.servlet;
importjava.io.IOException;
importjava.util.*;
importjavax.servlet.ServletException;
importjavax.servlet.http.*;
importcom.factory.DAOFactory;
importcom.vo.*;
publicclassCompanyServletextendsHttpServlet{
publicCompanyServlet(){
super();
}
publicvoiddestroy(){
super.destroy();
}
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
request.setCharacterEncoding("gbk");
Stringtype=request.getParameter("type");
if(!
(type==null||"".equals(type))){
if("insert".equals(type)){
this.insert(request,response);
}
if("delete".equals(type)){
this.delete(request,response);
}
if("updatepre".equals(type)){
try{
Companycompany=null;
company=DAOFactory.getICompanyInstance().findById(request.getParameter("no"));
request.setAttribute("company",company);
}catch(Exceptione){
}
request.getRequestDispatcher("company_update.jsp").forward(request,response);
}
if("update".equals(type)){
this.update(request,response);
}
if("listdetailed".equals(type)){
this.listdetailed(request,response);
}
if("inserttc".equals(type)){
this.inserttc(request,response);
}
if("deletetc".equals(type)){
this.deletetc(request,response);
}
}
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
this.doGet(request,response);
}
publicvoidinsert(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
List
Companycompany=newCompany();
company.setCompany_id(request.getParameter("cno"));
company.setCompany_name(request.getParameter("cname"));
company.setCompany_info(request.getParameter("cinfo"));
try{
if(DAOFactory.getICompanyInstance().doCreate(company)){
info.add("企业"+request.getParameter("cname")+"添加成功!
");
}else{
info.add("企业"+request.getParameter("cname")+"添加失败!
");
}
}catch(Exceptione){
e.printStackTrace();
}
request.setAttribute("info",info);
request.getRequestDispatcher("company_list.jsp").forward(request,response);
}
publicvoiddelete(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
List
try{
if(DAOFactory.getICompanyInstance().doDelete(request.getParameter("no"))){
info.add("企业删除成功!
");
}else{
info.add("企业删除失败!
");
}
}catch(Exceptione){
e.printStackTrace();
}
request.setAttribute("info",info);
request.getRequestDispatcher("company_list.jsp").forward(request,response);
}
publicvoidupdate(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
List
Companycompany=newCompany();
company.setCompany_id(request.getParameter("cno"));
company.setCompany_name(request.getParameter("cname"));
company.setCompany_info(request.getParameter("cinfo"));
try{
if(DAOFactory.getICompanyInstance().doUpdate(company)){
info.add("企业"+request.getParameter("cname")+"修改成功!
");
}else{
info.add("企业"+request.getParameter("cname")+"修改失败!
");
}
}catch(Exceptione){
e.printStackTrace();
}
request.setAttribute("info",info);
request.getRequestDispatcher("company_list.jsp").forward(request,response);
}
publicList
throwsException{
List
returnallteacher;
}
publicList
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 管理 系统 DOC