【图书管理系统】数据结构、链表、C/C++课程设计

一、前言

大家好!今天我想和大家分享一下我最近学习和开发的一个小项目——图书管理系统。这个系统是用C++编写的,主要功能包括信息注册、用户登录和图书管理。我给不同的功能页面添加了不同的背景色来区分,同时也做了输入校验。

在这篇博客中,我将详细介绍这个图书管理系统的功能、数据结构与算法、代码实现。希望通过这篇文章,能够帮助到正在学习C++和数据结构的朋友们。(完整代码附最后)
在这里插入图片描述

二、系统概述

2.1 功能简介

在这里插入图片描述

这个图书管理系统主要包括以下功能:

  1. 信息注册系统:用户可以注册账号和密码。
  2. 用户登录系统:用户可以输入账号和密码进行登录。
  3. 访问图书系统:用户可以建立书架、查询图书、查询价格、增加图书、删除图书和浏览库存。

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";
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Ahual_cici

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

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

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

打赏作者

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

抵扣说明:

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

余额充值