数据库课程设计独创.docx

上传人:b****7 文档编号:11519368 上传时间:2023-03-02 格式:DOCX 页数:25 大小:279.29KB
下载 相关 举报
数据库课程设计独创.docx_第1页
第1页 / 共25页
数据库课程设计独创.docx_第2页
第2页 / 共25页
数据库课程设计独创.docx_第3页
第3页 / 共25页
数据库课程设计独创.docx_第4页
第4页 / 共25页
数据库课程设计独创.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

数据库课程设计独创.docx

《数据库课程设计独创.docx》由会员分享,可在线阅读,更多相关《数据库课程设计独创.docx(25页珍藏版)》请在冰豆网上搜索。

数据库课程设计独创.docx

数据库课程设计独创

成绩

课程设计报告

 

题目《求职与招聘系统》

课程名称数据库课程设计

院部名称计算机工程学院

专业计算机科学与技术

班级13计算机科学与技术

学生姓名***

学号130520****

课程设计地点1316

课程设计学时30

指导教师CAP

目录

1引言-1-

1.1课程设计背景-1-

1.2课程设计的目的-1-

2系统分析与设计-1-

2.1系统功能与分析-1-

2.2系统总体设计-2-

3数据库设计-2-

3.1数据库概念结构-3-

3.2数据库逻辑结构-5-

3.3数据库的实现-6-

4详细设计与实现-7-

4.1登录界面-7-

4.2管理员主界面-10-

4.3用户管理界面-12-

4.4求职者主界面-16-

4.5招聘信息查询-17-

4.6个人资料修改-18-

4.7招聘者主界面-18-

4.8发布招聘信息界面-19-

4.9公司资料修改-19-

5结论-20-

附录:

-20-

1引言

1.1课程设计背景

随着科学技术的不断提高,计算机科学已经进入人类社会的各个领域并发挥着越来越重要的作用。

作为计算机应用的一部分,使用计算机对人力资源信息进行管理,具有人工所无法比拟的有点。

现代社会的招聘种类多,信息量大,想要提高招聘效率、降低成本、提高质量和管理水平,必须借助计算机来进行现代化的招聘管理。

1.2课程设计的目的

课程设计是为了增强学生对所学课程的理解,学会综合地、灵活地运用所学课程知识的一个重要的实践环节。

本课程设计是应用JAVA程序设计语言进行数据库应用系统的开发,用SQLServer2005进行后台数据库的管理。

通过本次课设可以达成如下目标:

1)能够运用数据库原理的理论知识知道软件设计;

2)学会数据库的设计,并能对设计结果的优劣进行正确的评价;

3)学会如何组织和编写信息系统软件设计文档和软件系统的操作说明;

4)掌握SQLServer2005数据库在信息系统开发过程中的应用。

5)掌握数据库的使用和开发,提高分析问题、解决问题和实践应用能力。

2系统分析与设计

2.1系统功能与分析

开发次系统的总体任务是实现对求职者与招聘者管理的系统化、规范化、自动化、简便化,从而达到提高招聘效率。

2.2系统总体设计

图2.1系统功能模块图

3数据库设计

3.1数据库的需求分析

通过一系列的分析与思考,决定将数据库以如下方式建立:

求职与招聘系统主要功能分为3个模块:

管理员模块、求职者模块、招聘者模块。

管理员模块分4个子模块:

查询用户模块、添加用户模块、删除用户模块、修改用户模块;

求职者模块分2个子模块:

信息修改模块、招聘信息查询模块;

招聘者模块分2个子模块:

信息修改模块、招聘信息发布模块、应聘查询。

3.2数据库的概念结构

本系统有4个实体,管理员、求职者、招聘者、招聘信息,所以建立4张表。

图3.1系统E-R图

图3.1实体属性

3.3数据库的逻辑结构

以下为各个表的关系模式,其中下面加下划线的为该表的主码,加波浪线的为该表的外码。

管理员(账号,密码,姓名)

字段名

字段类型

大小

字段含义

账号

Varchar

10

账号,按顺序编号,主键

密码

Varchar

15

登录的必要条件之一

姓名

Varchar

10

管理员的姓名

求职者(账号,密码,姓名,性别,电话)

字段名

字段类型

大小

字段含义

账号

Varchar

10

账号,按顺序编号,主键

密码

Varchar

15

登录的必要条件之一

姓名

Varchar

10

求职者的姓名

性别

Varchar

2

用户性别

电话

Varchar

11

用户电话

招聘者(账号,密码,姓名,电话,公司名)

字段名

字段类型

大小

字段含义

账号

Varchar

10

账号,按顺序编号,主键

密码

Varchar

15

登录的必要条件之一

姓名

Varchar

10

招聘者的姓名

电话

Varchar

11

公司电话

公司名

Varchar

11

招聘公司的名字

招聘信息(信息编号,发布者,联系电话,招聘内容)

字段名

字段类型

大小

字段含义

信息编号

Varchar

10

招聘信息的流水号,主键

发布者

Varchar

10

招聘者账号,外键

电话

Varchar

11

提供给求职者联系的电话

招聘内容

