C语言程序设计-图书借还系统

  • 需求分析:

1.设计题目:图书借还系统

2.系统功能需求分析:更好的管理图书借还,节省人力资源,信息更准确。

  • 概要设计:

图书借还系统实现图书管理功能,用户分两类,一类是管理员,一类是普通借阅者,管理者只能有一个,借阅者需要注册,由管理员通过验证后,才能登陆到本系统进行书籍的查询和借阅。

  • 详细设计:

管理员的功能设计

管理员的工作有:新书信息的录入,浏览,查询,修改和删除的功能,借阅用户通过验证;借阅者的功能:能够查询相关书籍当前的状态,并借阅,同时要根据借阅的免费时间(30天)的规定进行超时借阅的费用缴纳。

图书信息保存在文件中,再保存在结构体数组中,做到持久化存储。对图书信息的增删改都是基于文件进行操作。图书信息查询做到字符串模糊匹配。用户账号信息保存在文件中,再保存到结构体数组中,做到持久化存储。

管理员的功能模块:

(1)图书信息录入;

(2)图书信息浏览;

(3)图书信息查询;

(4)图书信息删除;

(5)图书信息修改;

(6)用户账号管理。

普通用户的功能设计

借阅者需要注册,由管理员通过验证后,才能登陆到本系统进行书籍的查询和借阅。

在图书归还中有缴纳延期费用的设置,需要由借阅者将超期还书费用缴纳。用户登录创建COOKIE。借阅信息保存文件和结构体数组,做到持久化存储。

普通用户的功能模块:

(1)查询图书;

(2)借阅图书;

(3)当前借阅状态;

(4)图书归还;

  • 测试结果

输入用户名admin登陆成功后选择下一步操作。

选择图书借还

程序代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<windows.h>

void startsys();
void userlogin();
void adminlogin();
void userfunction();
void userregister();
void adminregister();

int main() {
	startsys();
}

void startsys() {

	int cmd;
	int end = 0;

	while (1) {

		system("cls");
		printf("\n\n\n\n\n\n\n");
		printf("**************************************************************");
		printf("\n图书馆管理系统\n");
		printf("1.用户登陆\n");
		printf("2.管理员登陆\n");
		printf("3.用户注册\n");
		printf("4.管理员注册\n");
		printf("0.退出\n");
		printf("**************************************************************");
		printf("\n\n\n\n\n\n\n");
		printf("输入你需要进行的操作: ");
		scanf("%d", &cmd);
		getchar();
		switch (cmd)
		{
		case 1:
			userlogin();
			break;
		case 2:
			adminlogin();
			break;
		case 3:
			printf("此功能尚在开发中,请稍后...");
			Sleep(3000);
			break;
		case 4:
			printf("此功能尚在开发中,请稍后...");
			break;
		case 0:
			end = 1;
			break;
		default:
			printf("错误输入!\n");
		}
		if (end == 1)
			break;
	}
}

void userlogin() {

	char username[100];
	char password[100];
	int exist = 0;
	system("cls");
	printf("\n\n\n\n\n\n\n");
	printf("**************************************************************");
	printf("\n输入您的用户信息: \n");
	printf("username: ");
	gets(username);
	printf("userscert: ");
	gets(password);
	printf("**************************************************************");
	printf("\n\n\n\n\n\n\n");

	if (strcmp(username, "admin") == 0) {
		if (strcmp(password, "admin") == 0) {
			exist = 1;
			printf("用户登陆成功!3秒后自动跳转至用户界面...");
			Sleep(3000);
			userfunction();
		}
	}

	if (!exist) {
		printf("不存在此用户名,请先前往注册...\n");
		printf("3秒后自动跳转至主界面...");
		Sleep(3000);
	}
}

