利用c语言开发一段网吧管理系统代码
时间: 2023-08-23 10:04:35 浏览: 123
以下是一个简单的网吧管理系统代码,包括用户登录、计算机使用情况查询和计费等功能。需要注意的是,这只是一个示例代码,实际开发中可能需要更加完善的功能和界面设计。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_COMPUTER_NUM 20
#define MAX_USER_NUM 50
#define MAX_NAME_LEN 20
#define MAX_PASSWORD_LEN 20
#define CHARGE_PER_HOUR 5
// 计算机状态
enum ComputerStatus {
FREE, // 空闲
IN_USE // 使用中
};
// 用户信息
typedef struct {
char name[MAX_NAME_LEN]; // 用户名
char password[MAX_PASSWORD_LEN]; // 密码
int balance; // 余额
} User;
// 计算机信息
typedef struct {
int id; // 计算机编号
enum ComputerStatus status; // 计算机状态
char user[MAX_NAME_LEN]; // 当前使用者用户名
} Computer;
// 全局变量
User users[MAX_USER_NUM];
Computer computers[MAX_COMPUTER_NUM];
// 登录函数
int login(char* name, char* password) {
for (int i = 0; i < MAX_USER_NUM; i++) {
if (strcmp(users[i].name, name) == 0 && strcmp(users[i].password, password) == 0) {
printf("登录成功!\n");
return i; // 返回用户在数组中的下标
}
}
printf("用户名或密码错误!\n");
return -1; // 登录失败
}
// 查询计算机状态
void check_computer_status() {
printf("计算机编号\t状态\t当前使用者\n");
for (int i = 0; i < MAX_COMPUTER_NUM; i++) {
printf("%d\t\t", computers[i].id);
if (computers[i].status == FREE) {
printf("空闲\t\t-\n");
} else {
printf("使用中\t\t%s\n", computers[i].user);
}
}
}
// 计算费用
void calculate_charge(int start_time, int end_time) {
int duration = end_time - start_time;
int charge = duration * CHARGE_PER_HOUR;
printf("使用时长:%d 小时\n", duration);
printf("费用:%d 元\n", charge);
}
// 使用计算机
void use_computer(int user_index, int computer_id) {
if (computers[computer_id].status == IN_USE) {
printf("该计算机正在使用中!\n");
return;
}
printf("请输入使用时长(小时):");
int duration;
scanf("%d", &duration);
getchar(); // 读取回车
int end_time = time(NULL) + duration * 3600;
computers[computer_id].status = IN_USE;
strcpy(computers[computer_id].user, users[user_index].name);
calculate_charge(time(NULL), end_time);
computers[computer_id].status = FREE;
computers[computer_id].user[0] = '\0';
users[user_index].balance -= charge;
printf("使用结束!\n");
}
int main() {
// 初始化用户和计算机信息
for (int i = 0; i < MAX_USER_NUM; i++) {
sprintf(users[i].name, "user%d", i + 1);
sprintf(users[i].password, "123456");
users[i].balance = 100;
}
for (int i = 0; i < MAX_COMPUTER_NUM; i++) {
computers[i].id = i + 1;
computers[i].status = FREE;
computers[i].user[0] = '\0';
}
char name[MAX_NAME_LEN], password[MAX_PASSWORD_LEN];
printf("请输入用户名:");
fgets(name, MAX_NAME_LEN, stdin);
name[strlen(name) - 1] = '\0'; // 去掉换行符
printf("请输入密码:");
fgets(password, MAX_PASSWORD_LEN, stdin);
password[strlen(password) - 1] = '\0'; // 去掉换行符
int user_index = login(name, password);
if (user_index == -1) {
return 1;
}
while (1) {
printf("\n请选择操作:\n");
printf("1. 查询计算机状态\n");
printf("2. 使用计算机\n");
printf("3. 退出\n");
printf("请输入数字(1-3):");
int choice;
scanf("%d", &choice);
getchar(); // 读取回车
switch (choice) {
case 1: // 查询计算机状态
check_computer_status();
break;
case 2: // 使用计算机
printf("请输入计算机编号:");
int computer_id;
scanf("%d", &computer_id);
getchar(); // 读取回车
if (computer_id < 1 || computer_id > MAX_COMPUTER_NUM) {
printf("计算机编号错误!\n");
break;
}
use_computer(user_index, computer_id - 1); // 数组下标从0开始
break;
case 3: // 退出
printf("再见!\n");
return 0;
default:
printf("输入错误!\n");
break;
}
}
}
```
阅读全文