公司员工通讯录管理系统报告
通讯录管理系统设计报告
通讯录管理系统设计报告一、引言通讯录在日常生活中扮演着重要的角色,用来存储和管理各种联系人信息,方便人们随时找到需要联系的人或组织。
随着移动互联网的普及,通讯录的管理变得更加便捷和高效。
为了提高通讯录的管理效率,我们设计并开发了一款通讯录管理系统。
二、系统概述通讯录管理系统是一个基于Web的应用程序,用户可以通过浏览器访问系统,进行通讯录的管理操作。
系统主要包括以下功能:•用户登录与注册:用户可以注册新账号,并通过账号密码登录系统。
•联系人管理:用户可以添加、编辑、删除联系人信息,包括姓名、电话号码、邮箱等。
•分组管理:用户可以创建分组并将联系人归类到不同分组。
•搜索功能:用户可以通过关键词搜索联系人信息。
•导出和导入功能:用户可以将联系人信息导出为Excel表格,并可以通过Excel文件导入联系人到系统中。
三、系统架构通讯录管理系统采用了前后端分离的架构,前端使用Vue.js框架开发,提供友好的用户界面;后端使用Node.js和Express框架搭建RESTful API,负责数据的存储和管理。
系统中的数据存储在MySQL数据库中,用户的密码使用bcrypt进行加密存储,确保用户信息的安全性。
同时,系统对用户权限进行了细致管理,保障用户在系统中的数据安全。
四、系统界面系统的界面设计简洁直观,用户可以轻松进行操作。
主要包括登录页面、通讯录首页、联系人管理页面、分组管理页面等。
用户登录页面:[登录页面截图]通讯录首页:[通讯录首页截图]联系人管理页面:[联系人管理页面截图]五、系统特色•简洁高效:系统操作简单直观,提供了快速的联系人管理功能。
•个性化定制:用户可以根据自己的需求创建分组,快速查找联系人。
•数据安全:采用了加密技术和权限管理,确保用户数据的安全性。
•导入导出功能:支持Excel文件导入导出,方便用户管理大批量联系人信息。
六、未来展望通讯录管理系统将继续进行优化和迭代,引入更多智能化功能,如联系人推荐、消息提醒等,提升用户体验。
Java通讯录管理系统设计报告
Java通讯录管理系统设计报告1. 引言随着社会发展和信息技术的进步,通讯录在人们的日常生活和工作中变得越来越重要。
Java通讯录管理系统是一种用于管理个人和组织联系信息的软件系统。
本篇文档将详细介绍Java通讯录管理系统的设计和实现。
2. 功能需求Java通讯录管理系统具有以下功能需求: - 添加联系人:用户可以添加新的联系人,包括姓名、电话号码、电子邮件等相关信息。
- 删除联系人:用户可以删除已存在的联系人。
- 编辑联系人:用户可以修改已存在联系人的信息。
- 搜索联系人:用户可以根据姓名、电话号码或其他关键字搜索联系人。
- 显示联系人列表:用户可以查看所有联系人的列表,并按照姓名或其他方式进行排序。
- 导入/导出联系人:用户可以将联系人导入/导出到文件中,以实现数据的备份和共享。
3. 系统设计3.1 技术栈选择Java通讯录管理系统采用Java语言进行开发,使用Java的面向对象特性来实现系统的各个功能模块。
系统使用MySQL数据库来存储联系人的信息。
3.2 系统架构Java通讯录管理系统采用三层架构,分为表示层、业务逻辑层和数据访问层。
•表示层:负责与用户的交互,包括图形界面和用户输入输出的处理。
•业务逻辑层:负责处理用户的请求,对联系人信息进行增加、删除、编辑、搜索等操作,并调用数据访问层进行数据的读写。
•数据访问层:负责与数据库交互,进行联系人信息的读写操作。
3.3 类设计在Java通讯录管理系统中,主要涉及以下类的设计: - Contact类:表示一个联系人,包含姓名、电话号码、电子邮件等属性。
- ContactDAO接口:定义对联系人的增删改查等操作。
- ContactDAOImpl类:实现ContactDAO接口,负责与数据库进行交互。
- ContactService类:负责处理业务逻辑,调用ContactDAOImpl 类进行联系人信息的操作。
- ContactConsole类:表示层的用户界面,处理用户输入输出和展示联系人信息。
数据结构课程设计通讯录管理系统报告
数据结构课程设计通讯录管理系统报告前言通讯录管理系统是一种常见的应用程序,用于帮助用户有效地组织和管理他们的联系人信息。
本报告旨在介绍和分析一个基于数据结构设计的通讯录管理系统,其中实现了基本的通讯录功能,并且通过合适的数据结构和算法进行优化。
功能需求通讯录管理系统需要实现以下基本功能: - 添加联系人信息 - 查找联系人信息 - 删除联系人信息 - 更新联系人信息 - 显示所有联系人信息数据结构选择为了实现通讯录管理系统的功能,我们选择使用链表作为数据结构。
链表是一种简单而灵活的数据结构,可以动态地添加或删除节点,非常适合存储联系人信息这种动态的数据。
在这里,我们采用双向链表,使得查找、插入和删除操作更加高效。
算法设计添加联系人信息添加联系人信息时,我们需要遍历链表找到合适的位置插入新节点,这里的算法复杂度为O(n),其中n表示链表的长度。
查找联系人信息查找联系人信息时,我们需要遍历链表查找目标节点,这里的算法复杂度为O(n)。
删除联系人信息删除联系人信息时,我们同样需要遍历链表找到目标节点并删除,其算法复杂度为O(n)。
更新联系人信息更新联系人信息时,我们首先需要查找到目标节点,然后进行更新操作,其算法复杂度也为O(n)。
系统优化为了提高系统的性能,我们可以通过以下几种方式进行优化: - 使用哈希表索引联系人信息,减少查找联系人的时间复杂度; - 引入缓存机制,减少频繁的IO 操作。
总结通过本报告的介绍和分析,我们了解了一个基于数据结构设计的通讯录管理系统的实现原理和优化方法。
在实际应用中,针对具体需求和场景,我们可以进一步优化系统性能,提升用户体验。
通讯录管理系统作为一种简单而实用的应用程序,将在日常生活中发挥重要作用。
通讯录管理系统
通讯录管理系统一、引言随着科技的不断发展,电子设备的运用愈发广泛,通讯工具也从最早的电话、传真、邮件演变到如今的移动电话、微信等APP软件。
同时,人们通讯的宽带和速度也得到了很大的进步,这里提到的速度指的是通讯的速度和传输的速度。
在日常生活中,人们需要不断联系和交流,而一个完善的通讯管理系统能够辅助人们做到这一点。
二、通讯录管理系统的概述通讯录管理系统是一个集成化的系统,它包括通讯录的建立、搜索、编辑、删除等基本功能,同时也有通讯录的导入、导出、备份、恢复等高级功能。
对于个人而言,通讯录管理系统是一个非常有用的工具,可以让我们对日常生活中的联系人实现精细化管理。
对于企业和组织而言,通讯录管理系统则是一个不可或缺的管理工具,它可以让企业和组织对内外联系人进行统一管理,提高工作效率,实现快速响应与灵活沟通。
三、通讯录管理系统的需求分析1. 用户管理需求通讯录管理系统的用户一般包括个人、企业和组织等,他们的管理需求有所不同,例如个人通讯录管理系统需要支持用户自主导入、导出、备份、恢复,企业通讯录管理系统需要支持管理员进行用户管理和权限控制等。
2. 数据整合需求通讯录管理系统需要支持将人员信息从不同的来源整合到一个集中的库中,这可以通过数据导入、数据同步、数据抓取等方式实现。
3. 可扩展性和可定制化需求通讯录管理系统应该具有良好的可扩展性和可定制化的能力,以满足企业和组织不同的需求。
4. 安全性需求通讯录管理系统需要具有安全性,防止数据泄漏和恶意攻击等安全问题,同时还要实现数据备份、数据恢复等功能。
五、通讯录管理系统的设计1. 系统结构设计通讯录管理系统应该是一个分层结构的系统,分为表示层、业务层、数据访问层和数据存储层四个层级。
其中,表示层为用户提供了用户界面,业务层处理用户请求,数据访问层为业务层提供数据访问接口,数据存储层则负责数据存储管理。
2. 系统模块设计通讯录管理系统主要包括三个模块:用户管理模块、通讯录管理模块和数据备份恢复模块。
人员信息系统录入工作总结
人员信息系统录入工作总结
人员信息系统是企业管理中非常重要的一部分,它记录了公司所有员工的基本
信息、薪资、考勤等各种数据。
而人员信息系统录入工作则是保证系统数据准确性和完整性的关键环节。
在过去的一段时间里,我有幸参与了公司人员信息系统录入工作,通过这次工作,我对人员信息系统的重要性有了更深刻的认识,并且积累了一些经验和体会。
首先,人员信息系统录入工作需要高度的责任心和细心。
在录入员工信息的过
程中,一点点的疏忽都可能导致数据的错误,进而影响到公司的正常运转。
因此,我在工作中始终保持高度的警惕,对每一条数据都进行了仔细核对和确认,确保录入的信息准确无误。
其次,人员信息系统录入工作需要高效的工作态度。
随着公司规模的扩大,员
工信息的录入工作量也在不断增加,因此需要我们在有限的时间内完成大量的数据录入工作。
在这个过程中,我学会了合理安排工作时间,提高工作效率,确保按时完成任务。
最后,人员信息系统录入工作需要良好的沟通和协作能力。
在录入数据的过程中,我发现有些员工的信息并不完整,需要进一步与相关部门进行沟通,获取完整的信息。
因此,良好的沟通和协作能力成为了我工作中必不可少的一部分,通过与其他部门的配合,我成功地获取了所需的信息,保证了系统数据的完整性。
通过这段时间的人员信息系统录入工作,我不仅对人员信息系统有了更深入的
了解,同时也提高了自己的责任心、工作效率和沟通能力。
我相信,在今后的工作中,这些经验和体会都会对我产生积极的影响,让我能够更好地完成各项工作任务。
同时,我也会继续不断学习,提升自己的专业能力,为公司的发展贡献自己的力量。
通讯录管理系统毕业设计(两篇)2024
引言概述:通讯录管理系统是一种用于管理联系人信息的软件,它能够为用户提供便捷的联系人管理和信息查询功能。
本文将继续介绍通讯录管理系统的设计和实现,重点关注系统的用户界面设计、数据存储与管理、通讯录的分类与搜索功能、用户权限管理以及通讯录系统的扩展与升级。
正文内容:1.用户界面设计1.1设计原则:用户友好性、易用性和美观性原则1.2主界面设计:主界面布局、功能模块展示、导航设计1.3交互设计:交互方式、操作流程、反馈机制1.4响应式设计:适配多种设备和屏幕分辨率2.数据存储与管理2.1数据库设计:确定实体和属性、建立表结构、定义关系2.2数据库连接:连接数据库、读写操作、异常处理2.3数据备份与恢复:数据备份策略、备份文件管理、数据恢复机制2.4数据安全性:权限控制、数据加密、数据完整性3.通讯录的分类与搜索功能3.1通讯录分类:基本分类和用户自定义分类3.2联系人添加与编辑:输入验证、字段定义、数据关联3.3联系人查询:关键字查询、条件过滤、多条件组合查询3.4联系人导入导出:支持多种数据格式、数据匹配与转换、导入导出策略3.5通讯录分享与同步:用户权限设置、跨设备同步、冲突解决4.用户权限管理4.1用户注册与登录:用户信息获取、身份验证、登录状态管理4.2用户权限分配:管理员与普通用户权限区分、权限控制细化4.3用户信息管理:个人信息修改、密码重置、账号注销4.4安全性保护:登录失败锁定、密码加密、会话管理5.通讯录系统的扩展与升级5.1模块化设计:可插拔式功能模块、模块间接口定义5.2扩展性设计:支持插件开发、动态加载与卸载5.3性能优化:数据索引优化、查询优化、缓存机制5.4系统升级:版本管理、更新提示、升级策略总结:通过上述的详细阐述,我们可以看到,通讯录管理系统涵盖了用户界面设计、数据存储与管理、通讯录的分类与搜索功能、用户权限管理以及通讯录系统的扩展与升级等多个关键领域。
在该系统的设计过程中,我们需要重点关注用户友好性、数据安全性和系统的可扩展性。
员工管理系统测试报告
员工管理系统测试报告项目开发人员:XXXXXX年 X 月 XX 日目录一、简介 01. 编写目的 02. 背景 03. 定义 04. 系统简介 05. 参考资料 (1)二、测试用例 (2)三、测试结果及发现 (3)1. 测试1(系统登陆模块) (3)2. 测试2(员工管理模块) (3)3. 测试3(部门管理模块) (3)4. 测试4(职位管理模块) (3)5. 测试5(用户管理模块) (4)6. 测试6(员工签到模块) (4)7. 测试7(员工请假模块) (4)8. 测试8(公告管理模块) (5)9. 测试9(留言管理模块) (5)10. 测试10(公司通讯录模块) (6)11. 测试11(回收站模块) (6)四、对软件功能的结论 (7)1. 功能1(登录模块) (7)2. 功能2(公司基本信息管理模块) (7)3. 功能3(签到、签退模块) (7)4. 功能4(请假模块) (7)5. 功能5(留言模块) (8)6. 功能6(公告模块) (8)7. 功能7(回收站) (8)8. 功能8(通讯录模块) (9)五、分析摘要 (10)1. 能力 (10)2. 缺陷和限制 (10)3. 建议 (10)4. 评价 (10)一、简介1. 编写目的测试分析报告是在设计实现的基础上,对测试的结果以及测试的数据等加以记录和分析总结。
它也是测试过程中的一个重要环节,同时,它也是对软件性能的一个总结的分析和认可及不足之处的说明。
因此,测试分析报告对于今后对软件的功能的加强,不足之处的弥补等都起着十分重要的提纲作用。
另外,它还有利于今后软件开发者阅读原程序,根据测试提供的数据和结果,分析源代码,掌握各函数的功能和局限性。
从而缩短软件开发者的再开发时间和所耗费的精力,资金。
预期参考人员包括用户、测试人员、开发人员、项目管理者、其他质量管理人员。
为了系统的正常运行,及时发现可能存在的错误,本小组计划测试各个模块,每个模块设计多个用例。
员工通讯录实训体会与总结
员工通讯录实训体会与总结
员工通讯录实训是一项非常有意义的学习经历。
通过参与这个实训,我获得了许多宝贵的体会和总结。
首先,我深刻体会到了信息管理的重要性。
在员工通讯录实训中,我需要收集、整理和更新员工的联系信息,这让我意识到一个高效的信息管理系统对于企业的正常运转是至关重要的。
它可以帮助企业快速找到所需的人员,提高沟通效率,促进团队合作。
其次,我学会了如何有效地组织和管理数据。
在处理大量员工信息时,我学会了使用数据库和电子表格等工具来进行数据的分类、筛选和检索。
这些技能不仅在本次实训中非常有用,而且在未来的工作和学习中也将具有很大的帮助。
此外,我还提高了自己的沟通和协作能力。
在与团队成员合作完成员工通讯录的过程中,我学会了如何有效地与他人沟通、协调工作进度以及解决问题。
这些经验对于我未来的职业发展将非常有益。
最后,我总结出了一些在员工通讯录实训中需要注意的事项。
首先,要确保数据的准确性和完整性,及时更新员工信息。
其次,要合理规划工作流程,提高工作效率。
此外,要注重团队合作,充分发挥每个人的优势,共同完成任务。
总的来说,员工通讯录实训让我收获颇丰。
通过这次实训,我不仅学到了实用的技能和知识,还培养了自己的团队合作精神和解决问题的能力。
我相信这些经验和体会将对我未来的学习和工作产生积极的影响。
通讯录管理系统--开题报告
毕业设计开题报告表(由学生填写)开题报告内容:(调研资料的准备,设计目的、功能要求、思路与预期成果;任务完成的阶段内容及时间安排;完成设计所具备的条件因素;参考文献等。
)1.调研资料的准备首先是购买有关ASP和ACCESS开发动态网站的书籍,并对开发技术进行学习研究。
需要对用户如何使用通讯录等需要做一些了解。
2.设计目的如今人们的联系越来越普遍,接触的人也越来越多,用人脑去记忆所有人的联系方式是不太现实的,所以我们需要建立一个通讯录管理系统,如果只运行在一台机器上那就失去了它的意义,我们总不能每天都带着自己的电脑到处乱跑吧?我们可以建立一个运行于WEB上的系统,随时随地为用户提供查询服务,同时,需要保护用户的隐私,也要根据用户的需求有一定的开放性,可以实现数据共享。
总之,本系统的设计目的是为用户管理通信信息带来方便。
3.功能要求4.思路与预期成果我的思路是用ASP开发一个WEB系统,系统通过操作数据库,可以添加通讯录信息,修改通讯录信息,删除通讯录信息,查询通讯录信息,新建系统用户,修改系统用户,删除系统用户,对用户联系方式的自定义字段进行设置等,如果是超级管理员admin登录,可以看到并使用所有的功能,也可以看到所有的联系人资料,如果是普通用户登录系统则只能使用通讯录查询模块和通讯录管理模块,并且只能看到本人私有的联系人资料和所有用户共享的联系人资料。
我的预期成果就是建立一个WEB系统,使用户可以方便的使用这个系统管理自己的联系人资料。
5.任务完成的阶段内容及时间安排4月10日至4月18日系统需求搜集,整理及需求分析4月19日至5月8日系统设计5月9日至5月18日编码及测试,系统集成测试。
5月19日至5月20日发布系统5月21日至5月26日撰写论文6.完成设计所具备的条件因素完成设计所具备的条件因素包括:需要一台计算机并有开发环境、运行环境等软件环境,比如操作系统,IIS及IE,支持ACCESS数据库等;同时我们需要具备分析设计系统的能力,具备ASP编程能力,ACCESS数据库设计与应用能力,软件文档、论文等文档写作能力;也要熟悉通讯录系统的基本的功能需求和界面易用性的设计。
通讯录管理系统需求分析
通讯录管理系统需求分析一、引言通讯录管理系统是一种用于管理个人或组织之间联系人信息的应用程序。
它通常包括存储联系人的基本信息,如姓名、电话号码、电子邮件地址等,并提供快速查找和编辑功能。
随着数字化时代的发展,通讯录管理系统在日常工作和生活中扮演着越来越重要的角色。
本文将对通讯录管理系统的需求进行详细分析。
二、功能需求1.添加联系人:用户应该能够通过系统向通讯录中添加新的联系人信息,包括姓名、电话号码、电子邮件地址等。
2.编辑联系人:用户可以对已有联系人信息进行编辑,修改或更新联系人的信息。
3.删除联系人:用户可以从通讯录中删除不再需要的联系人信息。
4.查找联系人:系统应该提供快速查找联系人的功能,用户可以通过姓名或其他关键词来查找特定联系人。
5.联系人分组:用户可以将联系人进行分组管理,方便对不同类别的联系人进行管理和查找。
6.导入导出联系人:系统应该支持从外部导入联系人信息,以及导出联系人信息到外部文件。
7.备份和恢复:系统应该具备备份和恢复通讯录数据的功能,以防止数据丢失或损坏。
三、性能需求1.安全性:通讯录管理系统应该保证用户联系人信息的隐私和安全性,防止未经授权的访问。
2.稳定性:系统应该具备良好的稳定性和可靠性,在高并发、大数据量的情况下也能够正常运行。
3.响应速度:系统应该具备较快的响应速度,用户在操作时能够获得即时的反馈。
4.易用性:系统应该具备良好的用户界面和友好的操作流程,方便用户快速上手并进行操作。
四、扩展性需求1.跨平台:通讯录管理系统应该具备跨平台的特性,支持在不同设备和操作系统上进行使用。
2.第三方应用集成:系统应该支持与第三方应用程序进行集成,例如与电子邮件客户端、日历应用等的数据互通。
3.自定义设置:用户可以根据自己的需求对系统进行定制设置,包括界面风格、提醒设置等。
五、总结通过对通讯录管理系统的功能、性能和扩展性需求进行分析,可以为系统的设计和开发提供指导。
在设计通讯录管理系统时,需要充分考虑用户的实际需求,保证系统的稳定性和易用性,满足用户对通讯录管理的各种需求。
通讯录管理系统课程设计报告Java
通讯录管理系统课程设计报告Java1. 简介通讯录管理系统是一种方便用户存储和管理联系人信息的工具。
本课程设计将使用Java语言开发一个简单的通讯录管理系统,实现对联系人信息的增删改查功能。
通过本项目的实践,学习者将掌握Java编程语言的基础知识和面向对象编程的技巧。
2. 功能需求通讯录管理系统应包含以下功能: - 添加联系人信息:用户可以输入联系人的姓名、电话号码、邮箱等信息添加到通讯录中。
- 显示所有联系人信息:系统能够展示所有已保存在通讯录中的联系人信息。
- 查找联系人信息:用户可以通过姓名或电话号码查找特定联系人的信息。
- 修改联系人信息:用户可以对已保存的联系人信息进行修改。
- 删除联系人信息:用户可以删除通讯录中的联系人信息。
实现以上功能需要设计相应的数据结构和算法,以及编写用户交互界面。
3. 技术实现3.1 数据结构在Java中,可以使用ArrayList或HashMap等数据结构来存储联系人信息。
ArrayList适用于有序的联系人列表,而HashMap适用于根据键值快速查找联系人信息。
3.2 用户交互界面用户交互界面可以通过Java的Swing或JavaFX等GUI工具包来实现。
设计一个简洁明了的界面,包含菜单栏、输入框、按钮等组件,以方便用户操作。
3.3 功能实现•添加联系人信息:用户输入信息后,将联系人信息添加到数据结构中。
•显示所有联系人信息:遍历数据结构,将所有联系人信息展示在界面上。
•查找联系人信息:根据用户输入的查询条件,在数据结构中查找对应的联系人信息。
•修改联系人信息:根据用户输入的修改信息,更新数据结构中相应的联系人信息。
•删除联系人信息:根据用户输入的删除条件,从数据结构中移除对应的联系人信息。
4. 总结通讯录管理系统是一个简单实用的应用程序,能够帮助用户有效管理联系人信息。
通过本课程设计,学习者将学习如何使用Java语言开发基本的应用程序,掌握面向对象编程的基本原理和技巧。
通讯录管理系统
通讯录管理系统随着社会的快速发展和信息化的进步,人们的沟通方式也在不断改变,电子通讯逐渐成为人们日常生活中不可或缺的一部分。
为了方便管理和利用联系人信息,通讯录管理系统应运而生。
通讯录管理系统是一种基于计算机技术的软件应用,其主要功能是帮助用户高效地存储、管理和检索联系人信息。
本文将就通讯录管理系统的构架、特点及应用领域进行详细介绍。
一、通讯录管理系统的构架通讯录管理系统由数据库、用户界面和核心功能模块组成。
1. 数据库:通讯录管理系统的核心是数据库,它用于存储用户的联系人信息。
数据库需要具备高效的存储和查询功能,并能保证数据的安全性。
同时,数据库还需要支持多用户的并发操作,以满足多人同时访问通讯录的需求。
2. 用户界面:用户界面是用户与通讯录管理系统进行交互的窗口,它需要提供简洁明了的操作界面,方便用户进行联系人的添加、编辑、删除和查询等操作。
用户界面还应该支持多种操作方式,如鼠标、键盘和触摸屏等,以适应不同用户的需求。
3. 核心功能模块:核心功能模块是通讯录管理系统的灵魂,它包括联系人信息的增删改查、联系人信息的导入导出、快速搜索、分组管理等功能。
核心功能模块还可以根据用户需求进行扩展,如通话记录、短信管理等附加功能。
二、通讯录管理系统的特点通讯录管理系统具有以下几个特点:1. 高效性:通讯录管理系统能够快速存储和查询大量的联系人信息,用户可以通过姓名、电话号码、公司名称等关键字进行快速搜索,并迅速找到所需的联系人信息。
2. 可扩展性:通讯录管理系统支持用户自定义字段,用户可以按照自己的需求添加额外的联系人信息,如生日、地址、邮箱等,以便更好地管理和利用联系人信息。
3. 多终端支持:通讯录管理系统可以在不同的终端设备上运行,如个人电脑、平板电脑、智能手机等。
用户可以随时随地访问和管理联系人信息,极大地提高了工作效率。
4. 数据安全性:通讯录管理系统通过多级权限控制和数据加密技术保证用户联系人信息的安全性。
单位员工通讯录管理系统
单位员工通讯录管理系统一、概述单位员工通讯录管理系统是一种用于管理企业内部员工通讯录的软件系统,它能够帮助企业快速便捷地查询和管理员工的相关信息,提高企业内部通讯效率和管理水平。
该系统可以适用于各种规模的企业,包括国有企业、民营企业、中小型企业等。
二、系统功能介绍1.员工信息管理:该功能可以实现对企业内部员工的基本信息管理,包括姓名、性别、职务、职称、工作地点、联系电话等等。
2.通讯录查询:员工通讯录管理系统可以通过员工名字或者职务等别查询员工联系方式,以达到快速通讯的目的。
3.通讯录更新:通讯录中员工的联系方式是会随时变化的,系统可以实现对通讯录的不断更新,确保通讯录信息的及时有效。
4.权限管理:系统可以根据用户权限分为普通员工和管理员两种权限。
管理员可以对系统的功能进行修改、添加或删除,而普通员工只能浏览通讯录信息。
5.备份与恢复:系统可以对数据进行备份和恢复,确保数据的安全性。
三、系统优势1.提高工作效率:在以往的传统管理模式下,企业要查询员工的联系方式需要耗费大量的时间,使用员工通讯录管理系统,可以快速、准确地查找到员工的信息,大大提高了工作效率。
2.数据安全:企业内部通讯录中包含员工的个人资料,必须要保护好这些数据不受到恶意攻击,员工通讯录管理系统拥有完善的权限管理机制和数据备份机制,提高了数据的安全性。
3.资源整合:使用员工通讯录管理系统,可以把所有员工的联系方式整合到一个统一的平台中,降低了管理成本,提高了资源利用效率。
四、系统部署方案1.运行环境要求:该系统需要在Windows操作系统上运行,对于Linux和MacOS操作系统需要借用专业软件进行兼容。
2.软件安装:企业管理员需要安装并配置企业自己的员工通讯录管理系统,包括数据库的配置、Web服务器的配置和系统的参数设置等等。
3.数据导入:管理员需要将企业内部所有员工的联系方式导入到员工通讯录管理系统中,以便员工快速查找使用。
五、系统维护方案1.软件更新:员工通讯录管理系统需要不断进行软件升级以保持软件的稳定性和完善性,企业可以定期检查软件发布的更新版本。
针对单位手机管理情况汇报
针对单位手机管理情况汇报尊敬的领导:
根据我单位手机管理情况的调查和分析,我向您汇报如下:
首先,我单位手机管理存在一些问题。
在调查中发现,部分员工存在私自使用单位手机的情况,甚至出现了超出通话和流量限制的情况。
这不仅增加了单位的通讯费用,也影响了员工的工作效率。
另外,部分员工对手机使用规定不够重视,导致手机资料泄露的风险增加。
这些问题严重影响了单位手机的管理和使用效果。
针对以上问题,我们已经采取了一些措施。
首先,我们加强了对手机使用规定的宣传和教育,提醒员工严格遵守规定,杜绝私自使用手机的情况。
其次,我们加强了对手机使用情况的监督和检查,确保员工按规定使用手机,避免超额使用和资料泄露的情况发生。
此外,我们还对手机通讯费用进行了详细的核算和分析,发现了一些异常情况,并及时进行了处理和调整。
在今后的工作中,我们将进一步加强对单位手机管理的监督和检查,建立健全的手机使用制度,加强对员工的培训和教育,提高员工对手机管理规定的认识和重视程度。
同时,我们将加强对手机使用情况的数据分析和监控,及时发现和解决问题,确保单位手机的合理使用和管理。
总之,单位手机管理是一项重要的工作,关系到单位的通讯费用和信息安全。
我们将进一步加强对手机管理工作的重视,不断完善手机管理制度,确保单位手机的合理使用和管理,为单位的发展和工作提供更好的保障。
谢谢!。
员工信息更新情况汇报
员工信息更新情况汇报尊敬的领导:根据公司要求,我对员工信息的更新情况进行了汇报。
在过去的一个季度里,我们积极推进员工信息的收集和更新工作,取得了一定的成绩。
具体情况如下:首先,我们加强了员工信息的收集工作。
通过定期发送问卷调查和个别沟通,我们及时了解到员工的最新信息,包括联系方式、家庭情况、健康状况等。
同时,我们也建立了员工信息更新的渠道,让员工可以随时更新自己的信息,保持信息的及时性和准确性。
其次,我们对员工信息进行了分类整理和核对。
针对不同类型的员工,我们建立了不同的信息档案,确保每位员工的信息都得到了妥善管理。
在整理的过程中,我们也发现了一些信息不完整或者过时的情况,及时进行了更新和补充,提高了信息的完整性和准确性。
另外,我们还加强了员工信息的保密工作。
在信息收集和整理的过程中,我们严格遵守了公司的保密制度,确保员工个人信息的安全性。
同时,我们也加强了对员工信息的访问权限管理,只有经过授权的人员才能查阅和修改员工信息,保障了信息的安全和可靠性。
最后,我们还建立了员工信息更新的长效机制。
通过不断改进和完善信息管理系统,我们确保了员工信息的持续更新和管理。
同时,我们也加强了对员工信息更新工作的宣传和培训,让每位员工都意识到信息更新的重要性,形成了全员参与的良好氛围。
总的来说,我们在员工信息更新方面取得了一定的成绩,但也发现了一些问题和不足。
下一步,我们将进一步加强员工信息的管理和更新工作,完善信息管理制度,提高信息的可靠性和安全性,确保员工信息的及时更新和有效管理。
谨此汇报,如有不妥之处,还请领导批评指正。
感谢领导对员工信息更新工作的关心和支持!此致。
敬礼。
C#通讯录管理系统总结汇报
C#通讯录管理系统总结汇报课题名称:C#通讯录管理系统专业:软件技术班级: 1 1 1 1姓名:祝中兴学号: 2011828136目录1系统分析 (3)1.1需求分析 (3)1.2储存过程分析 (3)2系统的实现 (5)2.1登陆界面的实现 (5)2.2主窗体的实现 (6)2.3新增联系人实现 (12)2.4查找联系人实现 (17)3结论 (20)1系统分析1.1需求分析本系统将实现多用户对各自通讯录的管理功能,包括:添加联系人、修改联系人、删除联系人、查找联系人。
为了体现多用户的特性,还必须包含一个用户管理子系统,作用是对用户的信息进行管理。
具体功能模块如图1-1所示图1-1功能模块1.2储存过程分析查找联系人模块使用储存过程来搜索数据,查找联系人的储存过程如下//(教材P250)ALTER PROCEDURE [查找联系人](@name varchar(50),@phone varchar(50),@user varchar(50))ASif len(@user)=0 return 1if len(@name)=0 and len(@phone)=0beginselect 姓名,组别,工作单位,联系电话,电子邮箱? from [联系人]returnendif len(@name)<>0 and len(@phone)=0beginset @name='%'+@name+'%'select姓名,组别,工作单位,联系电话,电子邮箱? from [联系人] where 姓名 like @namereturnendif len(@name)=0 and len(@phone)<>0beginselect姓名,组别,工作单位,联系电话,电子邮箱? from [联系人] where 联系电话 like @phonereturnendif len(@name)=0 and len(@phone)<>0beginselect姓名,组别,工作单位,联系电话,电子邮箱? from [联系人] where 联系电话 like @phone and 姓名 like @namereturnendGo2系统的实现2.1登陆界面的实现登录窗体如图2-1图2-1处理流程图如图2-2示不合法接受到用户输入不匹配合法匹配2-2录窗体流程图实现代码如下private void btnCannel_Click(object sender, EventArgs e){Application.Exit();}private void btnOk_Click(object sender, EventArgs e){string username, password;等待用户输入验证数据合法验证身份等待用户输入username = txtUserName.Text.Trim();password = txtPassWord.Text.Trim();if (username == ""){MessageBox.Show("用户名不能为空!");return;}if (password == ""){MessageBox.Show("密码不能为空!");return;}SqlConnection conn = new SqlConnection();conn.ConnectionString = "server=.;DataBase=PhoneBook;UID=sa;PWD=;";conn.Open();SqlCommand cm = new SqlCommand();cm.Connection = conn;mandText = "select count(*) from 用户 where 用户名='" + username + "'and 密码='" + password + "' ";int recordC = Convert.ToInt32(cm.ExecuteScalar());if (recordC == 1){this.Hide();frmMain f = new frmMain();f.tsslUserName.Text = txtUserName.Text.Trim();f.Show();}else{MessageBox.Show("用户不合法!");}conn.Close();}2.2主窗体的实现主窗体设计如图2-3图2-3主窗体处理流程图如图2-4示等待用户命令添加命令 修改命令 删除命令 查找命令 视图命令2.4窗体流程图实现代码如下加载联系人 分组信息分组数量加载当前分组 的联系人信息 加载添加联系人窗体 加载修改联系人窗体 删除联系人 加载查找联系人窗体 修改视图模式public partial class frmMain : Form{public frmMain(){InitializeComponent();}private string strConn =System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];//主窗体加载事件private void MainForm_Load(object sender, EventArgs e){LoadGroup();if (trvGroup.Nodes.Count > 0){trvGroup.SelectedNode = trvGroup.Nodes[0];LoadList();}else{lvContact.Clear();}}//加载分组信息到TreeViewprivate void LoadGroup(){try{trvGroup.Nodes.Clear();SqlConnection conn = new SqlConnection(strConn);SqlCommand cmd = new SqlCommand();cmd.Connection = conn;mandText = "select distinct 组别 from 联系人 where 用户名='" + tsslUserName.Text + "'";conn.Open();SqlDataReader sdr = cmd.ExecuteReader();while (sdr.Read()){trvGroup.Nodes.Add(sdr[0].ToString());}sdr.Close();conn.Close();}catch}//加载当前分类的联系人信息private void LoadList(){if (trvGroup.Nodes.Count == 0){lvContact.Clear();return;}if (trvGroup.SelectedNode.Index >= 0){string strGroup = trvGroup.SelectedNode.Text;try{lvContact.Clear();lvContact.Columns.Add("姓名", 100);lvContact.Columns.Add("工作单位", 150);lvContact.Columns.Add("联系电话", 100);lvContact.Columns.Add("电子邮箱", 150);SqlConnection conn = new SqlConnection(strConn);SqlCommand cmd = new SqlCommand();cmd.Connection = conn;mandText = "select 编号,姓名,工作单位,联系电话,电子邮箱 from 联系人 where 组别='" + strGroup + "' and 用户名='" + tsslUserName.Text + "'";conn.Open();SqlDataReader sdr = cmd.ExecuteReader();int count = 0;while (sdr.Read()){ListViewItem lvi = new ListViewItem();lvi.Text = sdr["姓名"].ToString();lvi.SubItems.Add(sdr["工作单位"].ToString());lvi.SubItems.Add(sdr["联系电话"].ToString());lvi.SubItems.Add(sdr["电子邮箱"].ToString());lvi.Tag = sdr["编号"];lvi.ImageIndex = 0;lvContact.Items.Add(lvi);count++;}tsslCount.Text = "共计" + count.ToString() + "个联系人";sdr.Close();conn.Close();catch{ }}}//添加方法在主窗体中的实现private void Add(){frmAdd f = new frmAdd();if (f.ShowDialog(this) == DialogResult.OK){LoadGroup();if (trvGroup.Nodes.Count > 0){trvGroup.SelectedNode = trvGroup.Nodes[0];LoadList();}else{lvContact.Clear();}}}//编辑方法在主窗体的实现private void Edit(){if (lvContact.SelectedItems.Count == 1){int id = Convert.ToInt32(lvContact.SelectedItems[0].Tag);frmEdit f = new frmEdit(id);if (f.ShowDialog(this) == DialogResult.OK){LoadGroup();if (trvGroup.Nodes.Count > 0){trvGroup.SelectedNode = trvGroup.Nodes[0];LoadList();}else{lvContact.Clear();}}}}//删除方法在住窗体中的实现private void Delete(){if (lvContact.SelectedItems.Count < 1){return;}if (MessageBox.Show("是否要删除选中的联系人?", "删除确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) {string strWhere = " where 编号 in (";foreach (ListViewItem lvi in lvContact.SelectedItems) {strWhere += lvi.Tag.ToString() + ",";}strWhere = strWhere.Substring(0, strWhere.Length - 1); strWhere += ")";try{SqlConnection conn = new SqlConnection(strConn);SqlCommand cmd = new SqlCommand();cmd.Connection = conn;mandText = "delete from 联系人 " + strWhere; conn.Open();cmd.ExecuteNonQuery();conn.Close();LoadGroup();if (trvGroup.Nodes.Count > 0){trvGroup.SelectedNode = trvGroup.Nodes[0];LoadList();}else{lvContact.Clear();}}catch { }}}//搜索方法在主窗体中的实现private void Search(){frmSearch f = new frmSearch(tsslUserName.Text);f.ShowDialog();}2.3新增联系人实现新增联系人设计如图2-5图2-5新增联系人窗体流程图如图2-6NYNY添加命令图2-6实现代码如下public partial class frmAdd : Form{获取配置信息联系人数量<MAX分组数量<MAX加载分组信息等待用户命令添加联系人禁用添加联系人功能禁用添加分组功能public frmAdd(){InitializeComponent();}private string strUserName = "";private int groupCount = 0;private int contentCount = 0;private string txtFilePath = "";private string strConn =System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];private void frmAdd_Load(object sender, EventArgs e){//获取用户名strUserName = ((frmMain)(this.Owner)).tsslUserName.Text;try{SqlConnection conn = new SqlConnection(strConn);SqlCommand cmd = new SqlCommand();cmd.Connection = conn;//获取配置信息mandText = "select * from 用户where 用户名='"+strUserName+"'";conn.Open();SqlDataReader sdr = cmd.ExecuteReader();if (sdr.Read()){groupCount = Convert.ToInt32(sdr["组别数量最大值"]);contentCount = Convert.ToInt32(sdr["联系人数量最大值"]);}sdr.Close();//获取联系人数mandText = "select count(*) from 联系人where 用户名='" + strUserName + "'";int count = Convert.ToInt32(cmd.ExecuteScalar());if (count >= contentCount){MessageBox.Show("联系人的个数已经达到上限!\r\n如需继续添加联系人,请联系管理员。
集团通讯情况汇报
集团通讯情况汇报
尊敬的领导:
我谨向各位领导汇报一下最近集团通讯情况的相关情况。
首先,针对集团内部通讯工具的使用情况,我们进行了一次全面的调查和分析。
通过调查发现,大部分员工对集团内部通讯工具的使用频率较高,能够及时地接收到公司发布的通知和信息。
而且,通过内部通讯工具,员工之间的沟通和协作也更加便捷和高效。
但是也有少部分员工反映内部通讯工具存在一定的使用难度,需要进一步的培训和指导。
针对这一情况,我们将组织相关部门进行培训,提高员工对内部通讯工具的使用熟练度,以提高工作效率。
其次,针对集团外部通讯渠道的情况,我们进行了一次调查和分析。
通过调查
发现,集团的外部通讯渠道主要包括邮件、电话和会议等形式。
邮件是最常用的外部通讯方式,能够及时地与客户和合作伙伴进行沟通和联系。
而电话和会议则更适合于一些重要的商务洽谈和决策。
在外部通讯方面,我们已经建立了一支高效的团队,能够及时地响应客户和合作伙伴的需求,保持了良好的合作关系。
最后,我们还对集团通讯安全问题进行了一次全面的检查和整改。
通过检查发现,集团通讯安全工作存在一些隐患和漏洞,需要加强整改。
我们已经制定了一系列的安全措施和规范,加强了对通讯设备和网络的安全防护,提高了通讯数据的保密性和完整性,确保了通讯系统的稳定和安全运行。
总的来说,集团通讯情况总体良好,但也存在一些问题和隐患,需要我们进一
步加强管理和改进。
我们将继续密切关注通讯情况的发展变化,不断优化通讯体系,确保集团通讯工作的高效运行。
谢谢各位领导的关注和支持!
此致。
敬礼。
(签名)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
公司员工通讯录管理系统一. 设计目的1、学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程;2、了解指针和链表的概念,掌握指针的定义和使用指针变量的方法以及链表的正确用法,灵活使用链表来储存员工通讯信息;3、通过本课程设计,强化上机动手能力,在理论和实践的基础上进一步巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法;4、学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力;5、为后续的毕业设计打下坚实基础。
二. 设计内容设计一个公司员工通讯录管理系统,程序应具有以下功能:1、管理员和员工登录系统时,分别需要各自的密码。
2、通过键盘录入系统所需的数据,即员工的通讯录信息,并保存数据到指定的文件。
3、查询功能,通过键盘输入员工的所在部门、姓名、手机号码或固定电话,输出员工的通讯信息。
4、插入功能,增添员工的通讯录信息。
5、修改功能,修改错误信息。
6、排序功能,将信息按照姓名升序或降序排列。
7、输出打印功能,将所有员工的通讯信息打印出来。
8、统计功能,统计通讯录中各部门的人数及总人数。
9、修改密码,管理员和员工分别可以修改各自的密码。
10、以文件的形式将录入的信息进行储存,并能从中读取信息。
三.概要设计 1.功能模块图;2.各个模块的功能描述。
(1)、创建信息模块:信息内容包括姓名、手机号码、固定电话、生日、QQ 、E-mail 地址、隶属部门和家庭住址,输入完毕保存到文件。
(2)、查询信息模块:包括个人信息查询和部门信息查询,其中个人信息查询可通过姓名、手机号码或固定电话来查找,部门信息查询可通过选择部门来查找。
(3)、插入信息模块:输入新添加员工通讯信息,并保存到文件 (4)、删除信息模块:通过姓名、手机号码或固定电话删除员工信息,并更新文件信息。
(5)、修改信息模块:包括修改个人全部信息和单项信息,并更新文件信息。
(6)、信息排序模块:按照姓名升序或降序排列,并更新文件信息。
(7)、输出信息模块:从文件中读取信息,并打印出来。
(8)、统计信息模块:统计通讯录中各部门员工人数和总人数。
(9)、修改密码模块:管理员和员工都可自行修改自己的秘码。
(10)、注销账号模块:员工可注销自己的登录账号。
四.详细设计1、功能函数的调用关系图:2、主要功能函数的数据流程图:输入模块:查询模块:插入模块: 删除模块:修改模块:五.运行结果登录界面:管理员界面:查找菜单:员工通讯信息输出:按姓名生序排列结果:统计信息输出:员工登录界面:六.调试情况,设计技巧及体会1.改进方案本次课题能够对通讯录的功能进行详细分析,在设计及过程中充分考虑到管理员与普通用户的权限问题。
在本次设计过程中,最明显的问题就是对文件的使用不够熟练,时常因为文件的读写问题出现错误,这是需要改进的地方。
还有就是本项目使用的是字符界面而不是图形界面,而且没有使用数据库来进行数据存储。
在以后的时间里,我会尝试着将本项目进行改进,使用图形界面并使用数据库来存储数据,这样会使整个通讯录管理系统的应用更加方便,对于程序的实用性也需要进一步改进。
2.体会在本次科研训练中,通过学习,创建模块,到组织成为一个系统,让我学到了很多东西,学会将所学到的C语言知识在一个系统中充分应用,及时纠正自己在学习过程中的错误认识,使C语言应用有了很大进步。
这次科研训练让我有机会能将课本的知识通过实践化为自己所有,在设计的过程中,虽然遇到不少问题,但是经过分析和不断地调试后最终运行成功,也大大的提高了自己独立分析问题的能力,让我明白将知识运用到实践是多么地重要,同时也让我深刻地体会到软件设计的复杂和精妙。
可想而知,作为一个软件工程师是很不容易的。
学习总是从易到难,回想当初刚学C语言时的举步维艰,到今天自己能独立做完一个小型应用程序而沾沾自喜,这种体会让我对今后的学习产生了很大的动力。
在今后的学习生活中,也会不断地遇到类似问题,不过相信通过这次训练,能让自己充实不少,能够冷静思考问题。
在今后的学习中,一定要积累经验,脚踏实地,不断地向他人学习,充实自己。
七.参考文献王曙燕《C语言程序设计》 2008年5月科学出版社谭浩强《C程序设计》(第二版)清华大学出版社八.附录:源代码(电子版)#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#define A " ---------------------------------------------------------------------------------------------------------------------\ n"#define B " 姓名手机号码固定电话生日QQ E-mail 部门家庭住址\n"#define C " %-11s %-12s %-12s %-4d-%-2d-%-2d %-12s %-21s%-11s%s\n",p->name,p->cel l,p->tele,p->birth[0],p->birth[1],p->birth[2],p->QQ,p->email,p->branch,p->address#define PF "test.txt"#define POINT1 "\t →重新输入请按1 ,退出登录请按0:"#define POINT2 "\n\n\t 输入有误,按任意键继续..."#define POINT3 "\t →请输入您所需要的服务:" typedef struct member//定义通讯录成员信息类型{char name[21];//姓名,有效长度20位char cell[12];//手机号码,有效长度11位char tele[12];//固定电话,有效长度11位int birth[3];//出生日期,xxxx-xx-xxchar QQ[12];//QQ号码,有效长度11位char email[31];//E-mail地址,有效长度20位char branch[11];//隶属部门,有效长度10位char address[51];//家庭住址,有效长度50位struct member *next;//下一个节点的地址}MEMBER,*Linklist;typedef struct applicant{char name[21];//登录名,有效长度20位char code[7];//登录密码,有效长度6位struct applicant *next;//下一个节点的地址}APPL Y,*Link;//下面是函数声明语句void setting();//登录权限void account();//用户登陆界面void apply();//申请账户Link readaccount();//读取用户账户信息void accountfile(Link);//保存用户账户信息void rechange();//修改管理员密码int gointo();//账户登录void hostmenu();//管理员菜单菜单void usermenu();//用户菜单Linklist create();//创建通讯录成员信息链表void createfile(Linklist);//创建通讯录成员信息文件Linklist readfile();//读取文件void in(MEMBER *);//输入void insert(Linklist);//添加成员信息void search(Linklist);//查询信息void beanch();//部门信息void delet(Linklist);//删除通讯录成员信息输出void print(Linklist);//输出通讯录成员信息void sort(Linklist);//按照姓名排序void sort1(MEMBER *,MEMBER *);//排序过程void correct(Linklist);//修改信息void chart(Linklist);//通讯录信息统计void change();//用户修改密码void cancel();//用户注销账号void sure(Linklist);//确认操作//下面是各功能函void sure(Linklist L){int key=0;while(1){system("cls");printf("\n\n");printf("\n\n\t┳┴┵┶┷┸┹┺┻┼┽┾\n\n");printf("\t 1 →确认操作\n");printf("\t 2 →取消操作\n");printf("\n\n\t┳┴┵┶┷┸┹┺┻┼┽┾\n\n");printf("\n\n\t →请输入你的选择:");scanf("%d",&key);switch(key){case 1:{createfile(L);printf("\n\t操作成功!!!\n\n\t按任意键继续!\n");getch();}break;case 2:return;default:{printf(POINT2);getch();}}if(key>=1&&key<=2)break;}}void cancel()//用户注销账号{Link L;int key=0,t=0;char s[21];APPL Y *p,*r;FILE *fp;L=readaccount();r=L;printf("\t →请输入用户名:");while(1)//判断用户是否存在{flushall();gets(s);for(p=L->next;p;p=p->next){if(strcmp(s,p->name)==0)break;r=p;}if(!p)printf("\t →您输入的用户名不存在,请重新输入:");if(p)break;}r->next=p->next;//删除用户信息while(1)//确认修改{system("cls");printf("\n\n");printf("\t┳┴┵┶┷┸┹┺┻\n\n\n");printf("\t 1 →确认注销\n");printf("\t 2 →取消注销\n");printf("\n\t┳┴┵┶┷┸┹┺┻\n\n\n");printf("\t →请输入你的选择:");scanf("%d",&key);switch(key){case 1:{fp=fopen("account.txt","wt");for(p=L->next;p;p=p->next)fprintf(fp,"%s %s\n",p->name,p->code);fclose(fp);printf("\n");}break;case 2:return;default:{printf(POINT2);getch();}}if(key>=1&&key<=2)break;}printf("\t注销完毕!按任意键继续!");getch();}void change()//用户修改密码{Link L;int key=0,t=0,i;char s[21];APPL Y *p,*r;FILE *fp;L=readaccount();r=p=L->next;printf("\t →请输入您的用户名:");while(1){p=L->next;flushall();gets(s);for(;p;p=p->next)if(strcmp(s,p->name)==0)break;if(!p)printf("\t →您输入的用户名不存在,请重新输入:");if(p)break;}printf("\t →请输入新密码(6位):\n");for(i=0;i<6;i++){p->code[i]=getch();printf("☆");}p->code[6]='\0';while(1)//确认修改{system("cls");printf("\n\n");printf("\t┳┴┵┶┷┸┹┺┻\n\n\n");printf("\t 1 →确认修改\n");printf("\t 2 →取消修改\n");printf("\n\t┳┴┵┶┷┸┹┺┻\n\n\n");printf("\t →请输入你的选择:");scanf("%d",&key);switch(key){case 1:{fp=fopen("account.txt","wt");for(;r;r=r->next)fprintf(fp,"%s %s\n",r->name,r->code);fclose(fp);printf("\n");}break;case 2:return;default:{printf(POINT2);getch();}}if(key>=1&&key<=2)break;}printf("\t修改完毕!按任意键继续!");getch();}void chart(Linklist L)//通讯录信息统计{intcount1=0,count2=0,count3=0,count4=0,count5=0,count6=0,count7=0,count8=0,count9=0;MEMBER *p;if(L==NULL)return;for(p=L->next;p;p=p->next){count1++;if(strcmp(p->branch,"董事会")==0)count2++;else if(strcmp(p->branch,"行政部")==0)count3++;else if(strcmp(p->branch,"销售部")==0)count4++;else if(strcmp(p->branch,"财务部")==0)count5++;else if(strcmp(p->branch,"审计部")==0)count6++;else if(strcmp(p->branch,"企业策划部")==0)count7++;else if(strcmp(p->branch,"人力资源部")==0)count8++;elsecount9++;}system("cls");printf("\n\n\n\t\t\t通讯录信息统计表\n");printf("\t\t ----------------------------------- \n");printf("\t\t│部门│人数│\n");printf("\t\t ----------------------------------- \n");printf("\t\t│董事会│%4d │\n",count2);printf("\t\t ----------------------------------- \n");printf("\t\t│行政部│%4d │\n",count3);printf("\t\t ----------------------------------- \n");printf("\t\t│销售部│%4d │\n",count4);printf("\t\t ----------------------------------- \n");printf("\t\t│财务部│%4d │\n",count5);printf("\t\t ----------------------------------- \n");printf("\t\t│审计部│%4d │\n",count6);printf("\t\t ----------------------------------- \n");printf("\t\t│企业策划部│%4d │\n",count7);printf("\t\t ----------------------------------- \n");printf("\t\t│人力资源部│%4d │\n",count8);printf("\t\t ----------------------------------- \n");printf("\t\t│其他部门│%4d │\n",count9);printf("\t\t ----------------------------------- \n");printf("\t\t│总计│%4d │\n",count1);printf("\t\t ----------------------------------- \n");printf("\n\n\t 按任意键继续!");getch();}void correct(Linklist L)//修改信息{int key=0,t=0;char s[21];MEMBER *p;p=L->next;while(1){system("cls");printf("\n\n\n\t┳┴┵┶┷┸┹┺┻┼┽┾┿\n\n\n");printf("\t 1 →修改个人全部信息\n");printf("\t 2 →修改个人单项信息\n");printf("\t 0 →返回\n");printf("\n\n\t┳┴┵┶┷┸┹┺┻┼┽┾┿\n\n");printf("\n\t →请输入您的选择:");scanf("%d",&key);switch(key){case 1:{printf("\t →请输入您要修改成员的姓名或手机号码或固定电话:");flushall();gets(s);for(;p;p=p->next)if(strcmp(s,p->name)==0||strcmp(s,p->cell)==0||strcmp(s,p->tele)==0) break;if(!p){printf("没有找到您要修改成员的信息!!!按任意键继续!");getch();return;}printf("\t →请输入修改信息:\n");in(p);};break;case 2:{printf(" →请输入您要修改成员的姓名或手机号码或固定电话:");flushall();gets(s);for(;p;p=p->next)if(strcmp(s,p->name)==0||strcmp(s,p->cell)==0||strcmp(s,p->tele)==0) break;if(!p){printf("没有找到您要修改成员的信息!!!按任意键继续!");getch();return;}system("cls");printf("\n\n\n\t┳┴┵┶┷┸┹┺┻┼┽┾┿\n\n\n");printf("\t 1 →修改姓名\n");printf("\t 2 →修改手机号码\n");printf("\t 3 →修改固定电话\n");printf("\n\n\t┳┴┵┶┷┸┹┺┻┼┽┾┿\n\n");printf("\t →请输入您要修改的项目(1--3):");scanf("%d",&t);switch(t){case 1:{printf("\t →请输入姓名:");flushall();gets(p->name);}break;case 2:{printf("\t →请输入手机号码:");flushall();gets(p->cell);}break;case 3:{printf("\t →请输入固定电话:");flushall();gets(p->tele);}break;}}break;case 0:return;default:{printf("\n\n输入有误,按任意键继续...\n\n");getch();system("cls");}break;}if(key>=0&&key<=2)break;}sure(L);}void sort1(MEMBER *p,MEMBER *q)//排序过程{MEMBER *r,t;t=*p;*p=*q;*q=t;r=p->next;p->next=q->next;q->next=r;}void sort(Linklist L)//排序{MEMBER *p,*q;int key=0;while(1){system("cls");printf("\n\n\t┳┴┵┶┷┸┹┺┻┼┽┾┼┽┾\n\n");printf("\t 1 →按照姓名升序排列\n");printf("\t 2 →按照姓名降序排列\n");printf("\t 0 →返回\n");printf("\n\t┳┴┵┶┷┸┹┺┻┼┽┾┼┽┾\n\n");printf("\n\t →请输入排序方式(0--3):");scanf("%d,",&key);if(key==1||key==2)break;else if(key==0)return;else{printf(POINT2);getch();}}for(p=L->next;p;p=p->next)for(q=p->next;q;q=q->next)if(strcmp(p->name,q->name)>0&&key==1)sort1(p,q);else if(strcmp(p->name,q->name)<0&&key==2)sort1(p,q);createfile(L);printf("\n\t排序完毕,按任意键继续!!!");getch();}void print(Linklist L)//输出通讯录成员信息{MEMBER *p;if(L==NULL)return;else{system("cls");printf("\n");printf(" 公司员工通讯录信息表\n\n");printf(A);printf(B);printf(A);for(p=L->next;p;p=p->next){printf(C);printf(A);}printf("\n\t 按任意键继续!\n");getch();}}void delet(Linklist L)//删除通讯录成员信息{int key=0;MEMBER *p,*r;char s[21];if(L==NULL)return;r=L;p=L->next;while(1){system("cls");printf("\n\n\t┳┴┵┶┷┸┹┺┻┼┽┾\n\n");printf("\t 1 →按照姓名删除\n");printf("\t 2 →按照手机号码删除\n");printf("\t 3 →按照固定电话删除\n");printf("\t 0 →返回\n");printf("\n\t┳┴┵┶┷┸┹┺┻┼┽┾\n\n");printf("\n\t →请输入删除方式(0--3):");scanf("%d,",&key);switch(key){case 0:return;case 1:{printf("\n\t →请输入要删除的姓名:");flushall();gets(s);for(;p;p=p->next){if(strcmp(s,p->name)==0)break;r=p;}}break;case 2:{printf("\n\t →请输入要删除的手机号码:");flushall();gets(s);for(;p;p=p->next){if(strcmp(s,p->cell)==0)break;r=p;}}break;case 3:{printf("\n\t →请输入要查删除的固定电话:");flushall();gets(s);for(;p;p=p->next){if(strcmp(s,p->tele)==0)break;r=p;}}break;default:{printf(POINT2);getch();}break;}if(key>=0&&key<=3)break;}if(p){r->next=p->next;free(p);}if(!p){printf("\t 没有找到要删除对象!!!\n");printf("\t 按任意键继续!\n");getch();return;}sure(L);}void branch(){printf("\t\t\t 1 →董事会");printf("\t 5 →审计部\n");printf("\t\t\t 2 →行政部");printf("\t 6 →企业策划部\n");printf("\t\t\t 3 →销售部");printf("\t 7 →人力资源部\n");printf("\t\t\t 4 →财务部");printf("\t 8 →其他部门\n");}void branchsearch(Linklist L,int key){MEMBER *p;system("cls");printf("\n\n\n");printf(A);printf(B);for(p=L->next;p;p=p->next){if(strcmp(p->branch,"董事会")==0&&key==1){printf(A);printf(C);}else if(strcmp(p->branch,"行政部")==0&&key==2){printf(A);printf(C);}else if(strcmp(p->branch,"销售部")==0&&key==3){printf(A);printf(C);}else if(strcmp(p->branch,"财务部")==0&&key==4){printf(A);printf(C);}else if(strcmp(p->branch,"审计部")==0&&key==5){printf(A);printf(C);}else if(strcmp(p->branch,"企业策划部")==0&&key==6){printf(A);printf(C);}else if(strcmp(p->branch,"人力资源部")==0&&key==7){printf(A);printf(C);}else if(strcmp(p->branch,"其他部门")==0&&key==8){printf(A);printf(C);};}printf(A);}void search(Linklist L)//查询信息{int key1=0,key2=0;MEMBER *p;char s[21];if(L==NULL)return;p=L->next;while(1){system("cls");printf("\n\n\n\t\t 查找\n");printf("\t┳┴┵┶┷┸┹┺┻┼┽┾\n\n");printf("\t 1 →按照部门查找\n");printf("\t 2 →按照姓名查找\n");printf("\t 3 →按照手机号码查找\n");printf("\t 4 →按照固定电话查找\n");printf("\t 0 →返回\n");printf("\n\t┳┴┵┶┷┸┹┺┻┼┽┾\n\n\n");printf(POINT3);scanf("%d,",&key1);switch(key1){case 0:return;case 1:{branch();printf("\t →请输入您要查找的部门:");while(1){scanf("%d",&key2);if(key2>=1&&key2<=8)break;elseprintf("\t →输入错误,请重新选择:");}branchsearch(L,key2);printf("\t 按任意键继续!\n");getch();return;}case 2:{printf("\t →请输入要查找的姓名:");flushall();gets(s);for(;p;p=p->next)if(strcmp(s,p->name)==0)break;}break;case 3:{printf("\t →请输入要查找的手机号码:");flushall();gets(s);for(;p;p=p->next)if(strcmp(s,p->cell)==0)break;}break;case 4:{printf("\t →请输入要查找的固定电话:");flushall();gets(s);for(;p;p=p->next)if(strcmp(s,p->tele)==0)break;}break;default:{printf(POINT2);getch();}break;}if(key1>=0&&key1<=4)break;}if(p){printf(A);printf(B);printf(A);printf(C);printf(A);printf("\n\n\t按任意键继续!\n");getch();}if(!p){printf("\t 没有找到要查询对象!!!\n");printf("\t 按任意键继续!\n");getch();return;}}void insert(Linklist L)//添加成员信息{MEMBER *p;if(L==NULL)return;p=(MEMBER *)malloc(sizeof(MEMBER));p->next=L->next;L->next=p;system("cls");in(p);sure(L);}void in(MEMBER *p)//输入{int key=0;printf("\n\n\n\t →请输入姓名:");flushall();gets(p->name);printf("\t →请输入手机号码:");flushall();gets(p->cell);printf("\t →请输入固定电话:");flushall();gets(p->tele);printf("\t →请输入生日(格式:xxxx xx xx):");scanf("%d%d%d",&p->birth[0],&p->birth[1],&p->birth[2]);printf("\t →请输入QQ号码:");flushall();gets(p->QQ);printf("\t →请输入E-mail :");flushall();gets(p->email);printf("\t →隶属部门:\n\n");branch();printf("\t →请输入选择:");while(1){scanf("%d",&key);if(key>=1&&key<=8)break;elseprintf("\t →输入错误,请重新选择:");}if(key==1)strcpy(p->branch,"董事会");else if(key==2)strcpy(p->branch,"行政部");else if(key==3)strcpy(p->branch,"销售部");else if(key==4)strcpy(p->branch,"财务部");else if(key==5)strcpy(p->branch,"审计部");else if(key==6)strcpy(p->branch,"企业策划部");else if(key==7)strcpy(p->branch,"人力资源部");elsestrcpy(p->branch,"其他部门");printf("\t →请输入家庭住址:");flushall();gets(p->address);}Linklist readfile()//读取文件{Linklist L;MEMBER *p,*r;FILE *fp;fp=fopen(PF,"rt");if(fp==NULL){printf("读取文件出错,请先创建通讯录成员信息!\n\n");printf("按任意键继续...");getch();return NULL;}L=(Linklist)malloc(sizeof(MEMBER));L->next=NULL;r=L;while(!feof(fp)){p=(MEMBER *)malloc(sizeof(MEMBER));fscanf(fp,"%s %s %s %d %d %d %s %s %s %s\n",p->name,p->cell,p->tele,&p->birth[0],&p ->birth[1],&p->birth[2],p->QQ,p->email,p->branch,p->address);r->next=p;r=p;}r->next=NULL;fclose(fp);return L;}void createfile(Linklist L)//创建通讯录成员信息文件{MEMBER *p;FILE *fp;fp=fopen(PF,"wt");for(p=L->next;p;p=p->next)fprintf(fp,"%s %s %s %d %d %d %s %s %s %s\n",p->name,p->cell,p->tele,p->birth[0],p->bi rth[1],p->birth[2],p->QQ,p->email,p->branch,p->address);fclose(fp);}Linklist create()//创建通讯录成员信息{Linklist L;MEMBER *p,*r;int count=1,key=0;L=(Linklist)malloc(sizeof(MEMBER));L->next=NULL;r=L;while(1){system("cls");printf("\n\n\n\t →请输入第%d个成员信息:\n\n",count++);p=(MEMBER *)malloc(sizeof(MEMBER));r->next=p;r=p;in(p);printf("\t →退出请按N/n ,按其它键继续:");flushall();if(toupper(getchar())=='N'){p->next=NULL;break;}}sure(L);return L;}void usermenu()//用户菜单{int key=0;Linklist head;while(1){system("cls");printf("\n\n →欢迎进入员工登录界面\n\n\n");printf(" 公司员工通讯录管理系统\n");printf("\t\t\t ┳┴┵┶┷┸┹┺┻┳┴┵┶┷┸\n\n");printf("\t\t\t\t1 →查询\n\n");printf("\t\t\t\t2 →排序功能\n\n");printf("\t\t\t\t3 →输出通讯录\n\n");printf("\t\t\t\t4 →修改密码\n\n");printf("\t\t\t\t5 →注销账户\n\n");printf("\t\t\t\t0 →退出系统\n\n");printf("\n\t\t\t ┳┴┵┶┷┸┹┺┻┳┴┵┶┷┸\n\n\n");printf(POINT3);scanf("%d",&key);switch(key){case 1:{head=readfile();search(head);}break;case 2:{head=readfile();sort(head);}break;case 3:{head=readfile();print(head);}break;case 4:change();break;case 5:cancel();break;case 0:exit(1);default:{printf(POINT2);getch();}break;}}}void hostmenu()//主菜单{int key;Linklist head;while(1){system("cls");printf("\n\n →欢迎进入管理员界面\n\n\n");printf(" 公司员工通讯录管理系统\n");printf("\n\t ┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅┸┹┺┻┼┽┾┿╀╁╂╃╄╅\n\n\n");printf("\t\t 1 →创建通讯录");printf("\t 6 →修改信息\n\n");printf("\t\t 2 →查询功能");printf("\t 7 →输出通讯录\n\n");printf("\t\t 3 →插入功能");printf("\t 8 →通讯录信息统计\n\n");printf("\t\t 4 →删除功能");printf("\t 9 →修改管理员密码\n\n");printf("\t\t 5 →排序功能");printf("\t 0 →退出系统\n");printf("\n\t ┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅┸┹┺┻┼┽┾┿╀╁╂╃╄╅\n\n\n");printf(POINT3);scanf("%d",&key);printf("\n\n");switch(key){case 1:head=create();break;case 2:{head=readfile();search(head);}break;case 3:{head=readfile();insert(head);}break;case 4:{head=readfile();delet(head);}break;case 5:{head=readfile();sort(head);}break;case 6:{head=readfile();correct(head);}break;case 7:{head=readfile();print(head);}break;case 8:{head=readfile();chart(head);}break;case 9:rechange();break;case 0:exit(1);default:{printf(POINT2);getch();}break;}}}void rechange()//修改管理员密码{int key=0,i;FILE *fp;char hostpass[7];printf("\t →请输入新密码(6位):");for(i=0;i<6;i++){hostpass[i]=getch();printf("☆");}hostpass[6]='\0';getch();printf("\n\n");while(1)//确认修改{system("cls");printf("\n\n");printf("\t┳┴┵┶┷┸┹┺┻\n\n\n");printf("\t 1 →确认修改\n");printf("\t 2 →取消修改\n");printf("\n\t┳┴┵┶┷┸┹┺┻\n\n\n");printf("\t →请输入你的选择:");scanf("%d",&key);switch(key){case 1:{fp=fopen("hostpass.txt","wt");fprintf(fp,"%s",hostpass);fclose(fp);}break;case 2:return;default:{printf(POINT2);getch();}}if(key>=1&&key<=2)break;}printf("\t修改完毕!按任意键继续!");getch();}void accountfile(APPL Y *r)//存储账户信息{FILE *fp;fp=fopen("account.txt","at");fprintf(fp,"%s %s\n",r->name,r->code);fclose(fp);}Link readaccount()//读取账户信息{Link l;APPL Y *p,*r;FILE *fp;fp=fopen("account.txt","rt");if(fp==NULL){printf("\t\t →请申请账户!\n\n");printf("\t\t 按任意键继续...\n");getch();return NULL;}l=(Link)malloc(sizeof(APPLY));l->next=NULL;r=l;while(!feof(fp)){p=(APPL Y *)malloc(sizeof(APPL Y));fscanf(fp,"%s %s\n",p->name,p->code);r->next=p;r=p;}r->next=NULL;fclose(fp);return l;}int gointo()//账户登录{Link l;APPL Y *p;char s[21];int key=0,i;l=readaccount();if(l==NULL)return 0;while(1){printf("\t →请输入账户名:");flushall();gets(s);for(p=l->next;p;p=p->next)if(strcmp(s,p->name)==0)break;if(p)break;if(!p){printf("\t 此用户名不存在!!!\n");printf(POINT1);scanf("%d",&key);if(key==0)return 0;}}while(1){printf("\t →请输入6位密码(不能有空格):");for(i=0;i<6;i++){s[i]=getch();printf("☆");}s[6]='\0';getch();printf("\n\n");if(strcmp(s,p->code)==0)return 1;elseprintf("\t 密码错误!!!\n");printf(POINT1);scanf("%d",&key);if(key==0)return 0;}}void apply()//申请账号{Link l;APPL Y *p,*q;char s[21];char a[7];int key=0,i;l=readaccount();if(l==NULL){l=(Link)malloc(sizeof(APPLY));l->next=NULL;}printf("\t →请输入账户名:");while(1){flushall();gets(s);for(p=l->next;p;p=p->next)if(strcmp(s,p->name)==0){printf("\n\n\t此用户名已被申请,请重新输入:");break;}if(!p)break;}q=(APPL Y *)malloc(sizeof(APPL Y));strcpy(q->name,s);printf("\t →请输入6位密码(不能有空格):");while(1){for(i=0;i<6;i++){q->code[i]=getch();printf("☆");}q->code[6]='\0';getch();printf("\n");printf("\t →请重新输入6位密码(不能有空格):");for(i=0;i<6;i++){a[i]=getch();printf("☆");}a[6]='\0';getch();printf("\n");if(!strcmp(a,q->code))break;elseprintf("\t →两次输入密码不一致,请重新设置6位密码(不能有空格):");}printf("\n\n");q->next=l->next;l->next=q;while(1){system("cls");printf("\n\n\t┳┴┵┶┷┸┹┺┻\n\n\n");printf("\t →确认请按1 \n");printf("\t →取消请按2 \n");printf("\n\t┳┴┵┶┷┸┹┺┻\n\n");printf("\t →请输入您的选择:");scanf("%d",&key);switch(key){case 1:accountfile(q);break;case 2:{printf("\n\t申请失败,按任意键继续...");getch();return;}default:{printf(POINT2);getch();}break;}if(key==1||key==2)break;}printf("\n\n\t申请成功!!!按任意键继续...");getch();}void account()//用户登陆界面{int key=0,in=0;while(1){system("cls");printf("\n\n\t\t\t\t┸┹┺┻┳┴┵┶┷┸┹┺┻\n\n\n");printf("\t\t\t\t 1 →申请账号\n\n");printf("\t\t\t\t 2 →登录\n\n");printf("\t\t\t\t 0 →退出\n");printf("\n\t\t\t\t┸┹┺┻┳┴┵┶┷┸┹┺┻\n\n\n");printf("\t\t\t\t →请输入您的选择(0--2):");scanf("%d",&key);switch(key){case 1:apply();break;case 2:in=gointo();break;case 0:exit(1);default:{printf(POINT2);getch();}break;}if(in)break;}}void setting()//登录权限{int key=0,i;FILE *fp;char hostpass[7],b[7];char a[7];while(1){printf("\n\t\t\t\t┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅\n\n\n");printf("\t\t\t\t\t1 →管理员登录\n\n");printf("\t\t\t\t\t2 →员工登录\n\n");printf("\t\t\t\t\t0 →退出\n\n");printf("\n\t\t\t\t┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅\n\n\n");printf("\t\t\t\t\t →请选择(0--2):");scanf("%d",&key);switch(key){case 1:{fp=fopen("hostpass.txt","rt");if(fp==NULL)//若不存在管理员,请先设置管理员通行密码{printf("\t →请先设置管理员通行6位密码(不能有空格):");while(1){for(i=0;i<6;i++){hostpass[i]=getch();printf("☆");}hostpass[6]='\0';getch();printf("\n");printf("\t →请重新输入6位密码(不能有空格):");for(i=0;i<6;i++){b[i]=getch();printf("☆");}b[6]='\0';getch();printf("\n");if(!strcmp(b,hostpass))。