百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

java实践设计——教务管理系统 内包含源码+sql+项目报告

yuyutoo 2024-10-12 00:40 9 浏览 0 评论

《教务管理系统》

项目报告

题 目: 教务管理系统


目 录

第1章 需求分析- 1 -- 1 -

1.1 需求描述- 1 -- 1 -

1.2 业务流程图- 1 -- 1 -

1.3 用例图- 2 -- 2 -

第2章 系统设计- 4 -- 4 -

2.1 系统的功能结构图- 4 -- 4 -

2.2 数据库的设计- 5 -- 5 -

2.2.1 概念模型设计- 5 -- 5 -

2.2.2 逻辑模型设计- 5 -- 5 -

2.2.3 物理模型设计- 6 -- 6 -

第3章 系统实现- 10 -- 10 -

3.1 实现环境- 10 -- 10 -

3.2 开发框架- 10 -- 10 -

3.3主要功能的开发流程- 10 -- 10 -

3.3.1 课程管理功能- 10 -- 10 -

3.3.2 选课管理功能- 13 -- 13 -

3.3.3 成绩管理功能- 15 -- 15 -

第4章 总结- 19 -- 19 -

第1章 需求分析

开发此系统,可以管理员及操作者更加方便随时添加、查询、修改,提高工作效率,尽量达到人力与设备的节省,面向管理员、学生和教师。

1.1 需求描述

本系统为选课式的管理模式,集学生信息管理、班级信息管理、教师信息管理、选课退课管理、成绩管理、课程安排管理、修改密码功能于一体,并可以打印学生个人成绩单。

1.2 业务流程图

本系统的流程主要描述的是学生打开选课管理来选择课程,如选错还可以退课,最后教师可以看到自己所授课程的所有学生并为其打分。因此,本系统包括3个基本流程。

图1-1描述的是管理员的操作流程:对班级、学生、教师及系统用户数据初始化后,开设新课并设置相关课程安排。

图1-1 业务流程图(管理员)

图1-2描述的是学生的操作流程:学生根据用户名密码登陆系统,初始密码由管理员提供,可自己修改。登陆系统后,可以进行选课、退课和查看成绩、个人信息。

图1-2 业务流程图(学生)

图1-3描述的是教师的操作流程:教师根据用户名密码登陆系统,初始密码由管理员提供,可自己修改。登陆系统后,可以进行所授课和查看成绩、个人信息。

图1-3 业务流程图(教师)

1.3 用例图

根据系统总体设计的模块划分和用户需求分析,设计出系统的用例图,其中的用户具体为管理员、教师、学生,根据其各自级别拥有的相应功能,可以执行相对应的操作,具体如图1-4所示:

图1-4 系统用例设计图

第2章 系统设计

2.1 系统的功能结构图

根据三个用户的操作需求,将系统划分为如下三大功能,并对其模块的划分和功能进行描述。

  • 管理员功能
    登录:登录
    学生管理:列表、添加、修改、删除
    班级管理:列表、添加、修改、删除
    课程管理:列表、添加、修改、删除
    教师管理:列表、添加、修改、删除
    系统用户:添加、删除
    密码:修改
  • 学生功能
    登录:登录
    选课管理:选课、打印
    退课管理:退课
    成绩:查看、打印
    个人信息:查看
    密码:修改
  • 教师功能

登录:登录

授课信息:查看

成绩管理:编辑成绩

学生信息:查看

班级信息:查看

个人信息:查看

密码:修改

综上,整个系统的功能结构图如图2-1所示:

图2-1系统功能结构图

2.2 数据库的设计

2.2.1 概念模型设计

系统的实体关系模型:管理员管理学生、教师、班级、课程、系统用户,管理员和学生、教师、班级、课程、系统用户是一对多的关系,教师和课程是一对多的关系,学生与课程是多对多的关系。具体如图2-2所示:

图2-2 系统E-R图

2.2.2 逻辑模型设计

