数据库课程设计报告培训.docx
《数据库课程设计报告培训.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告培训.docx(43页珍藏版)》请在冰豆网上搜索。
数据库课程设计报告培训
数据库系统课程设计报告
题目:
员工培训管理系统
课程代号:
0688116
课程名称:
数据库系统课程设计
学号:
姓名:
班级:
计算机科学与技术
指导教师:
刘里
完成日期:
2016年4月
第一章引言
1.1设计开发的意义
21世纪,随着经济全球化的发展,知识更新速度加快,企业员工培训将日益成为企业的一项重要业务。
可以说,今后企业的竞争将是企业员工素质的竞争。
因此,开发一个功能先进、完善的培训管理软件来辅助企业管理培训业务是增强企业竞争力的一项重要措施。
近年来,有关员工培训管理的软件很多。
但大部分是培训中介组织的一项面向企业的服务,而且还是一些网络版本。
比如,在美国有ASTD---American Society for Training and Development、The Distance and Education Training Council Online、TCM’s HR Careers、Resource Software 、Safety Software & Computer Based Training Software Skills Testing Software等;在国内,网络学校及其培训管理软件比较盛行。
但真正由企业自身组织的员工培训,据调查的资料可知,到目前为止只有一些国外国企业以及在中国的跨国企业,拥有自己的员工培训管理软件,而且这些也只是作为企业其他软件的一个组成部分出现,如摩托罗拉的员工培训管理就是其人力资源管理软件的一个组成部分,且还只实现了员工个人信息管理很小的一部分功能。
在国内企业中,尽管领导们都认识到员工培训的重要性,也有一些企业采取了一些有益的措施。
他们购买了计算机,也建立起自己的内部网,对员工培训管理采用了一些简单的应用程序,但离使用计算机系统和专门软件来管理还有一段距离。
综上所述,无论在国内外,目前还没有一套比较完善的、专门的、适用于各种企业自己使用的企业员工培训管理软件。
因此,研究开发出一套比较通用、功能比较完善的企业员工培训管理软件,力求在这一领域取得一些新的成果。
企业在面临全球化、高质量、高效率的工作系统挑战中,培训管理显得更为重要。
通过一个先进的、完善的员工培训管理系统,使企业的培训工作系统化、规范化、自动化,从而达到提高企业培训管理效率的目的。
培训使员工的知识、技能与态度明显提高与改善,由此提高企业效益,获得竞争优势。
具体体现在以下方面:
1.能提高员工的职业能力。
2.有利于企业获得竞争优势。
3.有利于改善企业的工作质量。
4.有利于高效工作绩效系统的构建。
5.满足员工实现自我价值的需要。
员工培训管理系统通过制定合理的培训计划,运用正确的方法收集相关的数据和信息,善于发现员工的绩效现状和公司管理层对员工的期望之间的差距,共同为提高企业绩效而努力。
此外,计算机管理系统具有检索速度快、查找方便、可靠性高、保密性好等优点。
因此,开发本系统具有重要的意义。
1.2软硬件开发的环境
软件环境:
Eclipse
硬件环境:
Window8操作系统
第二章系统分析与设计
2.1系统需求分析
系统分析(又称逻辑设计)是管理信息系统开发的关键环节,要求在系统调查的基础上,对新系统的功能进行细致的分析,并建立一个新系统的逻辑模型。
系统分析阶段主要任务是确定系统的总体设计方案、划分子系统功能、确定共享数据的组织,然后进行详细设计。
员工培训管理系统功能需求主要有:
员工信息管理功能、培训计划管理功能、课程信息管理功能、培训效果评价功能、查询管理功能、及使用系统的用户管理功能、企业文化、培训晋升等。
2.2数据流程设计
在仔细调查企业员工培训管理的基础上,得到本数据的系统流程设计:
岗位任务分析
岗位培训要求
员工个人培训需求
部门总体培训需求
各个部门培训要求
培训中心汇总处理
培训中心培训计划
个人培训计划
培训记录,档案管理
2.3数据库概念结构设计
员工
部门
课程
教员
属于
教授
学习
属于
工号
姓名
手机号号
性别
课程名号
课程号号
课程教师号
2.4数据库逻辑结构设计
数据库共包含6个表:
用户登录表(tb_login):
id
员工号
用户名
密码
用户类型
Id
employeeno
username
password
type
integer
Varchar(20)
Varchar(20)
Varchar(20)
Varchar(10)
表2.4.1
员工信息表(tb_employee):
id
员工号
员工姓名
性别
部门号
身份证号
联系方式
id
Eno
Ename
Esex
Dno
Ecode
Etel
integer
varchar(20)
varchar(20)
varchar
(2)
varchar(20)
varchar(20)
varchar(20)
表2.4.2
注:
Eno为主码,Dno为外码
员工成绩状况(tb_grade):
Id
员工号
课程号
教员号
成绩
是否合格
Id
Eno
Cno
Tno
Cgrade
Cpass
integer
varchar(20)
varchar(20)
varchar(20)
varchar(10)
Bool
表2.4.3
注:
Eno和Cno为主码,Tno为外码
课程信息(tb_course):
Id
课程号
课程名
课程学时
部门号
id
Cno
Cname
Ctime
Dno
integer
varchar(20)
varchar(20)
varchar(20)
varchar(20)
表2.4.4
注:
Cno为主码,Dno为外码
部门信息(tb_dept):
Id
部门号
部门名称
部门经理
Id
Dno
Dname
Dceo
integer
varchar(20)
varchar(20)
varchar(20)
表2.4.5
教员信息(tb_teacher):
Id
教员号
教员姓名
课程号
Id
Tno
Tname
Cno
integer
varchar(20)
varchar(20)
varchar(20)
表2.4.6
注:
Tno为主码,Cno为外码
2.5系统总体结构设计
第三章系统分析与设计
3.1系统设计说明
首页为一张励志图片,持续三秒钟后,跳转到有三张图片欢迎页,第二次进入App时,不再显示欢迎页,进而进入到注册页面,填完所需信息后,即可进入到登录页面,输入注册时的密码,即可登录成功,进入App主页面,主页面由四部分组成,分别是:
管理员管理页面(屏幕左侧侧滑进入)、入职页面、培训页面、考核页面。
3.2功能描述
员工培训管理系统含有的功能有:
员工信息管理
在员工信息管理模块中,你可以查看所有员工的基本信息,员工培训的课程成绩。
还可以根据需要查询、添加或者删除其中的内容。
培训课程管理
培训课程管理模块中,管理员可以查看现有的培训课程,并且了解员工希望接受那些培训课程,便于制定新的计划。
培训计划管理
培训计划管理是专门添加员工培训的一个模块。
具体到课程号,课程开始时间,课程结束时间,教师编号,上课人数和上课地点等信息。
④成绩查询管理
可根据员工号进行查询个人成绩,也可通过课程号插叙相应的课程中的所有员工的成绩,还可以查看所有课程所有员工的培训情况
⑤光荣榜
员工培训中,成绩高于90分以上者,可以在此显示出来,并且按照成绩高低降序排列,旨在表彰成绩优异的员工,提示员工工作的积极性
⑥淘汰榜
员工培训中,成绩低于60分者,会名列其中,旨在提高员工的忧患意识,和进取心。
⑦用户个人信息管理
可以修改登录用户的个人信息和密码,退出登录,记住密码等操作。
3.3界面设计效果
App启动页面(3秒钟后自动跳转):
图3.1
App首次进入的三个欢迎页:
欢迎页:
图3.2.1
图3.2.2
图3.2.3
点击开始体验后进入注册页面:
注册页面:
图3.3
输入信息后,注册按钮会自动变为蓝色,点击注册即进入登录界面(自动获取刚注册时的用户名):
登录页面:
图3.4
输入注册时填写的密码,并勾选自动登录按钮,点击登录,即可进入App主页面:
App的主页面分为4部分:
管理员管理页面:
图3.5.1
入职页面:
图3.5.2
培训页面:
图3.5.3
考核页面:
图3.5.4
入职模块中的增删改查四大功能:
入职登记:
图3.6.1
信息修改:
图3.6.2.1
员工号修改:
图3.6.2.2
手机号修改:
图3.6.2.3
部门修改:
图3.6.2.4
信息查询:
图3.6.3
离职办理:
图3.6.4
课程报名:
图3.7
图3.7.1
成绩查询:
图3.8.1
成绩查询:
图3.8.2
光荣榜(成绩高于90分者):
图3.8.3
淘汰榜:
图3.8.4
员工培训情况总览:
图3.9
修改密码:
图3.10
第四章总结
两个星期的时间非常快就过去了,这两个星期不敢说自己有多大的进步,获得了多少知识,但起码是了解了项目开发的部分过程。
虽说上过数据库上过管理信息系统等相关的课程,但是没有亲身经历过相关的设计工作细节。
这次实习证实提供了一个很好的机会。
通过这次课程设计发现这其中需要的很多知识我们没有接触过,去图书馆查资料的时候发现我们前边所学到的仅仅是皮毛,还有很多需要我们掌握的东西我们根本不知道。
同时也发现有很多已经学过的东西我们没有理解到位,不能灵活运用于实际,不能很好的用来解决问题,这就需要我们不断的大量的实践,通过不断的自学,不断地发现问题,思考问题,进而解决问题。
在这个过程中我们将深刻理解所学知识,同时也可以学到不少很实用的东西。
从各种文档的阅读到开始的需求分析、概念结构设计、逻辑结构设计、物理结构设计。
亲身体验了一回系统的设计开发过程。
很多东西书上写的很清楚,貌似看着也很简单,思路非常清晰。
但真正需要自己想办法去设计一个系统的时候才发现其中的难度。
经常做到后面突然就发现自己一开始的设计有问题,然后又回去翻工,在各种反复中不断完善自己的想法。
我想有这样的问题不止我一个,事后想想是一开始着手做的时候下手过于轻快,或者说是根本不了解自己要做的这个系统是给谁用的。
因为没有事先做过仔细的用户调查,不知道整个业务的流程,也不知道用户需要什么功能就忙着开发,这是作为设计开发人员需要特别警惕避免的,不然会给后来的工作带来很大的麻烦,甚至可能会需要全盘推倒重来。
所以以后的课程设计要特别注意这一块的设计。
在两周的时间里,不断地对程序及各模块进行修改、编译、调试、运行,其间遇到很多问题:
由于忘记了一些java语言的规范使得在调试过程中一些错误没有发现,通过这次课程设计,我对调试掌握得更加熟练了,意识到了程序语言的规范性以及我们在编程时要有严谨的态度,同时在写程序时如有一定量的注释,既增加了程序的可读性,也可以使自己在读程序时更容易。
很多事情不是想象中的那么简单的,它涉及到的各种实体、属性、数据流程、数据处理等等。
很多时候感觉后面的设计根本无法继续,感觉像是被前面做的各种图限制了。
在做关系模型转换的时候碰到有些实体即可以认为是实体又可以作为属性,为了避免冗余,尽量按照属性处理了。
物理结构设计基本没有碰到问题,这一块和安全性、完整性不觉就会在物理结构设计中添加一些安全设置:
主键约束、check约束、default定义等。
最后才做索引的部分,对一些比较经常使用搜索的列,外键上建立索引,这样可以明显加快检索的速度,最后别忘记重要的安全性设置,限制用户访问权限,新建用户并和数据库用户做相应的映射。
不管做什么,我们都要相信自己,不能畏惧,不能怕遇到困难,什么都需要去尝试,有些你开始认为很难的事在你尝试之后你可能会发现原来她并没有你以前觉得的那样,自己也是可以的。
如果没有自信,没有目标,没有信心就不可能把事情做好,当其他人都在迷茫的时候,自己一定要坚信目标,大学毕业出去即面临找工作,从学习这个专业,到以后从事这方面的工作都需要不断地去学习去实践,这次实践可以给我们敲一个警钟,我们面临毕业,面临择业,需要这些实践经验,在困难面前要勇于尝试,这是这次课程设计给我的最大感想!
第五章参考文献
[1]郭霖.第一行代码Android.北京:
人民邮电出版社2014.8
[2]张海藩.软件工程导论北京:
清华大学出版社2008.1
[3]王珊.萨师煊,数据库系统概论(第四版)高等教育出版社2006.5
[4]徐科.应用开发大全[M].北京:
清华大学出版社,1999.
[5]李智慧,李小良.实用数据库教程[M].成都:
四川大学出版社,1998.
第六章附录
源代码:
privatevoidinitView(){
mDrawerLayout=(DrawerLayout)findViewById(R.id.drawer_layout);
tv_user=(TextView)findViewById(R.id.tv_user);
tv_type=(TextView)findViewById(R.id.tv_type);
//tab1布局
tabhost=(TabHost)findViewById(R.id.tabhost_center);
layout1=(LinearLayout)findViewById(R.id.tab1_1);
layout2=(LinearLayout)findViewById(R.id.tab1_2);
layout3=(LinearLayout)findViewById(R.id.tab1_3);
layout4=(LinearLayout)findViewById(R.id.tab1_4);
layout5=(LinearLayout)findViewById(R.id.tab1_5);
layout6=(LinearLayout)findViewById(R.id.tab1_6);
layout7=(LinearLayout)findViewById(R.id.tab1_7);
layout8=(LinearLayout)findViewById(R.id.tab1_8);
layout1.setOnClickListener(this);
layout2.setOnClickListener(this);
layout3.setOnClickListener(this);
layout4.setOnClickListener(this);
layout5.setOnClickListener(this);
layout6.setOnClickListener(this);
layout7.setOnClickListener(this);
layout8.setOnClickListener(this);
//tab2布局
expandablelistview=(ExpandableListView)findViewById(R.id.tab2_ex_lv);
ExpandableListAdapteradapter=newBuddyAdapter(this,group,buddy,teacher);
expandablelistview.setAdapter(adapter);
//分组展开
expandablelistview.setOnGroupExpandListener(newOnGroupExpandListener(){
publicvoidonGroupExpand(intgroupPosition){
}
});
//分组关闭
expandablelistview.setOnGroupCollapseListener(newOnGroupCollapseListener(){
publicvoidonGroupCollapse(intgroupPosition){
}
});
//子项单击
expandablelistview.setOnChildClickListener(newOnChildClickListener(){
publicbooleanonChildClick(ExpandableListViewarg0,Viewarg1,
intgroupPosition,intchildPosition,longarg4){
Intentintent=newIntent(CenterActivity.this,TrainActivity.class);
intent.putExtra("course",buddy[groupPosition][childPosition]);
intent.putExtra("teacher",teacher[groupPosition][childPosition]);
startActivity(intent);
Toast.makeText(CenterActivity.this,
"部门:
"+group[groupPosition]+":
课程:
"+buddy[groupPosition][childPosition]+":
老师:
"+teacher[groupPosition][childPosition],
Toast.LENGTH_SHORT).show();
returnfalse;
}
});
//tab3
tab3_1=(LinearLayout)findViewById(R.id.tab3_1);
tab3_2=(LinearLayout)findViewById(R.id.tab3_2);
tab3_3=(LinearLayout)findViewById(R.id.tab3_3);
tab3_4=(LinearLayout)findViewById(R.id.tab3_4);
tab3_5=(LinearLayout)findViewById(R.id.tab3_5);
tab3_6=(LinearLayout)findViewById(R.id.tab3_6);
tab3_7=(LinearLayout)findViewById(R.id.tab3_7);
tab3_8=(LinearLayout)findViewById(R.id.tab3_8);
tab3_1.setOnClickListener(this);
tab3_2.setOnClickListener(this);
tab3_3.setOnClickListener(this);
tab3_4.setOnClickListener(this);
tab3_5.setOnClickListener(this);
tab3_6.setOnClickListener(this);
tab3_7.setOnClickListener(this);
tab3_8.setOnClickListener(this)
lv=(ListView)findViewById(R.id.lv);
tv_user.setText("用户名:
"+Constant.USER_NAME);
tv_type.setText("用户类型:
"+Constant.USER_TYPE);
button=(Button)findViewById(R.id.btn);
button.setOnClickListener(this);
@Override
publicbooleanonKeyDown(intkeyCode,KeyEventevent){
//TODOAuto-generatedmethodstub
if(keyCode==KeyEvent.KEYCODE_BACK
&&event.getAction()==KeyEvent.ACTION_DOWN){
if((System.currentTimeMillis()-exitTime)>2000){
Toast.makeText(CenterActivity.this,"再按一次退出程序",0).show();
exitTime=System.currentTimeMillis();
}else{
ActivityCollector.finishAll();
System.exit(0);
}
returntrue;
}
returnsuper.onKeyDown(keyCode,event);
}
/**
*添加员工
*@parambean
*/
publicvoidadd(Employeeemployee){
ContentValuesvalues=newContentValues();
values.put("employeeno",employee.getEmployeeno());
values.put("username",employee.getUsername());
values.put("card",employee.getCard());
values.put("phone",employee.getPhone());
values.put("depart",employee.getDepart());
values.put("sex",employee.getSex());
db.insert(TBNAME,null,values);
}
publicListgetNo(){
Listlist=newArrayList();
Cursorcursor=db.query(TBNAME,null,null,null,null,null,null);
while(cursor.moveToNext()){
Stringemployeeno=curs