数据库课程设计报告格式 电子版文档格式.docx
- 文档编号:22306749
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:91
- 大小:356.85KB
数据库课程设计报告格式 电子版文档格式.docx
《数据库课程设计报告格式 电子版文档格式.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告格式 电子版文档格式.docx(91页珍藏版)》请在冰豆网上搜索。
系统的体系结构为C/S,前台为Java,后台数据库一般为SQLServer
4、需求分析
学生管理是学校管理中的一项重要任务,以往的手工操作已经不能适应现在办公的需要.为了摆脱繁琐的劳动,提高工作效率,利用计算机进行信息处理成为必然.开发功能完善及安全可靠的管理系统可以大大提高学校资源的利用率,及时,准确地获取需要的信息,充分发挥人员的工作潜力。
正是咨询业的迅速发展使得人们从过去的手工劳动中得以解脱.同时,编写一套完善的学生管理系统的任务就显得尤为重要。
本学生管理系统可实现学生基本信息、成绩信息、课程信息、班级基本信息表、教师基本信息表等的录入、修改、查询、更新和删除。
2.功能需求分析
用户密码管理密码修改、用户删除和用户信息查询。
班级管理添加、修改、删除和查询班级信息。
教师管理添加、修改、删除和查询教师信息。
五、系统设计
本系统采用C/S体系结构,客户端负责提供表达逻辑、显示用户界面信息、访问数据库服务器,采用java作为开发工具;
服务器端则用于提供数据服务,采用SQLServer2008标准版作为数据库管理系统。
本系统按照功能划分为以下三个个模块:
学生界面(包括学生添加和查询等)、教师界面(包括课程查询、成绩添加等)和管理员界面(包括课程管理、教师管理、学生管理等)。
系统的功能模块图如下图所示:
2、数据库设计
2、数据库设计
(1)数据库概念结构设计
本系统主要有三个实体:
a、学生实体、选修课两个实体,一个学生可以选修若干门课程,一门课程也可以被多个学生选修,这两个实体集之间是多对多联系,联系上有选课成绩;
b、教师和课程两个实体,一个老师可以教授若干门课程,一门课程也可以被多个老师教授,这两个实体集之间也是多对多联系;
2.数据库设计
(2)数据库逻辑结构设计
根据关系模型的转换原则,上面的E—R图可转换为如下所示的关系模型:
学生信息表:
student(学号,姓名,所属院系,课程编号,选修课程,选修成绩)
公选课信息表:
course(课程号,课程名,学分,学时,教师编号)
教师信息表:
teacher(教师编号,教师姓名,所属院系,教授课程号,教授课程名)
根据上面的E-R图设计及关系模型的设计,得出数据表的设计,在本系统中主要的数据表如下:
表1教师信息表teacher的表结构
主码
列名
数据类型
宽度
是否可为空
PK
教师工号
char
10
教师姓名
是
所属院系
教授课程号
教授课程名
表2学生信息表student的表结构
姓名
是
20
所选课程号
int
4
选修课程
选修成绩
表3公选课信息表course的表结构
课程号
课程名
学分
学时
下面在系统实施阶段就可以物理实现数据库了,本系统使用前面实验已经建好的服务器端SQLServer数据库
1.课程基本信息表E-R图:
2.成绩基本信息表E-R图:
3.教师基本信息表E-R图:
6、系统的实施
代码:
publiccharlogon()throwsSQLException
{
Stringtuserid=t1.getText();
Stringtpassword=newString(t2.getPassword());
Stringsql1=null,sql2=null;
ResultSetrs=null;
SqlManagerDBm=SqlManager.createInstance();
//单态模式获取实例
DBm.connectDB();
sql1="
execProcLogon'
"
+tuserid+"
'
'
+tpassword+"
;
rs=DBm.executeQuery(sql1);
if(rs.next())//如果存储过程有结果返回,则将用户信息读入并保存
{
System.out.println(rs.getString
(1)+"
如果存储过程有结果返回,则将用户信息读入并保存"
);
userid=rs.getString
(1);
password=rs.getString
(2);
if(userid.startsWith("
T"
))
{TeaInfo.saveTea(userid);
}
elseif(userid.startsWith("
S"
{StuInfo.saveStu(userid);
A"
{sql2=sql1;
DBm.connectDB();
rs=DBm.executeQuery(sql2);
rs.close();
DBm.closeDB();
returnuserid.substring(0,1).toCharArray()[0];
}
else{userid=null;
password=null;
JOptionPane.showMessageDialog(this,"
用户名或密码错误,请重新填写"
"
警告"
JOptionPane.WARNING_MESSAGE);
return'
0'
}}
publicvoidreset()
{t1.setText(null);
t2.setText(null);
t1.requestFocusInWindow();
publicvoidactionPerformed(ActionEvente)
if(e.getSource()==button)
{if(selectcourse()>
0){
JOptionPane.showMessageDialog(this,"
选课成功\n点击\"
确定\"
查看已选课程"
"
选课成功"
JOptionPane.INFORMATION_MESSAGE);
ChooseList.updateTable();
stuPanel.card.show(StuPanel.pCenter,"
已选课程"
}}}
publicintselectcourse()
intselectedCount=ChooseList.getSelectedCount();
inta=xianzhi();
intc=0;
String[]courseID=newString[selectedCount];
if(selectedCount==3)
选课数目不能超过3门,你已经选择了3门\n点击\"
ChooseList.updateTable();
StuPanel.card.show(StuPanel.pCenter,"
returnc;
else{if(a+selectedCount>
3)
{
选课数目不能超过3门,你已经选择了"
+selectedCount+"
门\n点击\"
"
StuPanel.card.show(StuPanel.pCenter,"
returnc;
else
{//不能选重复了
Stringsql="
execSelectedCourse'
+Logon.userid+"
//System.out.println(sql+"
不能选重复了"
SqlManagerDBm=SqlManager.createInstance();
DBm.connectDB();
ResultSetrs=DBm.executeQuery(sql);
try{inti=0;
while(rs.next()){
courseID[i]=rs.getString
(1).trim();
System.out.println(courseID[i]+"
changdu"
rs.close();
}catch(SQLExceptione){e.printStackTrace();
DBm.closeDB(){for(inti=0;
i<
count;
i++)
{
for(intj=0;
j<
selectedCount;
j++)
{
if(table1.getValueAt(i,0).toString().equals("
true"
{
//System.out.println(table1.getValueAt(i,1).toString().trim()+"
选课不能重复,点击"
//System.out.println(courseID[j]);
if(table1.getValueAt(i,1).toString().trim().equals(courseID[j])){
JOptionPane.showMessageDialog(this,"
选课不能重复,\n点击\"
"
ChooseList.updateTable();
StuPanel.card.show(StuPanel.pCenter,"
returnc;
}}}}
for(inti=0;
if(table1.getValueAt(i,0).toString().equals("
Stringcourseid=table1.getValueAt(i,1).toString();
sql="
execSelectCourse'
+courseid+"
c=DBm.executeUpdate(sql);
System.out.println("
c1="
+c);
}System.out.println("
c2="
if(c==0){
JOptionPane.showMessageDialog(this,"
请选择选修课"
"
}returnc;
publicintxianzhi(){
inta=0;
for(inti=0;
{if(table1.getValueAt(i,0).toString().equals("
))a++;
returna;
{modify.setVisible(true);
publicstaticvoidsaveStu(Stringid)
{SqlManagerDBm=SqlManager.createInstance();
Stringsql="
execProcStudent'
+id+"
ResultSetrs=DBm.executeQuery(sql);
System.out.println(sql);
try{
rs.next();
jid.setText(rs.getString
(1));
jname.setText(rs.getString
(2));
jsex.setText(rs.getString(3));
jbirth.setText(rs.getString(4));
jclass.setText(rs.getString(5));
}catch(SQLExceptione){
e.printStackTrace();
七、系统评价及心得体会
通过将近两周的时间的艰苦历程,终于完成了本次数据库的课程设计——选修课程管理系统。
如果凭现在所学的知识来看要完成选修课程管理系统,这是远远不够的,因此需要下去大量查资料并自学很多知识。
所以在做的过程中,边做边学,作出的效果并不是那么的完善。
以前没有做过这种数据库管理系统,面对好几张表时,对于它们之间的联系、E-R图的结构,都是要经过深思熟虑之后才能动手开始整个数据库建立与java编程。
本次课程设计虽然完成了,但是我知道还是存在一些缺陷的,数据库还不是那么的完美,还存在一些漏洞,java编程界面面也不是那么的完美,界面结构也有一些缺点,但是我尽最大的能力来使我的数据库和界面面更加的人性化,更加的方便实用。
在以后的学习过程中,需要对事物多加考虑,对问题全面考虑。
要把问题更加的完善,不能想到什么就做什么,一定要在动手之前做好充分的准备,这样才可以做到事半功倍。
本次课程设计取得一定的成绩,是值得欣慰的。
同时,也认识到自学的重要性,要不懂多查书,多查资料。
在做的过程中,学习知识。
同时提高自己。
8、参考文献
[1]钱雪忠.数据库原理及应用(第二版).北京邮电大学出版社.2004
[2]钱雪忠.数据库原理及应用实验指导(第二版).北京邮电大学出版社.2004
[3]李刚.疯狂Java讲义.电子工业出版社.2008
9、附录:
源代码
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.table.DefaultTableModel;
importjava.sql.*;
importjava.util.Vector;
publicclassAdmPanelextendsJPanelimplementsActionListener,ItemListener,MouseListener
{
privatestaticfinallongserialVersionUID=1L;
//添加默认序列号
JButtonb1,b2,b3,b4,b5,b6;
JPanelp1,p2,pCenter;
CardLayoutcard=null;
JTextFieldt1=newJTextField(10),
t2=newJTextField(10),
t3=newJTextField(10),
tt1=newJTextField(10),
tt2=newJTextField(10),
tt3=newJTextField(10);
ButtonGroupsex1=newButtonGroup(),
sex2=newButtonGroup();
JRadioButtonradio1=newJRadioButton("
男"
true),
radio2=newJRadioButton("
女"
JRadioButtonr1=newJRadioButton("
r2=newJRadioButton("
JComboBoxyear,month,date,yy,mm,dd,post;
JTabletable1,table2;
Vector<
String>
vectorColName1=newVector<
(),
vectorColName2=newVector<
();
Vector<
>
vector1=newVector<
vector2=newVector<
DefaultTableModelmodel1=newDefaultTableModel(vectorColName1,0){
privatestaticfinallongserialVersionUID=1L;
publicbooleanisCellEditable(introw,intcolumn)
returnfalse;
}
};
DefaultTableModelmodel2=newDefaultTableModel(vectorColName2,0){
AdmPanel()
setLayout(newBorderLayout());
t1=newJTextField(10);
t2=newJTextField(10);
t3=newJTextField(10);
tt1=newJTextField(10);
tt2=newJTextField(10);
tt3=newJTextField(10);
sex1.add(radio1);
sex1.add(radio2);
sex2.add(r1);
sex2.add(r2);
year=newJComboBox();
month=newJComboBox();
date=newJComboBox();
yy=newJComboBox();
mm=newJComboBox();
dd=newJComboBox();
post=newJComboBox();
post.addItem("
助教"
讲师"
副教授"
教授"
for(inti=1980;
1995;
year.addItem(i);
for(inti=1;
=12;
month.addItem(i);
=31;
date.addItem(i);
for(inti=1950;
yy.addItem(i);
mm.addItem(i);
dd.addItem(i);
year.addItemListener(this);
month.addItemListener(this);
yy.addItemListener(this);
mm.addItemListener(this);
post.addItemListener(this);
b1=newJButton("
学生信息管理"
b2=newJButton("
教师信息管理"
b3=newJButton("
输入"
b4=newJButton("
删除"
b5=newJButton("
b6=newJButton("
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
JPanelp0=newJPanel();
p0.add(b1);
p0.add(b2);
pCenter=newJPanel();
card=new
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库课程设计报告格式 电子版 数据库 课程设计 报告 格式