【图书管理系统】数据结构、链表、课程设计、C/C++
一、前言
大家好!今天我想和大家分享一下我最近学习和开发的一个小项目——图书管理系统。这个系统是用C++编写的,主要功能包括信息注册、用户登录和图书管理。我给不同的功能页面添加了不同的背景色来区分,同时也做了输入校验。
在这篇博客中,我将详细介绍这个图书管理系统的功能、数据结构与算法、代码实现。希望通过这篇文章,能够帮助到正在学习C++和数据结构的朋友们。(完整代码附最后)
二、系统概述
2.1 功能简介
这个图书管理系统主要包括以下功能:
- 信息注册系统:用户可以注册账号和密码。
- 用户登录系统:用户可以输入账号和密码进行登录。
- 访问图书系统:用户可以建立书架、查询图书、查询价格、增加图书、删除图书和浏览库存。
2.2 系统架构
系统架构主要分为以下几个部分:
- 全局变量和宏定义:用于标记用户状态和存储用户信息。
- 图书信息结构体定义:用于存储图书的基本信息。
- 单链表的定义和基本操作:用于存储和操作图书信息。
- 用户交互界面和功能实现:用于实现用户注册、登录和图书管理功能。
- 主函数:用于启动系统并显示主菜单。
三、数据结构与算法
3.1 单链表的定义与操作
系统使用单链表数据结构来存储图书信息。单链表的定义和基本操作如下:
typedef int Status; // Status 是函数返回值类型,其值是函数结果状态代码。
typedef struct LNode {
Book data; // 结点的数据域
struct LNode next; // 结点的指针域
} LNode, LinkList; // LinkList为指向结构体LNode的指针类型
单链表的基本操作包括初始化、获取元素、按值查找、插入元素和删除元素。
3.2 图书信息结构体
图书信息使用Book
结构体存储,定义如下:
struct Book {
string id; // ISBN
string name; // 书名
double price; // 定价
};
部分数据样例如下:
ISBN 书名 单价
9999999999922 Python 99
9787302203513 编译原理 46
9787811234923 汇编语言程序设计教程 21
9787512100831 计算机操作系统 17
9787302265436 计算机导论实验指导 18
9787302180630 实用数据结构 29
9787302225065 数据结构(C语言版) 38
9787302171676 C#面向对象程序设计 39
9787302250692 C语言程序设计 42
9787302150664 数据库原理 35
9787302260806 Java编程与实践 56
9787302252887 Java程序设计与应用教程 39
9787302198505 嵌入式操作系统及编程 25
9787302169666 软件测试 24
9787811231557 Eclipse基础与应用 35
四、功能实现详解
4.1 主菜单选择系统
void lmain() {
system("cls");
system("color 1F");
printf("\n\n\t 欢迎使用Ahual图书管理系统\n\n");
cout << "╔*☆***◎***◇***☆*** 菜单 ***☆***◇***◎***☆* ╗\n";
cout << "|★|\t \t|★|\n";
cout << "|☆|\t 一、信息注册系统 \t|☆|\n";
cout << "|★|\t \t|★|\n";
cout << "|☆|\t 二、用户登入系统 \t|☆|\n";
cout << "|★|\t \t|★|\n";
cout << "|☆|\t 三、访问图书系统 \t|☆|\n";
cout << "|★|\t \t|★|\n";
cout << "|☆|\t 四、退出管理系统 \t|☆|\n";
cout << "|☆|\t \t|☆|\n";
cout << "╚*☆***◎***◇****☆****★****☆****◇***◎***☆***╝";
int choose;
printf("\n\n\t 请按数字选择(仅数字,限1位,其他字符无法输入)\n\n");
printf("\t 按回车键确定:");
choose = weishu1();
switch (choose) {
case 1:
main1();
break;
case 2:
main2();
break;
case 3:
main3();
break;
case 4:
system("cls");
exit(0);
break;
default:
system("cls");
cout << "\n\t\t操作结果提示↓\n\n";
printf("**********************************************");
printf("\n\n\t\t输入有误 请重新输入!\n\n");
printf("**********************************************");
printf("\n\n\t\t");
system("pause");
lmain();
}
}
lmain函数是主菜单选择函数,用户可以选择进入信息注册系统、用户登录系统、访问图书系统或退出系统。
4.2 信息注册系统
信息注册系统允许用户注册账号和密码。主要函数如下:
void main1() {
int tt1 = 0;//标记是否完成账号设置
int choose;
choose = -1;
while (choose != 0) {
system("cls");
system("color 2F");
printf("\n\n\t 您已进入账号注册系统系统\n\n");
cout << "╔*☆***◎***◇***☆*** 菜单1 ***☆***◇***◎***☆* ╗\n";
cout << "|★|\t \t|★|\n";
cout << "|☆|\t 一、请设置用户账号 \t|☆|\n";
cout << "|★|\t \t|★|\n";
cout << "|☆|\t 二、设置数字登入密码 \t|☆|\n";
cout << "|★|\t \t|★|\n";
cout << "|☆|\t 三、退出返回上一级 \t|☆|\n";
cout << "|☆|\t \t|☆|\n";
cout << "╚*☆***◎***◇****☆**** ★****☆****◇***◎***☆* ╝";
printf("\n\n\t 请按数字选择(无法输入其他字符或多个数字)\n\n");
printf("\t 按回车键确定:");
choose = weishu1();
switch (choose)//功能函数
{
case 1:
system("cls");
cout << "\n\t\t用户操作提示↓\n\n";
cout << "请设置用户账号(任意字符、任意长度的):";
cin >> z1;
system("cls");
cout << "\n\t\t操作结果提示↓\n\n";
printf("# # # # # # # # # # # # # # # # # # # # # # # #");
printf("\n\n\t\t 账号注册成功!\n\n");
tt1 = 1;//标记完成账号设置
bj1 = 1;
printf("# # # # # # # # # # # # # # # # # # # # # # # #");
printf("\n\n\t\t");
system("pause");
break;
case 2:
if (tt1 != 1)//标记是否完成账号设置
{
system("cls");
cout << "\n\t\t注册系统检查提醒↓\n\n";
printf("@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ");
printf("\n\n\t 您未注册入账户 请先注册一个账号\n\n");
printf("@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ \n\n");
system("pause");
main1();
}
system("cls");
cout << "\n\t\t用户操作提示↓\n\n";
cout << "请设置登入密码(已受限数字,受限1-6位,不信试试):";
m1 = weishu61();
system("cls");
cout << "\n\t\t操作结果提示↓\n\n";