Varchar

Max

招聘内容详细说明

3.4数据库的物理设计

3.5数据库的实现

3.3.1管理员表

图3.3.1管理员表

3.3.2求职者表

图3.3.2求职者表

3.3.3招聘者表

图3.3.3招聘者表

3.3.4招聘信息表

图3.3.4招聘信息表

4详细设计与实现

4.1登录界面

图4.1登录界面

用户必须输入正确的账号、密码,点击登录按钮即可登录,登录后系统自动识别用户级别,显示不同的界面和功能。

主要代码:

publicclassLoginextendsJFrameimplementsActionListener

{

//登陆框

privateJButtonbtn=newJButton("登录");

publicJTextFieldnamef=newJTextField(10);

publicJPasswordFieldpwdf=newJPasswordField(10);

publicLogin()

{

DimensionScreensize=Toolkit.getDefaultToolkit().getScreenSize();

this.setTitle("登录窗口");

JLabelnamel=newJLabel("账号:

");

JLabelpwdl=newJLabel("密码:

");

this.setLayout(newFlowLayout());

this.add(namel);

this.add(namef);

this.add(pwdl);

this.add(pwdf);

this.add(btn);

btn.addActionListener(this);

this.setResizable(false);

this.setBounds((int)(Screensize.getWidth()/2-100),(int)(Screensize.getHeight()/2-60),200,120);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

this.setVisible(true);

}

publicstaticvoidmain(String[]args){

newLogin();

}

publicvoidactionPerformed(ActionEvente){

booleanSuc=false;

//后续测试所用代码

if(e.getSource()==btn)

{

this.setVisible(false);

newListUI();

}

if(e.getSource()==btn)

{

//连接数据库

Connectionconn=null;

Statementpstmt=null;

ResultSetrs=null;

try{

//加载驱动

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

//创建连接对象

Stringurl="jdbc:

sqlserver:

//localhost:

1433;databaseName=JobDB";

//注册驱动程序,打开连接对象

conn=DriverManager.getConnection(url,"sa","123456");

pstmt=conn.createStatement();

rs=pstmt.executeQuery("select*fromAdminwhereadmin_id='"+namef.getText()+"'andpassword='"+pwdf.getText()+"'");

while(rs.next())

{

Suc=rs.getString

(1).equals(namef.getText())&&rs.getString

(2).equals(pwdf.getText());

if(Suc)

{

//验证通过,关闭登录窗口,显示新窗口

this.setVisible(false);

newListUI();

break;

}

}

if(!

Suc)

{

JOptionPane.showMessageDialog(this,"账号或密码错误!

");

pwdf.setText("");

}

}catch(Exceptione1){

e1.printStackTrace();

}finally{

try{

if(conn!

=null)conn.close();

if(pstmt!

=null)pstmt.close();

if(rs!

=null)rs.close();

}catch(Exceptione2){

e2.printStackTrace();

}

}

}

}

}

4.2管理员主界面

管理员主界面采用最简洁的设计方法,只有两个按钮。

图4.2管理员主界面

管理员可以根据需要管理的对象来进行选择。

主要代码:

publicclassListUIextendsJFrameimplementsActionListener{

//定义一些界面控件

JLabeljl=newJLabel("请选择管理对象",JLabel.CENTER);

JButtonjb1=newJButton("管理求职者");

JButtonjb2=newJButton("管理招聘者");

JPaneljp=newJPanel();

publicListUI(){

this.setTitle("管理用户组");

//两个按钮,一个是管理求职者的按钮,一个是管理招聘者的按钮

//对按钮的监听

jb1.addActionListener(this);

jb2.addActionListener(this);

//界面布局

jp.add(jl);

jp.add(jb1);

jp.add(jb2);

this.add(jp);

DimensionScreensize=Toolkit.getDefaultToolkit().getScreenSize();

this.setBounds((int)(Screensize.getWidth()/2-100),(int)(Screensize.getHeight()/2-65),200,130);

//界面的一些规则

this.setResizable(false);

this.setVisible(true);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

}

publicvoidactionPerformed(ActionEvente){

//TODOAuto-generatedmethodstub

if(e.getSource()==jb1)

{

this.setVisible(false);

newJobHtManage();

}

if(e.getSource()==jb2)

{

this.setVisible(false);

newRecruitment();

}

}

}

4.3用户管理界面

图4.3求职者管理界面1

图4.3招聘者管理界面2

部分代码:

publicclassJobHtManageextendsJFrameimplementsActionListener{

//定义一些控件

JPaneljp1,jp2;

JLabeljl1;

JButtonjb1,jb2,jb3,jb4;

JTextFieldjtf;

JTablejt=null;

JScrollPanejsp=null;

UserModelum;

PreparedStatementps=null;

Connectionct=null;

ResultSetrs=null;

publicJobHtManage()

{

jp1=newJPanel();

jtf=newJTextField(10);

jb1=newJButton("查询");

jb1.addActionListener(this);

jl1=newJLabel("请输入名字");

jp1.add(jl1);

jp1.add(jtf);

jp1.add(jb1);

jp2=newJPanel();

jb2=newJButton("添加");

jb2.addActionListener(this);

jb3=newJButton("修改");

jb3.addActionListener(this);

jb4=newJButton("删除");

jb4.addActionListener(this);

//把按钮加入到界面jp2

jp2.add(jb2);

jp2.add(jb3);

jp2.add(jb4);

//创建一个数据模型对象

um=newUserModel();

//初始化JTable

jt=newJTable(um);

//初始化jspJScorllPane

jsp=newJScrollPane(jt);

//把jsp放入到jframe

this.add(jsp);

this.add(jp1,"North");

this.add(jp2,"South");

DimensionScreensize=Toolkit.getDefaultToolkit().getScreenSize();

this.setBounds((int)(Screensize.getWidth()/2-300),(int)(Screensize.getHeight()/2-150),600,300);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

publicvoidactionPerformed(ActionEvente){

//TODOAuto-generatedmethodstub

//判断点击的按钮

if(e.getSource()==jb1)

{

//System.out.println("用户在查询");

//查询操作

Stringname=this.jtf.getText().trim();

//sql语句

Stringsql="";

if(!

name.equals(""))

sql="select*fromJobhunter1where姓名like'%"+name+"%'";

//构建新的数据模型,并更新

um=newUserModel(sql);

//更新JTable

jt.setModel(um);

}

//当用户点击添加按钮

elseif(e.getSource()==jb2)

{

JobhunterDialogsa=newJobhunterDialog(this,"添加用户",true);

//重新获得新的数据模型

//构建新的数据模型,并更新

um=newUserModel();

//更新JTable

jt.setModel(um);

}

elseif(e.getSource()==jb3)

{

//用户要修改信息

introwNum=this.jt.getSelectedRow();

if(rowNum==-1)

{

JOptionPane.showMessageDialog(this,"未选中任何行!

");

return;

}

//显示修改对话框

newJobHtUpdDialog(this,"修改用户",true,um,rowNum);

//更新数据模型

um=newUserModel();

//更新JTable

jt.setModel(um);

}

elseif(e.getSource()==jb4)

{

//用户想要做删除操作

//首先获取选择行的ID,未选中返回-1

introwNum=this.jt.getSelectedRow();

if(rowNum==-1)

{

//未选中任何一行,则提示用户

JOptionPane.showMessageDialog(this,"未选中任何行!

");

return;

}

//获取ID

StringJobID=(String)um.getValueAt(rowNum,0);

//连接数据库完成删除操作

try{

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

ct=DriverManager.getConnection("jdbc:

sqlserver:

//localhost:

1433;databaseName=JobDB","sa","123456");

ps=ct.prepareStatement("deletefromJobhunter1where账号=?

");

ps.setString(1,JobID);

ps.executeUpdate();

}catch(Exceptione1){

e1.printStackTrace();

}finally{

//关闭资源

try{

if(rs!

=null)rs.close();

if(ps!

=null)ps.close();

if(ct!

=null)ct.close();

}catch(Exceptione2){

e2.printStackTrace();

}

}

//更新数据模型

um=newUserModel();

//更新JTable

jt.setModel(um);

}

}

}

4.4求职者主界面

求职者主界面还是沿用了管理员界面的,考虑到用户使用的方便性、直观性,还是采用简洁设计。

图4.5求职者主界面

4.5招聘信息查询

图4.6招聘信息查询模块

4.6个人资料修改

图4.7个人资料修改

4.7招聘者主界面

图4.8招聘者主界面

4.8发布招聘信息界面

图4.9发布招聘信息界面

4.9公司资料修改

图4.10查看用户所发主题帖的评论

5结论

通过30个课时与平时的学习与设计,我不敢说自己有多大的进步,获得了多少知识,但起码是了解了项目开发的部分过程。

虽说上过数据库相关的课程,但是没有亲身经历过相关的设计工作细节。

这次课程设计给我提供了一个很好的机会。

通过这次课程设计发现这其中需要的很多知识我们没有接触过,上网查找资料的时候发现我们以前所学到的仅仅是皮毛,还有很多需要我们掌握的东西我们根本不知道。

同时也发现有很多已经学过的东西我们没有理解到位,不能灵活运用于实际,不能很好的用来解决问题,这就需要我不断的以及大量的实践,通过不断的学习,不断地发现问题,思考问题,今儿解决问题。

在这个过程中我们将深刻理解所学知识,同时也可以学到不少实用的东西。

这次的数据库课程设计,我们每个人选一个课题,我选的是求职与招聘系统,题目是自拟的。

因为这个课题很热门,现在有很多人事部门需要这种。

从选课题到开始写代码期间用了很多时间来进行对系统的分析、结构设计、以及设计数据库,其中设计数据库是最难的,需要考虑的特别多,例如:

表与表的关系,每张表都因该有哪些主键和外键,这都需要充分的去考虑,还有涉及到各种实体、属性、数据流程、数据处理等。

不过这次课设我还没有做完善,还有很多功能和漏洞没有去处理,比如注册模块,对信息的管理,没有对密码进行加密,安全性没有考虑周全等。

附录:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1