数据库课程设计实验报告Word文档格式.docx
《数据库课程设计实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据库课程设计实验报告Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
![数据库课程设计实验报告Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/26/0b26cc82-f2a7-4396-80ec-c13cd438f475/0b26cc82-f2a7-4396-80ec-c13cd438f4751.gif)
(1)企业注册与登陆
(2)发布招聘信息。
(3)查看求职信息、发布录用信息
系统管理员的主要功能模块包括:
(1)求职者信息管理
(2)企业信息管理
2.2数据流图
[1]顶层数据流图
[2]第二层数据流图
2.3E-R图
2.3.1普通用户(求职者)实体图
2.3.2职位实体图
2.3.3企业实体图
2.3.4系统ER图
第三章:
数据库设计
[1]PDM模型
[2]数据库表结构设计
(1)普通用户表
(2)账户信息表
(3)管理用户表
(4)企业用户表
(5)企业信息表
(6)职位信息表
(7)职位申请表
(8)招聘广告表
(9)投诉信息表
(10)新闻发布信息表
(11)管理日志表
第四章:
数据库测试
4.1通过JDBC连接 SQLSERVER,测试数据库是否连接成功
packagepkg;
importjava.sql.*;
publicclassMain{
publicstaticvoidmain(String[]args)
{
StringdriverName="
com.microsoft.sqlserver.jdbc.SQLServerDriver"
;
StringdbURL="
jdbc:
sqlserver:
//localhost:
1433;
DatabaseName=ASD"
StringuserName="
sa"
StringuserPwd="
123456"
Stringsql="
SELECT*FROM[ASD].[dbo].[ADMIN_INFO]"
Stringsql1="
SELECT*FROM[ASD].[dbo].[ID_INFO]"
PreparedStatementpre;
ResultSetrs;
try
Class.forName(driverName);
ConnectiondbConn=DriverManager.getConnection(dbURL,userName,userPwd);
System.out.println("
连接数据库成功"
);
pre=dbConn.prepareStatement(sql);
rs=pre.executeQuery();
管理用户表"
System.out.print("
账户编号"
+"
\t"
管理权限"
姓名"
性别"
电话"
while(rs.next()){
System.out.print(rs.getString
(1)+"
System.out.print(rs.getString
(2)+"
System.out.print(rs.getString(3)+"
System.out.print(rs.getString(4)+"
System.out.println(rs.getString(5));
}
pre=dbConn.prepareStatement(sql1);
\n"
全体用户表"
昵称"
密码"
用户类型"
邮箱"
catch(Exceptione)
e.printStackTrace();
连接失败"
4.2界面设计及数据库测试
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.*;
publicclassExample2extendsJFrameimplementsActionListener{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
JButtonadd,select,del,update;
JTabletable;
Objectbody[][]=newObject[50][5];
Stringtitle[]={"
账号编号"
"
};
Connectionconn;
Statementstat;
JTabbedPanetp;
publicExample2(){
super("
数据库操作"
this.setSize(700,600);
this.setLocation(200,100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanelps=newJPanel();
add=newJButton("
添加"
select=newJButton("
显示"
update=newJButton("
更改"
del=newJButton("
删除"
add.addActionListener(this);
select.addActionListener(this);
update.addActionListener(this);
del.addActionListener(this);
ps.add(add);
ps.add(select);
ps.add(update);
ps.add(del);
table=newJTable(body,title);
tp=newJTabbedPane();
tp.add("
ADMIN_INFO表"
newJScrollPane(table));
this.getContentPane().add(tp,"
Center"
this.getContentPane().add(ps,"
South"
this.setVisible(true);
this.connection();
publicvoidconnection(){
StringdriverName="
StringdbURL="
StringuserName="
StringuserPwd="
try{
Class.forName(driverName);
}
catch(ClassNotFoundExceptione)
{
System.out.println("
"
+e);
try{
conn=DriverManager.getConnection(dbURL,userName,userPwd);
stat=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
}
catch(SQLExceptione)
System.out.println(e);
publicstaticvoidmain(String[]args){
newExample2();
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==add)
{add();
}
if(e.getSource()==select)
{select();
if(e.getSource()==update)
{update();
if(e.getSource()==del)
{del();
publicvoiddel(){
try{
introw=table.getSelectedRow();
stat.executeUpdate("
deletefromADMIN_INFOwhereID='
+body[row][0]+"
'
JOptionPane.showMessageDialog(null,"
数据已成功删除"
this.select();
}catch(SQLExceptione){
System.out.println(e);
publicvoidupdate(){
JTextFieldt[]=newJTextField[6];
t[0]=newJTextField("
输入姓名:
t[0].setEditable(false);
t[1]=newJTextField();
t[2]=newJTextField("
输入性别:
t[2].setEditable(false);
t[3]=newJTextField();
t[4]=newJTextField("
输入电话:
t[4].setEditable(false);
t[5]=newJTextField();
Stringbut[]={"
确定"
取消"
intgo=JOptionPane.showOptionDialog(null,t,"
修改信息"
JOptionPane.YES_OPTION,JOptionPane.INFORMATION_MESSAGE,null,but,but[0]);
if(go==0){
try{
StringNAME=t[1].getText();
StringSEX=t[3].getText();
StringPHONE=t[5].getText();
updateADMIN_INFOsetName='
+NAME+"
Sex='
+SEX+"
Phone='
+PHONE+"
whereID='
修改数据成功"
}catch(Exceptionee)
修改数据错误!
catch(Exceptione){
publicvoidselect(){
for(intx=0;
x<
50;
x++)
body[x][0]=null;
body[x][1]=null;
body[x][2]=null;
body[x][3]=null;
body[x][4]=null;
inti=0;
rs=stat.executeQuery("
select*fromADMIN_INFO"
while(rs.next()){
body[i][0]=rs.getString
(1);
body[i][1]=rs.getString
(2);
body[i][2]=rs.getString(3);
body[i][3]=rs.getString(4);
body[i][4]=rs.getString(5);
i=i+1;
this.repaint();
catch(SQLExceptione)
privatevoidadd(){
table.getSelectedRow();
JTextFieldt[]=newJTextField[9];
输入编号:
输入管理权限:
t[6]=newJTextField("
t[6].setEditable(false);
t[7]=newJTextField();
t[8]=newJTextField("
输入联系电话:
t[8].setEditable(false);
t[9]=newJTextField();
Stringbut[]={"
插入信息"
try{
StringID=t[1].getText();
StringPOWER=t[3].getText();
StringName=t[5].getText();
StringSex=t[7].getText();
StringPhone=t[9].getText();
insertintoADMIN_INFOvalues('
+ID+"
'
+POWER+"
+Name+"
+Sex+"
+Phone+"
)"
数据已成功插入!
}catch(Exceptionee){
插入数据错误!
}catch(Exceptione){
4.3结构化查询语句测试
[1]建立视图(企业视图)
createVIEW企业信息
as
selectCO_INFO.CO_ID企业编号,CO_INFO.CO_Name企业名称,CO_INFO.CO_Address企业地址,CO_INFO.CO_Phone企业电话,CO_INFO.CO_Profile企业简介fromCO_INFO
[2]存储过程建立(计算各人年龄并插入表中)
createprocedureAGE_UPDATE
updateNORMAL_INFO
setAge=year(getdate())-year(Birth)
whereIDin(selectIDfromNORMAL_INFO)
go
ExecuteAGE_UPDATE;
存储过程建立前:
存储过程建立后:
[3]触发器建立(防止误删建有外键的数据)
createtriggerADMIN_INFO_deleteonADMIN_INFO
fordeleteas
declare@nint
select@n=COUNT(*)fromdeleted,ID_INFOwheredeleted.ID=ID_INFO.ID
if@n>
=1
begin
raiserror('
该用户在ADMIN_INFO被引用,暂时不能删除'
16,1)
rollbacktransaction
end
测试代码:
deletefromADMIN_INFO
00000001'
触发结果:
第五章:
课设心得体会
学会如何独立完成对一个数据库系统的分析,分析各实体间关系及属性设计ER图,同时通过对项目业务流程分析,知道如何设计数据流图,最终得出PDM模型;
在建立PDM模型中,了解各数据类型的区别(如varchar和navarchar),同时实践出如何选择正确的数据类型;
在外键和主键的设置上也有切身的体会和了解;
在数据库设计方面,了解数据的冗余性,耦合性等;
同时也温习了遍数据库查询语句的用法,能更好建立触发器以及存储过程
这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,给以后的学习以及工作中积累经验教训。
附录:
数据库建立语句
/*==============================================================*/
/*DBMSname:
MicrosoftSQLServer2008*/
/*Createdon:
2014-06-2221:
51:
33*/
ifexists(select1
fromsys.sysreferencesrjoinsys.sysobjectsoon(o.id=r.constidando.type='
F'
)
wherer.fkeyid=object_id('
ADMIN_INFO'
)ando.name='
FK_ADMIN_IN_REFERENCE_ID_INFO'
altertableADMIN_INFO
dropconstraintFK_ADMIN_IN_REFERENCE_ID_INFO
AD_INFO'
FK_AD_INFO_REFERENCE_CO_MAN_I'
altertableAD_INFO
dropconstraintFK_AD_INFO_REFERENCE_CO_MAN_I
fromsys.sysreferencesrjoi