简单小型的图书信息管理系统
身为菜狗能写出来也是蛮不容易的
【数据结构】
1、书籍数据文件:每个书籍的信息包含:书名,作者名,类型,出版社,出版时间,销售价格,库存数量;
2、用户数据文件:包含用户名称和密码。
【系统实现功能】
1、用户管理(操作用户数据文件)。
新建用户、修改密码。创建新用户后,将用户信息存储到文件“user.dat”中。
2、新书入库(操作书籍数据文件)。输入你需要添加的书籍信息,根据书名查找相应书籍,如果不存在,执行添加操作,存储到“book.txt”文档。如果存在,系统提示在“此书已存在”。
3、删除书籍(操作书籍数据文件)。根据输入的书名查找相应书籍,如果存在,执行删除操作;如果书籍不存在,系统提示“查无此书”。
4、修改信息(操作书籍数据文件)。根据输入的书名查找相应书籍,如果存在,执行修改操作;如果书籍不存在,系统提示“查无此书”。
5、浏览信息(操作书籍数据文件)。将所含书籍信息的文档“book.txt”经行输出显示。
6、查询书籍
支持以下几种查询方式:
(1)按书名名称查询书籍基本信息(作者名,类型,出版社,出版时间,销售价格,库存数量)
(2)按作者名查询书籍基本信息(书名,类型,出版社,出版时间,销售价格,库存数量)
(3)按类型查询查询书籍基本信息(书名,作者名,出版社,出版时间,销售价格,库存数量)
(4)按出版社查询查询书籍基本信息(书名,作者名,类型,出版时间,销售价格,库存数量)
(5)按出版时间查询查询书籍基本信息(书名,作者名,类型,出版社,销售价格,库存数量)
(6)按销售价格查询查询书籍基本信息(书名,作者名,类型,出版社,出版时间,库存数量)
(7)按库存数量查询查询书籍基本信息(书名,作者名,类型,出版社,出版时间,销售价格)
进入页面
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N sizeof(struct BOOK)
#define M sizeof(struct USER)
struct BOOK
{
char name[50]; //书名
char author[50]; //作者名
char type[20]; //类型
char publish[50]; //出版单位
int time ; //出版时间
double price; //价格
int num; //数量
struct BOOK *next; //指针域
};
typedef struct BOOK book ,*linklist;
struct USER
{
char id[50];
char password[20];
struct USER *next1;
};
typedef struct USER user ,*linklist1;
void add(linklist head); //添加
void del(linklist head); //删除
void edit(linklist head); //修改
void print(linklist head); //显示
void find(linklist head); //查找
void NAME1(linklist head); //按书名查找
void AUTHOR1(linklist head); //按作者查找
void TYPE1(linklist head); //按类型查找
void PUBLISH1(linklist head); //按出版社查找
void TIME1(linklist head); //按时间查找
void PRICE1(linklist head); //按价格查找
void NUM1(linklist head); //按数量查找
void output(linklist head); //将链表储存到文件中
void books();
void login(linklist1 head); //用户登录
void creat(linklist1 head); //创建用户
void change(linklist1 head); //修改密码
void output1(linklist1 head);
int main()
{
int select ;
FILE *fp ;
linklist1 head ,p2 ,pre ;
head = (linklist1)malloc(M);
head->next1 = NULL;
pre = (linklist1)malloc(M);
pre = head ;
if((fp = fopen("user.txt","r"))==NULL)
{
printf("打开失败,系统自动退出\n");
exit(0);
}
while(1)
{
p2 = (linklist1)malloc(M);
fscanf(fp,"%s %s",p2->id ,p2->password );
if(feof(fp))
break;
pre->next1 = p2; //尾插法
pre = p2;
}
pre->next1=NULL;
fclose(fp);
while(1)
{
printf("===================================\n");
printf(" 图书管理系统\n");
printf(" 1: 用户登录\n");
printf(" 2: 注册新用户\n");
printf(" 3: 修改密码\n");
printf(" 0: 退出系统\n");
printf("===================================\n");
printf("请输入菜单项:\n\n");
scanf("%d",&select);
printf("\n");
switch(select)
{
case 1:
login(head);
break;
case 2:
creat(head);
output1(head);
break;
case 3:
change(head);
output1(head);
break;
case 0:
exit (0);
}
}
return 0;
}
void change(linklist1 head)
{
linklist1 pre=head,p;
int flag=0;
char m[20];
p=(linklist1)malloc(M);
printf("请输入修改用户名\n");
printf("\n");
scanf("%s",p->id);
printf("\n");
while(pre->next1)
{
if(strcmp(pre->next1->id,p->id)==0)
{
flag=1;
break;
}
pre=pre->next1;
}
if(flag==0)
{
printf("用户不存在\n");
}
else
{
printf("请输入密码:\n");
printf("\n");
scanf("%s",m);
printf("\n");
if(strcmp(pre->next1->password,m)==0)
{
printf("请输入修改密码:\n");
printf("\n");
scanf("%s",p->password);
printf("\n");
p->next1=pre->next1->next1;
pre->next1=p;
printf("修改成功\n");
}
else
printf("密码错误\n");
}
printf("\n");
}
void creat(linklist1 head)
{
linklist1 pre = head,p;
int flag=0;
p=(linklist1)malloc(M);
printf("请输入用户名称:\n");
printf("\n");
scanf("%s",p->id)