void adminlogin() {

	char adminName[100];
	char adminPassword[100];

	system("cls");
	printf("\n\n\n\n\n\n\n");
	printf("**************************************************************");
	printf("\n输入您的管理员信息: \n");
	printf("adminname: ");
	gets(adminName);
	printf("adminscert: ");
	gets(adminPassword);
	printf("**************************************************************");
	printf("\n\n\n\n\n\n\n");

	if (strcmp(adminName, "admin") == 0) {
		if (strcmp(adminPassword, "admin") == 0) {
			printf("管理员%s登陆成功!3秒后自动跳转至用户界面...");
			Sleep(3000);
		}
		else {
			printf("admin password missing");
		}
	}
	else {
		printf("admin account missing");
	}
}

void userfunction() {

	int cmd;
	int end = 0;

	while (1) {
		system("cls");
		printf("\n\n\n\n\n\n\n");
		printf("**************************************************************");
		printf("\n图书馆用户功能系统\n");
		printf("1.借阅书籍\n");
		printf("2.归还书籍\n");
		printf("3.已借阅书籍信息\n");
		printf("0.退出\n");
		printf("**************************************************************");
		printf("\n\n\n\n\n\n\n");
		printf("输入您需要进行的操作: ");
		scanf("%d", &cmd);
		switch (cmd) {
		case 1:
			printf("借阅书籍功能正在开发中......");
			Sleep(3000);
			break;
		case 2:
			printf("归还书籍功能正在开发中......");
			Sleep(3000);
			break;
		case 3:
			printf("已借阅书籍信息功能正在开发中...... ");
			Sleep(3000);
			break;
		case 0:
			end = 1;
			break;
		default:
			printf("错误的输入!\n");
		}
		if (end == 1)
			break;
	}
}

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,你想了解关于C语言程序设计图书管理系统。一般来说,图书管理系统需要实现以下功能: 1. 图书信息的录入、修改、删除和查询 2. 读者信息的录入、修改、删除和查询 3. 图书借阅、归还和续借功能 4. 图书库存管理和统计功能 5. 系统登录和权限管理功能 在C语言中,可以使用文件来存储和读取图书和读者信息。同时,可以使用结构体来定义图书和读者的属性,如书名、作者、ISBN号、出版社、借阅状态等。 以下是一个简单的C语言程序设计图书管理系统示例: ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_BOOKS 100 // 最大书籍数量 #define MAX_READERS 100 // 最大读者数量 // 定义图书结构体 typedef struct Book { int id; // 书籍编号 char title[50]; // 书名 char author[50]; // 作者 char publisher[50]; // 出版社 int status; // 借阅状态,1代表已借出,0代表未借出 } Book; // 定义读者结构体 typedef struct Reader { int id; // 读者编号 char name[50]; // 姓名 char email[50]; // 电子邮件 int books[3]; // 借阅书籍编号,最多借阅3本 } Reader; // 定义图书馆结构体 typedef struct Library { Book books[MAX_BOOKS]; // 书籍数组 Reader readers[MAX_READERS]; // 读者数组 int book_count; // 当前书籍数量 int reader_count; // 当前读者数量 } Library; // 初始化图书馆 void init_library(Library *lib) { lib->book_count = 0; lib->reader_count = 0; } // 添加书籍 void add_book(Library *lib, Book book) { if (lib->book_count >= MAX_BOOKS) { printf("图书馆已满,无法添加新书籍!\n"); return; } book.id = lib->book_count + 1; lib->books[lib->book_count] = book; lib->book_count++; printf("添加成功!\n"); } // 添加读者 void add_reader(Library *lib, Reader reader) { if (lib->reader_count >= MAX_READERS) { printf("图书馆已满,无法添加新读者!\n"); return; } reader.id = lib->reader_count + 1; lib->readers[lib->reader_count] = reader; lib->reader_count++; printf("添加成功!\n"); } // 借书 void borrow_book(Library *lib, int book_id, int reader_id) { Book *book = NULL; Reader *reader = NULL; for (int i = 0; i < lib->book_count; i++) { if (lib->books[i].id == book_id) { book = &lib->books[i]; break; } } for (int i = 0; i < lib->reader_count; i++) { if (lib->readers[i].id == reader_id) { reader = &lib->readers[i]; break; } } if (book == NULL || reader == NULL) { printf("借书失败!未找到对应的书籍或读者。\n"); return; } if (book->status == 1) { printf("借书失败!该书籍已被借出。\n"); return; } if (reader->books[0] != 0 && reader->books[1] != 0 && reader->books[2] != 0) { printf("借书失败!该读者已达到借阅上限。\n"); return; } for (int i = 0; i < 3; i++) { if (reader->books[i] == 0) { reader->books[i] = book_id; break; } } book->status = 1; printf("借书成功!\n"); } // 还书 void return_book(Library *lib, int book_id, int reader_id) { Book *book = NULL; Reader *reader = NULL; for (int i = 0; i < lib->book_count; i++) { if (lib->books[i].id == book_id) { book = &lib->books[i]; break; } } for (int i = 0; i < lib->reader_count; i++) { if (lib->readers[i].id == reader_id) { reader = &lib->readers[i]; break; } } if (book == NULL || reader == NULL) { printf("还书失败!未找到对应的书籍或读者。\n"); return; } if (book->status == 0) { printf("还书失败!该书籍未被借出。\n"); return; } int index = -1; for (int i = 0; i < 3; i++) { if (reader->books[i] == book_id) { index = i; break; } } if (index == -1) { printf("还书失败!该读者未借阅该书籍。\n"); return; } reader->books[index] = 0; book->status = 0; printf("还书成功!\n"); } // 显示所有书籍 void show_all_books(Library *lib) { printf("所有书籍信息:\n"); for (int i = 0; i < lib->book_count; i++) { printf("编号:%d,书名:%s,作者:%s,出版社:%s,借阅状态:%s\n", lib->books[i].id, lib->books[i].title, lib->books[i].author, lib->books[i].publisher, lib->books[i].status == 1 ? "已借出" : "未借出"); } } // 显示所有读者 void show_all_readers(Library *lib) { printf("所有读者信息:\n"); for (int i = 0; i < lib->reader_count; i++) { printf("编号:%d,姓名:%s,电子邮件:%s,借阅书籍编号:", lib->readers[i].id, lib->readers[i].name, lib->readers[i].email); for (int j = 0; j < 3; j++) { if (lib->readers[i].books[j] != 0) { printf("%d ", lib->readers[i].books[j]); } } printf("\n"); } } int main() { Library lib; init_library(&lib); while (1) { printf("请选择操作:\n"); printf("1. 添加书籍\n"); printf("2. 添加读者\n"); printf("3. 借书\n"); printf("4. 还书\n"); printf("5. 显示所有书籍\n"); printf("6. 显示所有读者\n"); printf("0. 退出\n"); int choice; scanf("%d", &choice); switch (choice) { case 1: { Book book; printf("请输入书籍信息:\n"); printf("书名:"); scanf("%s", book.title); printf("作者:"); scanf("%s", book.author); printf("出版社:"); scanf("%s", book.publisher); book.status = 0; add_book(&lib, book); break; } case 2: { Reader reader; printf("请输入读者信息:\n"); printf("姓名:"); scanf("%s", reader.name); printf("电子邮件:"); scanf("%s", reader.email); memset(reader.books, 0, sizeof(reader.books)); add_reader(&lib, reader); break; } case 3: { int book_id, reader_id; printf("请输入借书信息:\n"); printf("书籍编号:"); scanf("%d", &book_id); printf("读者编号:"); scanf("%d", &reader_id); borrow_book(&lib, book_id, reader_id); break; } case 4: { int book_id, reader_id; printf("请输入还书信息:\n"); printf("书籍编号:"); scanf("%d", &book_id); printf("读者编号:"); scanf("%d", &reader_id); return_book(&lib, book_id, reader_id); break; } case 5: { show_all_books(&lib); break; } case 6: { show_all_readers(&lib); break; } case 0: { printf("程序已退出!\n"); exit(0); } default: { printf("输入错误,请重新输入!\n"); } } } return 0; } ``` 以上是一个简单的C语言程序设计图书管理系统实现,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X-MTing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值