以下是系统部分页面
以下是部分源码,需要源码的私信
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
#include<malloc.h>
typedef struct
{
char student_name[100];
char student_number[100];
char password[100];
int total_borrow;//学生可借
int now_borrow;//已借
}student;
student student_List[100];//使用全局循序表--临时
student student_List_file[100];//使用全局循序表//用来更新文件中的数据
typedef struct node
{
char book_name[100]; //书名
char book_number[100];//书编号
char book_author[100];//书的作者
char book_classify[100];//书的分类
int book_amount;//总库存
int book_now_amount;//当前库存
node* nxet;
}Lnode, * Hnode;//创建链表
Lnode L; //创建一个链表//定义全局变量
int choose_()//定义选择函数——后期只需要进行调用就行--不需要重复写
{
while (1)
{
printf("请输入你的选择:");
int c;
scanf("%d", &c);
printf("\n");
if (c == 1)
{
return 1;
}
else if (c == 2)
{
return 2;
}
else if (c == 3)
{
return 3;
}
else if (c == 0)
{
return 0;
}
else if (c == 4)
{
return 4;
}
else if (c == 5)
{
return 5;
}
else if (c == 6)
{
return 6;
}
else
{
printf("输入错误,请重新输入\n");
}
}
}
int InitList(Lnode& L) //初始化链表
{
Lnode* p = (Lnode*)malloc(sizeof(Lnode));
if (!p)
{
printf("创建链表失败\n");
return -1;
}
L.nxet = NULL; //创建一个头结点
return 0;
}
int calculate_file_count()//先遍历一遍得到book中的所有数据得到count
{
char book_name[100], book_number[100], author[100], book_classify[100];
int books, now_book;
FILE* fp = fopen("./book.txt", "r");
if (!fp)
{
printf("打开book.txt失败\n");
return -1;
}
int count = 0;
while (fscanf(fp, "%s%s%s%s%d%d", book_name, book_number, author, book_classify, &books, &now_book) != EOF)//取出数据
{
count++;//计算文件中的书本信息
}
fclose(fp);
return count;
}
int Initdata(Lnode& L) //初始化数据
{
FILE* fp = fopen("./book.txt", "r");
int a = calculate_file_count();//先遍历一遍得到book中的所有数据得到count
Lnode* p, * q;
p = &L; //头结点不存储数据
for (int i = 0; i < a; i++)
{
q = (Lnode*)malloc(sizeof(Lnode));
if (!q)
{
printf("创建链表失败\n");
return -1;
}
fscanf(fp, "%s%s%s%s%d%d", q->book_name, q->book_number, q->book_author, q->book_classify, &q->book_amount, &q->book_now_amount);
/*book_name, book_number, author, book_classify, &books, &now_book*/
p->nxet = q;//头结点不存储数据
p = q;
}
p->nxet = NULL;
fclose(fp);
return 0;
}
void Lise_combination()//程序开始前需要创建链表将图书信息全部加载--就得先使用该函数
{
InitList(L);
Initdata(L);
}
void seek_interface()
{
printf("**************************\n");
printf("****你想按哪种查找图书******\n");
printf("********1:书名查找*********\n");
printf("********2:分类查找*********\n");
printf("********3:作者查找********\n");
printf("********0:退出********\n");
printf("**************************\n");
}
int Getelem(Lnode& L) //查找元素
{
seek_interface();
int a = choose_();//分为三种查找
Lnode* p = L.nxet;//头指针不存储数据
if (a == 1)//书名查找
{
printf("请输入你想查找的书名:");
char bookname[100];
scanf("%s", bookname);
while (p != NULL)
{
if (strcmp(bookname, p->book_name) == 0)
{
printf("找到该图书\n");
printf("书名:%s\n书的编号:%s\n作者:%s\n分类:%s\n总库存:%d\n现存:%d", p->book_name, p->book_number, p->book_author, p->book_classify, p->book_amount, p->book_now_amount);
printf("\n");
return 0;
}
p = p->nxet;
}
printf("未找到该图书\n");
return -1;
}
else if (a == 2)//可能一个分类有多本书
{
printf("有以下分类:教育科学,文学,医药卫生\n");
printf("请输入你想查找的分类:");
char bookclassify[100];
scanf("%s", bookclassify);
int seek_count_classi = 0;
while (p != NULL)
{
if (strcmp(bookclassify, p->book_classify) == 0)
{
printf("找到该图书\n");
printf("书名:%s\n书的编号:%s\n作者:%s\n分类:%s\n总库存:%d\n现存:%d", p->book_name, p->book_number, p->book_author, p->book_classify, p->book_amount, p->book_now_amount);
printf("\n");
seek_count_classi++;
}
p = p->nxet;
}
if (seek_count_classi==0)
{
printf("未找到该图书\n");
}
return -1;
}
else if (a == 3)//一个作者有多本书
{
printf("请输入你想查找作者:");
char authorname[100];
scanf("%s", authorname);
int seek_count_author = 0;
while (p != NULL)
{
if (strcmp(authorname, p->book_author) == 0)
{
printf("找到该图书\n");
printf("书名:%s\n书的编号:%s\n作者:%s\n分类:%s\n总库存:%d\n现存:%d", p->book_name, p->book_number, p->book_author, p->book_classify, p->book_amount, p->book_now_amount);
printf("\n");
seek_count_author++;
}
p = p->nxet;
}
if (seek_count_author==0)
{
printf("未找到该图书\n");
}
return -1;
}
else if (a == 0)
{
printf("退出该界面\n");
}
return 0;
}