设备管理系统:C语言实现的设备借用与管理功能
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> #include <mmsystem.h> #pragma comment(lib, "WINMM.LIB") // 定义设备结构体 typedef struct { char name[50]; // 设备名称 char model[20]; // 设备型号 char purchaseDate[20]; // 采购时间 char location[50]; // 存放位置 char manager[20]; // 设备负责人 char borrower[20]; // 借用人 char borrowDate[20]; // 借用时间 char returnDate[20]; // 归还时间 } Device; // 定义用户结构体 typedef struct { char username[20]; // 用户名 char password[20]; // 密码 } User; // 函数声明 void printMenu(); void addDevice(Device device[], int *count); void modifyDevice(Device device[], int count); void deleteDevice(Device device[], int *count); void addUser(User user[], int *count); void deleteUser(User user[], int *count); void queryDevice(Device device[], int count); void applyBorrow(Device device[], int count, char username[]); void returnDevice(Device device[], int count, char username[]); void statistics(Device device[], int count); int checkUsername(User user[], int count, char username[]); int checkPassword(User user[], int count, char username[], char password[]); void displayDevices(Device device[], int count) ; void saveToFile(Device device[], int count) ; void saveToFile(User user[], int *count); void displayUser(User user[], int *count); void BGM(); void stopBGM(); int main() { BGM(); Device device[100]; // 设备数组,最多存放100个设备 User user[10]; // 用户数组,最多存放10个用户 int deviceCount = 0; // 设备数量 int userCount = 0; int choice; char username[20]; char password[20]; // 从文件读取设备数据 FILE *fp; FILE *fc; fp = fopen("C:\Users\额额\Documents\Visual Studio 2010\Projects\dbj\Debug\147.txt", "r"); if (fp != NULL) { int i = 0; while (!feof(fp)) { fscanf(fp, "%s %s %s %s %s %s %s %s\n", device[i].name, device[i].model, device[i].purchaseDate, device[i].location, device[i].manager, device[i].borrower, device[i].borrowDate, device[i].returnDate); i++; } deviceCount = i; int *count=&i; fclose(fp); } // 从文件读取用户数据 fc = fopen("C:\Users\额额\Documents\Visual Studio 2010\Projects\dbj\Debug\258.txt", "r"); if (fc != NULL) { int j = 0; while (!feof(fc)) { fscanf(fc, "%s %s\n", user[j].username, user[j].password); j++; } userCount = j; fclose(fc); } // 用户登录 printf("用户登陆系统!\n"); printf("请输入你的账号: "); scanf("%s", username); printf("请输入你的密码: "); scanf("%s", password); if (checkUsername(user, userCount, username)&& checkPassword(user, userCount, username, password)) { printf("成功登录!\n"); if (strcmp(username, "管理员") == 0) { // 高级管理者菜单 while (1) { printMenu(); printf("请选择: "); scanf("%d", &choice); switch (choice) { case 1: addDevice(device, &deviceCount); saveToFile(device,deviceCount) ; break; case 2: modifyDevice(device, deviceCount); saveToFile(device,deviceCount) ; break; case 3: deleteDevice(device, &deviceCount); saveToFile(device,deviceCount) ; break; case 4: addUser(user, &userCount); saveToFile( user, &userCount) ; break; case 5: deleteUser(user, &userCount); saveToFile( user, &userCount) ; break; case 6: displayUser(user,&userCount); break; case 7: statistics(device, deviceCount); break; case 8: queryDevice(device, deviceCount); break; case 11: displayDevices(device,deviceCount) ; break; case 12: BGM(); break; case 13: stopBGM(); break; case 14: system ("1.py"); break; case 15: PlaySound(NULL, NULL, SND_ASYNC); system("12.py"); break; case 0: printf("成功退出!\n"); return 0; default: printf("输入错误请再次输入.\n"); } } } else { // 普通用户菜单 while (1) { printMenu(); printf("请选择: "); scanf("%d", &choice); switch (choice) { case 4: addUser(user, &userCount); saveToFile( user, &userCount) ; break; case 5: deleteUser(user, &userCount); saveToFile( user, &userCount) ; break; } } } } else { printf("用户名或密码错误!\n"); return 0; } return 0; } // 打印菜单 void printMenu() { printf("--------------------设备管理系统--------------------\n"); printf("1. 添加设备\n"); printf("2. 修改设备\n"); printf("3. 删除设备\n"); printf("4. 添加用户\n"); printf("5. 删除用户\n"); printf("6. 显示用户\n"); printf("7. 设备统计\n"); printf("8. 查询设备\n"); printf("11. 显示所有设备\n"); printf("12. 播放背景音乐\n"); printf("13. 停止背景音乐\n"); printf("14. 生成数据图表\n"); printf("15. 自动生成图表\n"); printf("0. 退出系统\n"); } // 添加设备 void addDevice(Device device[], int *count) { Device newDevice; printf("请输入设备名称: "); scanf("%s", newDevice.name); printf("请输入设备型号: "); scanf("%s", newDevice.model); printf("请输入采购时间: "); scanf("%s", newDevice.purchaseDate); printf("请输入存放位置: "); scanf("%s", newDevice.location); printf("请输入设备负责人: "); scanf("%s", newDevice.manager); printf("请输入借用人: "); scanf("%s", newDevice.borrower); printf("请输入借用时间: "); scanf("%s", newDevice.borrowDate); printf("请输入归还时间: "); scanf("%s", newDevice.returnDate); device[*count] = newDevice; (*count)++; printf("添加设备成功!\n"); } // 修改设备 void modifyDevice(Device device[], int count) { int index; printf("请输入要修改的设备序号(从1开始): "); scanf("%d", &index); if (index > 0 && index <= count) { index--; printf("请输入设备名称: "); scanf("%s", device[index].name); printf("请输入设备型号: "); scanf("%s", device[index].model); printf("请输入采购时间: "); scanf("%s", device[index].purchaseDate); printf("请输入存放位置: "); scanf("%s", device[index].location); printf("请输入设备负责人: "); scanf("%s", device[index].manager); printf("请输入借用人: "); scanf("%s", device[index].borrower); printf("请输入借用时间: "); scanf("%s", device[index].borrowDate); printf("请输入归还时间: "); scanf("%s", device[index].returnDate); printf("修改设备成功!\n"); } else { printf("设备序号错误!\n"); } } // 删除设备 void deleteDevice(Device device[], int *count) { int index; printf("请输入要删除的设备序号(从1开始): "); scanf("%d", &index); if (index > 0 && index <= *count) { index--; for (int i = index; i < *count - 1; i++) { device[i] = device[i + 1]; } (*count)--; printf("删除设备成功!\n"); } else { printf("设备序号错误!\n"); } } // 添加用户 void addUser(User user[], int *count) { User newUser; printf("请输入用户名: "); scanf("%s", newUser.username); printf("请输入密码: "); scanf("%s", newUser.password); user[*count] = newUser; (*count)++; printf("添加用户成功!\n"); } // 删除用户 void deleteUser(User user[], int *count) { int index; printf("请输入要删除的用户序号(从1开始): "); scanf("%d", &index); if (index > 0 && index <= *count) { index--; for (int i = index; i < *count - 1; i++) { user[i] = user[i + 1]; } (*count)--; printf("删除用户成功!\n"); } else { printf("用户序号错误!\n"); } } // 查询设备 void queryDevice(Device device[], int count) { char keyword[50]; printf("请输入关键字(设备名称、型号、负责人等): "); scanf("%s", keyword); int found = 0; for (int i = 0; i < count; i++) { if (strstr(device[i].name, keyword) != NULL || strstr(device[i].model, keyword) != NULL || strstr(device[i].manager, keyword) != NULL) { printf("序号: %d\n", i + 1); printf("设备名称: %s\n", device[i].name); printf("设备型号: %s\n", device[i].model); printf("采购时间: %s\n", device[i].purchaseDate); printf("存放位置: %s\n", device[i].location); printf("设备负责人: %s\n", device[i].manager); printf("借用人: %s\n", device[i].borrower); printf("借用时间: %s\n", device[i].borrowDate); printf("归还时间: %s\n", device[i].returnDate); printf("-----------------\n"); found = 1; } } if (!found) { printf("没有找到相关设备!\n"); } } // 申请借用设备 void applyBorrow(Device device[], int count, char username[]) { int index; printf("请输入要借用的设备序号(从1开始): "); scanf("%d", &index); if (index > 0 && index <= count) { index--; if (strcmp(device[index].borrower, "未借出") == 0) { strcpy(device[index].borrower, username); strcpy(device[index].borrowDate, "2023-11-10"); // 替换为实际借用时间 printf("借用设备成功!\n"); } else { printf("该设备已被借出!\n"); } } else { printf("设备序号错误!\n"); } } // 归还设备 void returnDevice(Device device[], int count, char username[]) { int index; printf("请输入要归还的设备序号(从1开始): "); scanf("%d", &index); if (index > 0 && index <= count) { index--; if (strcmp(device[index].borrower, username) == 0) { strcpy(device[index].borrower, "未借出"); strcpy(device[index].returnDate, "2023-11-10"); // 替换为实际归还时间 printf("归还设备成功!\n"); } else { printf("该设备未被您借用!\n"); } } else { printf("设备序号错误!\n"); } } // 设备统计 void statistics(Device device[], int count) { int borrowedCount = 0; for (int i = 0; i < count; i++) { if (strcmp(device[i].borrower, "未借出") != 0) { borrowedCount++; } } printf("已借出设备数量: %d\n", borrowedCount); printf("未借出设备数量: %d\n", count - borrowedCount); } // 检查用户名是否存在 int checkUsername(User user[], int count, char username[]) { for (int i = 0; i < count; i++) { if (strcmp(user[i].username, username) == 0) { return 1; } } return 0; } // 检查密码是否正确 int checkPassword(User user[], int count, char username[], char password[]) { for (int i = 0; i < count; i++) { if (strcmp(user[i].username, username) == 0 && strcmp(user[i].password, password) == 0) { return 1; } } return 0; } // 显示所有设备 void displayDevices(Device device[], int count) { for (int i = 0; i < count; i++) { printf("序号: %d\n", i + 1); printf("设备名称: %s\n", device[i].name); printf("设备型号: %s\n", device[i].model); printf("采购时间: %s\n", device[i].purchaseDate); printf("存放位置: %s\n", device[i].location); printf("设备负责人: %s\n", device[i].manager); printf("借用人: %s\n", device[i].borrower); printf("借用时间: %s\n", device[i].borrowDate); printf("归还时间: %s\n", device[i].returnDate); printf("-----------------\n"); } } // 保存设备数据到文件 void saveToFile(Device device[], int count) { FILE *fp = fopen("C:\Users\额额\Documents\Visual Studio 2010\Projects\dbj\Debug\147.txt", "w"); if (fp != NULL) { for (int i = 0; i < count; i++) { fprintf(fp, "%s %s %s %s %s %s %s %s\n", device[i].name, device[i].model, device[i].purchaseDate, device[i].location, device[i].manager, device[i].borrower, device[i].borrowDate, device[i].returnDate); } fclose(fp); } } // 保存用户数据到文件 void saveToFile(User user[], int *count) { FILE *fp = fopen("C:\Users\额额\Documents\Visual Studio 2010\Projects\dbj\Debug\258.txt", "w"); if (fp != NULL) { for (int i = 0; i < *count; i++) { fprintf(fp, "%s %s\n", user[i].username, user[i].password); } fclose(fp); } } // 显示所有用户 void displayUser(User user[], int *count) { for (int i = 0; i < *count; i++) { printf("序号: %d\n", i + 1); printf("用户名: %s\n", user[i].username); printf("密码: %s\n", user[i].password); printf("-----------------\n"); } } // 播放背景音乐 void BGM() { PlaySound(TEXT("bgm.wav"), NULL, SND_ASYNC | SND_LOOP); } // 停止背景音乐 void stopBGM() { PlaySound(NULL, NULL, 0); }
原文地址: https://www.cveoy.top/t/topic/pCaz 著作权归作者所有。请勿转载和采集!