C语言大作业之图书管理系统的实现详程
概述
本文将详细讲解如何使用C语言编写一个简单的图书管理系统。该系统包含管理员和用户两种角色,主要实现以下功能:
- 管理员:图书的添加、删除与修改
- 用户:图书的查询、借阅、归还
系统设计
本系统由以下几个模块组成:
- main.c:主程序,实现系统的入口功能。
- user.c:用户模块,实现用户相关的功能,如图书查询、借阅、归还等。
- admin.c:管理员模块,实现管理员相关的功能,如图书添加、删除、修改等。
- book.h:书籍模块的头文件,定义了图书相关信息的结构体和函数原型。
- book.c:书籍模块,实现图书相关的操作,包括书籍信息的存储和修改等。
代码实现
book.h
图书信息结构体:
typedef struct book {
char name[50]; // 书名
char author[20]; // 作者
char publisher[30]; // 出版社
double price; // 价格
int num; // 剩余数量
} Book;
书籍操作函数原型:
void add_book(Book *book_arr, int *count);
void delete_book(Book *book_arr, int *count);
void modify_book(Book *book_arr, int *count);
void search_book(Book *book_arr, int count);
void borrow_book(Book *book_arr, int count);
void return_book(Book *book_arr, int count);
book.c
书籍操作函数实现:
void add_book(Book *book_arr, int *count) {
printf("\n请输入详细信息:\n");
printf("书名:");
scanf("%s", book_arr[*count].name);
printf("作者:");
scanf("%s", book_arr[*count].author);
printf("出版社:");
scanf("%s", book_arr[*count].publisher);
printf("价格:");
scanf("%lf", &book_arr[*count].price);
printf("数量:");
scanf("%d", &book_arr[*count].num);
(*count)++;
printf("\n添加成功!\n");
}
void delete_book(Book *book_arr, int *count) {
char name[50];
int index = -1;
printf("\n请输入要删除的书名:");
scanf("%s", name);
for (int i = 0; i < *count; i++) {
if (strcmp(name, book_arr[i].name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("\n未找到相关书籍!\n");
return;
}
for (int i = index; i < *count - 1; i++) {
book_arr[i] = book_arr[i+1];
}
(*count)--;
printf("\n删除成功!\n");
}
void modify_book(Book *book_arr, int *count) {
char name[50];
int index = -1;
printf("\n请输入要修改的书名:");
scanf("%s", name);
for (int i = 0; i < *count; i++) {
if (strcmp(name, book_arr[i].name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("\n未找到相关书籍!\n");
return;
}
printf("\n请输入修改后的详细信息:\n");
printf("书名:");
scanf("%s", book_arr[index].name);
printf("作者:");
scanf("%s", book_arr[index].author);
printf("出版社:");
scanf("%s", book_arr[index].publisher);
printf("价格:");
scanf("%lf", &book_arr[index].price);
printf("数量:");
scanf("%d", &book_arr[index].num);
printf("\n修改成功!\n");
}
void search_book(Book *book_arr, int count) {
printf("\n请输入要查询的书名:");
char name[50];
scanf("%s", name);
int index = -1;
for (int i = 0; i < count; i++) {
if (strcmp(name, book_arr[i].name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("\n未找到相关书籍!\n");
return;
}
printf("\n书名:%s\n", book_arr[index].name);
printf("作者:%s\n", book_arr[index].author);
printf("出版社:%s\n", book_arr[index].publisher);
printf("价格:%.2f\n", book_arr[index].price);
printf("剩余数量:%d\n", book_arr[index].num);
}
void borrow_book(Book *book_arr, int count) {
printf("\n请输入借阅的书名:");
char name[50];
scanf("%s", name);
int index = -1;
for (int i = 0; i < count; i++) {
if (strcmp(name, book_arr[i].name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("\n未找到相关书籍!\n");
return;
}
if (book_arr[index].num == 0) {
printf("\n该书已借完!\n");
return;
}
book_arr[index].num--;
printf("\n借阅成功!\n");
}
void return_book(Book *book_arr, int count) {
printf("\n请输入归还的书名:");
char name[50];
scanf("%s", name);
int index = -1;
for (int i = 0; i < count; i++) {
if (strcmp(name, book_arr[i].name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("\n未找到相关书籍!\n");
return;
}
book_arr[index].num++;
printf("\n归还成功!\n");
}
admin.c
管理员相关函数的实现:
#include "book.h"
void admin_menu(Book *book_arr, int *count) {
int choice;
while (1) {
printf("\n管理员菜单\n");
printf("1. 添加图书\n");
printf("2. 删除图书\n");
printf("3. 修改图书\n");
printf("0. 退出\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 0: return;
case 1: add_book(book_arr, count); break;
case 2: delete_book(book_arr, count); break;
case 3: modify_book(book_arr, count); break;
default: printf("输入有误,请重新输入!\n");
}
}
}
user.c
用户相关函数的实现:
#include "book.h"
void user_menu(Book *book_arr, int count) {
int choice;
while (1) {
printf("\n用户菜单\n");
printf("1. 查询图书\n");
printf("2. 借阅图书\n");
printf("3. 归还图书\n");
printf("0. 退出\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 0: return;
case 1: search_book(book_arr, count); break;
case 2: borrow_book(book_arr, count); break;
case 3: return_book(book_arr, count); break;
default: printf("输入有误,请重新输入!\n");
}
}
}
main.c
主函数实现:
#include <stdio.h>
#include "book.h"
int main() {
Book book_arr[100];
int count = 0;
int choice;
while (1) {
printf("\n欢迎使用图书管理系统\n");
printf("1. 管理员登录\n");
printf("2. 用户登录\n");
printf("0. 退出\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 0: return 0;
case 1: admin_menu(book_arr, &count); break;
case 2: user_menu(book_arr, count); break;
default: printf("输入有误,请重新输入!\n");
}
}
return 0;
}
示例说明
添加图书
管理员可以通过选择“1. 添加图书”功能来添加新的图书。添加图书功能会依次要求输入书名、作者、出版社、价格和数量等信息。
示例:
管理员菜单
1. 添加图书
2. 删除图书
3. 修改图书
0. 退出
请选择:1
请输入详细信息:
书名:C Primer Plus
作者:Stephen Prata
出版社:人民邮电出版社
价格:62.00
数量:50
添加成功!
借阅图书
用户可以通过选择“2. 借阅图书”功能来借阅图书。如果所选择的图书已经借完,则无法借阅。
示例:
用户菜单
1. 查询图书
2. 借阅图书
3. 归还图书
0. 退出
请选择:2
请输入借阅的书名:C Primer Plus
借阅成功!
总结
通过本文的讲解,我们掌握了如何使用C语言实现一个简单的图书管理系统。对于初学者来说,本系统可能仍存在一些不足和问题,但是通过不断地练习和完善,相信大家都能写出更加优秀和实用的图书管理系统。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言大作业之图书管理系统的实现详程 - Python技术站