#define_CRT_SECURE_NO_WARNINGS\n#include<stdio.h>\n#include<stdlib.h>\n#include<string.h>\n#define MAX_DEVICES 100 // 最大设备数量\n#define MAX_USERS 100 // 最大用户数量\n\n// 设备信息结构体\ntypedef struct {\n char name[50];\n char model[50];\n char purchase_date[20];\n char location[100];\n char owner[50];\n char borrower[50];\n char borrow_date[20];\n char return_date[20];\n} Device;\n\n// 用户信息结构体\ntypedef struct {\n char username[50];\n char password[50];\n} User;\n\nDevice devices = NULL; // 设备数组\nint numDevices = 0; // 当前设备数量\n\nUser users = NULL; // 用户数组\nint numUsers = 0; // 当前用户数量\n\n// 添加设备\nvoid addDevice() {\n if (numDevices >= MAX_DEVICES) {\n printf("设备数量已达到上限,无法添加新设备。\n");\n return;\n }\n \n Device newDevice;\n \n printf("请输入设备名称:");\n scanf("%s", newDevice.name);\n printf("请输入设备型号:");\n scanf("%s", newDevice.model);\n printf("请输入设备采购时间:");\n scanf("%s", newDevice.purchase_date);\n printf("请输入设备存放位置:");\n scanf("%s", newDevice.location);\n printf("请输入设备负责人:");\n scanf("%s", newDevice.owner);\n \n // 动态分配内存\n devices = (Device)realloc(devices, (numDevices + 1) * sizeof(Device));\n \n // 将新设备信息复制到数组\n devices[numDevices++] = newDevice;\n \n printf("设备添加成功。\n");\n}\n\n// 修改设备\nvoid modifyDevice() {\n char name[50];\n printf("请输入要修改的设备名称:");\n scanf("%s", name);\n \n int i;\n for (i = 0; i < numDevices; i++) {\n if (strcmp(devices[i].name, name) == 0) {\n printf("请输入新的设备名称:");\n scanf("%s", devices[i].name);\n printf("请输入新的设备型号:");\n scanf("%s", devices[i].model);\n printf("请输入新的设备采购时间:");\n scanf("%s", devices[i].purchase_date);\n printf("请输入新的设备存放位置:");\n scanf("%s", devices[i].location);\n printf("请输入新的设备负责人:");\n scanf("%s", devices[i].owner);\n \n printf("设备信息修改成功。\n");\n return;\n }\n }\n \n printf("未找到要修改的设备。\n");\n}\n\n// 删除设备\nvoid deleteDevice() {\n char name[50];\n printf("请输入要删除的设备名称:");\n scanf("%s", name);\n \n int i;\n for (i = 0; i < numDevices; i++) {\n if (strcmp(devices[i].name, name) == 0) {\n // 将要删除的设备后面的所有设备向前移动一位\n int j;\n for (j = i; j < numDevices - 1; j++) {\n devices[j] = devices[j + 1];\n }\n \n // 减少设备数量\n numDevices--;\n \n // 释放删除设备的内存\n devices = (Device)realloc(devices, (numDevices) * sizeof(Device));\n \n printf("设备删除成功。\n");\n return;\n }\n }\n \n printf("未找到要删除的设备。\n");\n}\n\n// 添加用户\nvoid addUser() {\n if (numUsers >= MAX_USERS) {\n printf("用户数量已达到上限,无法添加新用户。\n");\n return;\n }\n \n User newUser;\n \n printf("请输入用户名:");\n scanf("%s", newUser.username);\n printf("请输入密码:");\n scanf("%s", newUser.password);\n \n // 动态分配内存\n users = (User*)realloc(users, (numUsers + 1) * sizeof(User));\n \n // 将新用户信息复制到数组\n users[numUsers++] = newUser;\n \n printf("用户添加成功。\n");\n}\n\n// 删除用户\nvoid deleteUser() {\n char username[50];\n printf("请输入要删除的用户名:");\n scanf("%s", username);\n \n int i;\n for (i = 0; i < numUsers; i++) {\n if (strcmp(users[i].username, username) == 0) {\n // 将要删除的用户后面的所有用户向前移动一位\n int j;\n for (j = i; j < numUsers - 1; j++) {\n users[j] = users[j + 1];\n }\n \n // 减少用户数量\n numUsers--;\n \n // 释放删除用户的内存\n users = (User*)realloc(users, (numUsers) * sizeof(User));\n \n printf("用户删除成功。\n");\n return;\n }\n }\n \n printf("未找到要删除的用户。\n");\n}\n\n// 查询设备\nvoid searchDevice() {\n char name[50];\n printf("请输入要查询的设备名称:");\n scanf("%s", name);\n \n int i;\n for (i = 0; i < numDevices; i++) {\n if (strcmp(devices[i].name, name) == 0) {\n printf("设备名称:%s\n", devices[i].name);\n printf("设备型号:%s\n", devices[i].model);\n printf("设备采购时间:%s\n", devices[i].purchase_date);\n printf("设备存放位置:%s\n", devices[i].location);\n printf("设备负责人:%s\n", devices[i].owner);\n if (strlen(devices[i].borrower) > 0) {\n printf("设备借用人:%s\n", devices[i].borrower);\n printf("设备借用时间:%s\n", devices[i].borrow_date);\n printf("设备归还时间:%s\n", devices[i].return_date);\n }\n return;\n }\n }\n \n printf("未找到该设备。\n");\n}\n\n// 申请借用设备\nvoid borrowDevice() {\n char name[50];\n printf("请输入要借用的设备名称:");\n scanf("%s", name);\n \n int i;\n for (i = 0; i < numDevices; i++) {\n if (strcmp(devices[i].name, name) == 0) {\n if (strlen(devices[i].borrower) > 0) {\n printf("该设备已被借用。\n");\n return;\n }\n \n printf("请输入借用人姓名:");\n scanf("%s", devices[i].borrower);\n printf("请输入借用日期:");\n scanf("%s", devices[i].borrow_date);\n \n printf("设备借用成功。\n");\n return;\n }\n }\n \n printf("未找到该设备。\n");\n}\n\n// 显示所有设备\nvoid displayDevices() {\n int i;\n for (i = 0; i < numDevices; i++) {\n printf("设备名称:%s\n", devices[i].name);\n printf("设备型号:%s\n", devices[i].model);\n printf("设备采购时间:%s\n", devices[i].purchase_date);\n printf("设备存放位置:%s\n", devices[i].location);\n printf("设备负责人:%s\n", devices[i].owner);\n if (strlen(devices[i].borrower) > 0) {\n printf("设备借用人:%s\n", devices[i].borrower);\n printf("设备借用时间:%s\n", devices[i].borrow_date);\n printf("设备归还时间:%s\n", devices[i].return_date);\n }\n printf("\n");\n }\n}\n\n// 保存用户信息和设备信息到文件\nvoid saveToFile() {\n FILE file = fopen("设备信息.dat", "wb");\n if (file == NULL) {\n printf("无法打开文件。\n");\n return;\n }\n \n // 保存用户信息\n fwrite(&numUsers, sizeof(int), 1, file);\n fwrite(users, sizeof(User), numUsers, file);\n \n // 保存设备信息\n fwrite(&numDevices, sizeof(int), 1, file);\n fwrite(devices, sizeof(Device), numDevices, file);\n \n fclose(file);\n}\n\n// 从文件中加载用户信息和设备信息\nvoid loadFromFile() {\n FILE file = fopen("设备信息.dat", "rb");\n if (file == NULL) {\n printf("无法打开文件。\n");\n return;\n }\n \n // 加载用户信息\n fread(&numUsers, sizeof(int), 1, file);\n users = (User)malloc(numUsers * sizeof(User));\n fread(users, sizeof(User), numUsers, file);\n \n // 加载设备信息\n fread(&numDevices, sizeof(int), 1, file);\n devices = (Device)malloc(numDevices * sizeof(Device));\n fread(devices, sizeof(Device), numDevices, file);\n \n fclose(file);\n}\n\nint main() {\n loadFromFile();\n int choice;\n do {\n printf("欢迎使用实验室设备管理系统,请选择操作:\n");\n printf("1. 添加设备\n");\n printf("2. 修改设备\n");\n printf("3. 删除设备\n");\n printf("4. 添加用户\n");\n printf("5. 删除用户\n");\n printf("6. 查询设备\n");\n printf("7. 申请借用设备\n");\n printf("8. 显示所有设备\n");\n printf("0. 退出\n");\n scanf("%d", &choice);\n switch (choice) {\n case 1:\n addDevice();\n break;\n case 2:\n modifyDevice();\n break;\n case 3:\n deleteDevice();\n break;\n case 4:\n addUser();\n break;\n case 5:\n deleteUser();\n break;\n case 6:\n searchDevice();\n break;\n case 7:\n borrowDevice();\n break;\n case 8:\n displayDevices();\n break;\n case 0:\n break;\n default:\n printf("无效的选择。\n");\n }\n } while (choice != 0);\n saveToFile();\n return 0;\n

实验室设备管理系统 - C语言实现

原文地址: https://www.cveoy.top/t/topic/ptNR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录