数据库实训之任课教师管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
一、前言 (1)
二、系统及需求分析………………………………………………………………
三、数据库逻辑设计………………………………………………
四、数据字典…………………………………………………
五、功能及界面设计………………………………………………
六、总结……………………………………………………………
七、参考文献………………………………………………………
一、前言
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对教师信息进行管理,具有人工方式所无法比拟的优越性。
如,查找方便,可靠性高,存储容量大,保密性好,成本低,维护十分方便等,这些优点能够极大得提高工作的效率,这也是学校的科学化,现代化,正规化的一点体现。
教师信息管理系统开发主要包括数据库的建立和维护以及应用程序的开发两个方面。
要求建立起数据一致性和完整性强。
数据安全性好的库,要求应用程序功能完备,易使用等特点。
教师信息管理系统是一个教育单位不可缺少的部分,它的内容对于决策者和管理者来说都比较重要,所以教师信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。
用户的需求具体体现在对各种信息的提供、保存、更新和查询,这就要求数据库能充分满足各种数据的输出和输入。
因此,为了适应现代教育管理的要求,进一步完善教师信息辅助计算机管理,我作为一个计算机应用的专科生,开发这样一套管理软件成为很有必要的事情,在下面的各章中我将以开发一套教师信息管理系统为例,谈谈其开发过程和所涉及到的问题及解决方法。
本课题是设计任课教师信息管理系统,实现输入、查询、显示、维护等功能。
从界面上输入教师姓名,输出教师的基本信息和任课情况,不存在的数据,要输出提示内容。
从窗体中输入教师姓名,可以录入教师的上课数据,并计算教师的工作量。
通过窗体操作可浏览、删除、添加教师的相关数据。
关键字:面向对象,数据一致性,信息管理系统,数据库,SQL Server。
二、系统需求分析及设计
1.1系统需求分析
近年来,教育带来的发展对学校管理提出了更高的要求。
传统的管理机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代,建设一套具有行业特色的管理系统,以适应学校的总体发展战略。
教师信息管理系统正是针对这一类问题而开发出来的管理软件。
任课教师信息管理系统开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立数据一致性和完整性强,数据安全性好的数据库.而对于后者则要求应用程序功能完备, 系统优点:检索迅速、查找方便、可靠性高、存储量大、安全性高、成本低等。
这些优点能够极大地提高教师信息管理的效率,也是教育的科学化、正规化管理、易使用等特点。
针对目前情况,提出如下具体要求:
①使用友好的全屏幕用户界面,菜单驱动,多窗口。
②数据维护功能,通过窗体实现录入、添加和修改所有表的内容。
③查询统计功能,设置多种查询方式,实现对教师的任课情况、工作量统计情况等进行查询。
④系统维护功能,适当的加入系统密码管理、数据备份(已出现数据库备份界面)等帮助功能。
1.2系统设计
教师信息管理包括教师个人基本信息,任课信息、日常工作信息,进行统一的管理,本系统以此作为开发的目标,用以减轻教师管理人员的负担。
用户只有系统教师用,教师用户要通过用户名和口令进入,登录后,可以查看所有信息,并且可以对本系教师信息进行添加、修改、删除、查看浏览信息、修改自己的登录密码、查看浏览信息、修改自己的登录密码、系统安全维护等操作。
三、数据库逻辑设计
1、分功能模块图
(1)教师基本信息查询
图3-1教师基本信息查询功能图(2)教师基本信息修改
图3-2 教师基本信息修改功能图
(3)教师所带附属信息E-R图(查询教师基本信息时一起出现)
图3-3-1 教师所带附属信息图
图3-3-2 教师所带基本信息图(4)数据流程图
图3-4 数据流程图(5)系统流程图
图3-5 教师系统流程图(6)总体功能模块
图3-6 总体功能模块图
四、数据字典
数据字典:
5.1(1)teacher的数据结构
名字:teacher
别名:教师个人基本信息
描述:记录教师的相关信息
位置:保存到教师基本信息表
(2)teacher 数据项
(3)数据流
数据流名:teacher数据流
说明:“teacher”数据结构在系统中的流向
数据流来源:教师接收事务
数据流去向:查看个人基本信息
(4)数据存储
数据存储名:teacher 表
说明:teacher数据作为原始数据需要保存与备查(5)处理过程
处理过程名:teacher的查看,修改
说明:教师可以进行查看和修改个人基本信息5.2(1)course 数据项
(2)数据流:
数据流名:course 数据流
说明:course数据结构在系统中的流向
数据流来源:任课教师接收事务
数据流去向:查看、查询课程信息
(3)数据存储
数据存储名:course 表
说明:course 数据作为原始数据需要保存与备查
(4)处理过程
处理过程名:course 的查看,查询
说明:教师可以查看和根据自己的需求来进行查询课程信息
五、软件功能设计
1、数据库与程序代码的链接
public Connection Connection()
{
driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
// 加载JDBC驱动
url= "jdbc:sqlserver://localhost:1433;DatabaseName=Jiaoshi_Manager;";
// 连接服务器和数据库sample
try{
Class.forName(driverName);
con = DriverManager.getConnection(url,userName,password);
}
catch(SQLException e)
{
e.printStackTrace();
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
return con;
}
2、登陆界面的实现
public class Login extends JFrame implements ActionListener{ private lianjie LJ;
private JPanel jp=new JPanel();//创建面板容器
private JLabel[] jlArray = {new JLabel("用户名:"),new JLabel("密码:")};
private JTextField jtf = new JTextField();
private JPasswordField jpf = new JPasswordField();
private JButton[] jbArray= {new JButton("确认"),new JButton("重置")};
图4-1登陆界面图
3、登陆成功/失败提示界面的实现
(1)if(rs.next())
{//登陆成功
JOptionPane.showMessageDialog(this,
"登录成功",
"提示",RMATION_MESSAGE);
Menu mn=new Menu(jtf.getText());
//System.out.println("登录成功");
this.dispose();}
图4-2登陆成功界面提示界面图
(2)else
{//登录失败
JOptionPane.showMessageDialog(this,"用户名或密码错误",
"提示",JOptionPane.ERROR_MESSAGE);
jpf.setText("");
jtf.setText("");
}
图4-3登陆失败界面提示界面图
4、登陆欢迎退出系统界面的实现
if(id.equals("0"))
{//欢迎页面
cl.show(jpy,"welcome");
}
else if(id.equals("11"))
{//退出系统
int i=JOptionPane.showConfirmDialog(jpy,
"您确认要退出出系统吗?","询问", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if(i==0)
{
System.exit(0);
}
图4-4登陆欢迎退出系统的实现界面图
5、修改密码界面的实现
public class ChangePwd extends JPanel implements ActionListener
{
private lianjie LJ;
//声明用与表示当前学生学号的引用
private String tea_id;
//创建信息提示标签数组
private JLabel[] jlArray={new JLabel("原始密码"),new JLabel("新密码"),new JLabel("确认新密码"),
};
//创建密码框数组
private JPasswordField[] jpfArray={new JPasswordField(),new JPasswordField(),new JPasswordField()
};
//创建操作按钮数组
private JButton[] jbArray={new JButton("确认"),new JButton("重置")
};
图4-5修改密码界面的实现界面图
6、添加教师信息界面的实现
public class Add extends JPanel implements ActionListener
{
private lianjie LJ;
//声明用与表示当前教师ID的引用
private String tea_id;
//创建信息提示标签数组
private JLabel[] jlArray={new JLabel("教师ID"),new JLabel("教师姓名"),new JLabel("性别"),
new JLabel("所在院系"),new JLabel("出生日期"),new JLabel("联系电话"),new JLabel("职称")};
//创建密码框数组
private JTextField[] jtfArray = {new JTextField(),new JTextField(),new JTextField(),
new JTextField(),new JTextField(),new JTextField(),new JTextField()};
//创建操作按钮数组
private JButton[] jbArray={new JButton("提交"),new JButton("重置")
};
//构造器
图4-5添加教师信息界面实现界面图
7、添加教师信息成功/失败提示界面的实现
if(n==0)
{//添加成功提示信息
//System.out.println("成功");
String sql = "insert into tea_message values('"+tea_id+"','"+tea_name+"','"+tea_gender+"'," +
"'"+tea_college+"','"+tea_birth+"','"+tea_phone+"','"+tea_title+"')";
st.executeUpdate(sql);
JOptionPane.showMessageDialog(this,"添加教师个人信息成功","提示",RMATION_MESSAGE);
}
else if(n==1)
{//添加失败提示信息
//System.out.println("失败");
JOptionPane.showMessageDialog(this,"添加失败,已存在该教师","错误",JOptionPane.ERROR_MESSAGE);
}
图4-6添加教师信息成功/失败提示界面的实现界面图
8、删除教师信息界面及成功失败提示的实现
try
{ //初始化数据库连接并删除学生信息
Connection con = LJ.Connection();
Statement st= con.createStatement();
String sql_01="select tea_id from tea_message where tea_id='"+tea_id+"'" +
"and tea_name='"+tea_name+"'";
ResultSet rs=st.executeQuery(sql_01);
int n=0;
while(rs.next()){
n++;
}
if(n==0)
{//删除失败提示信息
JOptionPane.showMessageDialog(this,"删除失败,不存在该教师","错误",JOptionPane.ERROR_MESSAGE);
}
else if(n==1)
{//删除成功提示信息
String sql="delete from tea_message where tea_id='"+tea_id+"'" +
"and tea_name='"+tea_name+"'";
st.executeUpdate(sql);
JOptionPane.showMessageDialog(this,"删除教师个人信息成功","提示",RMATION_MESSAGE);
String sql_02="delete from lecture where lecture.tea_id='"+tea_id+"' ";
st.executeUpdate(sql_02);
}
图4-7删除教师信息界面图
图4-8删除教师信息成功界面提示界面图
图4-9删除教师信息失败界面提示界面图
9、添加教师工作及成功失败提示的实现
public class Add_Score extends JPanel implements ActionListener
{
private lianjie LJ;
//声明用与表示当前学生学号的引用
private String tea_id;
//创建信息提示标签数组
private JLabel[] jlArray={new JLabel("教师ID"),new JLabel("教师姓名"),new JLabel("课程名称"),
new JLabel("学分"),new JLabel("课时")};
//创建密码框数组
private JTextField[] jtfArray = {new JTextField(),new JTextField(), new JTextField(),new JTextField(),new JTextField()};
//创建操作按钮数组
private JButton[] jbArray={new JButton("提交"),new JButton("重置")
};
//构造器
if(x==0)
{
System.out.println("成功");
String sql = "insert into lecture values('"+tea_id+"','"+tea_name+"','"+cou_name+"'," +
"'"+cou_credit+"','"+cou_long+"')";
st.executeUpdate(sql);
JOptionPane.showMessageDialog(this,"添加教师课程成功","提示",RMATION_MESSAGE);
}
else
{
System.out.println("错误啦");
JOptionPane.showMessageDialog(this,"添加失败","错误
",JOptionPane.ERROR_MESSAGE);
}
图4-10添加教师工作及成功提示的实现界面图
图
4-11 添加教师工作及失败提示的实现界面图
10、修改教师工作及成功失败提示的实现
public class ChangePoint extends JPanel implements ActionListener
{
private lianjie LJ;
//声明用与表示当前学生学号的引用
private String tea_id;
//创建信息提示标签数组
private JLabel[] jlArray={new JLabel("教师ID"),new JLabel("教师姓名"),new JLabel("修改课程名称"),
new JLabel("修改学分"),new JLabel("修改课时")};
//创建密码框数组
private JTextField[] jtfArray = {new JTextField(),new JTextField(), new JTextField(),new JTextField(),new JTextField()};
//创建操作按钮数组
private JButton[] jbArray={new JButton("提交"),new JButton("重置")
};
//构造器
图4-12修改教师工作及成功提示的实现界面图
图4-13修改教师工作及失败提示的实现界面图
11、查询教师个人信息的实现
public class SearchMessage extends JPanel implements ActionListener
{
private String host;
//创建提示标签数组
private JLabel[] jlArray={new JLabel("I D:"),new JLabel("姓名 :"),
new JLabel("性别:"), new JLabel("所在院系 :"),
new JLabel("出生日期 :"),
new JLabel("年"),new JLabel("月"),
new JLabel("日"),
new JLabel("联系电话 :"),new JLabel("职称 :") };
//创建提示标签
private JLabel jl=new JLabel("请输入要查询教师的ID");
//创建用于输入学号的文本框控件
private JTextField jtf=new JTextField();
//创建查询按钮
private JButton jb=new JButton("查询");
//创建用于显示信息的标签数组
private JLabel[] jlArray2=new JLabel[10];
//声明GetStuInfo引用
图4-14查询教师个人信息的实现界面图
12、查询教师个人信息失败提示的实现
if(stu_id.equals(""))
{//输入学号为空
JOptionPane.showMessageDialog(this,"请输入教师ID","错误",
JOptionPane.ERROR_MESSAGE);
return;
}
else if(m==0){
JOptionPane.showMessageDialog(this,"不存在该教师","错误", JOptionPane.ERROR_MESSAGE);
v_data=gs.getAllScore(stu_id);
//更新表格模型
图4-15查询教师个人信息失败提示的实现界面图
13、查询教师工作信息的实现
public class SearchScore extends JPanel implements ActionListener {
//创建提示标签
private JLabel jl=new JLabel("请输入教师ID:");
private JLabel jl1=new JLabel("已修课程:");
//创建用于显示学分的标签
private JLabel jl2=new JLabel("");
//创建用于输入学号的文本框
private JTextField jtf=new JTextField();
//创建动作按钮
private JButton jb=new JButton("查询");
//声明表格引用
}
public void initialData()
{
//初始化表头
v_head.add("ID");
v_head.add("姓名");
v_head.add("课程名");
v_head.add("学分");
v_head.add("课时");
}
图4-16-1查询教师工作信息的实现界面图
图4-16-2查询教师工作信息的实现界面图
六、总结
经过一个多月的设计和开发,教师信息管理系统基本开发完毕,似乎做了半个
世纪,感觉最大的收获就是锻炼了自学能力。
其功能基本符合用户需求,能够完成员工基本信息、工资的输入和统计。
以及各类相关报表的打印。
并提供部分系统维护功能,使用户方便进行数据备份和恢复、数据删除。
同时也考虑到了减少数据冗余的问题,对于数据的一致性的问题也通过程序进行了有效的解决。
我想大多数人决心去学习一门新的计算机技术的原因有两个:想要学或必须学。
在今天的计算机世界里,没有人能够事事皆懂,最好的情况就是在需要的时候学习它。
当面临一个新的项目并且时间紧迫时,任何一个编程人员都会去学习某种语言或新的计算机技术来完成它,我们也不例外。
学习中,我查阅了很多本参考书,也查阅了网上不少资料。
我学习数据库的唯一方法就是实实在在地做些东西,凭空学习一大堆空洞的理论,不如从头到尾完成一个项目。
在曹雁峰老师的指导下,通过自己的努力,终于完成了毕业设计——开发一个教师信息管理系统。
我开发的这个任课教师信息管理系统实现了预期的基本功能。
在这一次设计中,翻阅大量资料,虽然结果还未尽完美,但在设计过程中,亦使我专业技能上有了很大的提高,对系统开发过程、步骤有了比较深刻的认识。
开发的过程中,我遇到了不少疑难问题,除了向指导老师请教外,更多的时候是请教同学,共同探讨,一起寻找解决问题的方案。
这些宝贵的经验对于我今后走上工作岗位将有很大的帮助。
由于时间的限制和本人的知识掌握尚有欠缺,所以该系统还有许多不尽如人意的地方,比如用户界面不够美观,出错处理不够等多方面问题。
这些都有待进一步改善。
再次感谢指导老师的辛苦教导和帮助!
七、参考文献
[1]软件系统开发技术潘锦平、施小姚、姚天昉西安电子科技大学出版社1999年
[2]软件工程导论张海藩清华大学出版社 1998年
[3]数据库系统原理及应用教程苗雪兰、刘瑞新、王怀峰机械工业出版社2001年
[4]数据库系统概论萨师煊、王珊高等教育出版社2001年
【5】Visual Basic 2005入门经典(第4版)、作者:(美)威利斯,(美)纽萨姆、出版社:清华大学出版社
【6】Visual Basic程序开发范例宝典、作者:明日科技、出版社:人民邮电出版社、。