软件综合课程设计报告
题目名称:
班 级:
学生学号:
学生姓名:
指导老师:
总成绩:优 良 中 及格 不及格
XXXX/XX/XX
1 前言
职工信息管理作为企业管理的一个重要方面,起可变因素多,管理方面繁琐复杂,时间跨度大。而人工管理方式处理这样大量的信息数据,不可避免的增加管理的工作量和复杂程度,是管理人员工作繁杂,负担重,压力大。
1.1项目描述:
该项目流程按系统架构、需求分析、数据库设计、编码、测试的流程进行,该项目主要实现了对员工的管理以及员工信息的查询管理,用servlet控制整个系统的转向。支持员工及其相关信息的录入、增添、删除、查看。能实时的管理和查询员工所关心的内容,方便管理和查询。
1.2开发工具:
windows7 + myeclips8.5.01 + mysql5.5 + tomcat-6.0.35
1.3开发语言:
该项目的开发利用了java语言。
Java语言是一个支持网络计算的面向对象程序设计语言。Java语言吸收了Smalltalk语言和C++语言的优点,并增加了其它特性,如支持并发程序设计、网络通信、和多媒体数据控制等。
Java技术
Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动感的web,internate计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新。
Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.4,最近版本为Java1.6。
Java分为三个体系JavaSE,JavaEE,JavaME。
2 需求分析
一个正规的公司会很关注员工的信息管理,这对公司来说能有条不紊的运行,对员工来说能让员工及时准确的了解自己的情况是很重要的。同时,面对各种不同的信息,需要合理的数据库结构来保存数据信息以及有序合理的程序结构来支持各种数据的执行,使得程序趋近于完美。
3 系统分析与设计
3.1.1功能描述
系统开发的总体任务是实现各种信息的系统化、规范化和自动化。系统功能分析是在系统开发的总体任务的基础上完成。本例中的在线员工管理系统需要完成的功能主要是:
管理员:
1. 员工信息的添加
2. 员工信息的查看
3. 员工信息的删除
4. 员工信息的修改
普通员工:
1. 员工信息的查看
2. 自己的领导
领导:
1. 经理的管理人员数
2. 经理的信息的查看
数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的 不正确和不可用,从而使系统的工作失去意义。数据的输入来源是手工输入。手工输入要通过系统界面上的安排系统具有容错性,并且对操作人员要进行系统的培训。在系统中,数据的输入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。
3.1.2数据的完整性与实时性
由于保证程序的正常执行,所以要对数据输入时,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据。从而避免系统输入的不规范。
同时对于管理者,能及时的修改员工的信息与录入。对于员工,当自己的信息被修改的时候能及时的了解,并予以反馈。从而能快速而有效的进行管理。
数据的共享与独立性
从系统开发的角度上看,共享会给设计和调试带来困难。因此,应该提供灵活的配置,使各个分系统能够独立运行,而通过人工干预的手段进行系统数据的交换。这样,也能提供系统的强壮性。
3.2系统流程图
用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。
仔细分析调查有关在线员工管理信息需求的基础上,将得到如下图所示的本系统所处理的数据流程。
N
Y
图1 系统流程图
3.3数据库设计
3.3.1 E-R图设计
一个好的的E-R图设计对数据结构的设计很重要,ER图提供了表示实体(即数据对象)、属性和联系的方法,用来描述现实世界的概念模型。此系统的E-R图如下所示:
图1员工信息E-R图
3.1.1.2逻辑设计
根据E-R图和相关要求,把ER模型图转换为关系表,进行数据模型转换,得到的一下表:
用户:姓名(name),编号(id),权限(limit)
员工表:编号(id),姓名(name),年龄(age),工龄(workage);
工资表:本月工资(nowsalary) 上月工资(lastsalary) 编号(id)
3.3.2 数据库结构描述
良好的数据库结构,能够方面程序的设计,根据将E-R图进行模型转换后得到的结果,进行数据库结构的设计,如下表:
员工信息表:
员工工资表:
用户表:
3.3.3设计与实现
⑴表的设计:
用户(编号+姓名+权限)
员工(编号+姓名+年龄+工龄)
工资(id+上月工资+本月工资)
⑵ 存储过程设计:
根据员工的编号id来进行管理。管理员对员工的增添、删除、查看、修改,进行各种操作,使得更方面的管理数据,同时增加程序的可读性。
员工可以查看自己的信息,如果出错并能反馈给管理员。
4 系统实现
4.1 模块实现
该系统共分为3大模块:数据库的创建于连接、页面的制作以及内部实现方法。这3大模块之间相互关联,一次在编写的时候一定要注意格式的规范化以及相互之间数据的共享的交流。
数据库的创建与连接模块:
员工信息模块:
此为在数据库中的员工信息的存储方式,
create table employee_c(
id bigint primary key,
//员工的编号
name varchar(15),
//员工的姓名
salary double,
//员工的工资
workage int(4)
//员工的年龄
)DEFAULT CHARSET='gbk';
//可以实现中文的输入
数据库连接模块:
当数据库创建成功之后,要实现与数据库之间的链接,这需要运用了java发射机中的forName()函数来加载jdbc驱动,同时在连接数据库的时候要检测连接是否成功,如果不成功要进行相应的异常捕获,并进行处理。
数据库的连接:
Connection conn=null;
//定义一个Connection型的对象,用来判断加载是否jdbc是否成功
try {
Class.forName("com.mysql.jdbc.Driver");
//加载jdbc驱动,利用java发射机中的方法forName()进行加载
conn=DriverManager.getConnection ("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8","root","mysql");
//连接数据库
} catch (Exception e) {
e.printStackTrace();
}
//如果连接不成功,要捕获异常,同时打印出异常。
等,具体情况请看源码。
5总结与感想
刚开始做课程时,在外全天学习日语,只能晚上回到宿舍之后自己看书、问同学来做,因为没网所以只能自己琢磨的做。刚开始很辛苦,不过苦中有乐,慢慢的有了思路和想法,虽然这个系统简单,但是能做出来心里还是挺高兴的。在开发这套系统时,java web并不是很熟练,只能照着书上的例子慢慢的练习,在有不懂的问题就上网去查找,通过不断的练习终于掌握了,就开始开发这套系统,其中碰到了许多问题,也询问别的同学或老师,掌握了许多窍门。
数据库那部分,又重新看了遍数据库,又复习并学到了很多有用的东西。刚开始配置tomcat的时候看书按着做,自己配置出现了错误,只能问同学,慢慢的终于做好了。本来软件工程这可一知半解,在这次的课程设计对很多苦涩的东西有了深层次了理解,感谢老师,感谢这次课程设计。我采用的时页面传递pageId和ActionId的方式在Servlet中进行控制(读取xml的配置文件)调用哪一个action.java类,action调用logic类中的业务逻辑类,业务逻辑类通过类似spring的技术,即实现一个DatabaseFactory的类,根据不同的业务逻辑,调用相对应的数据库接口.经过编写航空订票系统发现如此庞大的系统只靠我们现在所拥有的知识是很难完成的,在编写的过程中发现自己的有很多,在SQL语句的使用方法中有很多的不足,但是在老师和同学的帮助下慢慢的填补自己在知识上的漏洞,在数学算法上了解了一些算法,在编写的过程中了解到不能按照自己的算法来实现所有的存储过程,因为电脑的资源是有限的,意识道自己的想法是有一定的局限性的,通过这次试验学到了团队合作的重要性以及SQL语言的知识。
经过这次课设,我总结如下
1、 注重理论知识和动手能力的相辅相成。平时要多动脑和多动手,多上机操作实践。
2、 平时多浏览资料。我们所学的专业知识更新很快,这就要求我们能与时俱进,图书馆里有大量的参考书,另外网上有着更多、更新的知识宝库。如果能很好的利用这两点,对自己的进步会有很大的帮助
3、 虚心请教,当遇到不懂的问题自己想了很多办法却无法解决时,可以请教一些其他的同学或老师,这可以很快的解决问题。
在这次课设中,提高和完善所学知识的同时也体会到了团队精神的力量,收获丰富,受益良多;从中学到的知识和吸取的经验教训将会使我的知识很好的加深。没有课设,我们就不可能真正的学好、掌握知识。语言并不重要毕竟它仅仅是工具,用好一个工具并不是一件值得为外人道的事情,主要是了解学习思想。古语说的好:学无止境啊!以后我将更加努力争取取得更好的成绩。
我很庆幸在老师和同学的帮助下我顺利地完成了这次数据库课程设计。在这里,我向给予我许多帮助的老师、同学真诚的说声:“谢谢你们!”。
参考文献
[1] 沈应奎 曾玲.java web 数据库系统应用开发与实例:北京.人民邮电出版社 2008.2
[2] 王珊等.数据库系统概论(第四版).北京:高等教育出版社,2006.6
部分代码和样式:
主页:
<body>
<div id="wrap">
<div id="top_content">
<%@ include file="header.jsp"%>
<div id="content">
<p id="whereami">
</p>
<h1>
欢迎!
</h1>
<table class="table" width="770" height="62">
<tr class="table_header">
<td>
编号
</td>
<td>
姓名
</td>
<td>
薪水
</td>
<td>
年龄
</td>
<td>
操作
</td>
</tr>
<%--
List<Employee> employees = (List<Employee>)request.getAttribute("employees");
for(int i=0;i<employees.size();i++){
Employee e = employees.get(i);
--%>
<c:forEach var="e" items="${employees}" varStatus="status">
<tr class="row${status.index%2 + 1} <%--=(i%2 + 1)--%>">
<td>
${e.id} <%--= e.getId() --%>
</td>
<td>
<a href="view.do?id=${e.id} <%--= e.getId() --%>">${e.name} <%--= e.getName() --%></a>
</td>
<td>
${e.salary} <%--= e.getSalary() --%>
</td>
<td>
${e.age} <%--= e.getAge() --%>
</td>
<td>
<a href="view.do?id=${e.id} <%--= e.getId() --%>">查看</a>
<a href="del.do?id=${e.id} <%--= e.getId() --%>" onclick="return confirm('确定删除吗?');">删除</a>
<a href="load.do?id=${e.id} <%--= e.getId() --%>">修改</a>
</td>
</tr>
</c:forEach>
<%--
}
--%>
</table>
<p>
<input type="button" class="button" value="添加成员 "
onclick="location='addEmp.jsp'" />
</p>
</div>
</div>
<%@ include file="footer.jsp"%>
</div>
</body>
</html>
界面如图:
图1 员工显示图
第二篇:软件综合设计课程设计报告
《软件综合设计》课程设计报告
文件处理系统设计
内容
一、程序功能模块划分
系统功能模块框图
各系统的具体实现内容
A文件
“地面气象观测数据文件”(简称A文件)为文本文件,文件名由17位字母、数字、符号组成,其结构为“AIIiii-YYYYMM.TXT”。
其中“A”为文件类别标识符(保留字);“IIiii”为区站号;“YYYY”为资料年份;“MM”为资料月份,位数不足,高位补“0”;“TXT“为文件扩展名。
比如在文件自动气象站里的一个A文本文件A58265-201001.TXT。
A表示A文件,58265为区站号,2010为这个资料的年份,01代表这个资料的月份,TXT是它的文件扩展名。
打开此文本文件,我们发现它的第一行为58265 3204N 12136E 000055 000065 105 000 S11 11111999119199111911 0 2010 01
58265表示它的区站号,58表示其区号,265表示其站号。
3204N表示它的纬度,前两位表示度,即为32度,后两位表示分,即为04分,后面的N表示北纬,同理,S表示南纬。
12136E表示它的经度,前三位表示度,即为121度,后两位表示分,即为36分,后面的E表示东经,同理,W表示西经。
000055表示观测场拔海高度,第一位0为拔海高度参数,实测为“0”,约测为“1”。后5位00055为拔海高度,单位为“0.1m”,位数不足,高位补“0”。若测站位于海平面以下,第二位录入“-”号。
000065表示气压感应器拔海高度,第一位0为拔海高度参数,实测为“0”,约测为“1”。后5位00065为拔海高度,单位为“0.1m”,位数不足,高位补“0”。若测站位于海平面以下,第二位录入“-”号。
105表示风速感应器距地(平台)高度,单位为“0.1m”。
000表示观测平台距地高度,单位为“0.1m”。
S11表示观测方式和测站类别,“S”为测站类别标识符,第一个1表示观测方式,第二个1表示测站类别。用x1表示S后第一位,用x2表示S后第二位x1=0时器测项目为人工观
测,x1=1时,器测项目为自动站观测。x2=1为基准站,x2=2为基本站,x2=3为一般站(4次人工观测),x2=4为一般站(3次人工观测),x2=5为无人自动观测站。
11111999119199111911表示观测项目标识,分别表示这个文件20个要素全月数据状况。如果有0则表示人工观测,如果有1表示自动站观测(若由自动站观测和人工观测两段构成时,该月所有的数据统一视为自动站观测数据),如果有表示全月数据缺测。
0表示表示文件无质量控制部分,如果此项为1,则表示文件有质量控制部分。 2010表示年份,即为20xx年。
01表示月份,即为1月。
第二行是PC、P代表气压,C代表云状。
下面都是其观测数据。
本站气压(P)、海平面气压(P0)
气温(T)
水汽压(E)
云量(N)
云状(C)
降水量(R)
天气现象(W)
蒸发量(L)
电线积冰(G)
风(F)
Z文件
正点地面气象要素数据文件为ZIIiiiMM.YYY,简称Z文件,文件名中,Z为指示符;IIiii为区站号;MM为月份,不足两位时,前面补“0”;YYY为年份的后3位。
比如在Z文件里的第一个文件Z5826501.003。Z表示Z文件,58265表示区站号,01表示月份,即为1月,003表示年份的后三位,即为20xx年。
Z文件为随机文件,每月一个,记录采用定长类型,每一条记录218个字节,记录尾用回车换行结束,ASCII字符存盘,每个要素值高位不足补空格。
Z文件第一次生成时应进行初始化,初始化的过程是:首先检测Z文件是否存在,如无当月Z文件,则生成该文件,将全月逐日逐时各要素的位置一律存入相应字长的“-”字符(即减号)。
Z文件按北京时计时,以北京时的00分数据作为正点定时数据。
Z文件的第1条记录为本站当月基本参数,每项参数长为5个字节。
二、功能实现流程图
三、数据结构定义
数据结构是只相互之间存在一种或多种特定关系的数据元素集合。我们先进行对A文件和Z文件进行分析。了解其中的数据表示什么意思,然后以时间为索引查找以上两个气象文件,即输入时间(年份/月份),打开相应的文件,再提取时间,气压、气温数据,查找当月最高气温、气压,最低气温、气压以及出现时间,计算月平均气温,读出年份月份,显示并写入一个新的文件中 四、算法设计
当我们在计算它的月平均温度,查找它的最大值或最小值时,需要用到很多算法。
五、设计经验总结
对程序功能模块划分合理性的体会
数据结构设计合理性和有效性的总结体会
算法的合理性、质量的总结和体会
代码实现和调试经验总结