根据图2-1的系统E-R图进行逻辑结构设计,结果如下所述:

  1. 管理员(管理员id,用户名,密码,身份)
  2. 学生(学生id,用户名,密码,学号,职务,姓名,性别,出生日期,宿舍号,身份证号,民族,籍贯,政治面貌,家庭住址,联系电话,电子邮箱,身份)
  3. 教师(教师id,用户名,密码,教师号,姓名,性别,出生日期,教师职称,专业,家庭住址,联系电话,电子邮箱,身份)
  4. 课程(课程id,课程名,授课教师,总课时,上课时间,上课地点)
  5. 选课(学生id课程id,成绩)
  6. 班级(班级id,班级名称,班主任,人数)

2.2.3 物理模型设计

根据系统的需求,经过详细的分析设计,本系统数据库中各个数据表的字段定义如下:

  1. 管理员表admin用来存储管理员的账户信息,表的设计如表2-1所示。
    表2-1 admin

字段描述

数据类型

允许为空

主键/外键

id

Int


name

Varchar

主键

pwd

Varchar


shenfen

Varchar


  1. 班级表banji用来存储班级的信息,表的设计如表2-2所示。
    表2-2 banji

字段描述

数据类型

允许为空

主键/外键

id

Int

主键

name

Varchar


banzhuren

Varchar


renshu

Varchar


shuoming

Text


  1. 成绩表chengji用来存储学生的课程成绩,表的设计如表2-3所示。
    表2-3 chengji

字段描述

数据类型

允许为空

主键/外键

id

Int

主键

xuesheng

Int

外键

kemu

varchar

外键

fenshu

varchar


  1. 成绩表jiaoshi用来存储老师的基本信息,表的设计如表2-4所示。
    表2-4 jiaoshi

字段描述

数据类型

允许为空

主键/外键

id

Int


name

Varchar

主键

pwd

Varcgar


jiaoshihao

Varchar


zhenname

Varchar


sex

Varchar


shengri

Varchar


zhicheng

Varchar


zhuanye

Varchar


phone

Varchar


address

Varchar


email

Varchar


shenfen

Varchar


  1. 课程表kecheng用来存储开设的课程信息,表的设计如表2-5所示。
    表2-5 kecheng

字段描述

数据类型

允许为空

主键/外键

id

Int


name

Varchar

主键

jiaoshi

Varchar

外键

keshi

Varchar


beizhu

Text


  1. 课程安排表kechengtable用来存储课程的课程安排信息,表的设计如表2-6所示。
    表2-6 kechengtable

字段描述

数据类型

允许为空

主键/外键

id

Int

主键

kecheng

Int


didian

Varchar


xingqi

Varchar


shangxiawu

Varchar


kejie

Varchar


beizhu

Text


  1. 选课表xuanke用来存储学生的选课信息,表的设计如表2-7所示。
    表2-7 xuanke

字段描述

数据类型

允许为空

主键/外键

id

Int

主键

xuesheng

Int

外键

kecheng

Int

外键

  1. 学生表xuesheng用来存储学生的基本信息,表的设计如表2-8所示。

表2-8 xuesheng

字段描述

数据类型

允许为空

主键/外键

id

Int


name

Varchar

主键

pwd

Varchar


banji

Varchar


xuehao

Varchar


zhiwu

String


zhenname

Varchar


sex

Varchar


sushehao

Varchar


shenfenzheng

Varchar


minzu

Varchar


jiguan

Varchar


zhengzhi

Varchar


address

Varchar


phone

Varchar


email

Varchar


beizhu

Text


shenfen

Varchar


第3章 系统实现

3.1 实现环境

本系统采用MyEclipse10开发工具,运行环境为jdk1.6,服务器tomcat5.5以上,利用MySQL数据库来创建数据库,并实现信息管理。

3.2 开发框架

本系统是一个教务管理系统,该系统采用结构化的系统分析方法,采用MVC框架,结合JSP+servlet+JavaBean技术进行开发。

