资源描述
《数据库原理》课程设计
题 目:学生成绩查询系统的设计与实现
学年学期: 2016年第一学期
班 级: 计算机科学与技术14-1班
学 号:
姓 名:
指导教师:
完成时间: 2016年11月5日
目录
一、引言 1
二、概述 1
2.1 设计目的与任务 1
2.2 设计环境 1
三、需求分析 1
3.1系统功能要求设计 1
3.2系统性能需求分析 2
四、概念结构设计 2
4.1系统功能模块设计 2
4.2系统E-R图 3
五、逻辑结构设计 3
六、物理结构设计 3
6.1创建学生基本信息表 4
6.2创建学生成绩信息表 4
七、数据库的实施与维护 5
7.1数据库的实施 5
7.2数据库的维护 9
八、总结 9
参考文献 10
附录 10
一、引言
21世纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域。基本上所有的具有一定数量数据的的机构都开始使用数据库来做管理。几乎所有学校也都是用计算机管理数据的机制,大大减少了学校学生成绩管理的工作量。
二、概述
2.1 设计目的与任务
该课程设计要求设计一个学生成绩的数据库管理系统,数据库中要求包含学生的基本信息,学科基本信息,以及学生所学课程的考试成绩。要方便学生进行成绩查询,通过该课程设计,应该达到把数据库理论知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分结合起来。
小组成员:吴昊昕、储洁、王佳乐
个人任务:逻辑结构设计和物理结构设计方面的内容,同时还有论文的编写。
2.2 设计环境
(1)Microsoft SQL Server 2005
(2)Eclipse
三、需求分析
3.1系统功能要求设计
(1)根据查询条件实现学生信息的查询
(2)学生选课信息查询、成绩信息的查询
(3)学生信息、课程信息、成绩信息的增加、删除、修改
(4)学生成绩录入:用于学生成绩管理,录入学生成绩,也可以更新
3.2系统性能需求分析
(1)用户界面需求:简洁、易懂、易用、友好的用户界面
(2)安全保密性需求:只有凭借用户名和密码登陆系统,才能进行信息的管理等
四、概念结构设计
4.1系统功能模块设计
成绩查询系统大体可以分为两大模块,一是学生的基本信息模块,里面应该包括学生的各方面信息;再者便是成绩基本信息模块,其中应该包括学生的各科成绩等等。
可以得到系统流程图:
图4.1 系统界面模块
4.2系统E-R图
由需求分析的结果可知,本系统设计的实体包括:
(1)学生基本信息:姓名、性别、学号、专业、出生日期
(2)成绩基本信息:学号、数学、英语、专业课成绩
由上述分析可得到系统的E-R图如下:
图4.2 总体E-R图
五、逻辑结构设计
数据库逻辑结构设计的任务就是把概念模型设计阶段设计好的基本E-R图转化为与选用的具体机器上的DBSM产品所支持的数据库模型相符合的逻辑结构,现在选用关系模型,E-R图转换如下:
学生信息(学号、姓名、性别、专业、出生日期)
成绩信息(学号、数学成绩、英语成绩、专业课成绩)
六、物理结构设计
数据库物理结构设计的任务就是根据具体计算机系统的特点,给给定的数据库系统确定合理的存储结构和存取方法。
6.1创建学生基本信息表
CREATE TABLE Student
(Student_sno int primary key,
Student_sname varchar(10) not null,
Student_sex nchar(5),
Student_date date,
Student_magor varchar(20));
图6.1 学生信息表创建图
6.2创建学生成绩信息表
CREATE TABLE Score
(Student_sno int primary key,
Course_math float,
Course_english float,
Course_professional float));
图6.2 成绩信息表创建图
七、数据库的实施与维护
7.1数据库的实施
1. 数据查询
*按照专业查询学生信息
图7.1 按专业查询学生信息操作图
*按照专业查询学生成绩
图7.2 按专业查询学生成绩操作图
2.数据添加
*添加学号为1060314014001的学生的基本信息
图7.3 添加学生信息操作图
*添加学号为1060314014001的学生的成绩信息
图7.4 添加学生成绩操作图
3. 数据删除
*删除学号为1060314014001的学生的基本信息
图7.5 删除学生信息操作图
*删除学号为1060314014001的学生的成绩信息
图7.6 删除学生成绩操作图
4. 数据修改
*修改学号为1060314014001学生的基本信息
图7.7 修改学生信息操作图
*修改序号为1060314014003学生的成绩信息
图7.8 修改学生成绩操作图
7.2数据库的维护
当试运行数据库合格后,数据库开发设计的工作就基本完成了,接下来就是正式运行中的调试,因为该系统比较简单,数据量小,数据库中几乎不会发生什么大的变化,但还是需要做好数据的备份,在SQL Server我们可以利用备份数据库的功能对已经设计好的数据做备份,如果数据库受到破坏或系统故障备份文件恢复数据库的数据。当然也可以利用其他方法进行数据维护。
八、总结
本次数据库课程设计收获很大,当然也花了好多的心思和时间。首先,我们为团队合作,共同完成了这个项目。而完成项目的前提在于合理分工,合理的分工能让项目完成的更快更好,合作更加的愉快。
在本次课程设计的过程中,我主要负责逻辑结构设计和物理结构设计方面的内容,同时还有论文的编写。数据库逻辑结构的任务就是将概念模型设计阶段设计好的基本E-R图选用关系模型后进行转换,而物理结构设计的任务就是根据计算机系统的特点,给给定的数据库系统确定合理的存储结构和存取方法,在此结构设计中,我创建了学生的基本信息表以及学生成绩信息表,在编写代码的过程中也出现了一些问题,在队友和老师的帮助下最终得到解决。
通过此次课程设计,给了我很多的实践经验,课程设计跟平时的理论课程有很大的区别,课堂上的理论,我们通过项目得到了实际的应用。当然也发现了很多自己以前未能发现的知识上的不知,实践是检验真理的唯一标准,也是检验自己知识掌握程度的机会,在动手编码的过程中,我发现了很多数据库知识上的缺陷,也发现了自己在编写程序方面的薄弱之处,但同时野增加了我对数据库的兴趣 ,今后一定努力的学习,在实践中增加自己的学习乐趣,让自己更加充实。
参考文献
[1]姜代红,蒋秀莲. 《数据库原理及应用实用教程》[M].北京:清华大学出版社,2010.12
[2]刘秋生. 《数据库系统设计及其应用案例分析》[M].东南大学出版社,2005
[3]王珊,萨师煊. 《数据库系统概论》[M].北京:高等教育出版社,2014.9
[4]吴靖. 《数据库原理及应用》[M].北京:机械工业出版社,2014.2
[5]岳付强,罗明英,韩德.《SQL Server从实战到入门》[M].北京:清华大学出版社,2009.9
[6]张莉. 《SQL Server数据库原理及应用》[M].北京:清华大学出版社,2009.5
[7]钱雪忠,罗海驰,陈国俊.《数据库原理及技术课程设计》[M].北京:清华大学出版社,2014.8
附录
//系统主界面
package 数据库;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class MyPanel extends JPanel{
private static final long serialVersionUID = 1L;
Image img=Toolkit.getDefaultToolkit().getImage("1.jpg");
public void paint(Graphics g){
g.drawImage(img,0,0,this);
}
}
public class MainForm extends JFrame implements ActionListener
{
private static final long serialVersionUID = 1L;
JMenu mSystem=new JMenu("系统");
JMenuItem mExit=new JMenuItem("退出");
JMenu mOperate=new JMenu("学生信息");
JMenuItem mAdd=new JMenuItem("添加");
JMenuItem mDel=new JMenuItem("删除");
JMenuItem mModify=new JMenuItem("修改");
JMenuItem mQuery=new JMenuItem("查询");
JMenu cOperate=new JMenu("学生成绩");
JMenuItem cAdd=new JMenuItem("添加");
JMenuItem cDel=new JMenuItem("删除");
JMenuItem cModify=new JMenuItem("修改");
JMenuItem cQuery=new JMenuItem("查询");
JMenu mHelp=new JMenu("帮助");
JMenuItem mAbout=new JMenuItem("软件信息");
JMenuBar mBar=new JMenuBar();
MainForm()
{
super("学生成绩管理系统");
setSize(820,640);
mSystem.add(mExit);
mOperate.add(mAdd);
mOperate.add(mDel);
mOperate.add(mModify);
mOperate.add(mQuery);
cOperate.add(cAdd);
cOperate.add(cDel);
cOperate.add(cModify);
cOperate.add(cQuery);
mHelp.add(mAbout);
mBar.add(mSystem);
mBar.add(mOperate);
mBar.add(cOperate);
mBar.add(mHelp);
setJMenuBar(mBar);
mExit.addActionListener(this);
mAdd.addActionListener(this);
mDel.addActionListener(this);
mModify.addActionListener(this);
mQuery.addActionListener(this);
mAbout.addActionListener(this);
cAdd.addActionListener(this);
cDel.addActionListener(this);
cModify.addActionListener(this);
cQuery.addActionListener(this);
setContentPane(new MyPanel());
setVisible(true);
setLocationRelativeTo(null);
}
public void actionPerformed(ActionEvent ae){
if(ae.getSource()==mExit)
System.exit(0);
else if(ae.getSource()==mAbout)
JOptionPane.showMessageDialog(this,"学生成绩管理系统\n\n计算机学院\n\n2016年10月","计科",JOptionPane.INFORMATION_MESSAGE);
else if(ae.getSource()==mAdd)
new AddForm().setVisible(true);
else if(ae.getSource()==mDel)
new DeleteForm().setVisible(true);
else if(ae.getSource()==mModify)
new ModifyForm().setVisible(true);
else if(ae.getSource()==mQuery)
new QueryForm().setVisible(true);
else if(ae.getSource()==cAdd)
new CAddForm().setVisible(true);
else if(ae.getSource()==cDel)
new CDeleteForm().setVisible(true);
else if(ae.getSource()==cModify)
new CModifyForm().setVisible(true);
else if(ae.getSource()==cQuery)
new CQueryForm().setVisible(true);
}
public static void main(String[] args) {
new MainForm();
}
}
//添加学生信息
package 数据库;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class CAddForm extends JFrame implements ActionListener
{
JLabel labSid=new JLabel(" 学 号 :");
JLabel labMath=new JLabel(" 数学成绩 :");
JLabel labEng=new JLabel(" 英语成绩:");
JLabel labMajor=new JLabel("专业课成绩:");
JTextField txtSid=new JTextField(20);
JTextField txtMath=new JTextField(20);
JTextField txtEng=new JTextField(20);
JTextField txtMajor=new JTextField(20);
JButton btnAdd=new JButton("添加");
JButton btnCancel=new JButton("取消");
JPanel pan=new JPanel();
JPanel pan1=new JPanel();
JPanel pan2=new JPanel();
JPanel pan3=new JPanel();
JPanel pan4=new JPanel();
JPanel pan5=new JPanel();
JPanel pan6=new JPanel();
Connection con;
Statement sql;
ResultSet rs;
CAddForm()
{
super("添加数据");
setSize(400,300);
pan1.add(labSid);
pan1.add(txtSid);
pan2.add(labMath);
pan2.add(txtMath);
pan3.add(labEng);
pan3.add(txtEng);
pan4.add(labMajor);
pan4.add(txtMajor);
pan6.add(btnAdd);
pan6.add(btnCancel);
pan.setLayout(new GridLayout(5,1));
pan.add(pan1);
pan.add(pan2);
pan.add(pan3);
pan.add(pan4);
getContentPane().add(pan,"Center");
getContentPane().add(pan6,"South");
btnAdd.addActionListener(this);
btnCancel.addActionListener(this);
btnAdd.setEnabled(true);
txtSid.setEditable(true);
txtMath.setEditable(true);
txtEng.setEditable(true);
txtMajor.setEditable(true);
setVisible(true);
txtSid.requestFocus();
setLocationRelativeTo(null);
}
public void actionPerformed(ActionEvent ae){
String recode,insert1,学号,数学,英语,专业课;
if(ae.getSource()==btnCancel){
dispose();
} else if(ae.getSource()==btnAdd){
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");}
catch(ClassNotFoundException e){
}
try{con=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433; DatabaseName=DB_student","sa","123456");
System.out.println("连接成功!");
sql=con.createStatement();
学号=txtSid.getText();
数学=txtMath.getText();
英语=txtEng.getText();
专业课=txtMajor.getText();
recode="("+"'"+学号+"','"+数学+"','"+英语+"','"+专业课+"')";
insert1="INSERT INTO 学生成绩表 VALUES "+recode;
sql.executeUpdate(insert1);
System.out.println("记录添加完毕!");
btnAdd.setEnabled(true);
txtSid.setText("");
txtMath.setText("");
txtEng.setText("");
txtMajor.setText("");
new Success().setVisible(true);
con.close();
} catch(SQLException e){
}
}
}
public static void main(String[] args) {
new CAddForm();
}}
//删除学生信息
package 数据库;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class DeleteForm extends JFrame implements ActionListener
{
JLabel labSid=new JLabel(" 学 号 :");
JLabel labName=new JLabel(" 姓 名 :");
JLabel labSex=new JLabel(" 性 别 :");
JLabel labDate=new JLabel("出生日期:");
JLabel labMajor=new JLabel(" 专 业 :");
JTextField txtSid=new JTextField(20);
JTextField txtSex=new JTextField(20);
JTextField txtName=new JTextField(20);
JTextField txtDate=new JTextField(20);
JTextField txtMajor=new JTextField(20);
JButton btnDelete=new JButton("删除");
JButton btnCancel=new JButton("取消");
JButton btnQuery=new JButton("查询");
JPanel pan=new JPanel();
JPanel pan1=new JPanel();
JPanel pan2=new JPanel();
JPanel pan3=new JPanel();
JPanel pan4=new JPanel();
JPanel pan5=new JPanel();
JPanel pan6=new JPanel();
Connection con;
Statement sql;
ResultSet rs;
DeleteForm()
{
super("删除数据");
setSize(400,300);
pan1.add(labSid);
pan1.add(txtSid);
pan2.add(labName);
pan2.add(txtName);
pan3.add(labSex);
pan3.add(txtSex);
pan4.add(labDate);
pan4.add(txtDate);
pan5.add(labMajor);
pan5.add(txtMajor);
pan6.add(btnQuery);
pan6.add(btnDelete);
pan6.add(btnCancel);
pan.setLayout(new GridLayout(5,1));
pan.add(pan1);
pan.add(pan2);
pan.add(pan3);
pan.add(pan4);
pan.add(pan5);
getContentPane().add(pan,"Center");
getContentPane().add(pan6,"South");
btnQuery.addActionListener(this);
btnDelete.addActionListener(this);
btnCancel.addActionListener(this);
btnDelete.setEnabled(false);
txtDate.setEditable(false);
txtSex.setEditable(false);
txtName.setEditable(false);
txtMajor.setEditable(false);
setVisible(true);
txtSid.requestFocus();
setLocationRelativeTo(null);
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource()==btnCancel)
{
dispose();
}
else if(ae.getSource()==btnQuery){ //实现查询功能
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");}
catch(ClassNotFoundException e){
}
try{con=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433; DatabaseName=DB_student","sa","123456");
sql=con.createStatement();
rs=sql.executeQuery("select * from 学生信息表 where 学号='"+txtSid.getText()+"'");
if(rs.next())
{
txtSid.setText(rs.getString("学号"));
txtName.setText(rs.getString("姓名"));
txtSex.setText(rs.getString("性别"));
txtDate.setText(rs.getString("出生日期"));
txtMajor.setText(rs.getString("专业"));
btnDelete.setEnabled(true);//使删除按钮功能实现
txtDate.setEditable(false);
txtSex.setEditable(false);
txtName.setEditable(false);
txtMajor.setEditable(false);
txtSid.setEditable(false);
}else{
System.out.println("不存在该记录!");
new False().setVisible(true);
btnDelete.setEnabled(false);
txtName.setText("");
txtSex.setText("");
txtDate.setText("");
txtSid.setText("");
txtMajor.setText("");
txtName.setEditable(false);
txtSex.setEditable(false);
txtDate.setEditable(false);
txtMajor.setEditable(false);
}
}catch(SQLException e){
}
}
else if(ae.getSource()==btnDelete) //实现删除功能
{
try
{
sql.executeUpdate("DELETE FROM 学生信息表 where 学号='"+txtSid.getText()+"'");
System.out.println("记录删除完毕!");
btnDelete.setEnabled(false);
txtSid.setText(null);
txtName.setText(null);
txtSex.setText(null);
txtDate.setText(null);
txtMajor.setText(null);
new Success().setVisible(true);
con.close();
}
catch(SQLException e){
}
}
}
public static void main(String[] args)
{
new DeleteForm();
}
}
//修改学生信息
package 数据库;
import
展开阅读全文