办公事务管理系统.docx
《办公事务管理系统.docx》由会员分享,可在线阅读,更多相关《办公事务管理系统.docx(20页珍藏版)》请在冰点文库上搜索。
办公事务管理系统
目录
办公事务管理系统的设计与实现1
1概述2
1.1oracle简介2
1.2VisualStudio2010简介2
2功能描述2
2.1培训管理2
2.2会议管理2
2.3资料管理3
2.4用户管理3
2.5功能模块3
3.系统结构设计4
3.1数据库的设计的基本思路及表的确立4
3.2整体流程4
3主要难点5
3.1在数据库中自动生成序列,SQL代码5
3.2主要功能代码:
主要代码:
6
3.3修改用户的添加错误。
14
3.4修改培训信息添加的错误14
3.5修改资料不能确认借阅和修改资料不能审查的错误14
3.6连接Oracle数据库的字符串为14
4系统界面展示14
4.1办公系统首页14
4.1.2添加普通用户,如图4-215
4.1.3在资料管理中点击资料信息管理16
4.1.4借阅书籍17
4.1.5在培训管理中编辑培训信息18
总结19
办公事务管理系统的设计与实现
专业:
计算机科学与技术学号:
201110411214
学生:
刘倩宏任课教师:
赵卫东
摘要:
当今社会是一个信息飞速发展的社会,因此,针对各行业来说,为了达到求质量、求速度,尽可能的脱离手工操作的目标,现在都开始应用计算机来管理公司的日常事务。
在现代社会中,任何一个行业,任何一个企业,高效准确的办公都是至关重要的。
快捷的信息交流,畅通的公文传递,迅速的资料查询,自动的工作流转等等都能提高一个企业的办公效率,进而提高其市场竞争力。
传统的办公模式主要以纸介质为主,在计算机飞速发展的今天,显然已经远远不能满足高效率、快节奏的现代工作和生活的需要。
据了解现在企业日常管理中,企业员工管理、资产管理等功能都是核心功能。
通过办公事务管理系统,就可以实现企业对员工信息方便的进行管理,也可以大大的提高文件的处理速度,从而提高了企业的工作效率。
关键词:
办公事务管理信息系统,MS SQL,Visual C#
1概述
1.1oracle简介
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/Server)或B/S体系结构的数据库之一。
比如SilverStream就是基于数据库的一种中间件。
ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。
但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。
1.2VisualStudio2010简介
VisualStudio是微软公司推出的开发环境。
是目前最流行的Windows平台应用程序开发环境。
VisualStudio2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。
VisualStudio2010同时带来了NETFramework4.0、MicrosoftVisualStudio2010CTP(CommunityTechnologyPreview--CTP),并且支持开发面向Windows7的应用程序。
除了MicrosoftSQLServer,它还支持IBMDB2和Oracle数据库。
2功能描述
2.1培训管理
●查询最新的培训信息,报名参加培训。
●添加、修改、删除和查看培训信息。
●确认、删除和批量删除培训报名信息。
●添加、修改、删除和查看培训课程类型。
2.2会议管理
●添加、修改、删除、查看和发布会议信息。
●添加、修改、删除和查看会议室信息。
●查看会议室日程安排信息。
2.3资料管理
●添加、修改、删除、查看和借阅资料信息。
●添加、修改、删除、查看和审核资料入库信息。
●添加、修改、删除、查看和确认资料归还信息。
2.4用户管理
●修改密码。
●切换用户。
2.5功能模块
系统功能模块图如图2-1所示
图2-1
3.系统结构设计
3.1数据库的设计的基本思路及表的确立
设计构型如图3-1所示
图3-1数据库设计联系图
●培训管理分为培训信息表Training,和培训报名信息表TrainingSign
●会议管理分为会议信息表Meeting和会议室信息表MeetingRooms
●资料管理分为资料信息表Information、资料入库表InfoIn和资料借阅表InfoLend。
●用户包含用户表Users
3.2整体流程
整体流程图如图3-2所示
图3-2整体流程图
3主要难点
3.1在数据库中自动生成序列,SQL代码
CREATESEQUENCEOFFICESYS.S_TRAININGID
MINVALUE1//序列最小值1
NOMAXVALUE//序列没有最大值
STARTWITH1//序列是初始值是1
INCREMENTBY1//序列增长1
CACHE5;//缓存为5
创建序列,在插入数据的时候,通过INSERT语句在ID列插入序列的值。
该序列的ID和软件中写入的不匹配。
3.2主要功能代码:
主要代码:
namespaceOffice
{
partialclassFrmTrainingEdit
{
///
///必需的设计器变量。
///
privateSystem.ComponentModel.IContainercomponents=null;
///
///清理所有正在使用的资源。
///
///如果应释放托管资源,为true;否则为false。
protectedoverridevoidDispose(booldisposing)
{
if(disposing&&(components!
=null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#regionWindows窗体设计器生成的代码
///
///设计器支持所需的方法-不要
///使用代码编辑器修改此方法的内容。
///
。
。
。
。
。
。
。
。
。
。
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.OracleClient;
namespaceOffice
{
publicpartialclassFrmTrainingMan:
Form
{
publicFrmTrainingMan()
{
InitializeComponent();
}
//从数据源中读取数据,刷新表格中显示
privatevoidDataRefresh()
{
CADOConnm_ado=newCADOConn();
Stringsql;//定义SELECT语句,根据培训状态读取培训信息
sql="SELECTIdAS编号,SubjectAS培训主题,StatusAS状态,StartDateAS开始日期,EndDateAS结束日期,"
+"DECODE(tTypeId,0,'内部培训',1,'外部培训')AS培训类型,AttListAS参加人员列表"
+"FROMTrainingWHEREStatus='"+cmbStatus.Text+"'";
//使用OracleDataAdapter对象执行SELECT语句
OracleDataAdapterda=newOracleDataAdapter(sql,m_ado.conn);
da.SelectCommand.CommandType=CommandType.Text;//设置命令的执行类型为SQL语句
m_ado.conn.Open();
//使用DataTable对象提供数据源
DataTabletable=newDataTable();
da.Fill(table);//将结果集数据填充到DataTable对象中
m_ado.conn.Close();
dataGridView1.DataSource=table;
dataGridView1.Refresh();
dataGridView1.Columns[0].Width=0;
dataGridView1.Columns[1].Width=200;
dataGridView1.Columns[2].Width=60;
dataGridView1.Columns[3].Width=100;
dataGridView1.Columns[4].Width=100;
dataGridView1.Columns[5].Width=100;
dataGridView1.Columns[6].Width=200;
}
privatevoidbtnClose_Click(objectsender,EventArgse)
{
Close();
}
privatevoidFrmTrainingMan_Load(objectsender,EventArgse)
{
DataRefresh();
}
privatevoidcmbStatus_SelectedIndexChanged(objectsender,EventArgse)
{
DataRefresh();
}
privatevoidbtnEdit_Click(objectsender,EventArgse)
{
if(dataGridView1.RowCount<=0)
{
MessageBox.Show("请选择培训记录");
return;
}
StringcID=dataGridView1.SelectedCells[0].Value.ToString();
//打开编辑窗体,curID表示当前编辑的记录编号
FrmTrainingEditform=newFrmTrainingEdit();
form.curID=cID;
form.isView=false;
form.ShowDialog();
if(form.DialogResult==DialogResult.OK)
DataRefresh();
}
privatevoidbtnAdd_Click(objectsender,EventArgse)
{
FrmTrainingEditform=newFrmTrainingEdit();
form.curID="";
form.ShowDialog();
form.isView=false;
if(form.DialogResult==DialogResult.OK)
DataRefresh();
}
privatevoidbtnDel_Click(objectsender,EventArgse)
{
if(dataGridView1.RowCount<=0)
{
MessageBox.Show("请选择培训记录");
return;
}
if(MessageBox.Show(this,"是否删除此记录","请确认",MessageBoxButtons.YesNo)==DialogResult.Yes)
{
StringcID=dataGridView1.SelectedCells[0].Value.ToString();
CTrainingobj=newCTraining();
obj.sql_delete(cID);
DataRefresh();
}
}
privatevoidbtnPublish_Click(objectsender,EventArgse)
{
if(dataGridView1.RowCount<=0)
{
MessageBox.Show("请选择培训记录");
return;
}
StringcID=dataGridView1.SelectedCells[0].Value.ToString();
StringcStutas=dataGridView1.SelectedCells[2].Value.ToString();
if(cStutas!
="创建")
{
MessageBox.Show("只能发布创建的培训记录");
return;
}
if(MessageBox.Show(this,"是否发布此记录","请确认",MessageBoxButtons.YesNo)==DialogResult.Yes)
{
CTrainingobj=newCTraining();
obj.Status="发布";
obj.sql_updateStatus(cID);
DataRefresh();
}
}
privatevoidbtnStart_Click(objectsender,EventArgse)
{
if(dataGridView1.RowCount<=0)
{
MessageBox.Show("请选择培训记录");
return;
}
StringcID=dataGridView1.SelectedCells[0].Value.ToString();
StringcStutas=dataGridView1.SelectedCells[2].Value.ToString();
if(cStutas!
="发布")
{
MessageBox.Show("只能对发布状态的培训记录开始培训");
return;
}
if(MessageBox.Show(this,"是否开始当前培训","请确认",MessageBoxButtons.YesNo)==DialogResult.Yes)
{
CTrainingobj=newCTraining();
obj.Status="培训开始";
obj.sql_updateStatus(cID);
DataRefresh();
}
}
privatevoidbtnEnd_Click(objectsender,EventArgse)
{
if(dataGridView1.RowCount<=0)
{
MessageBox.Show("请选择培训记录");
return;
}
StringcID=dataGridView1.SelectedCells[0].Value.ToString();
StringcStutas=dataGridView1.SelectedCells[2].Value.ToString();
if(cStutas!
="培训开始")
{
MessageBox.Show("只能对开始培训的记录结束培训");
return;
}
if(MessageBox.Show(this,"是否结束当前培训","请确认",MessageBoxButtons.YesNo)==DialogResult.Yes)
{
CTrainingobj=newCTraining();
obj.Status="培训结束";
obj.sql_updateStatus(cID);
DataRefresh();
}
}
}
}
3.3修改用户的添加错误。
由于HaveRecord函数中的reader变量判断有误是不能通过判断reader是都为空,而应该判断reader中是否有行,如果有行就表明用户存在,所以判断条件是“reader.HasRows”检查reader中是否有行
3.4修改培训信息添加的错误
这个错误主要是因为数据库中的序列名和软件的C#代码的名称不匹配。
把数据库中的对应的表的序列名改为“S_TRAININGID”。
3.5修改资料不能确认借阅和修改资料不能审查的错误
由于数据表的更新语句sql="UpdateInformationSetICount=InCount-"+LendCount.ToString()+"WHEREInfoNo='"+InfoNo+"'";错误。
因为在Information表中只有ICount这个列,所以InCount是不能识别的,而且更新的数据是Information表中的数据,所以把InCount改为ICount。
3.6连接Oracle数据库的字符串为
StringConnString="DataSource=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=180.84.33.254)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=orcl)));UserId=A_LQH;Password=123;";
4系统界面展示
4.1办公系统首页
4.1.1系统首页如图4-1。
图4-1系统首页
4.1.2添加普通用户,如图4-2
图4-2添加用户
4.1.3在资料管理中点击资料信息管理
添加名为“计算机技术”的资料,如图4-3。
图4-3编辑资料
编辑好资料后可以查看到资料信息如图4-4。
图4-4查看编辑好的资料
4.1.4借阅书籍
借阅“计算机技术”这本书如图4-5所示。
图4-5借阅书籍
在资料借阅管理中查看当前借阅,如图4-6所示。
图4-6查看借阅书籍
4.1.5在培训管理中编辑培训信息
培训编辑页面如图4-7所示。
图4-7培训编辑页面
发布成功,如图4-8。
图4-8发布成功
总结
通过oracle数据库这门课,不仅使我们学到Oracle的知识,得到动手锻炼的实践机会。
最重要的是,通过它与上学期SQLserver数据库的对比学习,更是我们了解到2者的区别和共性。
为我们以后更深入的学习数据库打下基础。
我选用的题目是办公事务管理系统,该系统虽然不大,但是完成也是费了一番功夫的。
发现了自己很多不足,前期的准备还不足,导致了在项目开发过程中还出现了功能反复修改的情况。
数据库设计部完善,没多方面的考虑完善。
整体项目框架没规划好。
系统还存在很多问题,界面不够好,美化不好,前期遇到了很多问题。
不过后来在同学的帮助下,终于完成了这个办公事务管理系统,了解了很多的知识。