/*
*
* ┏┓ ┏┓
* ┏┛┻━━━┛┻┓
* ┃ ┃
* ┃ ━ ┃
* ┃ > < ┃
* ┃ ┃
* ┃... ⌒ ... ┃
* ┃ ┃
* ┗━┓ ┏━┛
* ┃ ┃
* ┃ ┃
* ┃ ┃
* ┃ ┃ 神兽保佑
* ┃ ┃ 代码无bug
* ┃ ┃
* ┃ ┗━━━┓
* ┃ ┣┓
* ┃ ┏┛
* ┗┓┓┏━┳┓┏┛
* ┃┫┫ ┃┫┫
* ┗┻┛ ┗┻┛
*
* @Author: Ye Yi
* @Date: 2020-12-28 19:21:35
* @LastEditTime: 2021-01-01 16:53:15
* @LastEditors: Ye Yi
* @Description:
* @FilePath: \v2.1\cs.cpp
*/
#include <stdio.h>
#include <stdlib.h> //清屏函数需要的头文件
#include <string.h> //字符复制,比较,连接函数需要的头文件
#include <time.h> //获取时间的函数需要的头文件
#include <conio.h> //输入不实时打印函数需要的头文件
#include <ctype.h> //判断是否能打印函数需要的头文件
#include <windows.h> //改变字体颜色需要的头文件
#define MAXSIZE 100
struct INF //用户基本信息结构体
{
int tes;
char name[MAXSIZE];
char id[MAXSIZE];
char passwd[MAXSIZE];
char booknum[MAXSIZE][MAXSIZE]; //记录书号
int bookn; //变量,用来存储书的标记号
int booknu[MAXSIZE]; //记入每种书借了多少本
int y[MAXSIZE];
int m[MAXSIZE];
int d[MAXSIZE];
};
typedef struct Node //存储书籍基本信息的结构体
{
char num[MAXSIZE];
char name[MAXSIZE];
char author[MAXSIZE];
int bookflag;
int now;
int all;
struct Node *next;
} Node, *LinkList;
INF inf[MAXSIZE];
int logout = 0;
int fl = 0;
int main();
int login(int); //登录系统
int init(LinkList &); //书籍信息初始化
void initinf(); //添加5个用户 管理员账户为1,密码为1;普通账户2,3,4,5,密码分别为2,3,4,5。
int in(LinkList &); //录入书籍信息
void switchl(LinkList &, int); //选择借阅书籍方式
int lend(LinkList &, char *, int, int); //通过书号借阅书籍
int lend1(LinkList &, char *, int, int); //通过书名借出书籍
void switchr(LinkList &, int); //选择归还书籍方式
int returnb(LinkList &, char *, int, int); //通过书号归还书籍
int returnb1(LinkList &, char *, int, int); //通过书名归还书籍
int show(LinkList &); //显示图书馆中所有书籍
int own(LinkList &, int); //查看自己借的书籍以及归还时间
int bookdataw(LinkList &); //存储图书馆中所有书籍数据
int bookdatar(LinkList &); //读取存储图书馆中所有书籍的数据
int userdataw(LinkList &, int); //存储用户借阅所有书籍数据
int userdatar(int); //读取用户借阅所有书籍数据
void color(short); //改变字体颜色
void getpwd(char *, int); //密码转星号
int main()
{
int flag0 = 0;
printf("\t\t\t\t\t\t欢迎来到海南大学图书管理系统\n");
do
{
char tell[MAXSIZE], pas[MAXSIZE];
int r = 0, r1, r2 = 0;
int flag1 = 0, flag2 = 0; //循环标志
inf[0].tes = 0;
initinf();
do
{
printf("\t\t请输入你的账号:");
scanf("%s", tell);
fflush(stdin);
if (inf[0].tes == 0)
{
color(4);
printf("没有录入学生!\n");
color(16);
flag0 = 1;
}
if (!strcmp(tell, "\r"))
flag1 = 1;
while (strcmp(inf[r].id, tell) && strcmp(tell, "\r"))
{
if (r >= MAXSIZE)
{
color(4);
printf("不存在此用户!!\n");
color(16);
flag1 = 1;
break;
}
else
{
flag1 = 0;
flag0 = 0;
}
r++;
}
r1 = r;
if (!strcmp(inf[r].id, tell))
{
flag0 = 0;
flag1 = 0;
}
r = 0;
} while (flag1);
if (flag0 == 1)
break;
do //用户输入密码
{
printf("\t\t请输入你的密码:");
r2++;
getpwd(pas, MAXSIZE + 1);
fflush(stdin);
if (r2 > 2)
{
system("cls");
color(4);
printf("密码输入错误超过3次,请检查你的账号是否正确!!\n");
color(16);
flag0 = 1;
break;
}
if (strcmp(inf[r1].passwd, pas))
{
color(4);
printf("密码错误,请重新输入!\n");
color(16);
flag2 = 1;
}
else //账户密码正确,登录系统
{
system("cls"); //使用system("cls")出现bug,启用手动清屏
flag2 = 0;
flag0 = 0;
login(r1);
}
} while (flag2);
} while (flag0);
}
int login(int r2) //登录系统
{
int a, flag = 0;
LinkList Ctr;
bookdatar(Ctr);
userdatar(r2);
if (logout == 1)
init(Ctr);
logout = 0;
while (!flag)
{
if (r2 == 0)
{
if (fl == 0)
{
printf("\t\t\t\t\t%s,欢迎来到海南大学图书管理系统\n", inf[r2].name);
fl++;
}
else
{
printf("\t\t\t\t\t\t请选择:\n");
}
printf("\t\t\t\t\t\t1.采编入库\n"
"\t\t\t\t\t\t2.借阅\n"
"\t\t\t\t\t\t3.归还\n"
"\t\t\t\t\t\t4.查看图书馆书籍\n"
"\t\t\t\t\t\t5.查看已借阅书籍\n"
"\t\t\t\t\t\t6.注销\n"
"\t\t\t\t\t\t7.退出\n");
printf("\t\t\t\t\t请选择你的操作:");
scanf("%d", &a);
fflush(stdin);
switch (a)
{
case 1:
in(Ctr);
bookdataw(Ctr);
break;
case 2:
if (Ctr->next == NULL)
{
color(4);
printf("\t\t\t图书馆还未采购书籍,请采购\n");
color(16);
break;
}
else
{
switchl(Ctr, r2);
userdataw(Ctr, r2);
bookdataw(Ctr);
break;
}
case 3:
if (Ctr->next == NULL)
{
color(4);
printf("\t\t\t\t\t\t图书馆还未采购书籍,请采购!\n");
color(16);
break;
}
else
{
switchr(Ctr, r2);
userdataw(Ctr, r2);
bookdataw(Ctr);
break;
}
case 4:
if (Ctr->next == NULL)
{
color(4);
printf("\t\t\t\t\t\t图书馆还未采购书籍,请采购!\n");
color(16);
break;
}
else
{
show(Ctr);
break;
}
case 5:
own(Ctr, r2);
break;
case 6:
system("cls");
main();
logout = 1;
break;
case 7:
printf("\t\t\t\t按任意键退出...");
getch();
flag = 1;
break;
default:
system("cls");
color(4);
printf("\t\t\t\t\t\t不存在此操作,请重新选择!!!\n");
color(16);
break;
}
}
else
{
bookdataw(Ctr);
if (fl == 0)
{
printf("\t\t\t\t\t%s,欢迎来到海南大学图书管理系统\n", inf[r2].name);
fl++;
}
els
阿齐Archie
- 粉丝: 3w+
- 资源: 2473
最新资源
- C#源码 上位机 联合Visionpro 通用框架开发源码,已应用于多个项目,整套设备程序,可以根据需求编出来,具体Vpp功能自己编 程序包含功能 1.自动设置界面窗体个数及分布 2.照方式以命令触
- 几何物体检测42-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 云计算全套课程资料.zip
- 基于cruise的燃料电池功率跟随仿真,按照丰田氢能源车型搭建,在wltc工况下跟随效果好,最高车速175,最大爬坡30,百公里9s均已实现 1.模型通过cruise simulink联合仿真,策略
- 材料进场验收台账样表.docx
- 建筑材料入库台账样表.docx
- 建筑材料复验台账样表.docx
- 建筑材料台账样表模板.docx
- 建筑材料送检台账样表.docx
- 建筑材料出库台帐模板.docx
- 建筑材料报验单(样表).docx
- 几何物体检测43-YOLO(v5至v9)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 几何物体检测44-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- C++语言实例-毕业设计项目:涂格子游戏开发,图形界面交互特点-开题报告,论文,答辩PPT参考
- python语言kssp批量下载爬虫程序代码QZQ3.txt
- IP102中分离出来的害虫数据集,使用Pasical VOC XML标注
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