资源描述
(此文档为word格式,下载后您可任意编辑修改!)
江 西 理 工 大 学
本 科 课 程 设 计(论文)
题 目:高级专家信息管理系统设计
专 题:专家信息系统
学 院:机电学院
专 业:工业工程
班 级:
学 生:
学 号:
指导教师:
摘 要
在了解专家信息系统的基础上,对系统功能进行分析设计,提供数据库建模方法与过程,阐述程序设计要点。
关键词:专家信息系统;功能;程序;设计
ABSTRACT
Under your base of comprehend of the system of expert imfomation, to analyse and design the function of the system. Offer the building method and process to the of system model and the main description of program design.
Keywords: system of expert imformation; function; program; design;
目 录
第一章 系统分析报告 1
1.1系统的功能分析 1
1.2系统的功能模块设计 3
1.3数据库的数据字典 3
1.4数据库的概念结构 4
1.5数据库中的表 6
1.6存储过程的结构和定义 8
第二章 程序设计的报告 10
2.1运行环境 10
2.2开发环境 10
2.3程序的详细设计 10
第三章 系统的源程序 24
3.1主程序 24
参考文献 29
江西理工大学2007级本科生课程设计(论文)
第一章 系统分析报告
1.1系统的功能分析
1.1.1功能结构
“专家信息管理系统”包含对专家信息的维护、查询、专家类别管理、重点项目管理和信息输出五个子功能。功能结构如图1—1所示。
专家信息管理系统
信息查询
信息维护
信息输出
维护采集
增加
修改
删除
浏览
随机查询
模糊查询
二次查询
固定查询
分组查询
查询结果输出
专家信息输出
专家名册输出
专家自维护信息采集
信息项增加采集
图1—1 专家信息管理功能结构图
1.1.2功能描述
l 信息维护
满足用户对专家信息的基本维护要求,包括浏览、增加、修改、删除及信息校核功能。
² 浏览
通过浏览专家情况,找到需要维护的专家信息。
² 增加
增加需要进库的专家信息。对专家信息进行批量录入。
² 修改
修改专家信息,可以通过批处理完成。
² 删除
删除专家信息,可以通过批处理完成。
在批处理过程中,如果出现误操作,用户可以恢复到批处理操作之前的数据状态。
上述信息更新通过填报信息维护表及应用信息维护数据采集软件完成(信息维护表及软件参见信息采集表及软件)。信息更新内容:基本信息集中的学历、技术职称、党政职务、工作单位、通讯信息及其它信息集中的信息项。
l 信息查询
查询功能采用方便直观的模板定制方式。查询包括固定条件查询、随机查询、模糊三种。对查询结果可以进行深层次的二次查询和分组查询,以上查询结果可按照指定格式输出电子文档或直接打印。
² 固定查询
按常用信息项的不同组合构成查询条件的查询方式。可以按照专家管理类别(如:院士、突贡专家、享受国务院特殊津贴专家等,具体见专家类别信息集)和专家基本信息项查询出相应的专家信息。查询条件信息项可以设定为:专家类别、性别、民族、年龄、学历、专业技术、政治面貌等,查询显示结果信息项可以设定为:姓名、性别、民族、年龄、学历、专业技术、政治面貌等。根据实际需求,固定查询项目可以灵活定制。
² 随机查询
用户可以任意设定不同信息集中的不同信息项组成查询条件,并以这些信息项或其它需要显示的信息项作为查询结果的一种查询方式。查询结果项的位置可调整、可排序,查询结果可方便输出。
可将随机查询定义的查询条件和查询结果项生成一个查询模板进行保存。查询模板可以分为私有查询模板和共有查询模板。私有查询模板为个人用户使用,共有查询模板为全体用户公共使用。个人用户只能对私有查询模板中的内容进行更改,经系统管理员授权后,可将私有查询模板转成共有查询模板,或将共有查询模板转为私有查询模板。
² 模糊查询
根据用户提供的部分查询条件或不确定条件进行检索性质的查询。可以进行拼音匹配查询(根据事先设定的拼音范围进行查询)、全文检索查询。
用户若要进行更深层次的查询,可在上述三种形式查询的基础上进行二次查询或分组查询
² 二次查询
二次查询可在上述查询结果的基础上,通过选择查询信息项、添加查询条件、查询函数等设置,进行深层次的数据查询筛选。
² 分组查询
分组查询主要是根据查询结果,根据需要对所选信息项进行分组,统计出各组中数据个数,进行查询输出。
查询结果输出
查询结果输出分为两种形式:一为直接输出;二是按照指定的模板格式输出。
l 信息输出
根据用户选择的信息项或对信息项进行加工处理后,按照需求以一定的模板样式输出专家信息或专家名册。输出载体有Word文档和Excel文档。Word文档:学习工作经历情况、主要贡献事迹情况、受资助情况等Excel文档:按照一定的查询方式输出需要的表样,如:基本信息表、分类专家名册、项目管理表等。
l 维护采集
后期信息维护采集是为了适应数据库结构信息项增加或信息内容变更而引起的新的补充信息采集工作。功能含有专家自维护信息采集和信息项增加采集。
² 专家自维护信息采集
专家自维护信息采集禁用于保密信息和系统设置的秘密级以上专家。普通密级专家根据本人情况的变化,将变化信息通过网上传输报送到互联网指定网站的(虚拟)接收自维护信息数据库。系统能够定期导出专家自维护信息,并经过人工干预的审核导入全市数据库。全市数据库接收专家自维护信息后,系统定期将修改内容通知传输给有关分库,并在分库中实现信息更新。系统能够生成通知(信函),并自动选择通讯方式(按专家基本信息集确定的通讯优先顺序),提示数据库管理人员确定通讯方式。系统定期生成对专家的自维护信息提醒通知,在人工协助下采取不同通讯方式(其中信函邮寄由人工完成)通知专家。
² 信息项增加采集
采集方式与初期信息采集四种方式相同,基本功能也相同。同时要求系统能够自动接收增加采集后的信息,对库内记录的信息项增加后提示是否完成增加采集,打印未增加采集的记录:姓名、工作单位、联系方式,以便督促上报增加信息工作。
系统的功能分析
1.2系统的功能模块设计
系统网页分两部分框架,左边浏览、查询,右边操作维护如图2.3.5。左边以伸缩菜单形式显示表单分类,单击则展开所选择的表单类如图2.3.1。当左边选择表单时,右边显示该表单记录和添加功能链接,每条记录都附有删除和修改链接如图2.3.2,单击则进入相应功能页面。添加页面如图2.3.3,置“提交”和“重置”按扭,按“提交“则把添加信息由jsp处理页面连接提交给数据库。修改页面如图2.3.4,置“提交”和“重置”按扭,按“提交“则把修改信息由jsp处理页面连接提交给数据库。删除页面如图2.3.4,删除前提示是否删除,确定后直接从数据库中删除信息。
1.3数据库的数据字典
表名:abroadinformation()
字段名称
数据类型
中文名称
默认值
备注
sn
numeric
无
主键
id
numeric
无
country
numeric
无
entrancedate
datetime
无
leavedate
datetime
无
goalunits
varchar(50)
无
purpose
numeric
无
非空
units
numeric
无
groupname
varchar(50)
无
status
varchar(50)
无
abroad
datetime
无
repatriatedate
datetime
无
statistsign
varchar(50)
无
auditor
numeric
无
audittime
datetime
无
auditfindings
varchar(100)
无
表名:abroadpurpose()
字段名称
数据类型
中文名称
默认值
备注
sn
numeric
无
主键
purpose
varchar(50)
无
relation
varchar(50)
无
memo
varchar(50)
无
表名:action()
字段名称
数据类型
中文名称
默认值
备注
sn
numeric
无
主键
name
varchar(20)
无
relation
varchar(50)
无
memo
varchar(50)
无
表名:cadreduty()
字段名称
数据类型
中文名称
默认值
备注
sn
numeric
无
主键
duty
varchar(30)
无
relation
varchar(50)
无
memo
varchar(50)
无
表名:Chinanation()
字段名称
数据类型
中文名称
默认值
备注
sn
numeric
无
主键
name
varchar(20)
无
relation
varchar(50)
无
memo
varchar(50)
无
1.4数据库的概念结构
数据库的概念结构如图1.4.1和如图1.4.2。
图1.4.1
图1.4.2
1.5数据库中的表
序号
数据表名称
中文名称
1
abroadinformation
2
abroadpurpose
3
action
4
cadreduty
5
Chinanation
6
chineselogodm
7
competencyinfor
8
contribute
9
country
10
culturelevel
11
curriculum
12
dataBackup
13
datadm
14
degree
15
degreeinfor
16
degreelevel
17
department
18
deptJob
19
disciplinename
20
duty
21
educationalsort
22
edulevel
23
encouragement
24
encouragementinfor
25
expert
26
expertcategories
27
familymember
28
familyrelation
29
foreignlanguage
30
fruitlevel
31
gainpatent
32
gbdm
33
groupInDept
34
grouplevel
35
groupLimit
36
health
37
help
38
industry
39
language
40
languageleveldm
41
limitClass1
42
limitClass2
43
limitClass3
44
limitGroup
45
mainStyle
46
marriage
47
menuStyle
48
occupationalgroups
49
personalinfor
50
personnel
51
politics
52
positionlevel
53
posttitle
54
primaryachievement
55
professionalcode
56
professionalduty
57
projectall
58
projectitem
59
publicinfo
60
publishingforms
61
publishinglevel
62
qualificationsinfor
63
quickMsg
64
receiveimburse
65
regionalism
66
sata
67
school
68
secretgrade
69
sexdm
70
Shortcutmenu
71
societypost
72
styleSet
如果某个人的风格没有确定,使用默认风格
73
subjectcategory
74
systemLog
75
systemMenuOne
76
systemMenuTwo
77
systemset
78
technologyachievement
79
Technologytitle
80
traininfor
81
trainname
82
trainsort
83
treatiseinfor
84
unitnature
85
units
86
unitssystem
87
unitsubject
88
userCount
89
userInfo
人员基本信息
90
userLimits
91
userTable
92
workstatus
93
zbdm
1.6存储过程的结构和定义
If exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_FAMILYME_REFERENCE_CHINANAT]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[familymember] DROP CONSTRAINT FK_FAMILYME_REFERENCE_CHINANAT
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PERSONAL_REFERENCE_CHINANAT]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[personalinfor] DROP CONSTRAINT FK_PERSONAL_REFERENCE_CHINANAT
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PERSONAL_REFERENCE_TECHNOLO]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[personalinfor] DROP CONSTRAINT FK_PERSONAL_REFERENCE_TECHNOLO
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ABROADIN_REFERENCE_ABROADPU]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[abroadinformation] DROP CONSTRAINT FK_ABROADIN_REFERENCE_ABROADPU
GO
If exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_CURRICUL_REFERENCE_CADREDUT]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)ALTER TABLE [dbo].[curriculum] DROP CONSTRAINT FK_CURRICUL_REFERENCE_CADREDUT
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PERSONAL_REFERENCE_CADREDUT]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[personalinfor] DROP CONSTRAINT FK_PERSONAL_REFERENCE_CADREDUT
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_SOCIETYP_REFERENCE_CADREDUT]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[societypost] DROP CONSTRAINT FK_SOCIETYP_REFERENCE_CADREDUT
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_ABROADIN_REFERENCE_COUNTRY]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[abroadinformation] DROP CONSTRAINT FK_ABROADIN_REFERENCE_COUNTRY
GO
……
第二章 程序设计的报告
2.1运行环境
j2sdk,tomcat 5.5, mysql
2.2开发环境
jdk 1.5,tomcat 5.5, editplus
2.3程序的详细设计
2.3.1模块的功能、主要功能实现的程序段
图2.3.1为表单分类以便查找表单
图2.3.1
程序段如下:
<html>
<head id="Head1"><link href="App_Themes/Normal/main.css" type="text/css" rel="stylesheet" /><link href="App_Themes/Normal/StyleSheet.css" type="text/css" rel="stylesheet" /><title>
</title><link href="image/menu.css" type="TEXT/CSS" rel="stylesheet" />
<script language="javascript">
function showsubmenu(sid)
{
whichEl = eval("submenu" + sid);
if (whichEl.style.display == "none")
{
eval("submenu" + sid + ".style.display=\"\";");
eval("thead" + sid + ".style.display=\"none\";");
}
else
{
eval("submenu" + sid + ".style.display=\"none\";");
eval("thead" + sid + ".style.display=\"\";");
}
for(i=0;i<12;i++)
{
if(document.getElementById("submenu" + i)==null)
return;
if(i+""!=sid)
{
eval("submenu" + i + ".style.display=\"none\";");
eval("thead" + i + ".style.display=\"\";");
}
}
}
function Click()
{
window.open('infview/infview.html','main')
}
</script>
</head>
<body style="margin: 3px; width: 100%; background-color: #f5f3f4;">
<div id="plMenu">
<table cellspacing="0" cellpadding="0" border="0" style="width:100%;border-collapse:collapse;">
<tr id="thead0">
<td style="height:25px;">
<TABLE cellSpacing=0 cellPadding=0 width="100%" background=image/menu_button_bg.jpg border=0>
<TBODY>
<TR>
<TD width=17 align="left"><IMG height=21 src="image/menu_button_left.jpg"
width=6></TD>
<TD><b>
<font color=red size=2><a href="javascript:showsubmenu(0)"> 系统设置</a></font></b></TD>
<TD align=right width=18><A href="javascript:showsubmenu(0)"><IMG height=21 src="image/menu_button_right.jpg" width=18 border=0></A></TD>
</TR>
</TBODY>
</TABLE>
</td>
</tr><!-- 缩列表1 -->
<tr>
<td id="submenu0" style="display:none">
<TABLE cellSpacing=0 cellPadding=0 width="100%" background=image/menu_box_bg.jpg border=0>
<TBODY>
<TR>
<TD width=17 align="left"><IMG height=21 src="image/menu_box_left.jpg" width=6>
</TD>
<TD>
<font color=red size=2><b>
<a href="javascript:showsubmenu(0)"> 系统设置 </a></b> </font>
</TD>
<TD align=right width=18>
<a href="javascript:showsubmenu(0)"><IMG height=21 src="image/menu_box_right.jpg" width=18 border=0></a>
</TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=box bgColor=#ffffff>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width=38>
<IMG src="image/node.gif"><IMG src="image/pop3.gif">
</TD>
<TD class=menu_padding>
<font color=red size=2>
<a href='table/xitongshezhi/userLimits/userLimits_list.jsp' target='main'>员工角色分配</a> </font>
</TD>
</TR>
<TR>
<TD height=4></TD>
</TR>
</TBODY>
</TABLE>
</TD>
</TR>
</TBODY>
</TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=box bgColor=#ffffff>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width=38>
<IMG src="image/node.gif"><IMG src="image/pop3.gif">
</TD>
<TD class=menu_padding>
<font color=red size=2>
<a href='table/xitongshezhi/limitClass1/limitClass1_list.jsp' target='main'>一级权限</a> </font>
</TD>
</TR>
<TR>
<TD height=4></TD>
</TR>
</TBODY>
</TABLE>
</TD>
</TR>
</TBODY>
</TABLE>
</td>
</tr>
</table>
</div>
</body>
</html>
图2.3.2为浏览表单记录
图2.3.2
程序段如下:
<%@ page contentType="text/html;charset=gb2312"import="java.sql.*"%>
<html>
<BODY background="../../background.gif" vlink=green alink=green link=green>
<script>
function check(sn)
{
if(confirm("要删除代码为"+sn+"的信息吗?"))
{
return true;
}
else return false;
}//删除信息时的确认提示
</script>
<center>
<FONT face=华文行楷 SIZE="5" COLOR="green">学历级别代码表</FONT><hr>
<table border=1>
<tr><td>代码</td><td>级别</td><td>关系</td><td>备注</td><td>修改</td><td>删除</td></tr>
<%
Connection con=DriverManager.getConnection("jdbc:odbc:expert","expertuser","goodluck");
Statement s=con.createStatement();
ResultSet rs=s.executeQuery("SELECT * FROM edulevel");
while(rs.next())
{
out.println("<TR>");
String sn=rs.getString("sn");
out.println("<td>"+sn+"</td>");
out.println("<td>"+rs.getString("level")+"</td>");
out.println("<td>"+rs.getString("ralation")+"</td>");
out.println("<td>"+rs.getString("memo")+"</td>");
out.println("<td> <a href=edulevel_change.jsp?sn="+sn+">修改</td>");
out.println("<td><a href='edulevel_del.jsp?id="+sn+"'onclick=\"return check("+sn+");\">删除</a></td>");
out.println("</tr>");
}
%>
</table>
<a href=edulevel_insert.jsp>添加记录</a>
</center>
</Body>
</html>
图2.3.3为添加记录
图2.3.3
程序段如下:
<%@ page contentType="text/html;charset=gb2312"%>
<HTML>
<HEAD>
<TITLE>学历级别代码表</TITLE>
</HEAD>
<script language="javascript">
function CheckForm()
{
if(isNaN(form.sn.value)||form.sn.value.length==0){
alert("代码请输入数字!");
form.sn.focus();
form.sn.select();
return false;
}
if(form.level.value.length==0||form.level.value.length>20){
alert("级别请输入不大于20位的字符!");
form.level.focus();
form.level.select();
return false;
}
if(form.ralation.value.length==0||form.ralation.value.length>50){
alert("关系请输入不大于50位的字符!");
form.ralation.focus();
form.ralation.select();
return false;
}
if(form.memo.value.length==0||form.memo.value.length>50){
alert("备注请输入不大于50位的字符!");
form.memo.focus();
form.memo.select();
return false;
}
form.submit();
return true;
}//表单格式检查
function enter(event)
{
if(event.keyCode==13)
CheckForm();
}//enter键提交表单
</script>
<BODY onload="form.sn.focus()" background="../../background.gif" vlink=green alink=green link=green><center>
<form type=post action="edulevel_query.jsp" name="form">
<FONT face=华文行楷 SIZE="5" COLOR="green">添加记录</FONT><hR>
<TABLE border=1 >
<TR>
<TD>代码</TD>
<TD><INPUT TYPE="text" NAME="sn" onkeypress="enter(event)"/></TD>
</TR>
<TR>
<TD>级别</TD>
<TD><INPUT TYPE="text" NAME="level" onkeypress="enter(event)"/></TD>
</TR>
<TR>
<TD>关系</TD>
<TD><INPUT TYPE="text" NAME="ralation" onkeypress="enter(event)"/></TD>
</TR>
<TR>
<TD>备注</TD>
<TD><INPUT TYPE="text" NAME="memo" onkeypress="enter(event)"/></TD>
</TR>
<tr>
<td colspan=2>
<INPUT TYPE="button"value=提交 onclick="CheckForm()">
展开阅读全文