员工管理-登陆及增删改查功能的实现

  • 问题

为员工管理系统添加注册和登陆功能,注册时需要进行用户名是否存在的判断,如果存在则出现提示。登陆成功即可对员工信息进行增删改查操作。

  • 步骤
    Step 1:创建数据库表
    新建一个登陆表,t_user表
CREATE TABLE `t_user` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  `pwd` varchar(30) NOT NULL,
  `name` varchar(50) DEFAULT NULL,
  `gender` char(2) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;

新建一个员工表t_emp

CREATE TABLE `t_emp` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `name` varchar(8) NOT NULL,
  `salary` float(8,2) DEFAULT NULL,
  `age` int(2) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

step2: 创建一个实体类entity.User类和一个实体类entity.Employee类

package entity;

public class Employee {
   
   
    private int id;
    private String name;
    private float salary;
    private int age;

    @Override
    public String toString(){
        return id+" "+name+" "+salary+" "+age;
    }
    public Employee(){
        super();
    }
    public Employee(int id,String name,float salary,int age){
        super();
        this.id=id;
        this.name=name;
        this.salary=salary;
        this.age=age;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public float getSalary() {
        return salary;
    }
    public void setSalary(float salary) {
        this.salary = salary;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

}

entity.User类

package entity;

public class User {
   
   
    private int id;
    private String username;
    private String pwd;
    private String name;
    private String gender;

    @Override
    public String toString(){
        return id+" "+username+" "+pwd+" "+name+" "+gender;
    }
    public User(){
        super();
    }
    public User(int id,String username,String pwd,String name,String gender){
        super();
        this.id=id;
        this.username=username;
        this.pwd=pwd;
        this.name=name;
        this.gender=gender;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}

step3:创建三个dao类
数据库连接类dao.DBUtil类

package dao;

import java.sql.Connection;
import java.sql.DriverManager;

public class DBUtil {
   
   
    //新建一个连接
    public static Connection getConnection()throws Exception{
        Connection conn=null;
        try {
            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //创建实例
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }

        return conn;
    }
    //关闭数据库连接
    public static void close(Connection conn)throws Exception{
        if(conn!=null){
            try {
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
                throw e;
            }
        }
    }
}

dao.EmployeeDAO类

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import javax.swing.text.html.HTMLDocument.HTMLReader.ParagraphAction;

import entity.Employee;

public class EmployeeDAO {
   
   
    //查询所有员工
    public List<Employee> findAll()throws Exception{
        List<Employee> emps=new ArrayList<Employee>();
        Connection conn=null;
        PreparedStatement stmt=null; // PreparedStatement 实例包含已编译的 SQL 语句
        ResultSet rs=null;
        try {
            conn=DBUtil.getConnection();
            stmt=conn.prepareStatement("select * from t_emp");
            rs=stmt.executeQuery();
            while(rs.next()){
                Employee emp=new Employee(
                        rs.getInt("id"),
                        rs.getString("name"),
                        rs.getFloat("salary"),
                        rs.ge
好的,我来为您设计一个简单的C语言员工工资管理系统,包含登录功能管理员和普通员工的不同权限等。以下是系统的主要功能实现思路: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_USERS 100 #define MAX_EMPLOYEES 1000 #define USERNAME_LENGTH 20 #define PASSWORD_LENGTH 20 #define NAME_LENGTH 50 #define ID_LENGTH 20 // 用户结构体 typedef struct { char username[USERNAME_LENGTH]; char password[PASSWORD_LENGTH]; int isAdmin; } User; // 员工结构体 typedef struct { char id[ID_LENGTH]; char name[NAME_LENGTH]; float salary; } Employee; // 全局变量 User users[MAX_USERS]; int userCount = 0; Employee employees[MAX_EMPLOYEES]; int employeeCount = 0; // 函数声明 void loadData(); void saveData(); void registerUser(); int login(); void adminMenu(); void employeeMenu(int index); void addEmployee(); void deleteEmployee(); void modifyEmployee(); void queryEmployee(); void modifySalary(); void querySalary(); int main() { loadData(); int choice; while (1) { printf("\n1. 登录\n2. 注册\n3. 退出\n请选择: "); scanf("%d", &choice); switch (choice) { case 1: if (login()) { if (users[userCount-1].isAdmin) adminMenu(); else employeeMenu(userCount-1); } break; case 2: registerUser(); break; case 3: saveData(); exit(0); default: printf("无效选择,请重试。\n"); } } return 0; } // 加载数据 void loadData() { FILE *fp = fopen("data.dat", "rb"); if (fp) { fread(&userCount, sizeof(int), 1, fp); fread(users, sizeof(User), userCount, fp); fread(&employeeCount, sizeof(int), 1, fp); fread(employees, sizeof(Employee), employeeCount, fp); fclose(fp); } } // 保存数据 void saveData() { FILE *fp = fopen("data.dat", "wb"); if (fp) { fwrite(&userCount, sizeof(int), 1, fp); fwrite(users, sizeof(User), userCount, fp); fwrite(&employeeCount, sizeof(int), 1, fp); fwrite(employees, sizeof(Employee), employeeCount, fp); fclose(fp); } } // 注册用户 void registerUser() { if (userCount >= MAX_USERS) { printf("用户数量已达上限。\n"); return; } User newUser; printf("请输入用户名: "); scanf("%s", newUser.username); printf("请输入密码: "); scanf("%s", newUser.password); newUser.isAdmin = 0; // 默认注册为普通员工 for (int i = 0; i < userCount; i++) { if (strcmp(users[i].username, newUser.username) == 0) { printf("用户名已存在。\n"); return; } } users[userCount++] = newUser; printf("注册成功!您的用户ID是: %d\n", userCount); } // 登录功能 int login() { char username[USERNAME_LENGTH]; char password[PASSWORD_LENGTH]; printf("请输入用户名: "); scanf("%s", username); printf("请输入密码: "); scanf("%s", password); for (int i = 0; i < userCount; i++) { if (strcmp(users[i].username, username) == 0 && strcmp(users[i].password, password) == 0) { printf("登录成功!\n"); return 1; } } printf("用户名或密码错误。\n"); return 0; } // 管理员菜单 void adminMenu() { int choice; while (1) { printf("\n--- 管理员菜单 ---\n"); printf("1. 添加员工\n"); printf("2. 删除员工\n"); printf("3. 修改员工信息\n"); printf("4. 查询员工信息\n"); printf("5. 修改员工工资\n"); printf("6. 查询员工工资\n"); printf("7. 退出\n"); printf("请选择: "); scanf("%d", &choice); switch (choice) { case 1: addEmployee(); break; case 2: deleteEmployee(); break; case 3: modifyEmployee(); break; case 4: queryEmployee(); break; case 5: modifySalary(); break; case 6: querySalary(); break; case 7: return; default: printf("无效选择,请重试。\n"); } } } // 普通员工菜单 void employeeMenu(int index) { int choice; while (1) { printf("\n--- 员工菜单 ---\n"); printf("1. 查询个人信息\n"); printf("2. 修改个人信息\n"); printf("3. 修改密码\n"); printf("4. 退出\n"); printf("请选择: "); scanf("%d", &choice); switch (choice) { case 1: printf("员工ID: %s\n姓名: %s\n工资: %.2f\n", employees[index].id, employees[index].name, employees[index].salary); break; case 2: printf("请输入新的姓名: "); scanf("%s", employees[index].name); printf("修改成功!\n"); break; case 3: printf("请输入新的密码: "); scanf("%s", users[index].password); printf("密码修改成功!\n"); break; case 4: return; default: printf("无效选择,请重试。\n"); } } } // 添加员工 void addEmployee() { if (employeeCount >= MAX_EMPLOYEES) { printf("员工数量已达上限。\n"); return; } Employee newEmployee; printf("请输入员工ID: "); scanf("%s", newEmployee.id); printf("请输入员工姓名: "); scanf("%s", newEmployee.name); printf("请输入员工工资: "); scanf("%f", &newEmployee.salary); for (int i = 0; i < employeeCount; i++) { if (strcmp(employees[i].id, newEmployee.id) == 0) { printf("员工ID已存在。\n"); return; } } employees[employeeCount++] = newEmployee; printf("添加员工成功!\n"); } // 删除员工 void deleteEmployee() { char id[ID_LENGTH]; printf("请输入要删除的员工ID: "); scanf("%s", id); for (int i = 0; i < employeeCount; i++) { if (strcmp(employees[i].id, id) == 0) { for (int j = i; j < employeeCount-1; j++) { employees[j] = employees[j+1]; } employeeCount--; printf("删除员工成功!\n"); return; } } printf("未找到该员工。\n"); } // 修改员工信息 void modifyEmployee() { char id[ID_LENGTH]; printf("请输入要修改的员工ID: "); scanf("%s", id); for (int i = 0; i < employeeCount; i++) { if (strcmp(employees[i].id, id) == 0) { printf("请输入新的姓名: "); scanf("%s", employees[i].name); printf("请输入新的工资: "); scanf("%f", &employees[i].salary); printf("修改成功!\n"); return; } } printf("未找到该员工。\n"); } // 查询员工信息 void queryEmployee() { char id[ID_LENGTH]; printf("请输入要查询的员工ID: "); scanf("%s", id); for (int i = 0; i < employeeCount; i++) { if (strcmp(employees[i].id, id) == 0) { printf("员工ID: %s\n姓名: %s\n工资: %.2f\n", employees[i].id, employees[i].name, employees[i].salary); return; } } printf("未找到该员工。\n"); } // 修改员工工资 void modifySalary() { char id[ID_LENGTH]; printf("请输入要修改工资的员工ID: "); scanf("%s", id); for (int i = 0; i < employeeCount; i++) { if (strcmp(employees[i].id, id) == 0) { printf("请输入新的工资: "); scanf("%f", &employees[i].salary); printf("工资修改成功!\n"); return; } } printf("未找到该员工。\n"); } // 查询员工工资 void querySalary() { char id[ID_LENGTH]; printf("请输入要查询工资的员工ID: "); scanf("%s", id); for (int i = 0; i < employeeCount; i++) { if (strcmp(employees[i].id, id) == 0) { printf("员工ID: %s\n工资: %.2f\n", employees[i].id, employees[i].salary); return; } } printf("未找到该员工。\n"); } ``` 这个程序实现了以下功能: 1. 用户登录: 使用用户名和密码登录,区分管理员和普通员工。 2. 管理员功能: - 添加、删除、修改、查询员工信息 - 修改、查询员工工资 3. 普通员工功能: - 查询个人信息 - 修改个人信息 - 修改密码 4. 数据持久化: 将用户信息和员工信息保存在文件中。 要运行这个程序,您需要创建一个名为"data.dat"的文件来存储数据。程序启动时会自动加载数据,退出时会自动保存数据。 这个程序使用了简单的文件操作和结构体数组来管理数据。对于实际应用,您可能需要使用数据库来存储数据,并增加更多的错误处理和安全措施。
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值