管理员 Admin
属性:
id
名字(char name[50])
密码(char password[50])
2. 员工 Employee
属性:
工号(int id)
名字(char name[50])
密码 (char password[50])
年龄(int age)
性别 (enum Gender) 使用枚举
MALE、FEMALE
工资(float salary)
部门(enum Department)
DEPT_SALES、MARKETING、DEPT_AFTER_SALE
职位 (enum Title)
MANAGER、TITLE_SALES、CAPTAIN、WORKER、TITLE_AFTER_SALE
角色:
Admin employees
3. 操作日志 OperationLog
属性:
id
操作内容(char operation[100])
时间戳(char timestamp[60])
操作员用户名(char username[50])
二:功能需求
1. 管理员功能
管理员登录功能:
提供管理员登录验证。
输入用户名和密码进行验证。
查看所有员工信息功能:查看系统中所有员工的基本信息。
新增员工功能:
输入员工信息,检查工号是否重复,新增员工。
如果工号重复,返回错误信息。
删除员工功能:
根据员工工号删除员工。
如果未找到该员工,返回错误信息。
修改员工信息功能:
根据工号修改员工信息。
如果未找到该员工,返回错误信息。
2. 特殊功能
按工资降序显示员工信息:显示所有员工信息,按工资从大到小排序。
按年龄升序显示员工信息:显示所有员工信息,按年龄从小到大排序。
显示指定部门的男女员工人数:
显示指定部门内男女员工的数量。
统计每个部门的平均工资并显示:
计算并显示各部门的平均工资。
统计管理层和基层员工人数并显示:
经理和组长属于管理层,其他职位属于基层员工,统计每类人员的数量。
3. 员工功能
员工只能查看本部门员工信息。
员工只能修改自己的密码信息。
4. 异常处理
处理程序中的所有异常情况,确保系统的健壮性。
如工号重复时进行提示。
如删除、修改时员工不存在,返回相应错误信息。
进行内存分配时的错误检查。
5. 日志功能
5.1 操作日志功能
操作日志记录:
每当管理员或员工登录进行操作时,记录操作的类型、时间、操作员。
操作类型包括:新增员工、删除员工、修改员工信息等。
日志记录将写入文件 operation_log.txt。
日志格式:
时间: 2025-01-17 14:30:01, 用户: admin , 操作: 新增员工
4.2 多线程功能(线程池)
预加载数据时使用多线程支持:
使用多线程来处理不同的查询操作(如按部门查询员工)。
多线程将提高查询操作的并发能力,支持多个管理员同时操作。
记录日志操作时,使用线程
4.3 数据存储
1:可使用文件存储数据 :
每次员工数据发生变化时,将员工信息写入备份文件 employee_backup.txt。
数据将以文本格式存储。
2:可使用sqlite数据库来存储数据:
系统启动时,数据库预读数据
系统里,可以使用 顺序表 或 链表 来做缓存
一开始,把所有的数据,写到缓存中,方便查询操作
要注意:数据一致性问题,即增删改操作后,缓存里的数据和数据库中的不一致
解决方式:每当增删改操作时,更新缓存(重新加载数据到缓存中)
4.4 数据加密功能
加密管理员和员工的密码
使用简单的加密方法(如哈希算法)对管理员密码进行加密存储,防止明文密码泄露。
可以使用 openssl 等库来加密密码。
4.5 用户权限管理
权限控制:
系统根据用户角色(ADMIN 或 employees)限制不同的功能。
普通员工 (employees) 只能查看自己部门所有人的信息,不能修改或删除员工。
普通员工 (employees)只能修改自己的密码。
管理员 (ADMIN) 拥有所有权限(包括新增、删除、修改员工信息)。
权限验证:
在执行操作前,系统将根据用户角色进行权限验证,确保普通员工无法进行敏感操作。
5. 其他要求
内存管理:
系统中需要手动管理内存,避免内存泄漏。
使用 malloc、free 时要进行错误检查。
系统安全性:
加强对用户输入的验证,避免出现缓冲区溢出、SQL注入等常见安全问题。
对敏感操作进行权限验证。
如:某些功能只有管理员才能执行,员工是不能操作的
Not the question you are looking for? Ask here!
Enter question by text
Enter question by image
Unlock Smarter Learning with AskSia Super!
Join Super, our all-in-one AI solution that can greatly improve your learning efficiency.