西安建筑科技大学课程设计(论文)任务书
一、课程设计(论文)题目
办公室日常管理信息系统
|
二、本次课程设计(论文)应达到的目的 通过数据库系统课程设计的操作与实践,使学生了解关系数据库的相关理论知识和有关工具软件的使用技巧,在一定程度上提高应用程序的综合开发能力和创新意识、创新能力。 |
三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术参数、设计要求等) 系统功能基本要求 : 1. 文件管理信息:包括文件编号、文件种类、文件名称、存放位置等 2. 考勤管理:包括姓名、年龄、职务、日期、出勤情况等 3. 查询员工的出勤情况 4. 会议记录:包括会议时间、参会人、记录员、会议内容等 5. 办公室日常事务管理,包括时间、事务、记录人 6. 按条件查询,统计 |
四、应收集的资料及主要参考文献: 1. 数据库:原理编程与性能(影印版)(第2版),高等教育出版社, Parick O'Neil,Elizabeth O'Neil编著,2005.7; 2. 数据库系统概论(第4版),高等教育出版社,王珊,萨师煊编著,2006.05; |
五、审核批准意见
教研室主任(签字) |
设计总说明
该项目开发的软件为办公室日常信息管理系统软件,是鉴于目前随着企业的发展,职工数量的增加,人员的不断流动,平时我们常用的人工文件记录方式,已经不能满足现在办公室的需求,查询起来也相当繁琐,得到的信息也不够准确。现在已经到了大数据的时代,为了能使大量的企业和个人方便查询到办公室的各种信息,应该有一个比较全面的办公室管理系统。
本文介绍了办公室日常信息管理系统的开发整个过程,阐述了系统分析、系统设计、数据库设计和系统实施的全过程。在开发方法上本系统利用了软件工程化的思想和方法,总体上采用结构化生命周期开发方法,具体模块实施采用了原型法和面向对象系统开发方法。并采用JAVA作为开发工具,SQL Server 2008作为后台数据库。本系统具有会议管理、日常事务管理、文件管理、考勤管理等功能,分成四大模块,每个模块都相互联系,但不相互干扰,这符合了软件模块开发的思想。
本 系 统 完 成 了 文 件 、日 常 事 务 模 块 的 增 加 、修 改 、删 除 、更 新 等 操 作 , 完 成 了 会 议 、考 勤 模 块 的 增 加 、修 改 、删 除 、更 新 和 查 询 等 功 能 。
关 键 字 :模 块 设 计 管 理 功 能 增 删 改 查
数据库大
—办公室日常管理信息系统
一.设计目的
办公室自动化是近年随着计算机科学发展而提出来的新概念。办公自动化系统,办公室自动化系统一般指实现办公室内事务性业务的自动化,而办公自动化则包括更广泛的意义,即包括网络化的大规模信息处理系统。一个企业实现办公自动化的程度也是衡量其实现现代化管理的标准。办公自动化从最初的以大规模采用复印机等办公设备为标志的初级阶段,发展到今天的以运用网络和计算机为标志的现阶段,对企业办公方式的改变和效率的提高起到了积极的促进作用。
办公自动化软件解决企业的日常管理规范化、增加企业的可控性、提高企业运转的效率的基本问题,范围涉及日常行政管理、各种事项的审批、办公资源的管理、多人多部门的协同办公、以及各种信息的沟通与传递。可以概括的说,办公自动化软件跨越了生产、销售、财务等具体的业务范畴,更集中关注于企业日常办公的效率和可控性,是企业提高整体运转能力不可缺少的软件工具。
办公室日常信息管理系统可以大大提高办公室办公的效率,以及帮助减少工作中可能出现的错误,为客户提供更好的服务。本系统的开发主要包括后台数据库的建立、维护以及前端应用程序的开发(略)两个方面。后台数据库使用SQL Server 2008。
二.问题描述
2.1 问题概述
随着社会的发展,企业的发展,职工数量的增加,人员的不断流动,平时我们常用的人工文件记录方式,已经不能满足现在办公室的需求,查询起来也相当繁琐,得到的信息也不够准确。现在已经到了大数据的时代,为了能使大量的企业和个人方便查询到办公室的各种信息,应该有一个比较全面的办公室管理系统。
2.2 系统设计目标
办公室日常信息管理系统是一个功能比较全面的信息管理系统,具有界面友好,高效迅速,反馈信息完整等特点。不仅可以满足大部分企业,还能应用在学校和团体对办公室日常各种信息管理的需求,并且易于操作。
2.3 系统主要功能
办公室日常信息管理系统针对的用户群体相当普遍,企业、学校、团体均可使用。它具备以下功能:
1. 文件管理信息:包括文件编号、文件种类、文件名称、存放位置等。
2. 考勤管理:包括考勤编号、会议号、参会人员、事务号、文件号、考勤次数等。
3. 查询员工的出勤情况。
4. 会议记录:包括会议编号、事务编号、会议起始时间、会议结束时间、参会人、记录员、电话号码、会议内容、所加备注等。
5. 办公室日常事务管理,包括事务编号、事务时间、事务类型、记录人等。
6. 按条件查询,统计
对于使用时,针对不同的用户群体权限也不同。
系统管理员权限:
1.负责管理信息的输入、修改、更新、删除:包括文件管理、会议管理、日常事务管理、考勤管理等。
2.可以查看所有信息。
一般用户权限:可以查看所有信息,但不能增加和删除信息。
三.需求分析
3.1 设计思想
根据任务书可以确定系统有会议管理表、事务管理表、文件管理表、考勤管理表和用户表,分析各个表之间的关系,确定各个表的主键和外键,在数据库中建立表。然后确定界面,确定界面上的组件和事件响应。
3.2 可行性分析
本系统从以下几方面进行分析:
1.技术可行性
本次“办公室日常信息管理系统”设计的总体任务是实现办公室的系统化、规范化和自动化,从而达到办公室管理的高效率的目的。这学期学习了JAVA和数据库,对开发管理系统有了一定的认识。由于本系统最重要的是实用性,通过自己现有技术和查阅资料,不耻下问,还是可以按期完成此次课设。
2.经济可行性
本系统为办公室人员开发完整、合理的办公室日常事务管理系统,可大大减少人力,且工作量和劳动强度大大降低。所以本系统为社会带来很好的经济效益。
3.操作可行性
本系统为办公室管理者和普通用户开发,有友好的界面,管理者和用户只需懂得简单的计算机操作知识就可以自由应用本软件。经分析此系统满足以上三个方面要求,所以本系统是完全可行的。
3.3 功能需求
3.3.1 基本功能需求
在本系统中,管理员具有以下功能:
1.负责管理信息的输入、修改、更新、删除:包括文件管理、会议管理、日常事务管理、考勤管理等。
2.可以查看所有信息。
一般用户权限:可以查看所有信息。
3.3.2 用户界面需求
用户界面应有各个大模块,大模块里面应有各个操作的增删改查界面。
3.4 性能需求
为了保证系统能够长期安全、稳定、可靠、高效地运行,办公室日常信息管理系统应该满足以下性能需求:
1.系统处理的准确性和及时性
对于日常事务、文件和会议的增删改查对考勤有影响,以致于对整个系统的功能和性能完成有举足轻重的作用。还有用户的权限,其准确性很大程度决定了办公室日常事务系统的成败。在系统开发过程中,必须采用一定的方法保证系统的准确性和及时性。
2.系统的易用性和易维护性
办公室日常信息管理系统是直接面对使用人员的,而使用人员往往对计算机并不是很熟悉。这就要求系统有良好的接口,易用的人机交互界面,缩短用户对系统熟悉的过程。
3.5 系统设计基础
3.5.1 系统业务流图
图3-1 系统业务流图
3.5.2 系统数据流图
图3-2 顶层数据流图
图3-3 功能数据流图
四.概要设计
4.1 功能描述
办公室日常信息管理系统是为了对各个企业等实行计算机化的管理,以提高工作效率,方便用户,主要功能有会议、日常事务、文件、考勤进行管理和对本系统自身的用户权限管理。此管理系统不仅含有添加、删除、更改等功能,还具有对查询情况进行统计的功能。系统管理主要是提高系统安全性和对系统进行良好的维护。
4.2 系统模块
本系统具有5个模块:系统模块 、会议管理模块 、日常事务管理模块 、文件管理模块 和考勤管理模块。
4.3 系统功能模块图
图4-1 系统功能模块图
五.数据库设计
5.1 数据库简介
此系统采用了SQL Server 2008数据库,将本系统需要用到的信息都保存在数据库中的表中。
首先进行数据库的连接:
1.创建ODBC数据源:选择“控制面板”——“管理工具”——“ODBC数据源”,在双击ODBC数据源后,选择“用户DNS”,添加新的数据源,选择SQL Server,数据源名称为x,设置用户名为m,密码o2apityr,选择数据库student。
2.建立JDBC-ODBC桥接器。
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection(
"jdbc:odbc:x", "用户名", “密码”);
5.2 概念设计
图5-1 系统总的E-R图
5.3 逻辑结构设计
5.3.1 逻辑模型
合法用户(用户名,密码,用户权限)
文件(文件编号,文件名称,文件类型,文件描述)
日常事务(事务编号,事务时间,事务类型,事务记录人)
会议(会议编号,事务编号,参会人员,记录人员,电话,会议开始时间,会议结束时间,会议内容,备注)
考勤(考勤编号,会议编号,参会人员,事务编号,文件编号,考勤次数)
5.3.2 表属性定义---关系转换、完整性定义(PK、FK、自定义其它)
users(username ,pwd, power)
wj(wj_No,wj_Name,wj_type,wj_destribe)
sw(sw_No,sw_time,sw_type,sw_people)
hy(hy_No,sw_No,hy_people,hy_recorder,telenumber,start_time,
end_time,hy_content,commemt)
kq(kq_No,hy_No,hy_people,sw_No,wj_No,kq_num)
FD(users): { usernameà pwd, power}
FD(wj): { wj_No à wj_Name, wj_type,wj_destribe}
FD(sw): { sw_No à sw_type,sw_time,sw_people }
FD(hy):{hy_No,sw_Noàhy_people,start_time,
end-time,hy_content,commemt,telenumber}
FD(kq):{kq_No,sw_No,hy_No,wj_Noàkq_num}
自定义数据约束:
(用户权限)power仅取“系统管理员、普通用户”
(文件类型)wj_type 仅取“秘密、考勤、任选”
(会议开始、结束时间,事务时间)start_time,end_time,sw_time
格式“YYYY-MM-DD XX:XX:XX”
5.4 物理结构设计
六.详细设计
6.1 项目创建
在Java的eclipse中新建一个工程,项目创建完成。
6.2 主界面模块
(1)模块功能
此模块是将各个大模块显示在一个界面上,对它们进行排版。
(2)界面设计
用分隔框将界面分为左右两部分,左边一个面板,右边5个面板。左边面板放右边5个面板的标签,点击标签相应对应的事件响应函数,然后切换到对应的面板。
(3)关键代码
public class mainFrame extends JFrame implements MouseListener{
public static void main(String[] args){new mainFrame();}
public mainFrame(){
login.addActionListener(new mainFrame_login_actionAdapter(this));}
public void mouseClicked(MouseEvent e) {
if(e.getClickCount()==1){//鼠标单击触发事件
if(e.getSource()==jMenuFile){cl.show(jpanel_right,"1");
}else if(e.getSource()==xjgl){cl.show(jpanel_right,"2");
}else if(e.getSource()==bjgl){cl.show(jpanel_right,"3");
}else if(e.getSource()==kcsz){cl.show(jpanel_right,"4");
}else if(e.getSource()==cjgl){cl.show(jpanel_right,"5");}}}
6.3 系统模块
(1)模块功能
此模块用于登录,管理员和用户拥有不同的权限。管理员负责管理信息的输入、修改、更新、删除:包括文件管理、会议管理、日常事务管理、考勤管理等;可以查看所有信息。一般用户可以查看所有信息。
(2)界面设计
此界面是系统默认的界面。有登录、浏览用户、修改密码三个按钮,点击按钮响应相应的事件处理。
(3)关键代码
添加用户
public class adduser extends JDialog {
public adduser(Frame frame, String title, boolean modal) {
super(frame, title, modal);jbInit(); pack(); }
public adduser() { this(null, "", true); }
private void jbInit() throws Exception {
sure.addActionListener(new adduser_sure_actionAdapter(this));
cancel.addActionListener(new adduser_cancel_actionAdapter(this));}
void sure_actionPerformed(ActionEvent e) {
if (pwd.getText().trim() == pwd1.getText().trim())
{JOptionPane.showConfirmDialog(null,"确定添加?", "添加用户", JOptionPane.YES_NO_OPTION);
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:x", "m", "o2apityr");
ps.executeUpdate("Insert Into users Values('" userF.getText().trim() + "','" + pwd.getText().trim()+"','"+ power.getSelectedItem().toString() + "')");
JOptionPane.showMessageDialog(null, "添加成功");}
void cancel_actionPerformed(ActionEvent e) { this.dispose(); }
浏览用户
public class scanuser extends JFrame {
public scanuser() { jbInit();
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:x", "m", "o2apityr");
rs = ps.executeQuery("select * from users");
while (rs.next()) {
rowData[i][0] = rs.getString("username");
rowData[i][1] = rs.getString("pwd");
rowData[i][2] = rs.getString("power"); i = i + 1; } }
public static void main(String[] args) { scanuser cxcj = new scanuser(); }
private void jbInit() throws Exception {
ok.addActionListener(new cxcj_ok_actionAdapter(this)); }
void ok_actionPerformed(ActionEvent e) {
this.dispose(); }}
public static void main(String args[]){
new scanuser();}}
修改密码
public class xiugaimima extends JDialog {
public xiugaimima(Frame frame, String title, boolean modal) {
super(frame, title, true); jbInit(); pack(); }
public xiugaimima() { this(null, "修改密码", true);}
private void jbInit() throws Exception {
cancel.addActionListener(new xiugaimima_cancel_actionAdapter(this));
sure.addActionListener(new xiugaimima_sure_actionAdapter(this)); }
6.4 会议管理模块
(1)模块功能
管理员可以在会议管理模块实现对会议信息的管理。管理员首先应该建立会议信息数据库,管理员根据相应的会议记录来设置相应的会议记录详细信息。管理员可以对某条会议记录信息进行添加、修改、删除和查询操作。
(2)界面设计
此模块有添加会议、修改会议和查询会议三个按钮,点击按钮响应相应的界面,触发相应的事件。
(3)关键代码
添加会议
public class tjxjxx extends JFrame {
public tjxjxx() { jbInit(); rs = ps.executeQuery("select * from sw");}
public static void main(String[] args) {tjxjxx tjxjxx = new tjxjxx(); }
private void jbInit() throws Exception {
ps.executeUpdate("Insert Into hy Values('" +xh.getText().trim()+"','" +xm.getText().trim() + "','" +sex.getText().toString() + "','"+rq.getText().trim() + "','" +bh.getSelectedItem() + "','" +tel.getText().trim() + "','" +rxrq.getText().trim() + "','" +address.getText().trim() + "','" +comment.getText().trim() + "')"); }}}
修改会议
public class xgxjxx extends JFrame {
public xgxjxx() { jbInit();rs = ps.executeQuery("select * from hy"); }
public static void main(String[] args) { xgxjxx xgxjxx = new xgxjxx();}
private void jbInit() throws Exception {
ps.executeUpdate("delete from hy where hy_No='" +xh.getText().trim() +"'");
ps.executeUpdate("delete from hy where hy_No='" +xh.getText().trim() + "'");
rs = ps.executeQuery("select * from hy"); }
查询会议
public class cxxj extends JFrame {
public cxxj() {jbInit();}
public static void main(String[] args) {cxxj cxxj = new cxxj(); }
private void jbInit() throws Exception {
cancel.addActionListener(new cxxj_cancel_actionAdapter(this));
ok.addActionListener(new cxxj_ok_actionAdapter(this));}
void ok_actionPerformed(ActionEvent e) {
if (xh.isSelected()) {
rs = ps.executeQuery("select * from hy where hy_No='" +input.getText().trim()); }
else if (xm.isSelected()) {
rs = ps.executeQuery("select * from hy where hy_people='"+input.getText().trim() ); }
else if (bh.isSelected()) {
rs = ps.executeQuery("select * from hy where sw_No='" + input.getText().trim() );}
else rs = ps.executeQuery("select * from hy"); }}
6.5日常事务管理模块
(1)模块功能
管理员可以在日常事务管理模块实现对日常事务的管理。管理员首先应该建立日常事务数据库,管理员可以对某事务信息进行添加、修改和删除操作。
(2)界面设计
此界面有添加事务和修改事务。点击弹出相应的界面。
(3)关键代码
添加事务
public class addxj extends JFrame {
public addxj() { jbInit();}
public static void main(String[] args) {addxj addxj = new addxj(); }
private void jbInit() throws Exception {
jButton1.addActionListener(new addxj_jButton1_actionAdapter(this));}
void jButton1_actionPerformed(ActionEvent e) {
ps.executeUpdate("Insert Into sw Values('" +bh+"','" + nj + "','" + bzr + "','" + js + "')");}
修改事务
public class xgbj extends JFrame {
public xgbj() { jbInit(); rs = ps.executeQuery("select * from sw");}
public static void main(String[] args) { xgbj xgbj = new xgbj();}
void ok_actionPerformed(ActionEvent e) {
if (xh.isSelected()) {
rs = ps.executeQuery("select * from hy where hy_No='" + input.getText().trim() );}
else if (xm.isSelected()) {
rs = ps.executeQuery("select * from hy where hy_people='" + input.getText().trim() ); }
else if (bh.isSelected()) {
rs = ps.executeQuery("select * from hy where sw_No='" +input.getText().trim() );}
else rs = ps.executeQuery("select * from hy"); }
6.6文件管理模块
(1)模块功能
管理员可以在文件管理模块实现对文件信息的管理。管理员首先建立文件信息数据库,当有新的文件需要添加或者需要对已有的文件信息进行修改、删除的时候,管理员就可以进行相应的操作。
(2)界面设计
此界面有添加文件和修改文件,根据需求弹出相应的界面。
(3)关键代码
添加文件
public class tjkcxx extends JFrame {
public tjkcxx() { jbInit();}
public static void main(String[] args) {tjkcxx tjkcxx = new tjkcxx(); }
private void jbInit() throws Exception {
ok.addActionListener(new tjkcxx_ok_actionAdapter(this));
cancel.addActionListener(new tjkcxx_cancel_actionAdapter(this));}
void ok_actionPerformed(ActionEvent e) {
ps.executeUpdate("Insert Into wj Values('" +kcbh.getText().trim() + "','" +kcmc.getText().trim() + "','" + kclx.getSelectedItem().toString() +"','" + kcms.getText().trim() + "')");}
修改文件
public class xgkcxx extends JFrame {
public xgkcxx() {jbInit(); rs = ps.executeQuery("select * from wj");}
public static void main(String[] args) {xgkcxx xgkc = new xgkcxx(); }
void xgjl_actionPerformed(ActionEvent e) {
ins.executeUpdate("Update wj set wj_Name='"+ mc.getText().trim() +"' ,wj_type='" + kclx.getSelectedItem().toString() +"' ,wj_destribe='" + kcms.getText().trim() + "' where wj_No='" + kcbh.getText().trim() + "'");}
void scjl_actionPerformed(ActionEvent e) {
sc.executeUpdate("delete from kq where 'wj_Name'=(select wj_Name from wj where wj_No='" +kcbh.getText() +"');");
sc.executeUpdate("delete from kq where 'wj_Name'=(select wj_Name from wj where wj_No='" + kcbh.getText() +"');");}
6.7 考勤管理模块
(1)模块功能
管理员可以在考勤管理模块实现对考勤信息的管理。管理员首先应该建立考勤数据库,当有新的考勤信息的时候或者管理员需要添加、修改某个考勤的相关信息以及想要删除某个考勤信息的时候,就可以完成相应的操作。管理员用户可以在整个数据库中查相关考勤信息。
(2)界面设计
此界面有添加考勤、修改考勤和查询考勤。
(3)关键代码
添加考勤
public class addresult extends JFrame {
public addresult() { jbInit();
rs = ps.executeQuery("select distinct sw_No from hy ");
xzkc = kcs.executeQuery("select * from wj "); }
void ok_actionPerformed(ActionEvent e) {
cr.executeUpdate("Insert Into kq Values('" +ksbh.getText().trim() + "','"+ xh.getSelectedItem().toString() + "','" + xm.getText().trim() + "','" + bh.getSelectedItem().toString() + "','" + kc.getSelectedItem().toString() + "','" + fs.getText().trim() + "')");}
void xh_itemStateChanged(ItemEvent e) {
xsxm= xms.executeQuery( "select hy_people from hy where sw_No='" + bh.getSelectedItem().toString().trim() + "'and hy_No='"+xh.getSelectedItem().toString().trim() );}
修改考勤
public class xgcj extends JFrame {
public xgcj() { jbInit(); rs = ps.executeQuery("select * from kq");}
public static void main(String[] args) {xgcj xgkc = new xgcj(); }
void xgjl_actionPerformed(ActionEvent e) {
ins.executeUpdate("Update kq set kq_num='" + fs.getText().trim() + "' where kq_No='" + ksbh.getSelectedItem() +"'and hy_No='" + xh.getSelectedItem() +"'and sw_No='" + bh.getSelectedItem() + "'");}
void scjl_actionPerformed(ActionEvent e) {
ins.executeUpdate("delete from kq where kq_No='" +ksbh.getSelectedItem().toString().trim() + "'and hy_No='" +xh.getSelectedItem().toString().trim() + "'and sw_No='" +bh.getSelectedItem().toString().trim() + "' and wj_Name='" + kc.getSelectedItem().toString().trim() + "'");}
void bh_itemStateChanged(ItemEvent e) {
as = is.executeQuery("select distinct hy_No from kq where sw_No='" +
bh.getSelectedItem() + "' and kq_No='" + ksbh.getSelectedItem() + "'");}
查询考勤
public class sacnresult extends JFrame {
public sacnresult() { jbInit(); }
public static void main(String[] args) { sacnresult sacnresult = new sacnresult(); }
private void jbInit() throws Exception {
cancel.addActionListener(new sacnresult_cancel_actionAdapter(this));
ok.addActionListener(new sacnresult_ok_actionAdapter(this));}
void ok_actionPerformed(ActionEvent e) {
if (xh.isSelected()) {
rs = ps.executeQuery("select * from kq where hy_No='" +input.getText().trim() + "'"); }
else if (kc.isSelected()) {
rs = ps.executeQuery("select * from kq where hy_people='" +input.getText().trim() + "'");}
else if (bh.isSelected()) {
rs = ps.executeQuery("select * from kq where sw_No='" +input.getText().trim() );
} else rs = ps.executeQuery("select * from kq");}
七.调试分析
实际开发过程中不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,不经周密测试的系统投入运行,将会造成难以想像的后果,因此系统测试是MIS开发过程中为保证软件质量必须进行的工作。大量统计资料表明,系统测试的工作量往往占MIS开发总工作量的40%以上。因此,我们必须重视测试工作。
我在开发本系统时,为了使系统能够稳定运行,对本系统进行了有针对性的全面测试,采取的方式是:
(1)通过eclipse的系统界面进行登录,根据所建users中的数据,输入管理员的用户名密码,以管理员的身份操作程序。为了保证每一项菜单能够正确实现系统设计的功能,我把相关的基础数据,基本上全部输入到本系统中,并对每一个菜单项进行了增加、删除、修改等操作,从而保证了菜单级功能的正确实现。
(2)进入SQL Server 2008中查看各个表中的数据是否增删改成功。
(3)我在以上测试的基础上对系统功能进行了整体的测试,依次来检验系统功能是否符合系统设计的要求。
经调试分析,此系统的各个模块的增删改查在数据库中都可以显示。此系统可以达到预定的功能。
八.使用说明
本系统共5个模块,可以分别操作,操作也很简单。
1.点击系统,进入系统,输入用户名和密码,分为管理员和一般用户。管理员权限更大一些。可以修改密码,可以浏览用户。
2.点击会议管理,进入会议管理模块,点击添加会议按钮,在编辑框中输入各个信息,里边的事务号是从已在数据库中的事务管理模块来的,对已有事物进行选择。修改会议,对已有会议进行修改。查询会议,可以根据参会人、事务号或者会议号进行检索,也可以直接按确定显示数据库中的所有会议信息。
3.点击日常事务管理模块,添加修改日常事务,若输入有误会抛出异常,进行修改,直至存到数据库中的是正确的。
4.点击文件管理模块,添加修改文件信息,按确定,将信息存入数据库中。
5.点击考勤管理模块,在添加考勤中,事务号、会议号、参会人员是从会议管理表中读取的数据,文件编号是从文件管理表中读取的。修改考勤、删除考勤、更新考勤,对相应的进行修改。查询考勤模块,可以按照事务号、会议号、参会人员进行查询,从已有考勤表中检索出数据。按确定,可以检索出所有的考勤信息。
九.设计总结
此次数据库大课设,不同于其他课设和平时上机时的简单的编写代码,而是要求我们根据课设题目,自己选择DBMS产品和应用开发工具,最关键的进行它们之间的连接。我选择的SQL Server 2008 和JAVA,建立JDBC-ODBC桥,建立ODBC数据源,向eclipse里添加驱动,写连接代码进行连接,直至连接成功。
这次课设需要从需求分析做起,利用课程中学到的数据库知识和技术开发出数据库应用系统,解决信息化处理要求。通过两周的课程设计,巩固了我对数据库基本原理和基础知识的理解,加深了我对数据库开发的认识,进一步提高了我综合运用所学知识的能力,同时对SQL Server 2008操作也更加熟练。
从一开始的对任务书进行需求分析,了解系统业务,到后面的建立数据流图,数据字典,数据字典里面的数据项、数据结构、数据流、数据存储和处理过程,一个一个进行设计,初步建立了wj(文件表)、sw(事务表)、hy(会议表)、kq(考勤表),user(用户表),对各个表的主键,外键进行定义,利用SQL Server 2008 画出E-R图,把E-R图向关系模型进行转换,找出各个表的函数依赖关系,对各个表属性和完整性约束进行定义,然后对表的物理结构进行设计,对数据库的实施。最后是对系统进行测试,在具体的测试中,我认为应当遵循以下原则:由程序设计者之外的人进行测试;测试用例应由两部分组成:输入数据和预期输出结果;应选用不合理的输入数据与非法输入测试;不仅要检验程序是否实现预期功能,还应检查程序是否做了不应该做的工作;集中测试容易出错的程序模块;对程序修改以后,必须重新进行测试。
这样从需求分析到概念设计到逻辑设计到物理设计再到最后的编码,数据库实施阶段,无不凝聚着自己的智慧和汗水。利用Java编程做出的界面,对数据库中的表进行数据的插入、修改、删除、更新和查询等操作,最后对系统的测试。特别要引起我们注意的是自己输入数据的类型要和建表时的变量数据类型要一致,不然这样的错误会让我们苦恼许久,所以一定得细心。每次课程设计,我们都要认真对待,遇到困难,积极查询资料,不懂就问,只有坚持不懈,才能取得胜利。
参考文献
[1] Parick O'Neil,Elizabeth O'Neil.数据库——原理、编程与性能(第2版 影印版)[M].北京:高等教育出版社,2005
[2] 王珊,萨师煊.数据库系统概论(第4版)[M].北京:高等教育出版社,2006
[3] 刘卫国,熊拥军.数据库技术与应用——SQL Server 2005[M].北京:清华大学出版社,2010
[4] 王秀英.SQL Server 2005实用教程[M].北京:清华大学出版社,2010
[5] COHOON,DAVIDSON.C++程序设计[M].北京:清华大学出版社,2005
[6] 任海军,余建.Visual C++课程设计案例精编 (第1版)[M].北京:清华大学出版社,2008
[7] 侯俊杰.深入浅出MFC[M].武汉:华中科技大学出版社,2001
[8] 曾凡锋,苗雨.MFC编程技巧与范例详解[M].北京:清华大学
出版社,2008
[9] Bjarne Stroustrup.C++程序设计语言[M].北京:机械工业出版社,2010
[10] 孙鑫,于安萍.VC++深入详解[M].北京:电子工业出版社, 2007