版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
兰州交通大学毕业设计(论文)PAGEIII摘要现如今因为经济全球化,社会文明的进步,互联网得到空前的发展,计算机的高效性也给人们的生活和工作带来了极大的便利;信息化、电子化已经成为了节约运营成本,提高工作效率的首选。但是由于现在中国大量企业还处于发展状态,很多企业员工管理尚处于手工作业阶段,这不仅效率低,而且容易出现纰漏。因此很多企业为了能够整合员工、记录生产状况等信息,以提高自己的经营实力,也根据某企业提供的需求,设计此企业员工管理系统,以帮助企业达到员工管理办公自动化、节约管理成本,从而提高工作效率的目的。通过其公司以及员工管理需求的特点,提出了基于企业员工管理系统的设计和解决方案。该系统是用客户端和服务器即B/S模式,采用SQLlite3数据库、boa/cgi服务器、GCC、VI以及GDB调试等作为主要的开发工具进行开发。系统的组成主要由登录模块和员工管理模块。该论文主要阐述了各个模块页面功能的实现、数据库设计运用等组成的企业员工管理系统,根据系统的实现功能和使用环境对系统作总体的规划,最后完成了模块的划分和数据库的设计,以及对系统功能及使用进行测试与完善。关键字:模块;数据库;服务器AbstractIntoday'ssociety,becauseoftheeconomicglobalization,theprogressofsocialcivilization,theInternetgotunprecedenteddevelopment,thecomputer'sefficiencyistopeople'slifeandworkhasbroughtgreatconvenience、informationize、electronicandbecomesaveoperatingcosts,improvetheworkefficiencyofchoice.ButbecauseChina'slargeenterprisesisstillinthestateofdevelopment,nowalotofenterprisestaffmanagementsarestillinthestageofmanualwork,itisnotonlylowefficiency,butalsoeasytoslip.Somanyenterprisesischangingthisinordertobeabletointegrateemployees,recordinformationsuchastheproductionstatus,toimprovetheirbusinesscapacity,andaccordingtothedemandsofanenterprisetoprovidetheenterprisestaffmanagementsystemdesign,inordertohelpenterprisetoenterprisestaffmanagementofficeautomation,savingmanagementcosts,andthusimprovetheworkefficiency.Throughthecharacteristicsofthecompanyandtheemployeemanagementdemandwasproposedbasedontheenterprisestaffmanagementsystemdesignandsolutions.ThesystemiswiththeclientandtheserverthatB/Smode,usingSQLlite3database,boa/cgiserver,GCC,VI,andtheGDBdebugging,etcasthemaindevelopmenttoolsfordevelopment.Thecompositionofsystemismainlycomposedoftheloginmoduleandemployeemanagementmodule.Thepapermainlyexpoundstherealizationofthefunctionofeachmodulepage,databasedesign,useofenterprisestaffmanagementsystem,accordingtotherealizationofthesystemfunctionanduseoftheenvironmentonthesystemofoverallplanning,andfinallycompletedthemoduledivisionanddatabasedesign,aswellastotestandimprovethesystemfunctionanduse.Keywords:Module;Database;Server目录TOC\o"1-3"\h\u19601.绪论 1138291.1研究目的 1141891.2研究现状 1128432.企业员工管理系统分析 360812.1工具分析 3116442.1.1Linux平台 32642.1.2SQLite数据库 4203862.1.3Boa服务器 4127422.2需求分析 5257102.2.1功能需求 5144442.2.2数据需求 5212542.3技术选择 6287132.3.1CGI的选择及特点 6327292.3.2cJSON的选用及特点 6209122.3.3JavaScript的使用及特点 7304332.4技术可行性 878992.4.1可靠性 8269332.4.2可行性 8267533.企业员工管理系统设计 981923.1系统设计主流程图 9102483.2系统功能模块设计 9226133.2.1身份模块 9129153.2.2主要页面模块显示 10221353.3数据库表的设计 13145933.3.1登录表 13134553.3.2人员管理表 13275413.3.3管理员操作记录表 14204544.企业员工管理系统的实现 15131784.1WEB页面实现 1543804.1.1页面登录 15290004.1.2页面添加、删除及编辑人员 16284104.1.3个人中心 17161174.1.4日志审计 17186254.1.5人员管理 18325934.2后台功能实现 18236064.2.1数据库的应用 1937104.2.2管理员登录 20319194.2.3人员管理 21171964.2.4页码 2471554.2.5JSON数据传送 25119295.系统测试 26314015.1页面测试 26147555.2功能测试 26178295.3性能测试 27285376.总结 2820068致谢 292720参考文献 30PAGE29PAGE291.绪论现如今计算机科学技术也已日渐成熟,它强大的功能已逐渐为人们所熟知并应用于生活。作为计算机应用的一部分,使用计算机对企业员工信息进行系统管理,对于公司对员工信息管理是相当便捷的。不仅能够极大地提高企业员工管理的效率,也是企业的科学化、正规化管理与世界接轨的重要条件。而网络办公自动化是计算机技术和网络迅速发展的一个办公应用解决方案,主要目的就是实现员工信息的管理来提高办公效率,以此来解决一直以来人们使用传统人工的方式管理文件档案存在着的许多缺点,如:效率低、保密性差和安全性低等问题。随着计算机在企业管理中应用的普及,利用计算实现企业企业员工档案的管理势在必行。企业员工管理系统是现代企业管理工作不可缺少的一部分,是适应现代企业制度要求、推动企业劳动企业员工管理走向科学化、规范化的必备条件。该企业员工信息管理系统具备以下基本功能:(1)企业员工管理数据库及表的操作。实现对企业员工管理数据库及表的创建与操作,还有表中数据的维护。(2)企业员工信息的管理。实现员工信息的添加、查询、编辑和删除等。(3)企业员工信息的审计。实现对企业员工信息的实时查询、统计等。1.1研究目的现代信息技术的发展使传统意义上的企业员工管理的形式和内涵,都从本质性发生变化,企业员工管理系统已经逐步在代替手工管理,而且不同的公司都有一套适合自己管理员工的系统,其中引入了现代管理的思想,建立了一套可以面向企业单位的员工信息管理系统。本课题是基于某公司的现状及实际工作中所遇到的问题所设计的一套方案,对员工管理在设计开发方面进行研究,重点研究系统开发中所采用的开发平台、工具和技术的使用。目的是从技术手段的角度阐述如何实现该公司向信息化管理模式转变的过程。1.2研究现状目前,在国内外各大企业单位中,企业员工信息管理系统的使用是非常广泛的。同时,有很多的软件开发商也开发了许多基于各种不同行业的企业员工管理系统。由于企业管理信息量大、操作繁琐等原因,传统的管理信息方式不再适应新的工作需要,从而开发研制适合企业的企业员工管理系统,使其具有整体性强、流程简单、操作方便、功能丰富和通用性强等特点,是加快企业人才信息管理工作办公自动化、信息资源化和管理科学化建设进程必要过程。是促进企业信息高速公路的发展,为企业的可持续发展提供条件的重要条件。企业级信息管理涉及到众多的项目、人员、数据,如果没有一个有效的信息管理系统来支持和提高工作效率,企业信息管理将会难以实现方便快捷的实施操作。现在众多的软件公司都开发出了适合自己的企业信息管理信息系统,包括微软公司的MicrosoftProject2003;PRIMAVERA公司的P3、EXP等,这些都是相对比较优秀的企业项目信息管理软件,但软件只是一个辅助工具,而且由于公司性质的决定,如果没有首先建立一个科学的企业信息管理体系,则企业员工管理软件将难以发挥作用。因此,研究如何设计一个精简、有效的企业信息管理体系,使得该企业信息管理信息系统更有效、更便捷地支持企业项目管理体系,从而提高企业的自身项目管理能力,是具有重大的实际应用意义的。该课题就是基于某公司性质所精简设计,也是更好的为管理员所方便操作设计。2.企业员工管理系统分析2.1工具分析2.1.1Linux平台Linux是一套开源的Unix操作系统,它是一个基于POSIX和Unix的多任务、多用户、支持多线程和多CPU的操作系统。它可以运行主要的Unix工具软件、应用程序和网络协议。可以支持32位和64位硬件,继承了以Unix网络为主要的核心设计思想,是一个性能稳定的多用户网络操作系统。其主要特性:(1)完全免费。Linux是一款免费且开源的操作系统,用户可以免费获得资源并对其进行修改。也正是由于它是开源的,无数的程序员参与了对Linux系统的编写及修改工作,使得其功能更强大、更好用,都能彼此兼容,可方便地实现互连。(2)完全兼容POSIX1.0标准。使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows程序。(3)多用户、多任务。Linux支持多用户,各个用户对自己的文件设备有自己特殊的权利,保证用户之间互不干扰,互不影响。Linux也支持多任务,即多个程序同时并独立运行。看起来启动的应用程序好像在并行运行,而事实上,从处理器执行一个应用程序中的一组指令到Linux调度微处理器再次运行这个程序之间,只有很短的时间延迟,对于用户来说是感觉不出来的。(4)良好的界面用户界面和系统调用。Linux的传统用户界面是基于文本的命令行界面,即shell。shell有很强的程序设计能力,用户可方便地用它编制程序,从而为用户扩充系统功能提供了更高级的手段。可编程Shell是指将多条命令组合在一起,形成一个Shell程序,这个程序可以单独运行,也可以与其他程序同时运行,用户可以在编程时直接使用系统调用命令。系统通过这个界面为用户程序提供低级、高效率的服务。Linux还为用户提供了图形用户界面,利用鼠标、窗口、菜单、滚动条等设施,为用户呈现出一个直观、交互性强、易操作的图形化界面。(5)支持多种平台。Linux可以运行在多种硬件平台上,例如:X86、SPARC、Alpha等处理器的平台。另外,Linux也还是一种嵌入式操作系统,常被用于电脑、机顶盒或者游戏机上。同时,Linux也支持多处理器技术,多个处理器同时操作,使系统的性能得到大大的提高。(6)可靠的系统安全。Linux采取了许多安全技术措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,为各个用户在网络环境中提供了一种必要的安全保障。2.1.2SQLite数据库SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,其包含在一个相对小的C库中。它的设计目标是嵌入式的,目前在很多嵌入式产品中使用了它,它所占用资源非常低。而在嵌入式设备中,只需要几百K的内存就完全足够了。除此之外,它还能支持Windows/Linux/Unix等主流的操作系统,同时能够跟很多种程序语言结合,如:C/C++/php/Java/C#等语言。它没有数据库服务器的概念,它的程序库直接链接到应用程序中。SQLite主要特性:(1)零配置。即无需安装和管理配置;(2)是存储在单一磁盘文件中的一个完整的数据库;(3)它的数据库文件可以在不同字节顺序的机器间自由共享;(4)SQLite足够小,全部源码只有三万行C代码,虽然只有250KB,却可以支持数据库大小至2TB;(5)比目前流行的大多数数据库对数据的操作要快许多;一些能够真正表现SQLite优越性能的领域是WEB网页站点,可以使用SQLite管理应用程序数据、快速应用程序原型制造和培训工具。SQLite由于资源占用少、性能良好和零管理成本,嵌入式数据库成了它的用武之地,它将为那些以前无法提供用作持久数据的后端的数据库的应用程序提供了高效的性能。SQLite之类的嵌入式数据库的易于使用性,可以加快应用程序的开发,并使得小型应用程序能够完全支持复杂的SQL。对于小型设备空间的应用程序来说显得尤其重要。嵌入式数据库对于加快应用程序开发也很重要,尤其是在用于数据库抽象层,目前SQLite还在积极开发中,未来一定会有新的功能,会对开源社区更有用。2.1.3Boa服务器Boa是一个单任务的WEB服务器,类似管道一样,只能按顺序依次完成用户的请求,而不会创建出新的进程处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标就是速度和安全,在其站点公布的性能测试中,Boa的性能要好于apache服务器。另外它还是一个非常小巧的WEB服务器,其可执行代码只有60K左右。随着网络技术的发展,在嵌入式设备的管理和交互中,基于WEB方式的应用已成为主流,用户可以直接通过远程登录的方式对设备进行相应的管理和维护,极大方便了其使用性。2.2需求分析2.2.1功能需求本课题设计的是由三个不同身份的管理员进行登录,这三种分别是系统管理员、审计管理员、安全管理员。他们因为职责不同,相应的分工也是不同的,也是其分别在所在的主控页面相应的进行一些不同的需求操作,以下是对各操作的介绍:(1)系统管理员。在设备管理页面,主要修改IP及端口号,方便不同的服务器使用该系统,让管理员进行登录;在个人中心可以修改自己的登录密码。(2)安全管理员。在人员管理页面,可以进行对员工进行添加、删除和编辑,也可以根据其需求进行先查询,然后在进行删改,在个人中心可以修改自己的登录密码。(3)审计管理员。页面记录了系统管理员和安全管理员对数据库进行的操作,比如员工的一些信息的增删改,在审计页面也是一目了然,在个人中心可以修改自己的登录密码。2.2.2数据需求(1)数据录入处理的准确性和实时性。数据的输入是否准确会影响数据运用时是否可用还是不可用。由于数据的输入是管理员进行手工输入,而对于某些数据的输入是要有容错性和某些硬性要求的,比如手机号是11位,如果少于或者超出就会提示手机位数不正确等。有时候数据的输入是很大量的,所以对系统的处理能力要求较高,以保证能够迅速的处理数据。另外在运用该系统时,也需要对操作人员进行系统的简单培训,能够让其熟练运用。(2)数据的安全性。该系统是为某公司管理部门专门设计,因此只有给定身份并且拥有权限的管理者才能进入系统,才可以对系统进行增删查改等操作。2.3技术选择2.3.1CGI的选择及特点CGI(CommonGatewayInterface):公共网关接口。它是WWW技术中最重要的技术之一。CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和WEB服务器之间传递信息的规程。CGI规范允许WEB服务器执行外部程序,并将它们的输出发送给WEB浏览器,CGI将WEB的一组简单的静态超媒体文档变成一个完整的新的交互式媒体,以实现网页前端和后台的交互。它在物理上是一段程序,是运行在服务器上,提供同客户端HTML页面的接口。例如:现在的个人主页上有着诸多按钮和文本栏,需要有管理员先输入一些信息或者点击按钮(到目前为止工作都在客户端),浏览器把这些信息传送到服务器的CGI目录下特定的CGI程序中,于是CGI程序在服务器上按照预定的方法进行相应的处理。在本例中就是把用户提交的信息存入指定的文件中或者执行对应按钮的操作实现。然后CGI程序给客户端发送一个信息,表示请求的任务已经结束。功能是处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的处理后的信息反馈给浏览器。因为任何的HTML均是静态网页,它无法实现一些复杂的功能,所以CGI可以为我们实现以下功能:(1)列出服务器上某个目录的文件,对目录中的文件进行操作;(2)通过CGI实现串口通讯;(3)实现数据库接口;(4)CGI基于浏览器的内容执行相应的操作,把结果格式化为网络服务器和浏览器能够理解的文档(html网页);CGI运行环境最初在UNIX操作系统上,在以CERN或NCSA格式的服务器上运行,后来Windows的服务器上也广泛使用CGI程序,同时它也适用于各种类型机器。2.3.2cJSON的选用及特点JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成(网络传输速度快)。它基于JavaScript(Java脚本)的一个子集。是一个轻巧,携带方便,单文件,可以作为ANSI-C标准的JSON解析器。JSON可以将JavaScript对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从WEB客户机传递给服务器端程序。虽然这些字符串看起来有点儿奇怪,但是JavaScript却很容易解释它,而且JSON可以表示比"名称/值对"更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。另外,JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包。可以轻松地将数据转换为可以在请求中发送给服务器端程序的格式。它的具体形式编辑:(1)对象是一个无序的“‘名称/值’键值对”(key/value)的集合。a.一个对象以“{”(左括号)开始,“}”(右括号)结束。b.每个“名称”后跟一个“:”(冒号);c.“‘名称/值’对”之间使用“,”(逗号)分隔。{ “姓名”:“李明”, “年龄”:23 }(2)数组是值(value)的有序集合。a.一个数组以“[”(左中括号)开始,“]”(右中括号)结束。b.值之间使用“,”(逗号)分隔。 {“学生”: [ {“姓名”:“李明”,“年龄”:23}, {“姓名”:“小张”,“年龄”:22} ] }2.3.3JavaScript的使用及特点JavaScript是世界上最流行的编程语言,可广泛用于HTML和WEB,也广泛用于PC、笔记本电脑、智能手机、平板服务器等设备。JavaScript也是常被用于客户端的脚本语言,是一种轻量级的编程语言。它常用于WEB应用开发,可以插入HTML页面的编程代码,用来给网页增加一些动态功能。JavaScript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。通常JavaScript脚本是通过嵌入在HTML中来实现自身功能的。它的特点有:(1)JavaScript是一种解释性脚本语言(代码不进行预编译)。(2)主要用来向HTML页面添加交互行为。(3)可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。(4)跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行,如Windows、Linux、Android、IOS等。不同于服务器语言,如PHP和ASP,JavaScript主要被用作客户端脚本语言在用户浏览器上运行,不需要服务器的支持,所以相比较而言更具有安全性,而它也逐渐被用来编写服务端程序。作为一种脚本语言。JavaScript是一种解释型的脚本语言,C、C++等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。所以在早期程序员比较青睐于JavaScript以减少对服务器的负担,当然也带来另一个问题:安全性。然而随着服务器的健壮,虽然程序员更喜欢运行于服务端的脚本以保证安全,随着引擎如V8和框架如Node.js的发展,及其事件驱动及异步IO等特性,JavaScript逐渐被用来编写服务器端程序。2.4技术可行性2.4.1可靠性由于必须为企业提供安全的服务,尤其是保证在有外网接入时,Internet上访问到的该系统的安全。通过使用cookie方法,使其在网页端显示不会在未登录时就能进入系统,这样做的目的是防止系统和数据库里面的数据被篡改。无论是以什么身份登陆的系统,其操作只是在网页前端对数据库进行操作,决不允许直接进入库进行操作,其目的就是防止别人直接对库进行操作后,会产生一些不必要的麻烦,甚至对系统产生不可预见的错误。2.4.2可行性经过仔细设计和测试之后的系统具有操作简单,方便灵活等优点,方便了公司的内部管理。只要管理人员有着对计算机的一些基本了解,一定会在短时间内掌握并熟练使用。只要动一动鼠标键盘就可以达到想要的效果。键盘输入也相对简单明了。在进行相应的操作时更方便灵活。3.企业员工管理系统设计3.1系统设计主流程图图3.1员工管理系统流程图如图3.1所示,该流程图是对整个系统整体框架的一个解释,主要的有三大模块即三位不同身份的非管理员登陆后进行相应的操作,每个模块都是独立存在的,但是又互相关联,例如个人中心对用户信息的修改,三个管理员的信息只有在安全管理员进入后才可以对他们的信息进行修改。3.2系统功能模块设计3.2.1身份模块该系统中为了满足该企业的需求,在登录进入系统时,设置了三个不同身份的管理员进行登录,进入系统后所执行的操作也是不尽相同,该三种登录身份如下:(1)系统管理员。由于在不同的系统下所持有的IP和端口号是不同的,为了系统有可移植性,需要系统管理员在设备管理页面修改IP及端口号,方便不同的平台下进行登录;而该系统管理员也可以在自己的页面,即个人中心可以修改自己的登录密码。(2)安全管理员。由于公司员工的不确定性和考虑到人员的流动性,在人员管理页面,安全管理员在进入该界面,进行对员工信息的录入,实现员工信息的添加以及对已有员工信息的修改即编辑,在编辑的同时,注意唯一不可修改的是员工号,这是在录入信息后是唯一不变的;如果某位员工已离职,可以对该员工信息进行删除,方便管理员统计。而该安全管理员也可以在自己的页面,即个人中心可以修改自己的登录密码。(3)审计管理员。在审计管理员登陆后,可以实时查看其他两位管理员对该系统登陆后进行操作的统计,例如安全管理员对员工的添加、删除和编辑,以及系统管理员对该设备的管理;还有审计管理员可以根据修改的时间、或者具体的管理员类型以及操作类型对系统操作进行查看,方便后续出现问题能够责任到人。而该审计管理员也可以在自己的页面,即个人中心可以修改自己的登录密码。3.2.2主要页面模块显示(1)设备管理模块。在系统管理员登陆后,可以对IP和端口号进行修改,以方便在不同的平台设备中设置登陆需要的环境条件(此功能有bug),如图3.2所示。图3.2网页显示设备管理(2)人员管理。安全管理员登陆系统化后,可以实现人员的添加、删除、编辑以及根据证件号对员工进行查询后删改,如图3.3所示。图3.3网页显示人员管理(3)日志审计。该功能是对系统管理员和安全管理员登录后执行的一些操作记录的统计,方便在审计管理员不定时或者按照时间等操作内容等条件进行查看,如图3.4所示。图3.4网页显示日志审计(4)添加、编辑员工信息。在这个页面安全管理员可以对员工信息进行增删改,如图3.5所示。图3.5网页显示页面员工添加编辑(5)个人中心。不论是哪一位管理员登录,在进入个人中心页面时,都可以查看自己的信息,也可以修改自己登录密码,如图3.6所示。图3.6网页显示个人中心注:在个人中心页面会显示出用户信息,显示的有用户名、电话、邮箱、等证件号之类的,除了用户名和证件号是唯一不变的,其他都可以在安全管理员的人员管理页面进行修改,当然也是只有安全管理员才有权限修改三个管理员的信息。3.3数据库表的设计根据该公司的需求,对于数据库需要事先设计几张数据表,其中包括对员工信息保存的表,对员工操作的表,另外还有一些经过查询后间接通过保存的表,其功能如下:3.3.1登录表存储用户信息并在用户登录需要进行调用及验证登陆是否成功,如表3.1。表3.1登陆表(role)角色id用户名证件号邮箱电话号码密码创建时间备注UseridUsernameCertificateMailPhonePasswordCreatetimecommentadminadmin1208xxx@163.com138888888880000000sqfersafer1209xxx@137777777770000000AuditorAuditor1210xxx@1864671888100000003.3.2人员管理表管理员进入系统可以对用户信息表进行增删改查等相应操作,如表3.2。表3.2人员管理表(userinfo)角色id用户名证件号邮箱电话号码密码创建时间备注UseridUsernameCertificateMailPhonePasswordCreatetimecommentadminadmin1208xxx@163.com138888888880000000sqfersafer1209xxx@163.com137777777770000000AuditorAuditor1210xxx@163.com186467188810000000Pchy海文1504xxx@163.com130219077532015-05-2819:11:520Zhangsan张三1211xxx@163.com131201211232015-05-2819:21:1103.3.3管理员操作记录表由于不同的管理员进入系统后可能会执行不同的操作,该表就是记录他们的登录以及一些实时操作,如表3.3:表3.3管理员操作记录表(operatelog)useridtimeoperatetypewhatoperateresultcomment用户id操作时间操作内容具体操作操作结果备注安全管理员2015-05-1419:10:26登录系统登录系统成功安全管理员2015-05-1419:11:52添加员工添加员工小明成功安全管理员2015-05-1419:12:01修改员工修改员工:小明职位成功审计管理员2015-05-1610:12:09登录系统登录系统成功注:由于系统是要对显示信息进行查找操作,所以为方便将查询后的数据存储,在数据库里面重建新表(newoperate),即复制从查询的表中的类型。然后在显示时,直接将新表中查询到的数据在页面显示。在每次执行完查询后都将对该新建的表的内容进行删除,以保证下次再进行查询插入时,不会出现信息的追加,造成错误。例如:根据userid是安全管理员和operatetype是修改员工,这一条件进行查询后的结果显示,如表3.4:表3.4查询后存放的表(newoperate)useridtimeoperatetypewhatoperateresultcomment安全管理员2015-05-1719:10:26修改员工修改员工:admin电话成功安全管理员2015-05-1719:11:26修改员工添加员工小明成功安全管理员2015-05-1719:12:01修改员工修改员工:小明职位成功安全管理员2015-05-1819:10:26修改员工编辑员工海文成功4.企业员工管理系统的实现4.1WEB页面实现WEB作为图形界面,让不了解计算机深层运行的一些管理员,更方便的直接对该系统操作,页面一目了然,方便各位管理员在自己登录后显示的页面上进行直接的操作,而不必担心其他问题,以下是一些主要界面的显示:4.1.1页面登录图4.1页面登陆如上图4.1所示,实现的部分代码:(1)密码校验:<tr><td><inputid="psw"type="text"class="fontcolor"value="密码"/><inputid="pwd"type="password"class="userFocused"style="display:none"/></td></tr>(2)管理员登录<tr><td><inputtype="button"id="loginbutton"value="登录"/></td></tr>(3)下拉列表<td><selectid="user"><optionvalue="admin">系统管理员</option><optionvalue="safer">安全管理员</option><optionvalue="auditor">审计管理员</option</select></td>4.1.2页面添加、删除及编辑人员图4.2添加、编辑人员如上图4.2所示,实现的部分代码:<divclass="overlay_head"><spanid="headfont"> 添加人员</span></div><tr><tdclass="panel">用户名:</td><td><inputtype="text"id="add_id"class="input_text"/><spanclass="required">*</span></td></tr>……<divid="overlay_footer"><inputtype="button"class="overlay_btn"id="btn_send"value="提交"/><inputtype="button"class="overlay_btn"id="btn_close"value="取消"/></div>4.1.3个人中心(1)用户信息的显示<liid="data_audit"class="first_menu_sty1"><ahref="equip_manage.htm">设备管理</a></li><liid="user_set"class="first_menu_sty2"><ahref="#">个人中心</a></li><tr><td>电话:<spanid="info_Tel"></span></td><td>证件号:<spanid="info_Id"></span></td>(2)管理员密码的修改及显示</tr><tdclass="txt_right">原密码:</td><td><inputtype="password"id="old_pwd"class="pwd_change"/><tdclass="txt_right">新密码:</td><td><inputtype="password"id="new_pwd"class="pwd_change"/></td>4.1.4日志审计(1)主体部分:管理员类型:<selectid="admin_type"><optionvalue="系统管理员">系统管理员</option><optionvalue="安全管理员">安全管理员</option><optionvalue="审计管理员">审计管理员</option></select>操作类型:<inputid="operate_type"class="log_input_txt"type="text"/>操作内容:<inputid="operate_info"class="log_input_txt"type="text"/>操作时间:<inputtype="text"id="startDate"class="Wdate"(2)查询条件显示:<tableclass="list_table"><tr><th>管理员</th><th>操作时间</th><th>操作类型</th><th>操作内容</th><th>结果</th></tr>(3)页码显示:<divid="content_foot"><span>共<spanid="log_count"></span>条记录!</span><inputtype="button"id="pre"onclick="pre_()"/><inputtype="text"readonly="readonly"id="page_num"/>/<spanid="all_page"style="margin-right:0px;"></span><inputtype="button"id="next"onclick="next_()"/></div>4.1.5人员管理(1)正文显示:<divid="content_title"><span>人员管理>全员显示</span></div><divid="btn"><inputtype="button"id="btn_add"class="button"value="添加"/><inputtype="button"id="btn_del"class="button"value="删除"/><inputtype="button"id="btn_edit"class="button"value="编辑"/><inputtype="text"id="name_txt"placeholder="请输入证件号"/><imgsrc="../images/btn_searchUser.png"alt="select"id="search_name"/></div>(2)添加员工信息<tr><tdclass="panel">用户名:</td><td><inputtype="text"id="add_id"class="input_text"/><spanclass="required">*</span></td></tr>(3)按钮<divid="overlay_footer"><inputtype="button"class="overlay_btn"id="btn_send"value="提交"/><inputtype="button"class="overlay_btn"id="btn_close"value="取消"/></div>4.2后台功能实现在系统登录和进行增删改查时,就需要对数据库SQLite3进行操作,在设计的时候就是将每一个员工的所有信息,通过WEB端进行打包(即封装为结构体)然后通过boa服务器发送给后台,然后在后台进行分别解析,分别存储在相应的位置,将需要的信息拿出给页面显示。例人员管理的结构体如下:typedefstruct{charuserid[1024];charusername[1024];charposition[1024];charcertificate[1024];charphonenum[1024];charmail[1024];charpassword[1024];}staff;staticstaffstaff_info;4.2.1数据库的应用因为各个页面均需要对数据库SQLite3进行访问,所以就需要对其进行操作。对数据库的操作无非就是数据的增删改查。当然在数据库进行操作前需要打开数据库,而在操作完数据库后要进行关闭。对数据库操作运用如下:(1)数据库的打开: intsqlite3_open(char*path,sqlite3**db);path:需要打开的数据库文件路径;db:指向sqlite句柄的指针;(2)使用回调函数执行sql语句:intsqlite3_exec(sqlite3*db,constchar*sql,sqlite3_callbackcallback,char**errmsg);callback:回掉函数;errmsg:错误信息指针的地址;intsql_callback(void*para,intf_num,char**f_value,char**f_name);para:传递给回掉函数的参数;f_num:记录中包含的字段数目;f_value:包含每个字段名称的指针数组;f_name:包含每个字段名称的指针数组;(3)不使用回调函数执行sql语句:intsqlite3_get_table(sqlite3*db,constchar*sql,char***resultp,int*ncolumn,char**errmsg);resultp:用来指向sql执行结果的指针;nrow:满足条件的记录的数目;ncolumn:每条记录包含的字段数目;(4)关闭数据库:sqlite3_close(mydb)4.2.2管理员登录(1)密码校验。系统登录时需要判断管理员与其密码是否匹配,只有用户名与密码匹配成功后方可进入系统。每次登陆系统,每个管理员会有5次登陆机会,如果在这5次密码输入都是错误的则会提示会在半小时后重新登陆。//登陆管理员类型与密码匹配实现代码:sql=sqlite3_mprintf("select*fromuserinfowhereuserid='%q'andpassword='%q'",uid,pword);//校验管理员类型和密码匹配成功后还有几次机会提示if(!strcmp(status_info.status,"2")){sql_2=sqlite3_mprintf("updateuserinfosetstatus='1'whereuserid='%q'",uid);//校验密码输入错误还有几次机会,往页面传送数据case2:cJSON_AddStringToObject(fld,"msg","test1");cgiHeaderContentType("text/html"); out=cJSON_Print(root); fprintf(cgiOut,out);free(out); cJSON_Delete(root);break;(2)密码修改。登录系统后,每个管理员都可以在各自的个人中心中进行密码的修改,也是为了各自帐号信息安全。修改后的密码将会重新保存在数据库里。实现代码:sql_5=sqlite3_mprintf("updateuserinfosetpassword='%q'whereuserid='%q'",npass_word,user);if(SQLITE_OK!=sqlite3_exec(mydb,sql_5,NULL,NULL,&errmsg)){printf("failtoexec:%s\n",errmsg);sqlite3_free(errmsg);}注:在修改密码时,也是应某公司要求,为增强密码的安全性,如果需要修改密码则会要求密码至少有8位,包含数字、字母(含大小写),如图4.3。图4.3修改密码错误提示//pass_word是修改后的密码,是比较两次输入是否一致;if(0==user_login(user_id,pass_word)){if(!strcmp(pass_new,pass_reset)){update_password(user_id,pass_new);cJSON_AddStringToObject(fld,"msg",ss);out=cJSON_Print(root);cgiHeaderContentType("text/html");fprintf(cgiOut,out);}}else{cJSON_AddStringToObject(fld,"msg",“两次输入密码不匹配,请重新输入”);out=cJSON_Print(root);cgiHeaderContentType("text/html");fprintf(cgiOut,out);}4.2.3人员管理人员添加编辑和删除。安全管理员要对该企业人员的管理进行整合需要进行增删改查,在人员管理页面有需要添加人员。(1)人员添加。分别对输入的信息对应相应的结构体的对象,打包后再数据表里面存储。sql=sqlite3_mprintf("insertintouserinfovalues('%q','%q','%q','%q','%q','','%q',datetime('now','+8hour'),'','','%q','','','')",staff_info.userid,staff_info.username,staff_info.certificate,staff_info.mail,staff_info.phonenum,staff_info.password,staff_info.position);(2)人员编辑:对已经存在的人员信息修改,是根据证件号修改,因为证件号是唯一不变的,所以通过证件号匹配,然后找到需要修改的员工信息。sql=sqlite3_mprintf("select*fromuserinfowherecertificate='%q'",staff_info.certificate);(3)人员删除:对于员工的删除,虽然在网页上是勾选前面对应的方框,其实在后台设计的同时,就是根据其证件号进行删除,因为每一个id对应着唯一的证件号,所以在删除员工时,就是利用证件号删除员工。sql=sqlite3_mprintf("deletefromuserinfowherecertificate='%q'",staff_info.certificate);(4)人员查询:由于在查询的过程中,用户不知道具体是按照什么条件进行查询,所以就需要对管理员所给的条件进行整合,在此使用了标志位,分别对这需要查询的五项设置标志位,如果需要通过此查询就设置为1,不需要则为0,然后将需要按照哪些条件进行合并以此完成查询。实现主要部分代码:intid_flag=0,ot_flag=0,wo_flag=0,st_flag=0,et_flag=0;//通过判断输入框中有无数据进行置位。if(strlen(operate_info.userid)!=0){ id_flag=1; sprintf(sql_id,"userid='%s'",operate_info.userid);}if(strlen(operate_info.password)!=0){ id_flag=1; sprintf(sql_id,"userid='%s'",operate_info.password);}……注:如果用户按照操作时间进行查询时,则是按模糊查询方式进行数据查询。将获得的条件进行整合,然后再从原表里面查询,然后将查询后得到的数据插入到另外一张新表,即newoperate,最后将newoperate表中的数据传送至页面显示。sprintf(sql_ot,"opertatetypelike%s",operate_info.operateid);//标志位进行整合,完成对数据库操作前的最后一步if((id_flag||ot_flag||wo_flag||st_flag||et_flag)!=0) strcat(sql,"insertintonewoperateselect*fromoperatelogwhere");else{strcat(sql,"select*fromoperatelog");flag=1;}……if(wo_flag==1){ strcat(sql,"and");strcat(sql,sql_wo); if(st_flag==1){ strcat(sql,"and");strcat(sql,sql_st); if(et_flag==1){ strcat(sql,"and");strcat(sql,sql_et); } }else{ if(et_flag==1){ strcat(sql,"and");strcat(sql,sql_et); }} }else{ if(st_flag==1){ strcat(sql,"and");strcat(sql,sql_st); if(et_flag==1){ strcat(sql,"and");strcat(sql,sql_et); } }else{ if(et_flag==1){ strcat(sql,"and");strcat(sql,sql_et); }}}if((id_flag||ot_flag||wo_flag||st_flag||et_flag)!=0)//判断条件成立strcat(sql,"insertintonewoperateselect*fromoperatelogwhere");strcat(sql,sql_et); sql_3=sqlite3_mprintf("select*fromnewoperateorderbyrowidlimit'%d'offset'0'",i);//显示时需要执行的sql语句;这是最终在表operatelog中查询的数据插入到新表newoperate中,然后在页面显示查询后的结果;4.2.4页码随着系统的不断运行,插入到表里的数据也会不断增多,所以为方便对已有数据的管理和操作,所以在每一页下面有页码标识,每一页要显示多少行信息可以对宏定义NPAGE所代表的数字进行改变,下面是以每页8行的数据显示,实现代码:#defineNPAGE8//设置每一页显示的数据为8条 //判断每页是否打印满,如果不是则循环次数是不一样的if((nrow-page*NPAGE)>0){ret=NPAGE;}elseif((nrow-(1)*NPAGE>=0)&&(nrow-(1)*NPAGE)<=NPAGE){ ret=nrow-((1)*NPAGE);}else exit(0);if((nrow%NPAGE)==0){ pagetoa=(nrow/NPAGE);//pagetoa是返回网页端显示当前为第几页}else{ pagetoa=(nrow/NPAGE)+1;}4.2.5JSON数据传送JSON作为一种数据转换格式,与XML有着不可比拟的优势。从编码的可读性,xml与人类语言相贴近,而机器则更容易阅读JSON合适的数据,所以选用JSON作为我们所需要传输数据格式。实现代码:cJSON*root,*fld,*img;root=cJSON_CreateObject();cJSON_AddItemToObject(root,"data",img=cJSON_CreateArray());cJSON_AddItemToArray(img,fld=cJSON_CreateObject());//数据交互格式cJSON_AddStringToObject(fld,"userid",“admin”);cJSON_AddStringToObject(fld,"userid",“safer”);……cJSON_Delete(root);数据样本:{“data”:[{“userid”:“admin”,“username”:“admin”,“certificate”:1208,……},{“userid”:“safer”,“username”:“safer”,“certificate”:1209,……},{“userid”:“auditor”,“username”:“auditor”,“certificate”:1210,……}]}5.系统测试5.1页面测试(1)错别字。页面中的标题、文本内容中出现错别字。这设计好的定义等一些规则进行调用。而这种小错误因为简单和细小测试时如果不细心,一目而过,可能会出现在提示信息或页面中。(2)格式。有些格式也是特别留心的,虽然感觉没问题,但是与页面设计的标准有冲突,这种情况一般是我们在使用一些专业术语时,混杂了自己的理解出现所出现的不应由的错误,也是由于在设计之初没有统一规范用语所导致的。(3)页面显示。在明显有字体、字号不同的情况,使页面整体风格看上去很别扭,这种
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度戏曲演出剧目版权授权与独家合作协议3篇
- 【2021届备考】2021届全国名校数学试题分类解析汇编(12月第三期):N单元选修4系列
- 2024年碳排放权交易与投资合同
- 【创新设计】2020-2021学年(岳麓版-必修三)同步测试:第14课-理性之光(含答案解析)
- 集团财务管理中的风险控制策略与预警机制研究
- 2021高考英语人教版训练(8)及答案
- 【名师一号】2022届高三历史一轮复习调研试题:计时双基练16-
- 【名师一号】2022届高三历史一轮复习调研试题:第七单元-古代中国经济的基本结构与特点7-14a
- 新时代农业教育发展的对策
- 公司各部门名称文对照
- 修理厂合伙人合同协议书模板
- 大学生医疗创新创业
- 危险化学品无仓储经营单位生产安全事故应急救援预案(新导则版)
- MOOC 企业内部控制-山西省财政税务专科学校 中国大学慕课答案
- 质量管理体系知识培训课件
- 人机交互技术智慧树知到期末考试答案2024年
- GB/T 144-2024原木检验
- YS-T 650-2020 医用气体和真空用无缝铜管
- 心灵养生的疗愈之道
- 建筑设计公司的商业计划书
- 建筑景观设计劳务合同
评论
0/150
提交评论