3.3主要功能3-5个的开发流程

3.3.1 课程管理功能

管理员点击课程管理后,会显示所有已添加的课程,可以新增课程,还能对已有课程添加课程安排并且修改和删除信息等,界面如图3-1所示。

图3-1 课程管理界面

主要代码如下:

<%

ArrayList client = array.getKecheng();

Validate v = new Validate();

String guanjian = v.getUnicode(request.getParameter("guanjian"));

if(guanjian != null && !guanjian.equals("")){

client = array.getKechengcha(guanjian);}

for(int i = 0;i < client.size();i++){

ArrayList alRow = (ArrayList)client.get(i);

ArrayList jiaoshi = array.getLaoshi(alRow.get(2).toString());

%>

点击添加课程,管理员输入课程名称、选择系统中存在的教师以及总课时,点击提交及添加成功,如图3-2所示。

图3-2 添加课程界面

主要代码如下:

String mark = request.getParameter("mark");

String id = request.getParameter("id");

String kechengid = request.getParameter("kechengid");

ArrayList client = array.getKechengtable(id);

ArrayList kecheng = array.getKecheng(kechengid);

String str = "";

if(mark != null && mark.equals("add")){

str = "添加";

}

if(mark != null && mark.equals("update")){

str = "修改";

}

添加课程后,点击课程安排,可以查看本门课程的授课教师、时间和地点,同时也可以进行增加修改和删除。如图3-3所示。

图3-3 课程安排界面

主要代码如下:

<%

for(int i = 0;i < client.size();i++){

ArrayList alRow = (ArrayList)client.get(i);

%>

<tr class="tabletd<%=i%2+1 %>">

<td height="25" align="center"><%=i+1 %></td>

<td height="25" align="center"><%=alRow.get(2) %></td>

<td ><%=alRow.get(3)+""+alRow.get(4)+""+alRow.get(5) %></td>

<td height="25" align="center"><%=alRow.get(6) %></td>

<td >

<a href="<%=path %>/admin/kechengtable.jsp?mark=update&id=<%=alRow.get(0) %>

&kechengid=<%=kechengid %>">修改</a>

<a href="<%=path %>/DelServlet?kechengtable=<%=alRow.get(0) %>&kechengid=<

%=kechengid %>">删除</a></td>

</tr>

<%} %>

<tr class="tabletop">

<td height="25" colspan="12" align="center">

<a href="<%=path %>/admin/kechengtable.jsp?mark=add&kechengid=<%=kechengid

%>">添加课程安排</a></td></tr>

3.3.2 选课管理功能

学生进入系统后,点击选课管理后,会显示所有可选可退的课程,点击课程名称可以查看授课教师,点击课程表可以查看课程安排。界面如图3-4所示。

图3-4 选课管理界面

主要代码如下:

<%

ArrayList client = array.getXuanke("",adminlogin.get(0).toString());

Validate v = new Validate();

String guanjian = v.getUnicode(request.getParameter("guanjian"));

if(guanjian != null && !guanjian.equals("")){

client = array.getXuanke("and name like

'%"+guanjian+"%'",adminlogin.get(0).toString());

}

for(int i = 0;i < client.size();i++){

ArrayList alRow = (ArrayList)client.get(i);

ArrayList jiaoshi = array.getLaoshi(alRow.get(2).toString());

%>

学生点击自己想选的课程,即会弹出选课成功提示。界面如图3-5所示。

图3-5 选课成功界面

主要代码如下:

response.setContentType("text/html;charset=gb2312");

request.setCharacterEncoding("gb2312");

String id = request.getParameter("id");

HttpSession session = request.getSession();

ArrayList adminlogin = (ArrayList)session.getAttribute("adminlogin");

ArrayList xuesheng = (ArrayList)session.getAttribute("xuesheng.banji");

InsertUpdateDelBean ib = new InsertUpdateDelBean();

String sql = "insert into xuanke(xuesheng,kecheng)

values("+adminlogin.get(0)+","+id+")";

String sql2 = "insert into chengji(xuesheng,kemu,fenshu)

values("+adminlogin.get(0)+","+id+",0)";

ib.insertANDupdateANDdel(sql);

ib.insertANDupdateANDdel(sql2);

request.setAttribute("message", "选课成功");

学生如果选错了的课程,可以点击退课,即会弹出退课成功提示。界面如图3-6所示。

图3-6 退课成功界面

主要代码如下:

if(tuike != null && !tuike.equals("")){

str = "/xuesheng/kecheng_list.jsp";

sql = "delete from xuanke where id="+tuike;

ib.insertANDupdateANDdel(sql);

sql = "delete from chengji where id="+tuike;

ib.insertANDupdateANDdel(sql);

request.setAttribute("message", "退课成功!");

}

3.3.3 成绩管理功能

教师进入系统后,点击成绩管理,会显示所有教授的课程,点击课程名称可以查看授课信息。界面如图3-7所示。

图3-7 成绩管理界面

主要代码如下:

if(tuike != null && !tuike.equals("")){

str = "/xuesheng/kecheng_list.jsp";

sql = "delete from xuanke where id="+tuike;

ib.insertANDupdateANDdel(sql);

sql = "delete from chengji where id="+tuike;

ib.insertANDupdateANDdel(sql);

request.setAttribute("message", "退课成功!");

}

教师点击添加成绩可以显示所有选择了该门课程的学生的成绩。界面如图3-8所示。

图3-8 显示成绩界面

主要代码如下:

<%

ArrayList client = array.getLkechengcha(adminlogin.get(0).toString());

for(int i = 0;i < client.size();i++){

ArrayList alRow = (ArrayList)client.get(i);

%>

<tr class="tabletd<%=i%2+1 %>">

<td height="25" align="center"><%=i+1 %></td>

<td><a title="点击查看详细信息"

href="<%=path %>/jiaoshi/kecheng_show.jsp?id=<%=alRow.get(0) %>">

<%=alRow.get(1) %></a></td>

<td height="25" align="center">

<a href="<%=path %>/jiaoshi/addchengji.jsp?kemuid=<%=alRow.get(0) %>">

添加成绩</a></td>

</tr>

<%} %>

点击编辑,可以编辑学生本门课程的成绩。界面如图3-9所示。

图3-9 编辑成绩界面

主要代码如下:

<%

ArrayList xuesheng = array.getXuesheng(client.get(1).toString());

%>

<tr>

<td height="25" align="right" class="tabletd1">学生姓名:</td>

<td height="25" class="tabletd1"> <%=xuesheng.get(6) %></td>

</tr>

<tr>

<td height="25" align="right" class="tabletd2">分数:</td>

<td height="25" class="tabletd2"> <input type="text" name="fenshu" value="<%=client.get(3) %>"></td>

</tr>

<tr>

<td height="30" colspan="2" align="center" class="tabletd1"><input type="submit" value="提交" class="input"></td>

</tr>

第4章 总结

在完成教务管理系统这个项目时,我首先根据自己的了解对系统进行需求分析,然后在网上查阅资料,最终决定将系统角色主要划分为三个角色:管理员、学生和教师;然后根据三个角色的不同需求来设计数据表;最后根据前面的工作划分系统功能模块,例如课程管理模块、学生管理模块、教师管理模块、班级管理模块、成绩管理模块、选课管理模块等。

在完成上述工作后,经过开发编写程序,整个教务管理系统的功能基本实现。其中,主要实现的功能模块分为三大块:管理员可以对学生、教师、班级、课程和系统用户进行管理,同时还可以修改密码;学生可以选课、退课、查看个人信息和查看打印成绩,同时可以修改个人密码;教师可以查看授课信息、查看自己所带班级信息和给出所授课程的课程成绩,同时可以修改个人密码。

教务管理系统中的部分功能由于个人水平和时间问题,还可以继续改进和完善:如管理员添加课程时可以直接将课程选给整个班级学生;学生选课和退课时可以增加限制条件;教师在添加成绩时可以给整个班级添加成绩等。

相关推荐

Python操作Word文档神器:python-docx库从入门到精通

Python操作Word文档神器:python-docx库从入门到精通动动小手,点击关注...

Python 函数调用从入门到精通:超详细定义解析与实战指南 附案例

一、函数基础:定义与调用的核心逻辑定义:函数是将重复或相关的代码块封装成可复用的单元,通过函数名和参数实现特定功能。它是Python模块化编程的基础,能提高代码复用性和可读性。定义语法:...

等这么长时间Python背记手册终于来了,入门到精通(视频400集)

本文毫无套路!真诚分享!前言:无论是学习任何一门语言,基础知识一定要扎实,基础功非常的重要,找一个有丰富编程经验的老师或者师兄带着你会少走很多弯路,你的进步速度也会快很多,无论我们学习的目的是什么,...

图解Python编程:从入门到精通系列教程(附全套速查表)

引言本系列教程展开讲解Python编程语言,Python是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大,它也是互联网最热门的编程语言之一。Python生态丰富,库(模块)极其丰富,这使...

Python入门教程(非常详细)从零基础入门到精通,看完这一篇就够

本书是Python经典实例解析,采用基于实例的方法编写,每个实例都会解决具体的问题和难题。主要内容有:数字、字符串和元组,语句与语法,函数定义,列表、集、字典,用户输入和输出等内置数据结构,类和对象,...

Python函数全解析:从入门到精通,一文搞定!

1.为什么要用函数?函数的作用:封装代码,提高复用性,减少重复,提高可读性。...

Python中的单例模式:从入门到精通

Python中的单例模式:从入门到精通引言单例模式是一种常用的软件设计模式,它保证了一个类只有一个实例,并提供一个全局访问点。这种模式通常用于那些需要频繁创建和销毁的对象,比如日志对象、线程池、缓存等...

【Python王者归来】手把手教你,Python从入门到精通!

用800个程序实例、5万行代码手把手教你,Python从入门到精通!...

Python从零基础入门到精通:一个月就够了

如果想从零基础到入门,能够全职学习(自学),那么一个月足够了。...

Python 从入门到精通:一个月就够了

要知道,一个月是一段很长的时间。如果每天坚持用6-7小时来做一件事,你会有意想不到的收获。作为初学者,第一个月的月目标应该是这样的:熟悉基本概念(变量,条件,列表,循环,函数)练习超过30个编...

Python零基础到精通,这8个入门技巧让你少走弯路,7天速通编程!

Python学习就像玩积木,从最基础的块开始,一步步搭建出复杂的作品。我记得刚开始学Python时也是一头雾水,走了不少弯路。现在回头看,其实掌握几个核心概念,就能快速入门这门编程语言。来聊聊怎么用最...

神仙级python入门教程(非常详细),从0到精通,从看这篇开始!

python入门虽然简单,很多新手依然卡在基础安装阶段,大部分教程对一些基础内容都是一带而过,好多新手朋友,对一些基础知识常常一知半解,需要在网上查询很久。...

Python类从入门到精通,一篇就够!

一、Python类是什么?大家在生活中应该都见过汽车吧,每一辆真实存在、能在路上跑的汽车,都可以看作是一个“对象”。那这些汽车是怎么生产出来的呢?其实,在生产之前,汽车公司都会先设计一个详细的蓝图...

学习Python从入门到精通:30天足够了,这才是python基础的天花板

当年2w买的全套python教程用不着了,现在送给有缘人,不要钱,一个月教你从入门到精通1、本套视频共487集,本套视频共分4季...

30天Python 入门到精通(3天学会python)

以下是一个为期30天的Python入门到精通学习课程,专为零基础新手设计。课程从基础语法开始,逐步深入到面向对象编程、数据处理,最后实现运行简单的大语言模型(如基于HuggingFace...

取消回复欢迎 发表评论: