用c语言写一个图书信息管理系统,要求包括登录,注册,退出的功能,注册成功后能够实现按任意键返回主菜单
时间: 2024-03-27 09:36:04 浏览: 20
好的,以下是一个包含登录、注册、退出和返回主菜单的图书信息管理系统的C语言代码:
```c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_USERS 100 // 最大用户数量
#define MAX_NAME 20 // 最大用户名长度
#define MAX_PASSWORD 20 // 最大密码长度
#define MAX_BOOKS 100 // 最大书籍数量
#define MAX_BOOK_NAME 20 // 最大书名长度
#define MAX_AUTHOR_NAME 20 // 最大作者姓名长度
// 用户信息结构体
struct user {
char name[MAX_NAME];
char password[MAX_PASSWORD];
};
// 书籍信息结构体
struct book {
char name[MAX_BOOK_NAME];
char author[MAX_AUTHOR_NAME];
int year;
float price;
};
int user_count = 0; // 实际用户数量
struct user users[MAX_USERS]; // 用户数组
int book_count = 0; // 实际书籍数量
struct book books[MAX_BOOKS]; // 书籍数组
// 注册函数
void register_user() {
if (user_count >= MAX_USERS) {
printf("Maximum number of users reached!\n");
return;
}
// 输入用户名和密码
struct user new_user;
printf("Enter username: ");
scanf("%s", new_user.name);
printf("Enter password: ");
scanf("%s", new_user.password);
// 添加用户到数组
users[user_count] = new_user;
user_count++;
printf("User registered successfully!\n");
}
// 登录函数
int login() {
char name[MAX_NAME];
char password[MAX_PASSWORD];
// 输入用户名和密码
printf("Enter username: ");
scanf("%s", name);
printf("Enter password: ");
scanf("%s", password);
// 遍历用户数组,查找匹配用户
for (int i = 0; i < user_count; i++) {
if (strcmp(name, users[i].name) == 0 && strcmp(password, users[i].password) == 0) {
printf("Login successful!\n");
return 1;
}
}
printf("Invalid username or password!\n");
return 0;
}
// 注销函数
void logout() {
printf("Logged out successfully!\n");
}
// 注册书籍函数
void register_book() {
if (book_count >= MAX_BOOKS) {
printf("Maximum number of books reached!\n");
return;
}
// 输入书籍信息
struct book new_book;
printf("Enter book name: ");
scanf("%s", new_book.name);
printf("Enter author name: ");
scanf("%s", new_book.author);
printf("Enter publication year: ");
scanf("%d", &new_book.year);
printf("Enter price: ");
scanf("%f", &new_book.price);
// 添加书籍到数组
books[book_count] = new_book;
book_count++;
printf("Book added successfully!\n");
}
// 显示书籍列表函数
void show_books() {
if (book_count == 0) {
printf("No books registered yet!\n");
return;
}
printf("Books:\n");
for (int i = 0; i < book_count; i++) {
printf("%d. %s by %s, published in %d, priced at %.2f\n", i+1, books[i].name, books[i].author, books[i].year, books[i].price);
}
}
// 主菜单函数
void show_menu() {
printf("\n1. Register as new user\n");
printf("2. Login\n");
printf("3. Logout\n");
printf("4. Register a new book\n");
printf("5. Show all books\n");
printf("6. Exit\n");
printf("Enter your choice: ");
}
int main() {
// 主循环
while (1) {
show_menu();
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
register_user();
break;
case 2:
if (login()) {
// 登录成功,显示可用菜单选项
printf("\n1. Register a new book\n");
printf("2. Show all books\n");
printf("3. Logout\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
register_book();
break;
case 2:
show_books();
break;
case 3:
logout();
break;
default:
printf("Invalid choice!\n");
}
}
break;
case 3:
logout();
break;
case 4:
register_book();
break;
case 5:
show_books();
break;
case 6:
printf("Goodbye!\n");
exit(0);
default:
printf("Invalid choice!\n");
}
// 暂停程序,等待按键
printf("Press any key to continue...\n");
getchar();
getchar();
}
return 0;
}
```
程序中的`register_user`函数实现了注册用户的功能,`login`函数实现了用户登录的功能,`logout`函数实现了用户注销的功能,`register_book`函数实现了添加新书籍的功能,`show_books`函数实现了显示所有书籍的功能,`show_menu`函数实现了主菜单的显示。主循环根据用户选择的菜单选项执行相应的操作。如果用户选择了登录,程序会显示可用的菜单选项,等待用户选择并执行相应的操作。每次执行完操作后,程序会暂停等待用户按下任意键,然后再次显示主菜单。