用c语言写一个图书信息管理系统,功能包括(登录 注册 图书信息查找 录入图书信息 统计图书数量 修改图书信息 )
时间: 2024-03-13 17:44:01 浏览: 193
好的,下面是一个简单的图书信息管理系统的C语言代码,包含登录、注册、图书信息查找、录入图书信息、统计图书数量和修改图书信息功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 100 // 最多图书数量
// 图书结构体
typedef struct {
char book_name[50]; // 书名
char author[20]; // 作者
char publisher[20]; // 出版社
int year; // 出版年份
int stock; // 库存数量
} Book;
// 用户结构体
typedef struct {
char username[20]; // 用户名
char password[20]; // 密码
} User;
// 全局变量
Book books[MAX_BOOKS]; // 图书数组
int num_books = 0; // 当前图书数量
User users[10] = { // 用户数组
{"admin", "admin"}, // 初始管理员账号
};
int num_users = 1; // 当前用户数量
// 显示主菜单
void show_menu() {
printf("\n欢迎使用图书信息管理系统\n");
printf("1. 登录\n");
printf("2. 注册\n");
printf("3. 查找图书信息\n");
printf("4. 录入图书信息\n");
printf("5. 统计图书数量\n");
printf("6. 修改图书信息\n");
printf("0. 退出\n");
}
// 登录函数
int login() {
char username[20], password[20];
printf("\n请输入用户名和密码\n");
printf("用户名: ");
scanf("%s", username);
printf("密码: ");
scanf("%s", password);
for (int i = 0; i < num_users; i++) {
if (strcmp(username, users[i].username) == 0 &&
strcmp(password, users[i].password) == 0) {
printf("\n登录成功!\n");
return i; // 返回用户编号
}
}
printf("\n登录失败,请检查用户名和密码是否正确!\n");
return -1; // 登录失败
}
// 注册函数
void register_user() {
char username[20], password[20];
printf("\n请输入用户名和密码\n");
printf("用户名: ");
scanf("%s", username);
printf("密码: ");
scanf("%s", password);
for (int i = 0; i < num_users; i++) {
if (strcmp(username, users[i].username) == 0) {
printf("\n该用户名已被注册,请重新输入!\n");
return;
}
}
strcpy(users[num_users].username, username);
strcpy(users[num_users].password, password);
num_users++;
printf("\n注册成功!\n");
}
// 查找图书信息函数
void search_book() {
char keyword[50];
printf("\n请输入要查找的书名或作者关键字: ");
scanf("%s", keyword);
printf("\n查找结果如下:\n");
printf("%-20s %-15s %-15s %-10s %-5s\n", "书名", "作者", "出版社", "出版年份", "库存数量");
printf("--------------------------------------------------------------\n");
int found = 0;
for (int i = 0; i < num_books; i++) {
if (strstr(books[i].book_name, keyword) != NULL ||
strstr(books[i].author, keyword) != NULL) {
printf("%-20s %-15s %-15s %-10d %-5d\n",
books[i].book_name, books[i].author, books[i].publisher,
books[i].year, books[i].stock);
found = 1;
}
}
if (!found) {
printf("没有找到符合条件的图书!\n");
}
}
// 录入图书信息函数
void add_book() {
if (num_books == MAX_BOOKS) {
printf("\n图书数量已达上限,无法再添加!\n");
return;
}
printf("\n请输入书名、作者、出版社、出版年份和库存数量\n");
scanf("%s %s %s %d %d", books[num_books].book_name, books[num_books].author,
books[num_books].publisher, &books[num_books].year, &books[num_books].stock);
num_books++;
printf("\n图书信息已录入!\n");
}
// 统计图书数量函数
void count_books() {
int total = 0;
for (int i = 0; i < num_books; i++) {
total += books[i].stock;
}
printf("\n当前图书总量为 %d 本\n", total);
}
// 修改图书信息函数
void modify_book() {
char book_name[50];
printf("\n请输入要修改的图书名称: ");
scanf("%s", book_name);
int found = 0;
for (int i = 0; i < num_books; i++) {
if (strcmp(book_name, books[i].book_name) == 0) {
printf("\n请输入新的书名、作者、出版社、出版年份和库存数量\n");
scanf("%s %s %s %d %d", books[i].book_name, books[i].author,
books[i].publisher, &books[i].year, &books[i].stock);
found = 1;
printf("\n图书信息已修改!\n");
break;
}
}
if (!found) {
printf("\n未找到该图书,请检查图书名称是否正确!\n");
}
}
int main() {
int choice, user_id;
while (1) {
show_menu();
printf("\n请选择操作: ");
scanf("%d", &choice);
switch (choice) {
case 1: // 登录
user_id = login();
break;
case 2: // 注册
register_user();
break;
case 3: // 查找图书信息
search_book();
break;
case 4: // 录入图书信息
add_book();
break;
case 5: // 统计图书数量
count_books();
break;
case 6: // 修改图书信息
modify_book();
break;
case 0: // 退出
printf("\n欢迎再次使用图书信息管理系统!\n");
return 0;
default:
printf("\n无效的操作,请重新选择!\n");
}
}
}
```
这个程序使用了结构体来存储图书和用户信息,使用了全局变量来保存数据,使用了循环和条件语句来实现各个功能。你可以在此基础上进行修改和完善,使其符合你的需求。
阅读全文