用Java和SQLServer做学生管理系统.docx
《用Java和SQLServer做学生管理系统.docx》由会员分享,可在线阅读,更多相关《用Java和SQLServer做学生管理系统.docx(28页珍藏版)》请在冰豆网上搜索。
用Java和SQLServer做学生管理系统
中北大学
数据库原理
课程设计说明书
学生姓名:
武大为
学号:
11060342X37
学生姓名:
李力钊
学号:
11060342X28
学生姓名:
周荣祥
学号:
11060342X20
学生姓名:
南子锐
学号:
11060342X44
学院:
信息商务学院
专业:
计算机科学与技术
题目:
学生学籍管理系统
指导教师
武瑞娟
2018年6月27日
1设计目的:
按照关系型数据库的基本原理,综合运用所学的知识,以小组为单位,设计开发一个小型的学生学籍管理系统。
通过对一个实际问题的分析、设计与实现,将原理与应用相结合,使学生学会如何把书本上学到的知识用于解决实际问题,培养学生的动手能力;另一方面,使学生能深入理解和灵活掌握教案内容。
2设计内容:
设计内容:
设计如下主要功能模块
1)实现学生基本情况的录入、修改、删除等基本操作。
2)对学生基本信息提供灵活的查询方式。
3)完成一个班级的学期选课功能。
4)实现学生成绩的录入、修改、删除等基本操作。
5)能方便的对学生的一个学期成绩进行查询。
6)具有成绩统计、排名等功能。
7)具有留级、休学等特殊情况的处理功能。
8)能输出常用的各种报表。
9)具有数据备份和数据恢复功能。
设计要求:
学生成绩表的设计,要考虑到不同年级的教案计划的变化情况。
对于新生班级,应该首先进行基本情况录入、选课、然后才能进行成绩录入。
3.功能模块详细设计
3.1详细设计思想
这个学生管理系统,我们组用Java的JDK1.6开发工具和微软的MicrosoftSQLServer数据库两者相结合做出来的。
一数据库的设计:
1创建数据库StudentManager
图1.0
1.1创建表:
ClassInfo
图1.1
1.2创建表:
DepartmentInfo
图1.2
1.3创建表:
StudentInfo
图1.3
二创建“数据源(ODBC>”
具体步骤:
“开始”-“控制面板”-“管理工具”-“数据源(ODBC>
-在用户DNS里,点“添加”--在数据源驱动列表最下方选择“SQLServer”
-点“完成”--出现了一个创建到SQLServer的新数据源
-在数据源“名称”右侧,填写数据库的名称。
在“服务器”右侧,写(local>
-点“下一步”--继续点“下一步”
-在更改默认的数据库为“StudentManager”,这里的数据库为我刚刚新建的数据库。
-点“下一步”
-点“完成”
-出现一个“ODBCMicrosoftSQLServer安装”对话框
-点击下面的“测试数据源”
-出现图2.1就好了。
图2.1
-下面依次点击“确定”就完成了。
-完成了以后,你会在数据源里看到自己刚刚新建的数据源,名为:
“StudentManager”
图2.2
3.2核心代码:
三代码的编写:
3.1数据库连接类的代码<文件名:
DBConnect.java)注意,这个文件最先编译,因为后面的几个文件的编译会用到该文件编译完产生的DBConnect.class文件
//导入sql数据库包
importjava.sql.*。
//创建数据库连接类
publicclassDBConnect
{
//静态方法提高数据库的连接效率
publicstaticConnectiongetConn(>throwsException
{
//加载JDBC驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver">。
//以系统默认用户身份,连接数据库StudentManager
returnDriverManager.getConnection("jdbc:
odbc:
StudentManager","","">。
}
}
3.2添加学生面板类的代码<文件名:
AddStudentPanel.java)
//导入系统的类包
importjava.awt.*。
importjava.sql.*。
importjavax.swing.*。
importjava.awt.event.*。
//创建“添加学生面板”类
publicclassAddStudentPanelextendsJPanelimplementsActionListener
{
//声明连接数据库对象
Connectioncon。
//声明SQL语句对象
Statementst。
//创建组件对象:
标签、文本行、单选
JLabeljLabel1=newJLabel("学号">。
JLabeljLabel2=newJLabel("姓名">。
JLabeljLabel3=newJLabel("性别">。
JLabeljLabel4=newJLabel("出生日期">。
JLabeljLabel5=newJLabel("籍贯">。
JLabeljLabel6=newJLabel("注意:
出生日期格式为YYYY-MM-DD">。
JTextFieldjTextField1=newJTextField(>。
JTextFieldjTextField2=newJTextField(>。
JTextFieldjTextField3=newJTextField(>。
JTextFieldjTextField4=newJTextField(>。
JRadioButtonjRadioButton1=newJRadioButton("男">。
JRadioButtonjRadioButton2=newJRadioButton("女">。
ButtonGroupbuttonGroup1=newButtonGroup(>。
JButtonjButton1=newJButton("存入数据库">。
//构造方法
publicAddStudentPanel(>
{
try{
//调用初始化方法
jbInit(>。
}
catch(Exceptionexception>{
exception.printStackTrace(>。
}
}
//界面初始化方法
privatevoidjbInit(>throwsException
{
//连接数据库
con=DBConnect.getConn(>。
//创建一个statement对象来将SQL语句发送到数据库
st=con.createStatement(>。
//框架的布局
this.setLayout(null>。
//设置各组件的大小
jLabel1.setBounds(newRectangle(21,17,64,24>>。
jLabel2.setBounds(newRectangle(21,51,53,22>>。
jLabel3.setBounds(newRectangle(21,86,61,27>>。
jLabel4.setBounds(newRectangle(21,122,59,25>>。
jLabel5.setBounds(newRectangle(21,188,54,24>>。
jLabel6.setBounds(newRectangle(102,153,219,27>>。
jTextField1.setBounds(newRectangle(102,10,200,30>>。
jTextField2.setBounds(newRectangle(102,49,200,30>>。
jTextField3.setBounds(newRectangle(102,117,200,33>>。
jTextField4.setBounds(newRectangle(102,183,200,29>>。
jRadioButton1.setBounds(newRectangle(102,83,65,30>>。
jRadioButton2.setBounds(newRectangle(190,85,85,30>>。
jButton1.setBounds(newRectangle(103,217,180,30>>。
//设置单选按钮被选中
jRadioButton1.setSelected(true>。
//添加按钮动作事件
jButton1.addActionListener(this>。
//添加组件到面板
this.add(jTextField1>。
this.add(jLabel1>。
this.add(jLabel2>。
this.add(jTextField2>。
this.add(jRadioButton1>。
this.add(jRadioButton2>。
this.add(jLabel3>。
this.add(jLabel4>。
this.add(jTextField3>。
this.add(jLabel6>。
this.add(jTextField4>。
this.add(jLabel5>。
this.add(jButton1>。
buttonGroup1.add(jRadioButton1>。
buttonGroup1.add(jRadioButton2>。
}
//点击按钮事件
//事件相应器当你定义的事件捕捉以后就会执行这个里面的代码
publicvoidactionPerformed(ActionEvente>
{
//获取用户输入的信息
Stringxuehao=jTextField1.getText(>。
Stringxingming=jTextField2.getText(>。
Stringxingbie=""。
if(jRadioButton1.isSelected(>>
xingbie+="男"。
if(jRadioButton2.isSelected(>>
xingbie+="女"。
StringdateString=jTextField3.getText(>。
Stringjiguan=jTextField4.getText(>。
try{
//设置日期格式
st.execute("setdateformatymd">。
//利用st对象执行SQL语句,进行插入操作
st.executeUpdate("insertintoStudentInfovalues('"+xuehao+"','"+xingming+"','"+xingbie+"','"+dateString+"','"+jiguan+"','"+xuehao.substring(4,6>+"','"+xuehao.substring(0,6>+"'>">。
//清空文本行的内容
jTextField1.setText("">。
jTextField2.setText("">。
jTextField3.setText("">。
jTextField4.setText("">。
//利用消息对话框提示删除操作成功
JOptionPane.showMessageDialog(this,"插入成功!
">。
}
catch(Exceptionex>{
//利用消息对话框提示不能插入,并显示异常的信息
JOptionPane.showMessageDialog(this,"输入数据错误或者数据库不允许插入!
">。
ex.printStackTrace(>。
}
}
}
3.3删除学生面板类的代码<文件名:
DeleteStudentPanel.java)
//导入系统的类包
importjava.awt.*。
importjava.sql.*。
importjavax.swing.*。
importjava.awt.event.*。
//创建“删除学生面板”类
publicclassDeleteStudentPanelextendsJPanelimplementsActionListener
{
//声明连接数据库对象
Connectioncon。
//声明SQL语句对象
Statementst。
//创建组件对象
JLabeljLabel1=newJLabel("请输入待删除的学生的学号:
">。
JTextFieldjTextField1=newJTextField(>。
JButtonjButton1=newJButton("删除">。
//构造方法
publicDeleteStudentPanel(>
{
try{
//调用初始化方法
jbInit(>。
}
catch(Exceptionexception>{
exception.printStackTrace(>。
}
}
//界面初始化方法
privatevoidjbInit(>throwsException
{
//连接数据库
con=DBConnect.getConn(>。
st=con.createStatement(>。
//框架的布局
this.setLayout(null>。
//设置各组件的大小
jLabel1.setFont(newjava.awt.Font("宋体",Font.BOLD,14>>。
jLabel1.setBounds(newRectangle(70,20,200,30>>。
jTextField1.setBounds(newRectangle(70,80,207,41>>。
jButton1.setBounds(newRectangle(70,175,205,36>>。
//添加按钮动作事件
jButton1.addActionListener(this>。
//添加组件到面板
this.add(jLabel1>。
this.add(jTextField1>。
this.add(jButton1>。
}
//点击按钮事件
publicvoidactionPerformed(ActionEvente>
{
//获取用户输入的学号
Stringxuehao=jTextField1.getText(>。
//要求用户确认删除
if(JOptionPane.showConfirmDialog(this,"确认要删除吗?
">==JOptionPane.YES_OPTION>
{
try{
//利用st对象执行SQL删除操作
st.executeUpdate("deletefromStudentInfowhere学号='"+xuehao+"'">。
//利用消息对话框提示删除操作成功
JOptionPane.showMessageDialog(this,"删除操作成功!
">。
//清空输入学号的文本行
jTextField1.setText("">。
}
catch(Exceptionex>{
//利用消息对话框提示不能删除
JOptionPane.showMessageDialog(this,"删除操作执行失败!
">。
}
}
}
}
3.4按姓名查询学生面板类的代码<文件名:
InquireOnNamePanel.java)
//导入系统的类包
importjava.awt.*。
importjava.sql.*。
importjavax.swing.*。
importjava.awt.event.*。
//创建“添加学生面板”类
publicclassInquireOnNamePanelextendsJPanelimplementsActionListener
{
//声明连接数据库对象
Connectioncon。
//声明SQL语句对象
Statementst。
//创建组件对象:
标签、文本行、单选
JLabeljLabel1=newJLabel("请输入待查询的学生的姓名:
">。
JTextFieldjTextField1=newJTextField(>。
JButtonjButton1=newJButton("按姓名查询">。
JScrollPanejScrollPane1=newJScrollPane(>。
JTextAreajTextArea1=newJTextArea(>。
//构造方法
publicInquireOnNamePanel(>
{
try{
//调用初始化方法
jbInit(>。
}
catch(Exceptionexception>{
exception.printStackTrace(>。
}
}
//面板初始化方法
privatevoidjbInit(>throwsException
{
//连接数据库
con=DBConnect.getConn(>。
st=con.createStatement(>。
//框架的布局
this.setLayout(null>。
//设置各组件的大小
jLabel1.setFont(newjava.awt.Font("宋体",Font.BOLD,14>>。
jLabel1.setBounds(newRectangle(80,10,200,34>>。
jTextField1.setBounds(newRectangle(80,50,200,30>>。
jButton1.setBounds(newRectangle(100,90,160,30>>。
jScrollPane1.setBounds(newRectangle(29,125,308,130>>。
//添加按钮动作事件
jButton1.addActionListener(this>。
//添加组件到面板
this.add(jScrollPane1>。
jScrollPane1.getViewport(>.add(jTextArea1>。
this.add(jLabel1>。
this.add(jTextField1>。
this.add(jButton1>。
}
//点击按钮事件
publicvoidactionPerformed(ActionEvente>
{
//获取用户输入的姓名
Stringxingming=jTextField1.getText(>。
//清空文本区原有的内容
jTextArea1.setText("">。
//要求用户确认删除
try{
//利用st对象执行SQL语句,返回结果集对象
ResultSetrs=st.executeQuery("select*fromStudentInfowhere姓名='"+xingming+"'">。
//处理结果集:
逐条显示结果集中的记录
while(rs.next(>>
{
jTextArea1.append(rs.getString("学号">+""+rs.getString("姓名">+""+rs.getString("性别">+""+rs.getDate("出生日期">+""+rs.getString("籍贯">+"\n">。
}
}
catch(Exceptionex>
{
//利用消息对话框提示查询失败
JOptionPane.showMessageDialog(this,"查询失败!
">。
}
//清空文本行的内容
jTextField1.setText("">。
}
}
3.5按学号查询学生面板类的代码<文件名:
InquireOnXHPanel.java)
//导入系统的类包
importjava.awt.*。
importjava.sql.*。
importjavax.swing.*。
importjava.awt.event.*。
//创建“添加学生面板”类
publicclassInquireOnXHPanelextendsJPanelimplementsActionListener
{
//声明连接数据库对象
Connectioncon。
//声明SQL语句对象
Statementst。
//创建组件对象:
标签、文本行、单选
JLabeljLabel1=newJLabel("请输入待查询的学生的学号:
">。
JTextFieldjTextField1=newJTextField(>。
JButtonjButton1=newJButton("按学号查询">。
JTextAreajTextArea1=newJTextArea(>。
//构造方法
publicInquireOnXHPanel(>
{
try{
//调用初始化方法
jbInit(>。
}
catch(Exceptionexception>{
exception.printStackTrace(>。
}
}
//面板初始化方法
privatevoidjbInit(>throwsException
{
//连接数据库
con=DBConnect.getConn(>。
st=con.createStatement(>。
//框架的布局
this.setLayout(null>。
//设置各组件的大小
jLabel1.setFont(newjava.awt.Font("宋体",Font.BOLD,16>>。
jLabel1.setBounds(newRectangle(46,4,222,32>>。
jTextField1.setBounds(newRectangle(47,37,247,31>>。
jButton1.setBounds(newRectangle(47,86,247,30>>。
jTextArea