精华内容
下载资源
问答
  • 员工管理

    千次阅读 2016-06-17 09:26:54
    第一讲:员工流失原因 一、新员工流失原因分析 1、外部“拉力” 外部“拉力”因素——提升的职位、高薪、发展机会等 2、内部“推力” 内部的“推力”因素(缺乏内部提升机会、不合理或不公平的薪酬分配、复杂的人际或...

    第一讲:员工流失原因

    一、新员工流失原因分析

    1、外部“拉力”

    外部“拉力”因素——提升的职位、高薪、发展机会等

    2、内部“推力”

    内部的“推力”因素(缺乏内部提升机会、不合理或不公平的薪酬分配、复杂的人际或上下级关系等)

    如果没有这二种因素的同时作用,员工一般是不会辞职的。那么,新员工流动的内部推力因素是什么呢?危险来自何方

    第一,我们来看一下新员工流动的时间段:

    据我的调查,一般员工有三个离职的高峰期:

    1、刚进来的前一天

    问:会是哪些原因而离开?

    案例分析:对新人的工作分配

    问:新员工来了应该做哪些工作

    2、三天内会是哪些原因呢?

    (1)老员工与新员工沟通少

    (2)领导对新员工没有关心的话

    (3)部门管理散乱

    3、试用期前后的新人危机期

    因为在这期间,新进员工发现工作性质或工作量超出他们能力或者是老员工及领导对他们的态度不好等。

    第二,分析新员工流动的原因:

    1、工作任务交待不清

    2、工作压力过大

    3、不能融合到组织文化和信息网络中

    4、与直接主管关系紧张

    上述四种导致新员工离职的原因,也是产生现实冲击的基本根源。

    现实冲击:是想象与实际情形之间的差异而产生的一种心理感受。简单地说就是现实与期望之间的差距。通常这样的差异对新员工来说往往是负面和消极的。许多新员工在加入到新的企业后的一段时间内(一般为受聘后的三~六个月左右),甚至在上班的第一天或踏进企业的第一刻,就会遭遇到“现实冲击”。若新员工随着时间的推移而遭受的现实冲击越来越大,最终超过其心理承受的极限,新员工就会辞职,离开企业。

    三、企业在哪些方面影响着新员工产生现实冲击呢?

    第一、企业忽略新员工的第一感受:

    第二、企业错误地欢迎新员工:

    第三、企业对新员工不够重视:

    第四、企业随意变更新员工的工种或工作内容

    第五、企业对工作岗位描述不清,新员工工作压力过大

    第六、企业人际关系复杂:

    第七、企业的文化和价值观冲突:

    第八、企业分配给新员工的最初工作缺乏意义和挑战性:

    四、怎样留住新员工?

    在新员工报到前后应遵守下列红地毯待遇指导原则:

    五、怎样实施对新员工的管理?

    1、对新员工要严格要求。

    不要将一位新员工安排到一位陈腐的、要求不高的或不愿提供支持的主管人员那里工作。一位新员工开始探索性工作的头几个月中,应当为他或她找到一位受过特殊训练、具有较高工作绩效并且能够通过建立较高工作标准而对自己的新员工提供必要支持的主管人员。

    2、为新员工提供“师徒制”机会。

    所谓“师徒制”就是指企业利用一位在某一领域富有经验的员工(即师父)来培训和教导新员工(即徒弟)。通过这样的个人化重视,企业能及时将新员工所要的信息、反馈和鼓励等通过“师傅”来传达给新员工。而新员工也能在尽短时间内掌握岗位和其他必要的信息。

    总之,对于新员工的管理要吸取蘑菇管理法则中的教训。所谓蘑菇管理法则是指许多组织对待初出茅庐者或新来乍到的人的一种管理方法。它往往指初来者常被置于阴暗的角落(不受重视的部门,或打杂跑腿的工作),浇上一头大粪(无端的批评、指责、代人受过),任其自生自灭(得不到必要的指导和提携)。蘑菇管理法则的结果必将导致有才干的新员工流出企业。

    B老员工流失原因

    (一)辛苦又受气待遇却较低:

    1、有的是因为其他公司工资高而“跳槽”;

    2、有的是其他服务种类更吸引人,如营业员工作轻松,收入又比本行业好而转行;

    3、也有的因服务工作最好找,往往视工作为“过渡”,寻觅到了更适合自己的工作就开路。

     

    (二)公司不诚信伤了员工心

    1、承诺不兑现:

    2、无休息日:

    3、伙食差:

    4、无福利保障

    5、克扣工资等

    (三)、公司无绩效考核,做好做坏一个样

    (四)对各级管理者的管理能力与管理作风失望?

    (五)没有对员工做职业生涯规划

    (六)公司管理水平不高,员工学不到东西

    互动探讨:公司应怎样的方式提拔管理者?

     

    二、如何控制员工流失

    员工流失是人力资源管理质量的的最直接反映。员工流失率高是员工不满的客观反映,是公司缺乏稳定性的表现。如何控制员工流失是许多公司当前面临且急切解决的问题。

    1、有效地管理员工流失

    一个公司要留住人才,最关键的是公司要有实力,有发展前途,从这个角度看,控制员工流失的关键是公司管理水平的高低;而其中尤为重要的又是公司人力资源管理水平的高低。

    (1)由于有效地控制员工流失涉及公司人力资源管理每一个环节,要减少员工流失,实际上需要从其中每一个环节进行有效的控制。过高的员工流失率显示着公司领导的失策,甚至暴露了领导和上下级人际关系的恶化。

    (2)对控制员工流失特别重要的人力资源管理的环节和领域。这些环节和领域包括:招聘筛选、在公司的规范化、职位内容、薪酬福利支付、职业生涯管理,还有公司文化建设、沟通等其他诸多方面。

    (3)但是除了这些人力资源管理的具体环节之外,更重要的是公司应该树立人本的管理思想。只要在管理哲学和思维上进行了变革,公司是不会缺乏留住人才的手段和方法的。如果没有这种新的思想的制度,再多的“锦囊妙计”也是没有多大作用的。

    2、值得反思的种种问题

    我们在每个环节的服务结束时,都将针对这一环节提出一些诊断性的问题,通过回答这些问题,可以帮助公司寻找自己管理存在的相关问题。

    (1)必须树立“以人为中心”的管理思想。公司领导应具有科学而客观的用人策略。

    (2)应注重发挥每个员工的作用,让上下层次的员工都来关心公司,参与公司的管理方案。

    (3)实实在在地做到“以人为本”。

    3、控制人流失策略

    现在许多经营管理者为了产品占领市场而提出所谓的“顾客第一”的口号。实际上,内外之间的相对平衡是最重要的,也就是说,公司在内应该把员工放在第一位。

    (1)试想,员工是直接生产产品、提供服务的人,如果他们不是第一位,他们也不可能生产出最好的产品和提供最佳的服务。在这里,我们可以发现许多的管理者真正关心的既不是顾客,也不是员工,而仍然是利润和亏损。什么时候当管理者的现实目标不再是这个心结时,员工流失就不再成为问题了。

    (2)熟悉圣经的人都知道这段话:“你们愿意别人怎样待你们,你们也应该怎样待别人。这应该成为人力资源管理的黄金原则。只要有这样的管理原则,在发生员工流失的时候,公司管理者也就不必责备员工,而应该从自己的管理方法、管理观念方面去寻找差距。只有树立了这种思想的公司和管理者才会真正把员工的流失当回事。

    (3)我们看到许多在经营上“财大气粗”的企业,不会把员工流失当回事。在这些企业,经营者对损失机器设备或者损失了市场份额会远远比损失了员工还要痛心。他们认为人力市场与招聘渠道发达得很,根本不用发愁招不到人。在自己的产品受社会重视的时候,这样的想法也不是没有道理。但是应该想得更远一些。市场是可以开发来的,也是可以失去的,而且失去市场正是失去优秀的员工开始的。

    总之,大凡重视员工的公司都会把员工的流失,尤其是频繁的流失当成是一件很痛心的事情。吸引来的人才,如果不能留住他们是很无能的表现。招聘进来一个人才可以说是容易得多的事情,而要把他或她留住则是完全不同的事情,所花费的努力要大得多。管理者只有真正意识到这一点,才会产生控制员工流失的想法和不遗余力实施这句话:争得来、留得住、用得好。

    正所谓:根本问题是决策者的问题,意识不到问题是管理素质的问题,解决不了问题是水平的问题,要切实可行地控制和减少员工的流失,应从“掷地有声”的人文化做起,即找到“以人为本”的着陆点。

    互动研讨题:员工的流失,会给公司带来什么样严重的后果?

    第二讲:培养忠诚快乐的员工

    一、什么是快乐工作?

    “快乐工作”应该有三项内涵:

    1、快乐工作是指员工和员工之间、员工和管理层之间融洽相处,工作环境和谐。

    2、公司制度应当人性化而非等级化,要在公司内部创造一个平等相处的工作环境,员工面对决策层时可以自由地表达自己的思想。

    3、要为员工设计良好的职业规划,使他们与公司一起成长,让“努力工作”成为他们自发自愿的行为,从而上升为“快乐工作”。

    二、你的员工快乐吗?

    1、经理人要常常问员工:“工作愉快吗?”

    2、发现员工不快乐,怎么办?

    你要做:去了解你的下属?

    (1)善于察言观色

    俗话说:“出门观天色,进门看脸色”。学会察言观色,是了解员工的最价方式。

    要做:

    A管理者平时要用心观察下属是如何工作的?

    B他们对你、对同事的态度是温和的还是生硬的?

    C他们在倾听和说话时有何种表情?

    D什么能使他们愉快,什么能令他们沉默?

    E尤其需要注意观察下属的异常行为:如发现员工情绪不佳、心事重重,应主动询问,然后采取适当措施。

    (2)设计专项调查表

    A员工们最感兴趣的六个话题

    问:你认为员工感兴趣的话题有哪些?

    共有六个话题:这六个话题也正好是管理者最不想公开的六个话题。

    a企业的未来计划- --我们没有必要告诉员工企业的未来计划。他们只要干好当前的工作就行了,没有必要了解事情的全局,因为我才是整体调度者。

    b生产率的提高- -- -怎么提高生产率我自由办法,他们要做的只是依据我的指导行事。

    c人事政策和实行情况- -- -我不能告诉他们这些,如果让他们知道了,谁知道会不会引起骚动呢。

    d与职责有关的信息- --员工自己会去弄明白的。

    e职位提升的机会- --这是管理层的机密,千万不能泄露。

    f外部事件对自己职责的影响- --他们到时就会了解的,不必告诉他们。

    (3)员工对上级的情感需求

    调查发现,对员工对上级的情感需求有以下几点:

    第一、偶尔拍拍我的后背。

    第二、多听听我说话。

    第三、别总逼我。

    第四、让我提点建议。

    第五、偶尔笑一笑。

    第六、问问我的感受。

    第七、别那么冷漠对我。

    第八、对我的工作多看两眼。

    第九、别总向我证明你有多聪明。

    当这个调查报告出来,几乎出乎所有管理者的意料。

    3、经常与手下员工保持联系

    我认为:跟你闲聊,我投入的是最宝贵的资产- --时间,这表明我很关心你的工作

    在公司,各级部门经理、主管都应经常巡视:

    (1)关注每位员工的工作;

    (2)平时也应注意收集自己员工的兴趣爱好,在奖励他过生日时投其所好。

    (3)作为管理者,应当多点时间去了解每位员工做了些什么特别的事情。

    (4)他需要什么样的鼓励和肯定。

    这对于让员工保持积极心态是非常关键的。

    3、把员工当作一个完整人来看待。

    全面地认识员工,挖掘出员工的更多潜力,促使他们在工作中发挥各种能力和特长。

    请看参观上海摩托罗拉生产厂房的案例:

    在上海摩托罗拉的生产厂房参观,副总经理带领我们参观他们的生产线,在走过一个男性中国作业员身边时,看到他正在拧焊作业管线。副总经理对他说:“Good-boy!”,男员工对他笑了一下。参观到检验车间时,一个女作业员正在用放大镜检验产品,“Nice-girl!”,女作业员也微笑了一下。听到副总经理和自己很亲切地讲“Good-boy!”、“Nice-girl!”对他们来说就是一种激励。

    点评:a不断展示自己的笑容,也是一种爱。有些管理者整天板着一张脸,让下属望而生畏,觉得你可敬不可亲,有什么事肯定不愿意说出来。

     

    b、有些人觉得作为领导或者主管,别人给自己敬礼、问好是应该的,其实人与人之间是要相互激励的。“小王,吃过饭了吗?”“老李,脸色不好,多休息一下。”这么一两句话就是一种激励,给人温暖的感觉。

    问:你有没有员工叫你时,你爱理不理的?为什么会这样?

    5、持续尝试最好的工作方式。

    案例分析:电影《四渡赤水》中毛泽东要与红一军团急切联系,而联系不上时。

    问:要使您,您会怎么对待发报员?

    三、让员工快乐地工作

    互动研讨分析:您喜欢研究历史吗?您怎么理解陈毅元帅说的“淮海战役的胜利是山东老百姓用车子推出来的”这句话的含义?

    1、变领导为引导

    2、将工作变得有趣

    3、由“厌业”到“乐业”

    4、帮助他们完成任务

    5、消除不安因素:

    去关心员工

    案例一、没有吃完的牛排

    素有“经营之神”之称的日本松下电器总裁松下幸之助有一次在一家餐厅招待客人,一行6人都点了牛排。等6个人都吃完了主餐,松下让助理去请烹调牛排的主厨过来,他还特别强调:“不要找经理,找主厨。”助理注意到,松下的牛排只吃了一半,心想,一会儿的场面可能会很尴尬。

    主厨来时很紧张,因为他知道请自己的客人来头很大。“是不是牛排有什么问题?”主厨紧张地问。“烹调牛排,对你已不成问题,”松下说,“但是我只能吃了一半。原因不在于厨艺,牛排真的很好吃,你是位非常出色的厨师,但我已80岁了,胃口大不如前。”

    主厨与其他的五位用餐者困惑得面面相看,大家过了好一会才明白怎么一回事。“我想当面和你谈谈,是因为我担心,当你看到了只吃了一半的牛排被送回厨房时,心理会难过。”

    点评:站在对方的立场上替对方着想,如果你是那位主厨,听到松下先生的如此说明,会有什么感受?是不是觉得备受尊重?客人在旁边听见松下如是说,只会更佩服松下的人格并更喜欢与他做生意了。

    案例二、餐具摔破了问:你会这么做?

    某饭店,一天,用餐人特别多,有一位服务员不小心,将托盘中的碟子滑落到地上摔破了,领班看见一瞪眼:“你怎么搞的?那么不小心?”可想而之,服务员可能还要自己赔偿损失。

    请看丽兹卡尔顿饭店的做法:

    (1)首先要关心员工,看他(她)有无受伤,并给予安慰。

    (2)要找出原因,是地面太滑?是碟子本身滑?还是鞋子有问题?

    (3)找出问题,对症下药,加以改进

    (4)如果是员工自己技能不熟练而造成的,则对其进行再培训。

    点评:a如果你是那个不小心摔破碟子的服务员,丽兹卡尔顿饭店的做法一定会有所触动的。

    B对别人表示关心和善意,比任何礼物都能产生更多的效果。时刻真情关怀下属感受的管理者,将完全捕获下属的心,并让下属心甘情愿为他赴汤蹈火!

    6、让每个员工都感到命运掌握在自己的手中

    7、快乐为王

    “三乐”的文化氛围:“顾客快乐、员工快乐、股东快乐。

    8、快乐维权

    (1)、建立“员工特殊法庭”

    (2)、组织员工到公司内部网上以不记名投票的方式评价上级对他们的管理,进行满意度调查。

    总经理邀请基层员工共进午餐,在一种宽松的氛围中与员工双向交流,通过沟通发现并解决问题。

    9、快乐桥梁

    制定“三会”制度,即“朝会”、“恳谈会”和“信息员例会”。

    10、激励的氛围

    给你的新员工一句赞美

    替员工取信,亲自送给他们

    给心情不好的员工一份不署名的小礼物

    给支援你的单位送一份谢礼

     

    给员工打个电话,告诉他你欣赏他(她)做事的方法

    送员工一本他(她)喜欢的书籍、杂志

    外出午餐时,带一份冰激凌给值班的员工

    11、“家”的温馨

    12、让员工看到未来

    四、快乐的员工带来满意的客人

    ——要有效下达工作指令

    1、工作指令要明确、清楚和完整“5W1H”

    “小王,将这几间房间打扫一下。”

    这不是一条明确、清楚和完整的工作指令。应改为:

    “小王,请你将1207、1208、1209这三间房间打扫一下,下午2时前完成,要保证质量,下午4时有贵宾入住。”

    Who(执行者)- -- -小王

    Want(做什么)- -- -打扫房间

    How(怎么做)- -- -打扫干净、保证质量

    When(什么时间)- --下午2时前

    Where(什么地点)- --1207、1208、1209

    Why(为什么)- --有贵宾入住

    2、尽可能避免用命令的方式

    命令是上级对下属特定行动的要求或禁止。命令带有组织阶层上的职权关系,它隐含着强制性,会让下属有被压制的感觉。如果管理者经常用命令的方式要求员工做好这个工作、完成那项任务,也许工作非常有效率,但是工作品质一定无法提升。为什么呢?因为直接命令剥夺了下属自我支配的原则,压抑了下属的创造性思考和积极负责的心理,同时也让下属失去了参与决策的机会。因此,除了紧急任务,应尽可能避免用命令的方式来下达工作指令。在下命令时,必须保持命令的统一性、一致性,主要不要经常变更命令,以免员工无所适从。

    原理:手表定理

    手表定理,是指一个人有一只手表时,可以知道现在是几点钟,而当他同时拥有两只表时,却无法确定时间。两只手表并不能告诉一个人更准确的时间,反而会让看表的人失去对时间的准确判断。

    《点评》:

    手表定理在企业经营管理方面给我们一种非常直观的启发,就是对同一个人或同一个组织的管理,不能同时采用两种不同的方法,不能同时设置两个不同的目标,甚至每一个人不能由两个人来同时指挥,否则将使这个企业或这个人无所适从。

    3尊重下属,使下属积极接受工作指令

    许多管理者容易犯的错误是,以一种高高在上的姿态与下属说话,实际上,他们是在下达命令:“你最好听我的话,并且按我的吩咐去做,因为我是你的上司。”但管理者必须知道,没有哪个人喜欢被他人命令来命令去的,包括自己的下属。

    或许有人回说,管理者有职权,不管下属是否有意愿,他都必须执行。的确,下属慑于上级的职权,必须执行工作命令,但有意愿下的执行和没意愿下的执行,其结果会有很大差异。有意愿的下属,会尽全力把工作做好;没意愿的下属,心里只会想着能应付过去就好。

    因此,作为一名管理者,在与下属沟通的时候要注意尊重对方,注意表达方式,尽量不采用命令的口吻:

    “喂,你进来一下。”

    “小李,你去干……。”

    这样的用语会让下属有一种被呼来唤去的感觉,缺少对他们起码的尊重。为了改善和下属的关系,使他们感觉自己更受尊重,管理者不妨使一些礼貌用语:

    “小王,请你进来一下。”

    “小李,麻烦你……。”

    案例:“南风法则”

    “南风”法则,亦称“温暖”法则,是一则寓言:北风和南风比武力,看谁能把行人身上的大衣脱掉。北风首先来了一个冷风,凛冽寒冷刺骨,行人为了抵御北风的侵袭,把大衣裹得紧紧的。南风则徐徐吹动,顿时风和日丽,行人因为觉得温暖上身,始而解开纽扣,继而脱掉大衣,南风获得了胜利。

    点评:

    这则寓言形象地说明了一个道理:温暖胜于严寒。管理者在管理中运用“南风”法则,就是要了解和尊重下属,以下属为本,多点人情味,尽力解决下属日常生活中的实际困难,变下属被动接受工作为主动接受工作,从而激发出工作的积极性。

    记住:一位受人尊敬的管理者,首先应该是一位懂得尊重别人的管理者。

    4尽可能用培训的方式下达工作指令

    告诉下属做什么的同时要教会他们怎么做。常见的错误做法是;招了新员工,未经培训或培训还未合格就让其直接上岗,一旦出了差错就对他大声呵斥。

    5注意获取反馈

    有时,管理者往往认为很清楚的事情,员工并不很清楚。我们经常让学生做一种折纸游戏,每个学生发一张长方形的纸,要求学生对折三下,然而撕一个角。结果学生折法不一,撕出来的窗花各种各样。

    同样的一个事情,不同的人对它的概念与理解的差别是非常大的,在我们日常的谈话与沟通当中也是同样。

    当你说出一句话来,你自己认为可能已经表达清楚了你的意思,但是,不同的听众会有不同的反映,他们的理解可能是千差万别的,甚至可以理解为相反的意思。这将大大影响沟通的效率与效果。可见,反馈是必不可少的。

    “沟通是你被理解了什么而不是说了什么”,下达工作指令后,管理者应询问下属有什么问题及意见,是否理解了指令的要求,必要时可让员工重复一遍:

    “小王,关于这个计划,你还有什么意见和建议吗?”

    对下属提出的好意见,应积极加以采纳,并给予称赞:

    “关于这点,你的意见很好,就照你的意见去做.”

    6、给下属获取更大的自主权

    一旦决定让下属负责某项工作,就应该尽可能给他更大的自主权,让他可以根据工作的性质和要求,更好地发挥个人的创造力:

    “这次小组培训计划交给你负责,关于培训主题、地点、时间、预算等请你作一个详细的计划,下个星期一下午听取你的汇报。”

    还应该让下属取得必要的信息:

    “培训部门我已经协调好了,他们会提供一些必要的资料。”

    7、给予适当支持与帮助

    即使命令已经下达,下属也已经明白了其工作重点所在,也已相应地授权了,管理者也不可就此不再过问事情的进展,尤其当下属遇到问题和困难希望上级协助解决时,更不可以说;“不是已经交给你去办了吗?

    ”作为上级,应该清楚地意识到,他之所以是你的下属,就是因为他的学历、经验不如你。此时,管理者应该和下属一起共同分析问题,探讨状况,尽快提出一个解决方案:

    “我们都了解了目前的状况。下面来讨论一下该怎么做?”

     

    五、人性化管理六要求

    1、管理者应有亲和力

    2、界定好严格与善待的尺度

    3、放权

    4、透明激励机制

    5、给员工更多活动空间

    6、和员工交朋友

    第三讲:管理者的领导力

    一、提升领导力的根源

    1、重视沟通的双向性

    要注意沟通一定是双向的。

    (1)下达工作指令或与个别员工谈话,应注意多听听下属的意见,拓宽思路、了解员工心理究竟在想些什么;

    (2)即使有时员工的意见并不正确,也应让他们把话说完,然后针对不正确部分做些解释、说服工作。

    只有很好听取别人的想法,才能更好地说出自己的想法。

    2、要学会倾听

    (1)管理者要善于听取下属的建议;

    (2)对说话抓不注重点的员工,对他们提意见时不能感到心烦;

    (3)不能心胸狭窄,对感情不想投入的员工提意见,听了一点就马上打断。

    管理者应把改善人际关系的聆听方式作为一个重要课题来研究。

    案例:“经营之神”的倾听之道

    松下幸之助被称为日本的“经营之神”,在他的管理思想里,倾听和沟通占有重要的地位。经常问他的下属:“说说看你对这件事是怎么考虑的。”要是你干的话,你会怎么办?

    他一有时间就要到工厂里转转,一方面便于发现问题,另一方面有利于听取工人的意见和建议。在松下的脑子里,从没有“人微言轻”的观念,他认真地倾听哪怕是最低层员工的正确意见,非常痛恨别人对他的阿谀奉承,松下公司也因董事长的善于交流获益匪浅。

    3、让员工参与

    (1)常常听到员工这样抱怨:“反正也不关我的事,管那么多干什么?”似乎公司利益对他们已经没有意义了。

    要知道:公司决策的最终执行者是下属员工,任何制度如果得不到下属的理解和支持,都不会得到很好的执行和落实。

    (2)每一个人都希望参与管理,员工也不例外,他们总想拥有参与公司管理的发言权。

    案例:只管3个人

    美国著名的艾森豪威尔将军是第二次世界大战中盟军的指挥官,在诺曼底登陆以前,一次,他在英国打高尔夫球,新闻记者采访他:“前线战势紧急,您怎么还有心情在这里打球啊?”艾森豪威尔说:“我不忙,我只管3个人:大西洋有蒙哥马利,太平洋有麦克阿瑟,喏,在那边拣球的是马歇尔。”

    点评:其实,艾森豪威尔手下有百万大军,诺曼底登陆也是事关重大,是二次大战的转折点。难道他真的只管3个人吗?不是。他懂得让下属参与。当然,在让下属参与之前,先要启发、教育他们,培养他们的能力,在他们有了一定的能力之后让他们参与管理。

    4、给下属提供各种沟通的渠道:

    (1)班前会、班后会。

    (2)走动管理,多与员工接触。

    (3)开设员工洽谈会。

    (4)设建议箱。

    沟通制度:

    (5)每天的部门例会上,员工可以向主管反映前一天工作中的小问题,大家一起回顾具体出错的环节在哪里;

    (6)每个月大部门会议,会讨论员工满意度的情况,向部门经理提出需要改进的地方,然后各部门会不断跟进事情的进展;

    (7)每个月人事经理会随机抽取10个左右的各部门的员工,一起喝茶

    (8)总经理每月也会邀请不同部门的员工与他一起共进早餐,问问大家最近的工作情况。

    幻灯片47

    (9)员工可以随意地进出总经理的办公室,提出他们的建议和想法。

    (10)每个月都会进行员工满意度的调查。

     

    二、增进相互理解

    1、学会换位思考

    在公司,经常会听到一种声音:这件事也不知道对他们(指下属)强调了多少次,他们就是不照着办,气死人了!在每个企业里都能听到管理者对员工发出种种不快的声音,抱怨他们对上级的管理指示领会不够好,执行的力度不够。这种指责虽然不能简单地说是对或是错,但把责任一股脑儿全安在员工身上显然不合适。作为管理者,要问问自己:原因出在什么地方?

    案例:如此沟通

    有一天,领班小王看到了一个员工中午未吃饭,用冰激凌代替,想到这个员工平时肠胃不怎么好,就从关心的角度对他说:“你要尽量少吃刺激性的食品。”哪知哪个员工脸一变,回了一句:“你总不能要我把冰激凌给扔了吧?”说罢扭头便走。

    《点评》:

    上例沟通失败,原因是多方面的。除了小王要检讨自己外,恐怕员工对领班缺乏了解也是原因之一,她误将关心当成了批评。

    上下级因为站的立场不一样,看问题的角度不同,在沟通时容易发生矛盾摩擦,有时管理者一批评员工,员工就有抵触情绪,认为你老是盯着他不放,从而影响了沟通的效果和工作效率。其实,任何制度、指令如果得不到员工的理解、支持和配合,都不会很好地得到执行、落实。

    2进行交叉培训

    a增进相互理解的另外一种行之有效的办法,是进行上下级之间的交叉培训。通过交叉培训,员工之间易换位思考。

    B交叉培训可以在同级之间进行,也可以在上下级之间进行。

    三、学会赞美下级

    1、让员工知道你赏识他们

    拿破仑非常震惊与肯定与赞美的效果,有人告诉他,为了得到皇帝的一枚勋章,他的士兵是什么英勇行为都可以做出来的。拿破仑惊讶地说:“这真是奇怪,人们竟然肯为这些破铜烂铁拼命!”

    优秀的员工是赏识出来的,因此,作为管理者应该努力去发现能对下属加以赞扬的小事,寻找他们的优点,形成一种赞美的习惯。

    我将我的管理思想总结为:糊涂用人智慧- --70%原则,即以70%的眼光去看员工的优点,以30%的眼光去看员工的缺点。这种管理思想,是中国“中庸”思想的发展,通过70%原则,在70%的层面上获得均衡,可以有效地处理用人中的矛盾问题。“水至清则无鱼”,也许70%原则能更有效地解决用人中的矛盾。

    一个主管要懂得去欣赏你的下属,应该以70%的眼光去看员工的优点,以30%的眼光去看员工的缺点。

    问:为什么我们在饭店会见到太多灰头土脸的员工?

    但是非常遗憾的是,很多管理者不会赞美激励,只会批评,他们认为表扬会使员工骄傲,他们常挂在嘴上的一句话是:“做得好不表扬是应该的,做得不好挨批评是应该的。”下属想知道的最重要的事情是:“我干得怎么样?我的表现还行吗?”这一期望与需要通常只有在员工出了差错时才能得到满足。他们一旦做错事,就会遭到严厉的批评甚至处罚,可当他们表现好时,管理者却很少花时间去告诉他们。于是,我们就见到太多被领导训得灰头土脸的员工。

    一直在这种灰色情绪下工作,又如何要求员工做出好的业绩?我们需要问一问每位管理者:今天你称赞过你的员工了吗?或者你已经多少年没有称赞过员工了?是否因为你从来没有得到过领导的表扬,所以你把这种负面情绪传递给了你的下属?为什么不开始尝试把负面情绪抛到九霄云外开始赞扬员工的工作?

    案例:赞美的力量

    王先生在儿子8岁时,给儿子买了一架钢琴,可是小男孩顽皮好动,不好好学,王太太经常为此训斥他,却不起作用。于是,王先生就开始想办法怎样使孩子喜欢弹钢琴。一天下午,当孩子为应付父母,随便弹了一段曲子准备溜走时,王先生叫住他说:“儿子呀,你弹得是什么曲子,怎么这么好听,爸爸从来没有听过这么美妙的音乐,你再给爸爸弹一遍。

    ”孩子听了很高兴,愉快地又弹了一遍。王先生告诉儿子喜欢听他弹的曲子,看他能不能每天弹一些,儿子高兴地答应了下来。过了一个多月,培养起了孩***钢琴的兴趣。现在,每天放学回家,孩子的第一件事就是弹钢琴,雷打不动。

    赞美部下作为一种沟通技巧,也不是随意说几句恭维话就可以奏效的。事实上,赞扬下属也有一些技巧:

    1、让员工知道你赏识他们

    管理者要经常让下属知道你是多么赏识他们,没有哪个人不喜欢被赞美的,管理者应该经常表达你对他们的欣赏。甚至只是称赞准时上班,对方就知道你重视守时。

    “我认为那真是太好了,你每次都能在8点种准时上班。我真佩服能守时的人。”

    对你的下属说这些话,你会发现他以后迟到的次数就更少了。每个人总有些可赞赏之处- --不妨让他知道,不要藏在心理!

     

    案例一:

    美国IBM公司有一个“百分之百俱乐部”,当公司员工完成他的年度任务,他就被批准为该俱乐部会员,他和他的家人被邀请参加隆重的集会。结果公司的雇员都将获得“百分之百俱乐部”会员资格作为第一目标,以获取那份荣耀。

    案例二:

    对于员工,不要太吝啬一些头衔、名号,这些名号、头衔可以换来员工的认可感,从而激励起员工的干劲。日本电器公司在一部分管理职务中实行“自由职衔制”,就是说可以自由加职衔,取消“代”“准”等一般管理职务中的辅助头衔,代之以“项目专任部长”、“产品经理”等与业务内容相关的、可以自由加予的头衔。

    2、赞扬的态度要真诚

    (1)要避免空洞、刻板的公式化的夸奖

    (2)避免不带任何感情的机械性话语

    (3)管理者必须确认所赞美的人的确有此优点,并且要有充分理由去赞美他

    3、赞扬的内容要具体

    (1)赞扬人要具体。

    表扬时要就事论事,哪件事做得好,什么地方值得赞扬,说得具体,才能使受夸奖者高兴,便于引起感情的共鸣。

    (2)赞扬时除了用“你很棒!”“你表现得很好!”“你不错!”之类的用语外,最好加上对具体事实的评价。如:

    A“你的调查报告中关于提升服务品质的建议,是一个好方法,谢谢你提出这么有用的办法。”

    B“你处理这次客户投诉的态度非常好,自始至终婉转、诚恳,并针对问题解决,你的做法正是我们期望员工能做的标准典范。”

    4、注意赞扬的场合

    在众人面前赞扬下属,对被赞扬的员工而言,当然受到的鼓励是最大的,这是赞扬部下的最好方式。

    5、适当运用间接赞美的技巧

    A所谓间接赞美,就是借第三者的话来赞美对方,这样比直接赞美对方的效果往往要好。比如对下属说:

    “前二天我和刘经理谈起你,他很欣赏你的服务态度,你对客人的热心与周到值得大家学习。好好努力,别辜负他对你的期望。”

    无论事实是否真的如此,反正你的下属是不会去调查是否属实的,但他对你的感激肯定会超乎你的想象。

    B间接赞扬的另一种方式就是在当事人不在场的时候赞美,这种方式有时比当面赞扬所起的作用更大。一般来说,背后的赞美都能传达到本人,这除了能起到赞美的激励作用外,更能让被赞美者感到你对他的赞美是诚挚的,因而更能加强赞美的效果。

    所以,作为一名管理者,不要吝啬对下属的赞美,尤其是在面队你的领导或者他的同事时,恰如其分地夸奖你的下属,他一旦间接知道了的赞美,就会对你心存感激,在感情上也会与你更进一步,你们的沟通也就会更加有效。

    6、不要又奖又罚

    作为上级,一般的夸奖似乎很像工作总结,先表扬,然后是但是、当然一类的转折词,这样很可能使原有的夸奖失去作用。应当将表扬、批评分开,不要混为一谈,表扬就是表扬,要批评事后再找合适的机会。

    四、掌握批评下级的技巧

    1、尊重客观事实

    批评他人通常是比较严肃的事情,所以在批评的时候:

    (1)一定要客观具体,应该就事论事;

    (2)一定要在弄清事实真相后再批评,要避免主观判断性的批评。

    2、以真诚的赞美作开头

    尺有所短、寸有所长。一个人犯了错误,并不等于他一无是处。所以在批评下属时,如果只提及短处而不提及长处,他就会感到心理上的不平衡,感到委屈。如一名员工平时工作颇有成效,偶尔出了一次质量事故,如果批评他的时候只指出他的事故,而不肯定他以前的成绩,他可能就会感到以前“白干了”,从而产生抗拒心理。

    据我在长期对员工的管理研究表明:被批评的人最主要的障碍就是担心批评会伤害自己的面子,损害自己的利益,所以管理者在批评前需帮他打消这个顾虑,让他觉得你认为他“功大于过”,那么他就会主动放弃心理上的抵抗,对你的批评也就更容易接受。

    3、谈论行为不谈论个性(对事不对人原则)

    谈论行为:就是讨论一个人所做的某件事情或者说的某一句话。

    个性:就是对某一个人的观点,即我们通常说的这个人是好人还是坏人。

    说某人“很笨”“没能力”常常会导致相反的结果。批评他人,应该就事论事。

    记住:批评他人,并不是批评对方本人,而是批评他的错误行为,千万不要把对下属错误行为的批评扩大到对下属本人的批评上。

     

    案例:

    比如说:你做为一名餐厅领班去检查餐具,结果发现一个骨碟上有污斑,而餐厅服务员没有发现,这时应该对他进行批评,你可以说:

    (1)“这些骨碟你没有好好洗。”

    (2)“你对工作太不负责人了,骨碟洗得那么脏。”

    很显然,第二种说法是难以被对方接受的,你的话语让他很难堪,也许他只是一次无意的过失,却被你上升到了没有责任心的高度,很可能把他推倒你的对立面上去,使你们的关系恶化,也很可能导致他在今后的工作中出更多的纰漏。

    4、勿伤害下属的自尊与自信

    批评时要运用一些技巧:

    “我以前也犯过这种错……”

    “每个人都有不愉快的时候,重要的是如何调整。”

    “像你这样聪明的人,我实在无法想象你再犯一次同样的错误。”

    5、讲究方式方法

    在这个世界上,根本不可能找出完全相同的两个人。不同的人,由于经历、知识、性格等自身素质的不同,接受批评能力和方式也会有很大的区别。

    很多饭店的管理者在与下属的沟通、批评、协调方面,方式单一直接,不仅达不到预期效果,反儿使下属产生抵触情绪。

    不同的下属需要不同的沟通技巧。有经验的管理者会针对下属的不同性格、情绪,有的方矢地进行沟通与批评。如对年龄较大、自尊心比较强的下属,要特别注意批评的措施及场合。

    案例一:一张处罚单

    有家饭店的楼层领班查了一间房花了10多分钟,查出墙角地毯上有少许浮灰、纯净水托盘上有少许短发等10多条问题,丢下一张处罚单走了。

    点评:类似这样的沟通方式,当事员工恐难心服,也难以真正起到教育整改的目的。对于清扫员工中的问题,当班领班需要及时指出,帮助员工纠正,而不是简单的一张处罚单了事。

     

    案例二:“处罚单”能否变个脸?

    大部分饭店都有“处罚单”。所有的处罚单,几乎都是清一色的严肃的面孔,一句多余的话都没有。饭店制作处罚单的时候,能否将单子的抬头“处罚单”三字改为“改进单”,再加上一句话,“纠错是为了更好地正确前行”,以减弱处罚对员工心理造成的负面影响?这样的处罚单可能比单纯的严肃的处罚单效果要好得多。改动后加上了富有人情味、文化味、教育性、启迪性非常强的一句话,处罚单的面孔立即有严肃、冷酷、无情、变得慈祥、安静、企望和充满着希望。

    当员工接到处罚的时候,看到了这句话,心理上会发生一系列的变化,由本能的反感、抵触、反抗到理解、认知,到接受,到改正错误。抬头变个脸叫“改进单”是再适合不过了。

     

    《点评》:

    处罚本是反面的教育,改为改进就变成了正面教育,鼓励员工改正错误,激励员工向正确的方向前进。在处罚单上做一个小小的改进,效果大为改观、境界迥然,这就是沟通的艺术。

    6、选择适当的场所、恰当的时间

    俗话说:树要皮,人要脸。人们在做错事后,普遍有这样一种心理,即不希望别人知道,所以批评下属时最好选在单独的场合。独立的办公室、安静的会议室、午餐后的休息室等都是不错的选择。尽量不要当着众人面批评下属。

    此外,对错误要及时处罚、批评,否则事过境迁,效果会大打折扣。如北京某五星级实行“现奖现罚”,一般的奖惩当天或第二天就实行,取得了良好的激励效果。

    注在;批评不宜在一上班时,而应该在下班时。

     

    7、一次只提出一个批评意见

    要注意:

    (1)批评时,不应该将平时对员工的不满、意见一股脑儿倾泻出来。

    (2)不应翻员工的老帐。

    8、友好地结束批评

    应注意:

    幻灯片66

    (1)每次的批评都应在友好的气氛中结束。

    (2)在会见结束时,不应该以“今后不需再犯”这样的话作为警告。

    (3)应对对方表示鼓励,提出充满感情的希望。比如说:“我想你会做得更好”或者“我相信你”,并报已微笑。

    俗话说:良药苦口,总言逆耳。“一句鼓励的话,可以改变一个人的观念与行为,甚至改变一个人的命运;一句负面的话,可以刺伤一个人的心灵与身体,甚至毁灭一个人的未来。”

    典型案例:

    有一位员工最近家中可能有些事情发生,已经连续两天迟到而且迟到时间都超10分钟。第三天他又迟到了。主管立即把这个员工叫到办公室,不听员工任何解释,就开始用一种斥责式的口吻批评道:“哎呀!你的看你又迟到了,你怎么天天迟到?你这个迟到大王!你这样迟到还干不干活?”甚至还语带威胁,“你如果再迟到一次,你看看吧,说不定把你开除掉。”

    《案例分析》:

    不听下属解释、不分青红皂白,狂轰滥炸式地批评下属,是在饭店经常看到的一种现象。假如管理者用这么一种方式处理问题,可以想象得到,这个员工会怎么样的一种反应。他肯定气呼呼地走出办公室,说不定“啪”地把门关起来。等回到岗位上,他也是一样,会把抽屉“嘭”地拉出来。然后,所有左邻右舍都感受得到这个员工真的不高兴,可能会来问他,到底发生了什么事?为什么会这样?

    这时候,他会告诉大家,他只不过迟到两三次,主管却那么凶!说我天天迟到。天天迟到跟迟到两三次根本不是一回事!我这就成了迟到大王了?这种防卫性的沟通,产生的一个后果就是恶性循环——员工不见得会改进工作,即使改进了工作也是在心不甘情不愿的情况之下改进的。

     

    如果换成沟通技巧比较高的主管,他要做的是支持性的沟通。当天用餐时或下半时,他会私下请这个员工到办公室,然后询问他最近家里有些什么事情发生?为什么昨天迟到,前天也迟到?已经迟到第三次了。有没有什么地方可以帮忙的?尊重员工了解员工,与之坦诚相待,用这种方式与下属沟通,相信员工一定会从内心改善工作,甚至告诉你孩子生病了,或是家里出了什么事了,他会很快正常工作。

    五、解决问题的方法

    要了解你的下属

    寓言故事:铁杆与钥匙

    问:怎样针对既优秀又个性非常强、不合群的员工?

    (主动向他请教问题,建立良好的关系;安排他熟悉的工作让他作讲座)。

    案例分析:“其实你不懂我的心”

    某饭店主管找员工小李谈话:

    主管:小李,你最近一段时间表现很不错,销售业绩有很大的提高。

    小李:谢谢您的夸奖。

    主管:饭店决定奖励你的进步,这样吧,授予你“优秀员工”的称号,好不好?

    小李:这个……

    主管:有什么想法就说,我回支持你的。

    小李:那我就直说了,称号什么的就不必了,只是我现在住的地方离饭店实在太远,希望饭店能帮助我解决这个困难。

     

    主管:啊......

    点评:

    管理者一定要深入到员工中去,实施走动式的领导方式。只有了解实际情况,才更有发言权。

    “其实你不懂我的心”。各位管理者,你每天与下属一起工作,你懂下属的心吗?要真正赢得下属的心,管理者首先要了解下属的所思所想。从某种意义上说,下属的心是“驿动的心”,管理者只有善于察言观色,了解下属的个性、心理,了解员工的实际困难与个人需求,设法给予满足,在与他们沟通时才能得心应手,才会更好地驾驭他们并得到他们的支持和配合。

    六、做好授权

    一、授权原则

    1、被授权者要能达到所授权工作的能力与品行。

    2、授权必须明确职责范围及权限。

    3、制定明确的作业规范,制约滥用权利的行为。

    4、授权前,对被授权者施与职前的训练和协助。

    二、授权的要决

    授权可能是企业主管最重要的能力,无授权即谈不上领导。授权不仅是一门科学,也是一种艺术化的运用,即所谓“运用之妙,存乎一心”。

    三、授权诀窍

    1、择出可授权部属处理的工作。

    2.、制订授权的范围。

    3、选择被授权的人。

    4.、培养,鼓励,协助被授权者。

    5.、利用日常管理的方法,保持控制。

    四、如何选择被受权的人

    1、组织内部的一致性,和谐性:

    考虑被授权人的品德和个性特征。

    2、工作的胜任性:

    层级组织中的谬见:

    优秀的领导人必定曾是优秀的出色的部属。

    往往优秀的部属晋升成为领导人以后的情况是:

    (一)未能发挥领导作用

    (二)减低部属的工作效率

    (三)浪费上司的时间

    3、考虑被授权人是否具有领导潜能

    被授权人是否愿意接受。

    被授权人的性格是否适合干这种工作。

    被授权人对命令的执行性。

    被授权人沟通能力如何(听和说)。

    被授权人的号召力如何。

    被授权人提出建议的积极性。

    被授权人接受新事物的能力如何

    被授权人应变能力如何。

    七、领导者的领导艺术与人格魅力

    在竞争加剧的时代,管理对于一个企业的成长和发展是十分重要的。一个企业纵向的组织结构大致可以分为三层:决策层、管理层、执行层。处在中层的管理者是架构决策与执行的桥梁,企业的执行力如何,很大程度取决于管理者的管理能力。“什么是管理?”、“怎样做一个出色的管理者?”是一个合格的管理人应该经常思考的问题

    要成为一个合格的管理者,需要具备三个要素:

    1、科学的方法论

    将方法与待解决的问题最佳的组合在一起,这才是管理者的领导艺术

    2、熟练的业务知识

    a、必须熟悉业务领域内方方面面的情况,要有统筹,要抓住重点,要注重细节

    b、管理法则不是条条框框,不是将先进的管理制度和理念照搬过来,强行灌输就可以起到理想功效的。

    c、要将这些制度和理念与本企业特有的企业文化和内涵相融合

    d.翻翻公司的管理制度,有多少是确有必要的?

    e。制度的存在是产生了效率还是制约了创新?

    f。制度的执行情况又如何?

    3、人格魅力

    一个企业管理者的人格魅力直接影响着他的领导能力

    a、提升自己的人格魅力也意味着领导能力的提升

    b、人格魅力则是指由一个人的信仰、气质、性情、品行、智能、才学和经验等诸多因素综合体现出来的一种人格凝聚力和感召力

    c、管理者的人格魅力和领导风格也是缓解员工情绪、调动员工积极性、激励员工努力工作的重要方面。管理不是高高在上的管制。

    相反,管理的本质是一种服务

    展开全文
  • 员工管理系统

    万次阅读 2017-01-21 18:18:36
    员工管理系统 功能介绍 登录 条件查询员工 查看员工明细 下载简历 添加员工(上传简历) 修改员工 删除员工 环境搭建 导入基础项目 基础项目中已经包含了静态页面,以及js、css等等; 导包 struts2...

    员工管理系统

    功能介绍

    • 登录
    • 条件查询员工
    • 查看员工明细
    • 下载简历
    • 添加员工(上传简历)
    • 修改员工
    • 删除员工


    环境搭建

    导入基础项目

    基础项目中已经包含了静态页面,以及js、css等等;

     

     导包

    • struts2
    • c3p0
    • mysql
    • dbutils
    • beanutils

     

     建包

    • cn.hcx.user.domain
    • cn.hcx.user.dao
    • cn.hcx.user.service
    • cn.hcx.user.web.action

     

     主页

    让主页转发到/login/login.jsp

    1、创建数据库

    CREATE DATABASE empmng;
    
    #创建用户,指定为只能本地访问,不能远程访问
    create user empmng@localhost identified by '123';
    #授权
    grant all on empmng.* to empmng@localhost;
    
    CREATE TABLE S_User(
    	uid CHAR(32) PRIMARY KEY, 
    	username VARCHAR(50),
    	loginname VARCHAR(50),
    	loginpass VARCHAR(50),
    	gender VARCHAR(10),
    	birthday VARCHAR(50),
    	education VARCHAR(20),
    	cellphone VARCHAR(50),
    	hobby VARCHAR(20),
    	filepath VARCHAR(500),
    	filename VARCHAR(100),
    	remark VARCHAR(500)
    );
    
     

    c3p0-config.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <c3p0-config>
      <default-config>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql:///struts2-empmng</property>
        <property name="user">root</property>
        <property name="password">1234</property>
        <property name="initialPoolSize">3</property>
        <property name="maxIdleTime">30</property>
        <property name="maxPoolSize">5</property>
        <property name="minPoolSize">3</property>
      </default-config>
    </c3p0-config>

     

     

    2、创建User类

    对应t_user表来创建User类。

     

    3、创建javabean

    User:
    package cn.hcx.user.domain;
    
    import java.io.File;
    
    public class User {
    	private String uid;
    	private String username;
    	private String loginname;
    	private String loginpass;
    	private String gender;
    	private String birthday;
    	private String education;
    	private String cellphone;
    	private String hobby;
    	private String filepath;
    	private String filename;
    	private String remark;
    //upload 字段在数据库中并没有列与之对应
    // 接受表单提交的是否有简历的参数
    	private String upload;
    	
    	
    	
    
    
    	public String getUpload() {
    		return upload;
    	}
    
    	public void setUpload(String upload) {
    		this.upload = upload;
    	}
    
    	public String getUid() {
    		return uid;
    	}
    
    	public void setUid(String uid) {
    		this.uid = uid;
    	}
    
    	public String getUsername() {
    		return username;
    	}
    
    	public void setUsername(String username) {
    		this.username = username;
    	}
    
    	public String getLoginname() {
    		return loginname;
    	}
    
    	public void setLoginname(String loginname) {
    		this.loginname = loginname;
    	}
    
    	public String getLoginpass() {
    		return loginpass;
    	}
    
    	public void setLoginpass(String loginpass) {
    		this.loginpass = loginpass;
    	}
    
    	public String getGender() {
    		return gender;
    	}
    
    	public void setGender(String gender) {
    		this.gender = gender;
    	}
    
    	public String getBirthday() {
    		return birthday;
    	}
    
    	public void setBirthday(String birthday) {
    		this.birthday = birthday;
    	}
    
    	public String getEducation() {
    		return education;
    	}
    
    	public void setEducation(String education) {
    		this.education = education;
    	}
    
    	public String getCellphone() {
    		return cellphone;
    	}
    
    	public void setCellphone(String cellphone) {
    		this.cellphone = cellphone;
    	}
    
    	public String getHobby() {
    		return hobby;
    	}
    
    	public void setHobby(String hobby) {
    		this.hobby = hobby;
    	}
    
    	public String getFilepath() {
    		return filepath;
    	}
    
    	public void setFilepath(String filepath) {
    		this.filepath = filepath;
    	}
    
    	public String getFilename() {
    		return filename;
    	}
    
    	public void setFilename(String filename) {
    		this.filename = filename;
    	}
    
    	public String getRemark() {
    		return remark;
    	}
    
    	public void setRemark(String remark) {
    		this.remark = remark;
    	}
    
    	@Override
    	public String toString() {
    		return "User [uid=" + uid + ", username=" + username + ", loginname="
    				+ loginname + ", loginpass=" + loginpass + ", gender=" + gender
    				+ ", birthday=" + birthday + ", education=" + education
    				+ ", cellphone=" + cellphone + ", hobby=" + hobby
    				+ ", filepath=" + filepath + ", filename=" + filename
    				+ ", remark=" + remark + "]";
    	}
    
    }
    

     
    用户登录:
     
     
     
     
     
    用户列表:
     
    查看用户:
     
    保存用户:
    dao:
    UserDao:
    package cn.hcx.user.dao;
    
    import java.util.List;
    
    import cn.hcx.user.domain.User;
    
    public interface UserDao {
    	//根据登录名称获得用户对象
    	User  getUserByLoginName(String loginName);
    	// 根据查询条件获得用户列表
    	List<User> getUserByCondition(User u);
    	//保存用户对象
    	void  saveUser(User u);
    	//根据userid 获得user对象
    	User getUserByUid(String id);
    }
    

     
     
    UserDaoImpl:
    package cn.hcx.user.dao;
    
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.BeanHandler;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    import cn.hcx.user.domain.User;
    
    public class UserDaoImpl implements UserDao {
    	private static QueryRunner qr = new QueryRunner(new ComboPooledDataSource());
    	
    	public User getUserByLoginName(String loginName) {
    		//1 书写sql语句
    		String sql = " select * from tab_user where loginname = ? ";
    		//2 调用runner的 query方法
    		try {
    			User u  = qr.query(sql, new  BeanHandler<User>(User.class), loginName);
    			//3 返回
    			return u;
    		} catch (SQLException e) {
    			e.printStackTrace();
    			throw new RuntimeException("查询用户失败!");
    		}
    	}
    
    	public List<User> getUserByCondition(User u) {
    		String sql = " select * from tab_user  where 1=1";
    		//准备放置参数的集合
    		List<Object> params = new ArrayList<Object>();
    		//判断 拼装查询语句,和添加参数
    		//用户名
    		if(u.getUsername() != null && !"".equals(u.getUsername().trim())){
    			sql = sql + " and  username=? ";
    			params.add(u.getUsername());
    		}
    		//根据学历
    		if(u.getEducation() != null && !"".equals(u.getEducation().trim())){
    			sql = sql + " and  education=? ";
    			params.add(u.getEducation());
    		}
    		//根据性别
    		if(u.getGender() != null && !"".equals(u.getGender().trim())){
    			sql = sql + " and  gender=? ";
    			params.add(u.getGender());
    		}
    		//根据是否上传简历
    		if(u.getUpload() != null && !"".equals(u.getUpload().trim())){
    				if(u.getUpload().equals("1")){//用户要找有简历的
    					sql = sql + " and  filepath is not null ";
    				}
    				if(u.getUpload().equals("2")){//用户要找没有简历的
    					sql = sql + " and  filepath is  null ";
    				}
    		}
    		
    		try {
    			System.out.println(sql);
    			System.out.println(params);
    			List<User> list = qr.query(sql, new BeanListHandler<User>(User.class), params.toArray());
    			return list;
    		} catch (SQLException e) {
    			e.printStackTrace();
    			throw new RuntimeException("查询用户列表失败!");
    		}
    		
    		
    	}
    
    	public void saveUser(User u) {
    		String sql =	
    				" INSERT INTO `tab_user`                 "+
    				" VALUES                                 "+
    				"   (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ";
    		
    		try {
    			int result = qr.update(sql, u.getUid(),u.getUsername(),
    					u.getLoginname(),u.getLoginpass(),
    					u.getGender(),u.getBirthday(),u.getEducation(),
    					u.getCellphone(),u.getHobby(),u.getFilepath(),
    					u.getFilename(),u.getRemark());
    			if(result!=1){
    				throw new RuntimeException("保存用户失败!");
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    			throw new RuntimeException("保存用户失败!");
    		}
    		 
    	}
    
    	public User getUserByUid(String id) {
    		//1 书写sql语句
    		String sql = " select * from tab_user where uid = ? ";
    		//2 调用runner的 query方法
    		try {
    			User u  = qr.query(sql, new  BeanHandler<User>(User.class), id);
    			//3 返回
    			return u;
    		} catch (SQLException e) {
    			e.printStackTrace();
    			throw new RuntimeException("查询用户失败!");
    		}
    	}
    
    }
    

     
    action:

     

    UserAction:

     

    package cn.hcx.user.web.action;
    
    import java.io.File;
    import java.io.InputStream;
    import java.io.UnsupportedEncodingException;
    import java.net.URLEncoder;
    import java.util.List;
    import java.util.Map;
    import java.util.UUID;
    
    import javax.servlet.ServletContext;
    
    import org.apache.struts2.ServletActionContext;
    
    import cn.hcx.user.dao.UserDao;
    import cn.hcx.user.dao.UserDaoImpl;
    import cn.hcx.user.domain.User;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ModelDriven;
    import com.opensymphony.xwork2.util.ValueStack;
    import com.sun.xml.internal.ws.util.ReadOnlyPropertyException;
    
    public class UserAction extends ActionSupport implements ModelDriven<User> {
    	private UserDao ud = new UserDaoImpl();
    	private User u = new User();
    	
    	
    	//处理用户登录请求
    	public String login(){
    		//1 校验
    		//2 根据登录名调用Dao,获得用户对象
    		User user  = ud.getUserByLoginName(u.getLoginname());
    				//没有获得=> 添加错误消息,提示用户名不存在
    		if(user == null){
    				addActionError("用户名不存在!");
    				return "login";
    		}
    		//3 比对密码 
    		if(!user.getLoginpass().equals(u.getLoginpass())){
    			//比对失败=>添加错误,提示密码不正确
    				addActionError("密码不正确!");
    				return "login";
    		}
    		//4 将User对象放入session域作为登录标识
    		Map<String, Object> sessionScope = ActionContext.getContext().getSession();
    		sessionScope.put("user", user);
    		//5 重定向到成功页面
    		return "home";
    		
    	}
    	//-----------------------------------------------------------------------------------------
    	//查询用户列表
    	public String list(){
    		// 1 调用Dao的查询列表方法
    		List<User> list = ud.getUserByCondition(u);
    		//2 将列表放入request域
    		Map<String,Object> requestScope = (Map<String, Object>) ActionContext.getContext()
    																			.get("request");
    		requestScope.put("list", list);
    		//3 转发到list页面
    		return "list";
    		
    	}
    	//---------------------------------------------------------------
    	//查看用户详情
    	public String view(){
    		//1 查询用户根据id
    		User user = ud.getUserByUid(u.getUid());
    		
    		//2 将user对象放入值栈栈顶
    		ValueStack vs = ActionContext.getContext().getValueStack();
    		
    		vs.push(user);
    		//3转发到查看页面
    		return "view";
    		
    		/*//2放入request域
    		//3转发
    */		
    	}
    	//------------------------------------------------------------------------
    	private String filePath;
    	private String fileName ;
    	public String download(){
    		//1 根据id查找用户
    		User user = ud.getUserByUid(u.getUid());
    		//2 拿到用户的文件路径,文件名称
    		filePath = user.getFilepath();
    		fileName = user.getFilename();
    		//3 返回结果
    		
    		return "download";
    		
    	}
    	//filePath => /upload/23b798f5-0fc9-4add-9af9-fe8581a458ae
    	public InputStream getDoc(){
    		//1 获得servletcontext对象
    		ServletContext sc = ServletActionContext.getServletContext();
    		//2根据路径获得流
    		return sc.getResourceAsStream(filePath);
    		
    	}
    	public String getFileName(){
    	try {
    		return URLEncoder.encode(fileName, "utf-8");
    	} catch (UnsupportedEncodingException e) {
    		e.printStackTrace();
    		throw new RuntimeException("不可楞!");
    	}
    	}
    	//----------------------------------------------------------------------------------------
    	private File upload2;
    	
    	private String upload2FileName;
    	
    	
    	
    	public String getUpload2FileName() {
    		return upload2FileName;
    	}
    	public void setUpload2FileName(String upload2FileName) {
    		this.upload2FileName = upload2FileName;
    	}
    	public File getUpload2() {
    		return upload2;
    	}
    	public void setUpload2(File upload2) {
    		this.upload2 = upload2;
    	}
    	public String add(){
    		String uuid = UUID.randomUUID().toString();
    		if(upload2 != null){
    			// 1 上传的文件转存
    				//1> 找到upload文件夹 绝对路径
    			String dirPath = ServletActionContext.getServletContext().getRealPath("/upload");
    				//2>生成 文件名称(uuid)
    				//3> 转存
    			File targetFile = new File(dirPath+"/"+uuid);
    			
    			upload2.renameTo(targetFile);
    			
    			// 2 将转存的路径 以及 文件的原始名称封装到User对象
    			u.setFilepath("/upload/"+uuid);
    			u.setFilename(upload2FileName);
    		}
    		// 3 使用随机字符串设置user的id
    		u.setUid(uuid);
    		// 4 调用dao保存user
    		ud.saveUser(u);
    		// 5 重定向到用户列表
    		return "rlist";
    	}
    	
    	//-----------------------------------------------------------------------------------------
    	//专门校验login的
    	public void validateLogin(){
    		//数据校验
    		if(u.getLoginname() == null || u.getLoginname().trim().equals("")){
    			addFieldError("loginname", "用户名不能为空!");
    		}
    		
    		if(u.getLoginpass() == null || u.getLoginpass().trim().equals("")){
    			addFieldError("loginpass", "密码不能为空!");
    		}
    	}
    	
    	public User getModel() {
    		return u;
    	}
    	
    }
    
     

     

    interceptor:
    package cn.hcx.user.web.interceptor;
    
    import java.util.Map;
    
    import cn.hcx.user.domain.User;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
    
    public class LoginInterceptor extends MethodFilterInterceptor {
    
    	@Override
    	//凡是进入拦截器,都需要有登录状态才能放行
    	protected String doIntercept(ActionInvocation invocation) throws Exception {
    			//1 获得session
    			Map<String,Object> sessionScope = ActionContext.getContext().getSession();
    			//2 从session找出User对象
    			User u = (User) sessionScope.get("user");
    			//3 判断User对象是否存在
    			if(u==null){
    				//不存在=>没有登录=>转发登录页面
    				return "login";
    			}
    			
    				//存在=>登录了=>放行
    		return invocation.invoke();
    	}
    
    }
    

     
    struts.xml:
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    	"http://struts.apache.org/dtds/struts-2.3.dtd">
    
    <struts>
    	<constant name="struts.devMode" value="true" />
    	<constant name="struts.action.extension" value="do" />
    	
        <package name="user" namespace="/" extends="struts-default">
        	<interceptors>
        		<!-- 配置自己的拦截器 -->
        		<interceptor name="login" class="cn.hcx.user.web.interceptor.LoginInterceptor"></interceptor>
        		<!-- 配置自己的拦截器栈 -->
        		<interceptor-stack name="myDefaultStack">
        			<!-- 加入自己的拦截器 -->
        			<interceptor-ref name="login">
        			<!-- login方法不拦截,其他都拦截 -->
        				<param name="excludeMethods">login</param>
        			</interceptor-ref>
        			<!-- 加入默认18个拦截器的拦截器栈 -->
        			<interceptor-ref name="defaultStack"></interceptor-ref>
        		</interceptor-stack>
        	</interceptors>
        	<!-- 指定当前包,默认拦截器栈为myDefaultStack -->
        	<default-interceptor-ref name="myDefaultStack"></default-interceptor-ref>
        	<!-- 全局错误配置 -->
        	<global-exception-mappings>
        		<!-- 如果出现java.lang.RuntimeException的异常,那么转发到error对应的页面 -->
        			<exception-mapping result="error" exception="java.lang.RuntimeException"></exception-mapping>
        	</global-exception-mappings>
        	
        	<action name="UserAction_*" class="cn.hcx.user.web.action.UserAction" method="{1}" >
        			<result name="error" >/user/error1.jsp</result>
        			<result name="login" >/login/login.jsp</result>
        			<result name="home" type="redirect"  >/login/home.jsp</result>
        			<result name="list"  >/user/list.jsp</result>
        			<result name="view"  >/user/view.jsp</result>
        			<result name="rlist" type="redirectAction">
    		             <param name="actionName">UserAction_list</param>
    		             <param name="namespace">/</param>
             		</result>
        			<result name="download" type="stream" >
        					 <param name="contentType">application/msword</param>
    				   		 <param name="inputName">doc</param>
    				  		 <param name="contentDisposition">attachment;filename="${fileName}"</param>
    				  		 <param name="bufferSize">1024</param>
        			</result>
        			
        			<result name="input" >/login/login.jsp</result>
        			
        	</action>
        </package>
    </struts>
    
     

    jsf:
    importTag.jsf:
    <%@ taglib prefix="s" uri="/struts-tags" %>

    login:
    bottom.jsp
    <body MS_POSITIONING="GridLayout">
    		<table width="100%" border="0" cellspacing="0" cellpadding="10" height="64">
    			<tr>
    				<td align="center" width="100%" style= valign="top" background="<c:url value='/images/bt_02.jpg'/>">传智播客Struts2练习       <br>
    				<font class="font12">
    				<a class="a03" target="_blank" href="mailto:sarft@chinasarft.gov.cn">
    				<font color="#000000"><br></font></a></font></td>
    			</tr>
    		</table>
    	</body>

     
     
    home.jsp
    <html>
    	<head>
    		<meta http-equiv="Content-Language" content="zh-cn">
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style>
    		body
    		{
    			SCROLLBAR-ARROW-COLOR: #ffffff;  SCROLLBAR-BASE-COLOR: #dee3f7;
    		}
        </style>
      </head>
      
    <frameset rows="103,*,43" frameborder=0 border="0" framespacing="0">
      <frame src="<c:url value='/login/top.jsp'/>" name="topFrame" scrolling="NO" noresize>
      <frameset cols="159,*" frameborder="0" border="0" framespacing="0">
    		<frame src="<c:url value='/login/left.jsp'/>" name="leftFrame" noresize scrolling="YES">
    		<frame src="<c:url value='/login/welcome.jsp'/>" name="mainFrame">
      </frameset>
      <frame src="<c:url value='/login/bottom.jsp'/>" name="bottomFrame" scrolling="NO"  noresize>
    </frameset>
    </html>

     
     
    left.jsp
    <body>
    <table width="100" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="12"></td>
      </tr>
    </table>
    <table width="100%" border="0">
      <tr>
        <td>
    <div class="dtree">
    
    	<a href="javascript: d.openAll();">展开所有</a> | <a href="javascript: d.closeAll();">关闭所有</a>
    	<link rel="StyleSheet" href="<c:url value='/css/dtree.css'/>" type="text/css" />
    	<script type="text/javascript" src="<c:url value='/js/dtree.js'/>"></script>
    	<script type="text/javascript">
    		d = new dTree('d');
    		d.add(0,-1,'系统菜单树');
    		d.add(2,0,'员工管理','<c:url value="/login/welcome.jsp"/>','','mainFrame');
    		//子目录添加
    		d.add(3,2,'用户管理','<s:url action="UserAction_list" namespace="/" ></s:url>','','mainFrame');
    
    		
    		document.write(d);
    	</script>
    </div>	</td>
      </tr>
      
    </table>
    </body>

     
     
    login.jsp
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <script type="text/javascript">
    function ini(){
       document.form1.loginname.focus();
    }
    </script>
    
    <html>
    	<head>
    		<meta http-equiv="Content-Language" content="zh-cn">
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    		<title></title>
    		<link href="<c:url value='/css/Style.css'/>" rel="stylesheet" type="text/css">
    	</head>
    
    	<body onload="ini()">
    		<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
    			<tr>
    				<td align="center">
    					<table width="452" height="290" border="0" cellpadding="0" cellspacing="0">
    						<tr>
    							<td bgcolor="#FFFFFF">
    								<table width="452" height="290" border="0" cellpadding="0" cellspacing="0">
    									<tr>
    										<td height="74">
    											<img src="<c:url value='/images/logintitle.gif'/>">
    										</td>
    									</tr>
    									<tr>
    										<td align="center" valign="bottom" background="<c:url value='/images/loginbg.gif'/>">
    											<s:form id="loginAction_home" name="form1" action="UserAction_login" namespace="/" target="_parent" method="post" theme="simple" >
    												<table border="0" align="center" cellpadding="2" cellspacing="0">
    													<tr align="center">
    														<td height="30" colspan="2" style="border-bottom: 1px dotted #cccccc">
    															<strong style="font-size: 14px;">请登录</strong>
    														</td>
    													</tr>
    													<tr>
    														<td height="30" nowrap>
    															<font color="000F60"><strong>用户名:</strong> </font>
    														</td>
    														<td>
    															<s:textfield name="loginname" id="loginname" cssClass="text" cssStyle="width: 160px;" ></s:textfield>
    															<font color="red"><s:fielderror fieldName="loginname" ></s:fielderror></font>
    														</td>
    													</tr>
    													<tr>
    														<td height="30" nowrap>
    															<strong><font color="000F60">密码: </font> </strong>
    														</td>
    														<td>
    															<s:password name="loginpass" id="loginpass" cssClass="text" cssStyle="width: 160px;" ></s:password>
    															<font color="red"><s:fielderror fieldName="loginpass" ></s:fielderror></font>
    														</td>
    													</tr>
    													<tr>
    														<td height="30" nowrap colspan="2">
    															<strong><font color="red"></font> </strong>
    														</td>
    													</tr>
    													<tr>
    														<td height="30">
    														</td>
    														<td>
    															<input type="submit" name="submit" value="登录" class="buttoninput"/>
    
    															<input type="reset" name="reset" value="取消" class="buttoninput"/>
    
    														</td>
    													</tr>
    												</table>
    											</s:form>
    											<!-- 在这里显示各种错误信息 -->
    												<font color="red"><s:actionerror/></font>
    												
    												
    				
    
    											<table width="100%" border="0" cellspacing="0" cellpadding="0">
    												<tr>
    													<td height="30" align="center">
    													</td>
    												</tr>
    												<tr>
    													<td height="23" align="center"></td>
    												</tr>
    											</table>
    										</td>
    									</tr>
    
    								</table>
    							</td>
    						</tr>
    					</table>
    				</td>
    			</tr>
    		</table>
    	</body>
    </html>

     
     
    top.jsp
    <%@ page language="java" pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    	<head>
    		<meta http-equiv="Content-Language" content="zh-cn">
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    		<style type="text/css">
    BODY {
    	MARGIN: 0px;
    	BACKGROUND-COLOR: #ffffff
    }
    
    BODY {
    	FONT-SIZE: 12px;
    	COLOR: #000000
    }
    
    TD {
    	FONT-SIZE: 12px;
    	COLOR: #000000
    }
    
    TH {
    	FONT-SIZE: 12px;
    	COLOR: #000000
    }
    </style>
    		<link href="<c:url value='/css/Style.css'/>" rel="stylesheet" type="text/css">
    	</HEAD>
    	<body>
    		<table width="100%" height="70%"  border="0" cellspacing="0" cellpadding="0">
    			<tr>
    				<td>
    					<img width="100%" src="<c:url value='/images/top_01.jpg'/>">
    				</td>
    
    				<td width="100%" background="<c:url value='/images/top_100.jpg'/>">
    				</td>
    			</tr>
    		</table>
    		<table width="100%" border="0" cellspacing="0" cellpadding="0">
    			<tr>
    				<td height="30" valign="bottom" background="<c:url value='/images/mis_01.jpg'/>">
    					<table width="100%" border="0" cellspacing="0" cellpadding="0">
    						<tr>
    							<td width="85%" align="left">
    							      
    								<font color="#000000"> <script language="JavaScript">
    <!--
    tmpDate = new Date();
    date = tmpDate.getDate();
    month= tmpDate.getMonth() + 1 ;
    year= tmpDate.getFullYear();
    document.write(year);
    document.write("年");
    document.write(month);
    document.write("月");
    document.write(date);
    document.write("日 ");
    
    myArray=new Array(6);
    myArray[0]="星期日"
    myArray[1]="星期一"
    myArray[2]="星期二"
    myArray[3]="星期三"
    myArray[4]="星期四"
    myArray[5]="星期五"
    myArray[6]="星期六"
    weekday=tmpDate.getDay();
    if (weekday==0 | weekday==6)
    {
    document.write(myArray[weekday])
    }
    else
    {document.write(myArray[weekday])
    };
    // -->
    									</script> </font>
    							</td>
    							<td width="15%">
    								<table width="100%" border="0" cellspacing="0" cellpadding="0">
    									<tr>
    										<td width="16"
    											background="<c:url value='/images/mis_05b.jpg'/>">
    											<img
    												src="<c:url value='/images/mis_05a.jpg'/>"
    												width="6" height="18">
    										</td>
    										<td width="155" valign="bottom"
    											background="<c:url value='/images/mis_05b.jpg'/>">
    											用户名:
    											<font color="blue">超级管理员</font>
    										</td>
    										<td width="10" align="right"
    											background="<c:url value='/images/mis_05b.jpg'/>">
    											<img src="<c:url value='/images/mis_05c.jpg'/>" width="6" height="18">
    										</td>
    									</tr>
    								</table>
    							</td>
    							<td align="right" width="5%">
    							</td>
    						</tr>
    					</table>
    				</td>
    			</tr>
    		</table>
    	</body>
    </HTML>
    

     
     
    welcome.jsp
    <style type="text/css">
    <!--
    body {
    	background-color: #FFFFFF;
    	margin-left: 0px;
    	margin-top: 0px;
    	margin-right: 0px;
    	margin-bottom: 0px;
    }
    body,td,th {
    	color: #000000;
    }
    -->
        </style>
    <style>
    BODY {SCROLLBAR-FACE-COLOR: #cccccc; SCROLLBAR-HIGHLIGHT-COLOR: #ffffFF; SCROLLBAR-SHADOW-COLOR: #ffffff; SCROLLBAR-3DLIGHT-COLOR: #cccccc; SCROLLBAR-ARROW-COLOR:  #ffffff; SCROLLBAR-TRACK-COLOR: #ffffFF; SCROLLBAR-DARKSHADOW-COLOR: #cccccc; }
    </style>
    </head>
    
    <body>
    
    <form name="Form1" method="post" action="name.aspx" id="Form1">
    
    	<table width="100%" border="0" height="88" border="1" background="<c:url value='/images/back1.JPG'/>">
    		<tr>
    			<td colspan=3 class="ta_01" align="center" bgcolor="#afd1f3"><strong>系统首页</strong></td>
    		</tr>
    
    		<tr>
    			<td width="65%" height="84" align="center" valign="top" >
    				<span class="Style1">登录成功!</span>
    			</td>
    		</tr>
    		<tr><td height=2></td></tr>
    	
    	</table>
    
    	</form>
    
    </body>
    

     
    User:
    add.jsp:
    <script type="text/javascript">
    		$(document).ready(function(){
    			//使用class属性处理  'yy-mm-dd' 设置格式"yyyy/mm/dd"
    			$('#birthday').datepick({dateFormat: 'yy-mm-dd'}); 
    		});
    	</script>
    	<body>
    		<s:form id="userAction_save_do" name="Form1" action="UserAction_add" namespace="/" theme="simple" method="post" enctype="multipart/form-data">
    			 
    			<table cellSpacing="1" cellPadding="5" width="100%" align="center" bgColor="#eeeeee" style="border: 1px solid #8ba7e3" border="0">
    				<tr>
    					<td class="ta_01" align="center" bgColor="#afd1f3" colSpan="4"
    						height="26">
    						<strong><STRONG>添加用户</STRONG>
    						</strong>
    					</td>
    				</tr>
    
    				<tr>
    					<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
    						登录名:
    					</td>
    					<td class="ta_01" bgColor="#ffffff" colspan="3">
    						<s:textfield name="loginname"  id="userAction_save_do_loginname" cssClass="bg" ></s:textfield>
    					</td>
    				</tr>
    				<tr>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						 密码:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<s:password  name="loginpass"  id="loginpass"></s:password>
    					</td>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						用户姓名:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<s:textfield name="username"  id="userAction_save_do_username" cssClass="bg" ></s:textfield>
    					</td>
    				</tr>
    				<tr>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						性别:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<s:radio list="{'男','女'}" name="gender" id="gender男"  ></s:radio>
    					</td>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						学历:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<s:select list="{'本科','专科','高中'}" name="education" id="education" headerKey="" headerValue="--请选择--" ></s:select>
    
    					</td>
    				</tr>
    				<tr>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						出生日期:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<s:textfield  name="birthday" size="20" value="" readonly="readonly" id="birthday" ></s:textfield>
    					</td>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						电话:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<s:textfield name="cellphone" value="" id="cellphone" ></s:textfield>
    					</td>
    				</tr>
    				<tr>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						兴趣爱好:
    					</td>
    					<td class="ta_01" bgColor="#ffffff" colSpan="3">
    					<s:checkboxlist list="{'看电影','旅游','健身','购物','睡觉'}" name="hobby"  id="hobby-1" ></s:checkboxlist>
    					</td>
    				</tr>
    				<tr>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						简历资料:
    					</td>
    					<td class="ta_01" bgColor="#ffffff" colSpan="3">
    						<s:file  name="upload2" size="30"  id="userAction_save_do_upload" ></s:file>
    					</td>
    				</tr>
    				<TR>
    					<TD class="ta_01" align="center" bgColor="#f5fafe">
    						备注:
    					</TD>
    					<TD class="ta_01" bgColor="#ffffff" colSpan="3">
    					<s:textarea name="remark" cols="30" rows="3" id="userAction_save_do_remark" cssStyle="WIDTH: 96%" ></s:textarea>
    					</TD>
    				</TR>
    				<TR>
    					<td align="center" colSpan="4" class="sep1">
    						<img src="<c:url value='/images/shim.gif'/>">
    					</td>
    				</TR>
    
    
    				<tr>
    					<td class="ta_01" style="WIDTH: 100%" align="center"
    						bgColor="#f5fafe" colSpan="4">
    						<button type="submit" id="userAction_save_do_submit" name="submit" value="确定" class="button_ok">
    							确定
    						</button>
    
    						<FONT face="宋体">       </FONT>
    						<button type="reset" value="重置" class="button_cancel">重置</button>
    
    						<FONT face="宋体">       </FONT>
    						<INPUT class="button_ok" type="button" onclick="history.go(-1)" value="返回"/>
    						<span id="Label1"></span>
    					</td>
    				</tr>
    			</table>
    		</s:form>
    	</body>

     
    edit.jsp:
    <!-- 日期插件,使用jquery -->
    		<script type="text/javascript" src="<c:url value='/jquery/jquery-1.4.2.js'/>"></script>
    		<link rel="stylesheet" href="<c:url value='/jquery/jquery.datepick.css'/>" type="text/css">
    		<script type="text/javascript" src="<c:url value='/jquery/jquery.datepick.js'/>"></script>
    		<script type="text/javascript" src="<c:url value='/jquery/jquery.datepick-zh-CN.js'/>"></script>
    	</HEAD>
    	<script type="text/javascript">
    		$(document).ready(function(){
    			//使用class属性处理  'yy-mm-dd' 设置格式"yyyy/mm/dd"
    			$('#birthday').datepick({dateFormat: 'yy-mm-dd'}); 
    		});
    	</script>
    	<body>
    		<form id="userAction_save_do" name="Form1" action="<c:url value='/user/list.jsp'/>" method="post" enctype="multipart/form-data">
    			 
    			<table cellSpacing="1" cellPadding="5" width="100%" align="center" bgColor="#eeeeee" style="border: 1px solid #8ba7e3" border="0">
    				<input type="hidden" name="userID" value="17" id="userID"/>
    				<input type="hidden" name="path" value="D:\apache-tomcat-6.0.18\webapps\StrutsProject\upload/2012/03/29/费用报销单模板.doc" id="path"/>
    				<input type="hidden" name="filename" value="费用报销单模板.doc" id="filename"/>
    				<tr>
    					<td class="ta_01" align="center" bgColor="#afd1f3" colSpan="4"
    						height="26">
    						<strong><STRONG>编辑用户</STRONG>
    						</strong>
    					</td>
    				</tr>
    
    				<tr>
    					<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
    						登录名:
    					</td>
    					<td class="ta_01" bgColor="#ffffff" colspan="3">
    						<input type="text" name="loginname" value="caocao" id="userAction_save_do_loginname" class="bg"/>
    					</td>
    				</tr>
    				<tr>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						 密码:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<input type="password" name="loginpass" value="123" id="loginpass"/>
    					</td>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						用户姓名:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<input type="text" name="username" value="曹操" id="userAction_save_do_username" class="bg"/>
    					</td>
    				</tr>
    				<tr>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						性别:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<input type="radio" name="gender" id="gender男" value="男"/><label for="gender男">男</label>
    						<input type="radio" name="gender" id="gender女" checked="checked" value="女"/><label for="gender女">女</label>
    
    					</td>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						学历:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						
    						
    						<select name="education" id="education">
    						    <option value="">--选择学历--</option>
    						    <option value="博士">博士</option>
    						    <option value="硕士">硕士</option>
    						    <option value="研究生" selected="selected">研究生</option>
    						    <option value="本科">本科</option>
    						    <option value="专科">专科</option>
    						    <option value="高中">高中</option>
    						
    						
    						</select>
    
    					</td>
    				</tr>
    				<tr>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						出生日期:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<input type="text" name="birthday" size="20" value="2012-03-01" readonly="readonly" id="birthday"/>
    					</td>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						电话:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<input type="text" name="cellphone" value="12312121" id="cellphone"/>
    					</td>
    				</tr>
    				<tr>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						兴趣爱好:
    					</td>
    					<td class="ta_01" bgColor="#ffffff" colSpan="3">
    						 <input type="checkbox" name="hobby" value="看电影" id="hobby-1" checked="checked"/>
    						<label for="hobby-1" class="checkboxLabel">看电影</label>
    						<input type="checkbox" name="hobby" value="旅游" id="hobby-2" checked="checked"/>
    						<label for="hobby-2" class="checkboxLabel">旅游</label>
    						<input type="checkbox" name="hobby" value="健身" id="hobby-3"/>
    						<label for="hobby-3" class="checkboxLabel">健身</label>
    						<input type="checkbox" name="hobby" value="购物" id="hobby-4"/>
    						<label for="hobby-4" class="checkboxLabel">购物</label>
    						<input type="checkbox" name="hobby" value="睡觉" id="hobby-5"/>
    						<label for="hobby-5" class="checkboxLabel">睡觉</label>
    						<input type="hidden" id="__multiselect_userAction_save_do_hobby" name="__multiselect_hobby" value="" /> 
    					</td>
    				</tr>
    				<tr>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						简历资料:
    					</td>
    					<td class="ta_01" bgColor="#ffffff" colSpan="3">
    						<input type="file" name="upload" size="30" value="" id="userAction_save_do_upload"/>
    					</td>
    				</tr>
    				<TR>
    					<TD class="ta_01" align="center" bgColor="#f5fafe">
    						备注:
    					</TD>
    					<TD class="ta_01" bgColor="#ffffff" colSpan="3">
    						<textarea name="remark" cols="30" rows="3" id="userAction_save_do_remark" style="WIDTH: 96%">的</textarea>
    					</TD>
    				</TR>
    				<TR>
    					<td align="center" colSpan="4" class="sep1">
    						<img src="<c:url value='/images/shim.gif'/>">
    					</td>
    				</TR>
    				<tr>
    					<td class="ta_01" style="WIDTH: 100%" align="center"
    						bgColor="#f5fafe" colSpan="4">
    						<button type="submit" id="userAction_save_do_submit" name="submit" value="确定" class="button_ok">
    							确定
    						</button>
    
    						<FONT face="宋体">       </FONT>
    						<button type="reset" value="重置" class="button_cancel">重置</button>
    
    						<FONT face="宋体">       </FONT>
    						<INPUT class="button_ok" type="button" onclick="history.go(-1)" value="返回"/>
    						<span id="Label1"></span>
    					</td>
    				</tr>
    			</table>
    		</form>
    
    
    
    
    	</body>

     
     
    error.jsp:
    <!--
    .style1 {
    	color: #FF0000;
    	font-size: 18px;
    }
    -->
    </style>
    	</head>
    	<body>
    		<p>
    			 
    		</p>
    		<table width="100%" border="0">
    			<tr>
    				<th width="18%" height="261" scope="col">
    					 
    				</th>
    
    				<th width="53%" scope="col">
    					<table width="453" height="220" border="0" cellpadding="0"
    						cellspacing="0">
    
    						<tr>
    							<td height="220" align="center" valign="middle"
    								background="<c:url vlaue='/images/loginbg.gif'/>">
    								<p class="style1">
    									<font color="red">上传附件错误</font>
    								</p>
    								<p>
    									
    								</p>
    							</td>
    						</tr>
    						<tr>
    							<td height="220" align="center" valign="middle">
    								<FONT face="宋体">       </FONT>
    								<INPUT class="button_ok" type="button" onclick="history.go(-1)" value="返回"/>
    							</td>
    						</tr>
    					</table>
    				</th>
    				<th width="29%" scope="col">
    					 
    				</th>
    			</tr>
    		</table>
    		<p>
    			 
    		</p>
    	</body>

     
     
    error1.jsp:
    <!--
    body {
    	background-color: #FFFFFF;
    	margin-left: 0px;
    	margin-top: 0px;
    	margin-right: 0px;
    	margin-bottom: 0px;
    }
    body,td,th {
    	color: #000000;
    }
    -->
        </style>
    <style>
    BODY {SCROLLBAR-FACE-COLOR: #cccccc; SCROLLBAR-HIGHLIGHT-COLOR: #ffffFF; SCROLLBAR-SHADOW-COLOR: #ffffff; SCROLLBAR-3DLIGHT-COLOR: #cccccc; SCROLLBAR-ARROW-COLOR:  #ffffff; SCROLLBAR-TRACK-COLOR: #ffffFF; SCROLLBAR-DARKSHADOW-COLOR: #cccccc; }
    </style>
    </head>
    
    <body>
    
    <form name="Form1" method="post" action="name.aspx" id="Form1">
    
    	<table width="100%" border="0" height="88" border="1" background="<c:url value='/images/back1.JPG'/>">
    		<tr>
    			<td colspan=3 class="ta_01" align="center" bgcolor="#afd1f3"><strong>出错啦!</strong></td>
    		</tr>
    
    		<tr>
    			<td width="65%" height="84" align="center" valign="top" >
    				<span class="Style1">
    					<font color="red"><s:property value="exception.message" /></font>
    				</span>
    			</td>
    		</tr>
    		<tr><td height=2></td></tr>
    	
    	</table>
    
    	</form>
    
    </body>

     
     
    list.jsp:
    <HTML>
    	<HEAD>
    		<meta http-equiv="Content-Language" content="zh-cn">
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    		<link href="<c:url value='/css/Style.css'/>" rel="stylesheet" type="text/css" />
    		<script language="javascript" src="<c:url value='/js/public.js'/>"></script>
    		<script type="text/javascript">
    			function addUser(){
    				window.location.href = "<c:url value='/user/add.jsp'/>";
    			}
    		</script>
    	</HEAD>
    	<body>
    		<br>
    		<s:form id="Form1" name="Form1" action="UserAction_list" namespace="/" method="post" theme="simple" >
    			<table cellSpacing="1" cellPadding="0" width="100%" align="center" bgColor="#f5fafe" border="0">
    				<TBODY>
    					<tr>
    						<td class="ta_01" align="center" bgColor="#afd1f3">
    							<strong>查 询 条 件</strong>
    						</td>
    					</tr>
    					<tr>
    						<td>
    							<table cellpadding="0" cellspacing="0" border="0" width="100%">
    								<tr>
    									<td height="22" align="center" bgColor="#f5fafe" class="ta_01">
    										用户姓名
    									</td>
    									<td class="ta_01" bgColor="#ffffff">
    										<s:textfield name="username" size="15" id="Form1_username" cssClass="bg" ></s:textfield>
    									</td>
    									<td height="22" align="center" bgColor="#f5fafe" class="ta_01">
    										性别:
    									</td>
    									<td class="ta_01" bgColor="#ffffff">
    										<s:select list="{'男','女'}" name="gender" id="gender" headerKey="" headerValue="--请选择--" ></s:select>
    									</td>
    								</tr>
    								<tr>
    									<td height="22" align="center" bgColor="#f5fafe" class="ta_01">
    										学历:
    									</td>
    									<td class="ta_01" bgColor="#ffffff">
    										<s:select list="{'本科','专科','高中'}" name="education" id="education" headerKey="" headerValue="--请选择--" ></s:select>
    
    									</td>
    									<td height="22" align="center" bgColor="#f5fafe" class="ta_01">
    										是否上传简历
    									</td>
    									<td class="ta_01" bgColor="#ffffff">
    										<s:select list="#{'1':'有','2':'无'}" name="upload" id="upload"
    											 headerKey="" headerValue="--请选择--" ></s:select>
    
    									</td>
    								</tr>
    								<tr>
    									<td width="100" height="22" align="center" bgColor="#f5fafe"
    										class="ta_01">
    									</td>
    									<td class="ta_01" bgColor="#ffffff">
    										<font face="宋体" color="red">  </font>
    									</td>
    									<td align="right" bgColor="#ffffff" class="ta_01"><br><br></td>
    									<td align="right" bgColor="#ffffff" class="ta_01">
    										<button type="submit" id="search" name="search" value="查询" class="button_view">
    查询
    </button>
    
    										     
    										<input type="reset" name="reset" value="重置" class="button_view"/>
    
    									</td>
    								</tr>
    							</table>
    						</td>
    
    					</tr>
    					<tr>
    						<td class="ta_01" align="center" bgColor="#afd1f3">
    							<strong>用 户 列 表</strong>
    						</TD>
    					</tr>
    					<tr>
    						<td class="ta_01" align="right">
    							<button type="button" id="add" name="add" value="添加" class="button_add" onclick="addUser()">
    添加
    </button>
    
    						</td>
    					</tr>
    					<tr>
    						<td class="ta_01" align="center" bgColor="#f5fafe">
    							<table cellspacing="0" cellpadding="1" rules="all"
    								bordercolor="gray" border="1" id="DataGrid1"
    								style="BORDER-RIGHT: gray 1px solid; BORDER-TOP: gray 1px solid; BORDER-LEFT: gray 1px solid; WIDTH: 100%; WORD-BREAK: break-all; BORDER-BOTTOM: gray 1px solid; BORDER-COLLAPSE: collapse; BACKGROUND-COLOR: #f5fafe; WORD-WRAP: break-word">
    								<tr
    									style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; HEIGHT: 25px; BACKGROUND-COLOR: #afd1f3">
    
    									<td align="center" width="18%">
    										登录名
    									</td>
    									<td align="center" width="17%">
    										用户姓名
    									</td>
    									<td align="center" width="8%">
    										性别
    									</td>
    									<td align="center" width="23%">
    										联系电话
    									</td>
    									<td width="11%" align="center">
    										学历
    									</td>
    									<td width="7%" align="center">
    										编辑
    									</td>
    									<td width="7%" align="center">
    										查看
    									</td>
    									<td width="7%" align="center">
    										删除
    									</td>
    								</tr>
    								
    									<s:iterator value="#request.list" var="user" >
    										<tr onmouseover="this.style.backgroundColor = 'white'"
    											onmouseout="this.style.backgroundColor = '#F5FAFE';">
    											<td style="CURSOR: hand; HEIGHT: 22px" align="center"
    												width="18%">
    												<s:property value="loginname"/>
    											</td>
    											<td style="CURSOR: hand; HEIGHT: 22px" align="center"
    												width="17%">
    												<s:property value="username"/>
    											</td>
    											<td style="CURSOR: hand; HEIGHT: 22px" align="center"
    												width="8%">
    												<s:property value="gender"/>
    											</td>
    											<td style="CURSOR: hand; HEIGHT: 22px" align="center"
    												width="23%">
    												<s:property value="cellphone"/>
    											</td>
    											<td style="CURSOR: hand; HEIGHT: 22px" align="center">
    												<s:property value="education"/>
    											</td>
    											<td align="center" style="HEIGHT: 22px">
    												<a href="<c:url value='/user/edit.jsp?userID=15'/>">
    													<img src="<c:url value='/images/i_edit.gif'/>" border="0" style="CURSOR: hand">
    												</a>
    											</td>
    											<td align="center" style="HEIGHT: 22px">
    															<s:url action="UserAction_view" namespace="/" var="viewUrl"  >
    																<s:param name="uid" value="uid"></s:param>
    															</s:url>
    												<a href="<s:property  value="#viewUrl" />">
    													<img src="<c:url value='/images/button_view.gif'/>" border="0" style="CURSOR: hand">
    												</a>
    											</td>
    											<td align="center" style="HEIGHT: 22px">
    												<a href="<c:url value='/user/list.jsp?userID=15'/>">
    													<img src="<c:url value='/images/i_del.gif'/>" width="16" height="16" border="0" style="CURSOR: hand">
    												</a>
    											</td>
    										</tr>
    									</s:iterator>
    							</table>
    						</td>
    					</tr>
    				</TBODY>
    			</table>
    		</s:form>
    	</body>

     
     
    view.jsp:
    <body>
    		<form id="userAction_save_do" name="Form1" action="<c:url value='/user/userAction_save.do'/>" method="post" enctype="multipart/form-data">
    			 
    			<table cellSpacing="1" cellPadding="5" width="100%" align="center" bgColor="#eeeeee" style="border: 1px solid #8ba7e3" border="0">
    				<tr>
    					<td class="ta_01" align="center" bgColor="#afd1f3" colSpan="4"
    						height="26">
    						<strong><STRONG>查看用户</STRONG>
    						</strong>
    					</td>
    				</tr>
    
    				<tr>
    					<td width="18%" align="center" bgColor="#f5fafe" class="ta_01">
    						登录名:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<s:property value="loginname" />
    					</td>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						用户姓名:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<s:property value="username" />
    					</td>
    				</tr>
    				
    				<tr>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						性别:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<s:property value="gender" />
    					</td>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						学历:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<s:property value="education" />
    					</td>
    				</tr>
    				<tr>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						出生日期:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<s:property value="birthday" />
    					</td>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						电话:
    					</td>
    					<td class="ta_01" bgColor="#ffffff">
    						<s:property value="cellphone" />
    					</td>
    				</tr>
    				<tr>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						兴趣爱好:
    					</td>
    					<td class="ta_01" bgColor="#ffffff" colSpan="3">
    						 <s:property value="hobby" />
    					</td>
    				</tr>
    				<tr>
    					<td align="center" bgColor="#f5fafe" class="ta_01">
    						简历资料:
    					</td>
    					<td class="ta_01" bgColor="#ffffff" colSpan="3">
    						<a href="#" onclick="openWindow('user/userAction_download.do?userID=17','700','400')" class="cl_01">
    						    <s:a action="UserAction_download" namespace="/"   >
    						    <s:param name="uid"  value="uid" ></s:param>
    						    <s:property value="filename" />
    						    </s:a>
    						</a>
    					</td>
    				</tr>
    				<TR>
    					<TD class="ta_01" align="center" bgColor="#f5fafe">
    						备注:
    					</TD>
    					<TD class="ta_01" bgColor="#ffffff" colSpan="3">
    						<s:property value="remark" />
    					</TD>
    				</TR>
    				<TR>
    					<td align="center" colSpan="4" class="sep1">
    						<img src="<c:url value='/images/shim.gif'/>">
    					</td>
    				</TR>
    				<TR>
    					<td class="ta_01" style="WIDTH: 100%" align="right" bgColor="#f5fafe" colSpan="4">
    						<FONT face="宋体">       </FONT>
    						<INPUT class="button_ok" type="button" onclick="history.go(-1)" value="返回"/>
    						<span id="Label1"></span>
    					</td>
    				</TR>
    			</table>
    		</form>
    	</body>

     
    index.jsp:
    <%@ page language="java" contentType="text/html; charset=UTF-8"%>
    <jsp:forward page="/login/login.jsp"></jsp:forward>

     
     
    展开全文
  • 员工管理数据库设计

    万次阅读 多人点赞 2019-07-06 20:56:52
    员工管理数据库系统,有助于为对员工数量增多,信息量增大,以及员工部门分配,工资发放等问题实现现代、化网络化管理,能够提高企业管理效率,提高准确度,节约企业成本,提高生产效率。 通过该课题可以熟悉...

    一、课题背景和目的

    员工管理数据库系统,有助于为对员工数量增多,信息量增大,以及员工部门分配,工资发放等问题实现现代、化网络化管理,能够提高企业管理效率,提高准确度,节约企业成本,提高生产效率。

    通过该课题可以熟悉PowerDesigner设计数据库的流程,巩固数据库的设计规则和设计原理,以及对数据库进行多种逻辑查询。

     

    二、数据库的需求分析

    通过设计数据库实现对企业员工的基本信息、职位、所属项目、工资等数据进行存储、查询和管理。数据库需要存储员工的基本信息如员工编号、身份证号、联系方式、所属部门信息、工资信息等,还要对员工参与的项目信息进行存储,如项目编号,项目名称,项目起止时间等。

    系统开发首先通过PowerDesigner设计物理模型,并将设计好的模型转换为可执行的SQL代码。通过SQL Server 创建数据库,并加入相关数据,在数据库中完成查询管理工作。

    系统的开发过程中使用 PowerDesigner16.5和 SQL Server 2014实现。

     

    三、数据库概念模型构造

    模型中包含五个实体,实体名称以及属性如下:

    员工信息表:员工编号、员工姓名、身份证号、性别、手机号、邮箱;

    公司部门表:部门编号、部门名称、负责人工号;

    部门职位表:职位编号、职位名称;

    项目表:项目编号、项目名称、开启时间、结束时间;

    工资表:出纳编号、基本工资、五险一金、绩效奖金、补贴、加班费。

    (以上加有下划线的属性为表的主键属性)

    根据以上实体设计的数据库系统ER图如下图图1所示:

    图 1系统ER图

    四、数据库逻辑设计说明

    一个公司部门中可以包含多个员工,每个员工只能属于一个公司部门,因此员工与公司部门的关系为N:1.

    一个公司部门内可以多个职位,每个特定职位只能属于一个部门,因此公司部门与部门职位的关系为1:N.

    每个员工可以属于不同部门的相同职位,及同一个职位可以对应多个员工,而每个员工只能由一个职位,因此部门职位与员工的关系为1:N.

    每个员工都对应一个工资单,每个工资单只能属于一个员工,因此员工表与工资表的关系是1:1.

    每个员工可以参与多个项目,每个项目可以由多个员工参与,因此员工表与项目表的关系是N:M.

     

    五、数据库物理设计说明

    1:1的关系如员工信息表和工资表,可将员工信息表的主键设置为工资表的外键,也可将工资表的主键设置为员工信息表的外键

    1:N的关系如公司部门表和员工信息表,公司部门表为1的一方,员工信息表为N的一方,需要将公司部门表的主键设为员工信息表的外键。

    M:N的关系如员工信息表和项目表,需要建立一个联系表(员工和项目关系表)将员工信息表的主键和项目表的主键分别设为员工和项目关系表的外键。

    系统设计物理模型图如下图图2所示:

    图 2物理模型图

     

    六、数据库及表的创建实施过程

    通过PowerDesigner生成可执行的SQL文件,其操作过程如下图图3所示:

    图 3生产SQL文件

    在SQL server 2014 中创建一个EmploySystem数据库,然后在该数据库中运行PowerDesginer生产的SQL文件,来创建表,SQL代码如下图所示:

    图 4SQL代码

    表的结构生成后,需要为每个表添加数据,截图如下:

    公司部门表数据如图5:

    图 5公司部门表

    员工信息表数据如图6:

    图 6员工信息表

    部门职位表数据如图7:

    图 7部门职位表

    项目表数据如图8:

    图 8项目表

    员工和项目关系表数据如图9:

    图 9员工和项目关系表

    工资表数据如图10:

    图 10工资表

    七、涉及到相关业务逻辑的单表查询及多表查询

    (1)查询所有员工信息:

    SQL语句如下:

    select * from Employee_info

    执行结果如下:

    (2)查询20100101员工的工资信息:

    SQL语句如下:

    select * from Salary_info where employee_id='20100101'

    执行结果如下:

     

    (3)查询20100101员工所在的部门和职位:

    SQL语句如下:

    select employee_id, deparment_name , position_name

    from Department_info ,position_info, Employee_info

    where  employee_id='20100101' and Employee_info.department_number = Department_info.department_number

         and position_info.position_number = Employee_info.position_number

    执行结果如下:

     

    (4)查询20100101员工所分配的项目:

    SQL语句如下:

    select Employee_info.employee_id, employee_name, Project_info.project_number, project_name

    from Employee_info ,Project_info, employee_project_r

    where  Employee_info.employee_id='20100101' and Employee_info.employee_id=employee_project_r.employee_id

             and employee_project_r.project_number = Project_info.project_number

    执行结果如下:

     

    八、涉及到相关业务逻辑的存储过程和触发器设计

    (1)创建存储过程“stuff_pr”,查询员工号为“20100101”的员工所有的相关信息

    SQL语句如下:

    create procedure stuff_pr as

    select distinct * from Employee_info as e

       left join Department_info on e.department_number = Department_info.department_number

       left join position_info on e.position_number = position_info.position_number

       left join employee_project_r on e.employee_id = employee_project_r.employee_id

       left join Project_info on employee_project_r.project_number = Project_info.project_number

       left join Salary_info on e.employee_id = Salary_info.employee_id

    where e.employee_id='20100101'

    执行结果如下:

    SQL语句如下:

    exec stuff_pr

     

    (2)创建触发器“project_del”,当删除项目表里的项目时,对应的雇员与项目关系表中的数据也同时删除。

    SQL语句如下:

    create trigger ep_project_del

    on employee_project_r

    after delete

    as

    if exists(select * from Project_info,deleted where Project_info.project_number = deleted.project_number)

      begin

           delete from Project_info

           where Project_info.project_number in (select project_number from deleted)

      end

     

    执行结果如下:

    SQL语句如下:

    delete from employee_project_r

    where project_number = '1901'

    执行结果如下:

    SQL语句如下:

    select * from employee_project_r

    执行结果如下:

    SQL语句如下:

    select * from Project_info

    执行结果如下:

     

    九、心得体会

    通过本次数据设计,熟悉了PowerDesigner设计数据库的流程,更加深化了对数据库的设计规则和设计原理的理解,提高了动手设计数据库的能力。通过对数据库中简单少数数据的操作验证了数据库设计的合理性,在实际项目中可以通过验证来完善数据库。

    在对数据库进行操作的过程中,提高了对SQL语句的掌握程度,加深了对存储过程和触发器的理解。通过数据库来管理和查询数据能够很大程度地提高工作效率。

     

    十、相关参考文献

    [1]雷景生,叶文珺,楼越焕.数据库原理及应用(第2版)[M].北京:清华大学出版社,2015

     

    展开全文
  • python 入门 实战 员工管理系统

    万次阅读 2020-12-29 13:07:41
    效果: 主程序: import employee_tools while True: employee_tools.show_menu() action_str = input("请...添加员工信息 employee_tools.add_info() elif action_str == "2": # 2.修改员工信息 employee_too

    效果:
    在这里插入图片描述
    主程序:

    import employee_tools
    while True:
        employee_tools.show_menu()
        action_str = input("请输入您的操作:")
        if action_str == "1":
            # 1.添加员工信息
            employee_tools.add_info()
        elif action_str == "2":
            # 2.修改员工信息
            employee_tools.update_info()
        elif action_str == "3":
            # 3.删除员工信息
            employee_tools.delete_info()
        elif action_str == "4":
            # 4.显示所有员工信息
            employee_tools.show_all_info()
        elif action_str == "5":
            # 5.退出系统
            print("欢迎您再次使用员工管理系统!!!")
            input('按任意键退出...')
            break
        else:
            # 输入其他任意数字
            print("您输入的有误,请重新输入:")
    

    函数程序:

    import sys
    import os
    
    # 存储所有的员工信息,空数据时
    # employee_dict = {}
    
    #指定文件路径
    file1 = 'D:\employee_list.txt'
    employee_dict = open (file1)
    
    # 这是原本就有固定数据时的字典
    employee_dict = {'1001': {'name': '张三', 'sex': '男', 'salary': '5000'},
                     '1002': {'name': '李四', 'sex': '男', 'salary': '7000'},
                     '1003': {'name': '小红', 'sex': '女', 'salary': '9000'},
                     }
    
    # content_write.writelines (list_add)
    
    
    def show_menu():
        """进入菜单页面"""
        print("*" * 11+"员工管理系统 V_1.0"+"*" * 11)
        # print("员工管理系统 V1.0")
        print("1、添加员工信息")
        print("2、修改员工信息")
        print("3、删除员工信息")
        print("4、显示所有员工信息")
        print("5、退出系统")
        print("*" * 40)
    
    
    def add_info():
        """添加员工信息"""
        # 实现步骤:1.输入员工的工号、姓名、性别、工资等等
        #             1.1判断员工编号是否存在,如果存在则拒绝添加,提示“编号已存在,不能重复添加”
        #             1.2如果不重复,则继续接下来的操作
        #           2.把这些信息保存在一个字典里
        #             2.1员工工号作为键,剩下的属性(姓名、性别、工资)作为值
        #             2.2类似: '1001' {'name':xxx, 'sex':xxx, 'salary':xxx}
        #           3.提示添加成功
        print("添加员工===>")
        employ_id = input("请输入要添加员工的工号:")
        # 先找到所有的字典的键,再将这些键转化为列表的形式
        all_id = list(employee_dict.keys())
        if employ_id in all_id:
            print("员工工号已存在,不能重复添加!!!")
            return
        employ_name = input("请输入要添加员工的姓名:")
        employ_sex = input("请输入要添加员工的性别:")
        employ_salary = input("请输入要添加员工的工资:")
        # 把这些信息保存在一个字典里
        info_dict = {"name": employ_name, "sex": employ_sex, "salary": employ_salary}
        # 再放在大字典里,怎么放,根据id号相对应
        employee_dict[employ_id] = info_dict
        print("工号为 %s 的员工信息添加成功!!!" % employ_id)
        # 这里只是起到打印观察的作用,可注释掉下面这一行
        # 说明仅仅还是放在字典里面,毕竟输出是字典形式,怎么显示那是第四个功能该做的事
        # print(employee_dict)   # {'1001': {'name': '张三', 'sex': '男', 'salary': '5000'}}
    
    
    def update_info():
        """修改员工信息"""
        print("修改员工===>")
        # 实现步骤 1.拿到要修改员工的工号
        #          1.1如果工号不存在,则提示错误信息,终止函数执行,返回
        #          1.2如果存在,则修改对应的信息
        #               1.2.1 显示原来的信息再修改
        #          2.因为并不是所有的信息都需要修改,万一不需要修改的怎么办?如何简化使用操作?
        #             2.1判断修改时输入的是不是惟恐,为空就保持不变,不为空则说明修改了
        employ_id = input("请输入你要修改的员工的工号")
        all_id = list(employee_dict.keys())
        if employ_id not in all_id:
            print("该员工工号不存在,不能进行修改!!!")
            return
        new_name = input("姓名是:%s   修改后的姓名:" % employee_dict[employ_id]['name'])
        new_sex = input("性别是:%s   修改后的性别:" % employee_dict[employ_id]['sex'])
        new_salary = input("工资是:%s   修改后的工资:" % employee_dict[employ_id]['salary'])
        # 因为并不是所有的信息都需要修改,万一不需要修改的怎么办?如何简化使用操作?
        if new_name != "":
            employee_dict[employ_id]['name'] = new_name
        if new_sex != "":
            employee_dict[employ_id]['sex'] = new_sex
        if new_salary != "":
            employee_dict[employ_id]['salary'] = new_salary
        print("工号为 %s 的员工信息修改成功!!!" % employ_id)
    
    
    def delete_info():
        """删除员工信息"""
        print("删除员工===>")
        # 实现步骤:1.输入要删除员工的工号
        #           2.判断工号是否存在,不存在就给出提示信息,终止函数执行
        #           3.如果存在,则直接删除
        employ_id = input("请输入你要删除的员工的工号")
        all_id = list(employee_dict.keys())
        print('删除员工信息将不可恢复,确定要删除吗?')
        user_confirm = input('是否确认该操作 Y/N?')
        if employ_id not in all_id:
            print("该员工工号不存在,不能进行删除!!!")
            return
        if user_confirm == 'y' or user_confirm == 'yes':
            del employee_dict[employ_id]
            print("工号为 %s 的员工信息删除成功!!!" % employ_id)
        else:
            print('操作已经取消')
       
    
    def show_all_info():
        """显示员工信息"""
        print("显示所有员工信息===>")
        # 实现步骤:1.判断员工是否存在,如果不存在则提示返回
        #                   1.1怎么判断?当列表长度为0时,则说明不存在
        #           2.如果存在,就打印表头
        #           3.打印分割线
        #           4.遍历员工信息,依次输出字典信息
    
        # 判断员工是否存在
        if len(list(employee_dict.keys())) == 0:
        # if os.path.getsize(file1) == 0:
            print("当前没有任何的员工信息,请先选择操作 1,添加员工!!!")
            # return 下方的代码不会被执行
            return
        # 打印表头
        print("-" * 40)
        for people in ["工号", "姓名", "性别", "工资"]:
            print(people, end="\t\t")
        # 打印分割线
            # 增加换行
        print("")
        print("-" * 40)
        # 遍历员工信息,依次输出字典信息
        # 这个items方法是把字典转换成列表的方法,须特别注意
        for jober in employee_dict.items():
            print("%s\t\t%s\t\t%s\t\t%s" % (jober[0],
                                            jober[1]['name'],
                                            jober[1]['sex'],
                                            jober[1]['salary']))
            # print(jober)
    
        
        # for line in employee_dict:
        #     # if search_input in line:
        #     print(line,'\t\t')
        print("-" * 40)
    
    
    展开全文
  • 1、《员工管理必读12篇》 员工管理总是充满各式各样的挑战:如何真正激励员工?如何管理问题员工?如何构建效能超出其组合本身的团队?诸如此类问题的答案可能难以捉摸、常令人备感困惑——即使对于经验丰富的...
  • 员工管理系统基于狂神老师的SpringBoot教程:https://www.bilibili.com/video/BV1PE411i7CV?p=20 项目所需的资源搜索公众号BaretH 后台回复静态资源获取静态资源: 后台回复员工管理系统获取最终完整项目资源: ...
  • Django员工管理系统

    千次阅读 2019-09-11 19:14:02
    Django员工管理系统(ems) 需求分析: 1.实现管理员的注册、登陆页面 注册:用户名、真实名字、密码、性别、验证码 登陆:用户名、密码、(记住我7天) 2.实现查看、增加、删除、修改员工信息页面 查看:分页...
  • 基于Java的员工管理系统

    万次阅读 多人点赞 2019-07-18 14:52:40
    基于Java的员工管理系统 简介 使用ArrayList对完成一个员工管理系统,员工信息包含:员工工号,姓名,职位,年龄,月薪,所在部门;要求功能入下: a)实现从控制台输入员工信息并存储 b)通过员工工号查询指定员工信息...
  • SpringBoot简易员工管理系统

    千次阅读 2020-03-03 22:40:45
    SpringBoot简易员工管理系统 这里是一个简单的员工管理系统,实现了员工的增删改查,项目的完整讲解视频 请跳转至狂神老师的课程查看https://www.bilibili.com/video/av75233634?p=20 一、准备工作——pojo层 首先...
  • 本系统是基于C/S C#语言的企业员工管理系统,系统主要功能模块包括 员工管理模块、部门管理模块、公告管理模块、加班管理模块、请假管理模块和薪资管理模块。 在实现基本的员工信息管理和维护等功能的基础上,...
  • java 员工管理系统

    千次阅读 2018-10-23 18:55:12
    员工管理系统功能菜单: ------1.查看所有------ ------2.录入信息------ ------3.查找员工------ ------4.修改信息------ ------5.员工离职------ ------6.谢谢使用------ Employee.java package com.employee; ...
  • Python版,员工管理系统

    千次阅读 2019-12-21 12:00:32
    员工管理系统 python有多强大呢,以前用java写一个至少500行代码,现在用python直接不到100行代码就实现了全部功能 """ 需求:员工管理系统 功能: 1.添加员工信息 2.删除员工信息 3.修改员工信息 4.查看单个员工...
  • 1. 人事管理也可以是员工管理系统(比较完善) 2. 管理员工的信息,管理员工的工资,员工的状态,奖惩 3. 添加管理部门信息 4. 用户添加修改,修改密码 三、主要页面展示 1.登陆页面 2.用户添加页面 3.用户管理页面 4....
  • QT实现员工管理系统

    2020-09-12 15:07:01
    最近学习需要做一个员工管理系统的项目。 项目要求是客户端服务器之间进行通信,注册与查询员工信息,因为学过QT就想着用QT来实现以下客户端,C来实现服务器。 下面是我的客户端界面 登陆界面 注册界面 主界面 ...
  • 员工管理系统Android版

    千次阅读 热门讨论 2017-07-21 21:21:53
    Android版的员工管理系统。包括服务器,客户端,及数据库。
  • 最近学SSH项目整合的员工管理系统,大部分功能都可以实现,但是在员工管理界面对 员工进行编辑保存后,员工的所属部门一栏就会变成空,新增员工的话,那一栏的属性 也会为空,按一下保存就会报Error setting ...
  • 基于[Python]的员工管理系统

    千次阅读 多人点赞 2019-11-30 16:39:46
    基于[Python]的员工管理系统 ———————————————————————————————— 简介 使用python语言来完成一个员工管理系统,员工信息包含:员工工号,姓名, 年龄,性别,职位,工资;要求功能入...
  • java实现员工管理系统

    千次阅读 2019-08-04 15:52:06
    员工管理系统 本篇为自己学Java时写的,有错误的话敬请谅解。 未加入数据库,为用数组实现,也未加入界面显示,用的均为控制台操作! 第一部分,该部分为储存人员信息的类。 package xinxi; /** * 入职人信息 */ ...
  • 本人小白,现在大四要求做毕业设计,我想做一个单机版的员工管理系统,实现的功能就是存储员工档案,考勤记录, 计算工资,打印报表。现在不知道数据库该怎么选择,因为都不懂,然后编程软件,编译语言也没选好,很...
  • 通过hibernate实现员工管理系统的CRUP。对应关系部门管理(Department):一个部门对应多个员工(one-to-many)员工管理(Employee):多个员工对应一个部门(many-to-one)实体类:Departmentpublic class ...
  • 企业员工管理系统 一:项目介绍

    千次阅读 2020-01-06 17:00:52
    需求: 1、整个系统采用命令行的方式 ...2、员工管理 2.1、增加员工 2.2、查询员工 列举出所有的员工 查询出指定ID的员工 查询出指定部门的员工 根据名称查询出指定的员工 2.3、修改员工 2...
  • 本次实战项目主要是借鉴b站上的视频资源【狂神说...Spring Boot项目实践-员工管理系统(一)·准备工作 Spring Boot项目实践-员工管理系统(二)·首页实现 Spring Boot项目实践-员工管理系统(三)·国际化 Spri...
  • 本次实战项目主要是借鉴b站上的视频资源【狂神说...Spring Boot项目实践-员工管理系统(一)·准备工作 Spring Boot项目实践-员工管理系统(二)·首页实现 Spring Boot项目实践-员工管理系统(三)·国际化 Spri...
  • Java项目:员工管理系统 搭建环境: ​ Idea 集成开发工具 技术点: 数组 面向对象 继承 多态 接口 异常的处理 项目结构: 代码示例: public class TeaView { private NameLIstService lIstService = new ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,008
精华内容 14,403
关键字:

员工管理