图书管理系统
系统的找回密码、修改密码、删除、排序还在编写,不能使用
其他可以正常使用,大家也可以借鉴我的代码用于你的学习,希望对于爱学习的小猿们有所帮助
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#define N 5 //宏定义N用于验证码函数
typedef struct userdata //登陆者资料结构
{
char account_number[20]; //账号
char password[20]; //密码
char nickname[20]; //昵称
}user;
user q;
struct Book
{
char number[20]; //书籍登录号
char name[20]; //书名
char author[20]; //作者名
char type[20]; //类型
char publish[20]; //出版单位
char time[20]; //出版时间
char price[20]; //价格
char num[20]; //数量*/
int x;
struct Book *next;
};
#define B sizeof(struct userdata) //宏定义B为结构体的大小
#define M sizeof(struct Book) //宏定义M为链表的大小
typedef struct Book book,*booka; //重定义结点信息
//int m=0; //程序中所用到所有外部变量
void HideCursor(); //隐藏光标
void toxy(int x, int y); //将光标移动到x,y处
void menu(); //主菜单
//================================
void adduser(); //登录功能
void choice_menu(); //选择菜单
void login_options(booka headb); //登录选项
void lookup(); //查找功能
void search_interface(); //查找界面
void find_option(booka heada); //查找选项
void save_book(booka p); //保存图书
void search1(booka); //按书号查找
void search2(booka); //按书名查找
void search3(booka); //按作者查找
void search4(booka); //按出版单位查找
void search5(booka); //按出版时间查找
void search6(booka); //按价格查找
void wrong_password(); //密码错误
void verification_code(); //验证码
void exi(); //退出程序
void developer_information(); //开发者信息
void menu1(); //主菜单1
//================================
void registe(); //注册功能
void storage(); //账号存储到磁盘
void find(); //找回密码
//================================
booka creatbook(); //创建链表
void add_book(); //添加图书
void modify_book(booka); //修改图书
void delet_book(booka); //删除图书
//主函数
int main()
{
while(1)
{
int select;
system("color 03");
HideCursor();
menu();
toxy(2,19);
printf("请输入:");
scanf("%d",&select);
switch(select)
{
case 1:adduser();break;
case 2:registe();break;
case 3:break;
case 4:break;
case 5:developer_information();break;
case 6:exi();break;
}
}
}
//退出程序
void exi()
{
system("cls");
toxy(50,3);
printf("欢迎再次使用本系统!");
toxy(2,4);
exit(0);
}
//开发者信息
void developer_information()
{
system("cls");
toxy(50,3);
printf("专业: 软件工程");
toxy(50,5);
printf("班级: 2003班");
toxy(50,7);
printf("开发者: ***");
toxy(2,9);
printf("按0返回:");
int m;
scanf("%d",&m);
switch(m)
{
case 0:menu1();break;
}
}
//主菜单1
void menu1()
{
system("cls");
while(1)
{
int select;
system("color 03");
HideCursor();
menu();
toxy(2,19);
printf("请输入:");
scanf("%d",&select);
switch(select)
{
case 1:adduser();break;
case 2:registe();break;
case 3:break;
case 4:break;
case 5:developer_information();break;
case 6:exi();break;
}
}
}
//隐藏光标
void HideCursor()
{
CONSOLE_CURSOR_INFO cursor_info = {1, 0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
//将光标移动到x,y处
void toxy(int x, int y)
{
COORD pos = { x , y };
HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(Out, pos);
}
//主菜单
void menu()
{
toxy(48,2);
printf("***本系统有***制作***");
toxy(53,5);
printf(" 图书管理系统");
toxy(48,8);
printf("| 1.登录 |");
toxy(48,10);
printf("| 2.注册账号 |");
toxy(48,12);
printf("| 3.找回密码 |");
toxy(48,14);
printf("| 4.修改密码 |");
toxy(48,16);
printf("| 5.开发者信息 |");
toxy(48,18);
printf("| 6.退出软件 |");
}
//=========================================================
//登录功能
void adduser()
{
user a,b;
FILE *fp;
fp=fopen("用户注册账号.dat","rb");
fread(&a,B,1,fp);
booka head;
head=NULL;
int flag=0;
char str[20],stra[20];
toxy(40,22);
printf("请输入登录账号(账号长度不得超过8位):");
scanf("%s",str);
while(1)
{
if(strcmp(a.account_number,str)!=0)
{
if(!feof(fp))
{
fread(&a,B,1,fp);
}
else
break;
}
else
{
flag=1;
break;
}
}
if(!flag)
{
toxy(40,24);
printf("此账号还没注册!");
toxy(2,25);
printf("武同学请你先注册账号,然后再使用哈!");
toxy(2,26);
system("pause");
system("cls");
menu();
registe();
menu();
adduser();
}
toxy(40,24);
printf("请输入密码(密码长度不得超过8位):");
scanf("%s",stra);
if(strcmp(a.password,stra)==0)
{
flag=2;
}
if(flag==1)
{
toxy(40,26);
printf("密码错误!");
fclose(fp);
toxy(40,28);
system("pause");
wrong_password();
}
else if(flag==2)
{
toxy(40,26);
printf("请输入验证码:");
srand((unsigned)time(NULL));
int c;
c=rand()%10;
printf("%d",c);
int d;
toxy(60,26);
scanf("%d",&d);
if(c!=d)
{
toxy(65,25);
printf("---------------");
toxy(65,26);
printf("| 验证码错误!|");
toxy(65,27);
printf("---------------");
toxy(2,28);
system("pause");
verification_code();
}
else
{
toxy(65,25);
printf("---------------");
toxy(65,26);
printf("| 验证码正确!|");
toxy(65,27);
printf("---------------");
toxy(2,28);
system("pause");
while(1)
{
int select;
system("cls");
choice_menu();
toxy(2,19);
printf("请输入:");
scanf("%d",&select);
head=creatbook();
switch(select)
{
case 1:add_book();head=creatbook();choice_menu();login_options(head);break;
case 2:search_interface();find_option(head);break;
case 3:modify_book(head);break;
case 4:/*delet_book(head);*/break;
case 5:break;
case 6:menu();menu1();break;
}
}
}
}
}
//密码错误
void wrong_password()
{
system("cls");
menu();
user a,b;
FILE *fp;
fp=fopen("用户注册账号.dat","r");
fread(&a,B,1,fp);
int flag=0;
char str[20],stra[20];
char code[N+1],strb[N+1];
toxy(40,22);
printf("请重新输入密码(密码长度不得超过8位):");
scanf("%s",str);
while(1)
{
if(strcmp(a.account_number,str)!=0)
{
if(!feof(fp))
{
fread(&a,B,1,fp);
}
else
break;
}
else
{
toxy(40,24);
printf("密码正确!");
flag=1;
break;
}
}
if(flag==1)
{
toxy(40,26);
printf("请输入以下为你量身定做的验证码吧:");
int c;
c=rand()%10;
printf("%d",c);
int d;
toxy(80,26);
scanf("%d",&d);
if(c!=d)
{
toxy(85,25);
printf("---------------");
toxy(85,26);
printf("| 验证码错误!|");
toxy(85,27);
printf("---------------");
toxy(2,29);
system("pause");
verification_code();
}
else
{
toxy(85,25);
printf("---------------");
toxy(85,26);
printf("| 验证码正确!|");
toxy(85,27);
printf("---------------");
toxy(2,29);
system("pause");
/*` while(1)
{
int select;
system("cls");
choice_menu();
toxy(2,19);
printf("请输入:");
scanf("%d",&select);
switch(select)
{
case 1:head=creatbook();system("cls");choice_menu();login_options(head);break;
case 2:search_interface();find_option(head);break;
case 3:break;
case 4:break;
case 5:break;
case 6:break;
}
}*/
}
}
else if(flag==0)
{
toxy(40,30);
printf("密码错误!");
wrong_password();
}
}
//验证码
void verification_code()
{
system("cls");
menu();
toxy(40,22);
printf("请重新输入验证码:");
srand((unsigned)time(NULL));
int a;
a=rand()%10;
printf("%d",a);
int b;
toxy(60,22);
scanf("%d",&b);
if(a!=b)
{
toxy(65,21);
printf("---------------");
toxy(65,22);
printf("| 验证码错误!|");
toxy(65,23);
printf("---------------");
toxy(2,25);
system("pause");
verification_code();
}
else
{
toxy(65,21);
printf("---------------");
toxy(65,22);
printf("| 验证码正确!|");
toxy(65,23);
printf("---------------");
toxy(2,25);
system("pause");
while(1)
{
int select;
system("cls");
choice_menu();
toxy(2,19);
printf("请输入:");
scanf("%d",&select);
switch(select)
{
case 1:break;
case 2:creatbook();break;
case 3:break;
case 4:break;
case 5:break;
case 6:break;
}
}
}
}
//选择菜单
void choice_menu()
{
system("cls");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
toxy(50,2);//将光标移动到(50,5)坐标处
printf("***本系统有***制作***");
toxy(56,5);
printf(" 图书管理系统");
toxy(48,8);
printf("| 添加 请按【1】 |");
toxy(48,10);
printf("| 查找 请按【2】 |");
toxy(48,12);
printf("| 修改 请按【3】 |");
toxy(48,14);
printf("| 删除 请按【4】 |");
toxy(48,16);
printf("| 排序 请按【5】 |");
toxy(48,18);
printf("| 返回 请按【6】 |");
}
//选择选项
void login_options(booka headb)
{
booka head;
head=headb;
while(1)
{
int select;
toxy(2,19);
printf("请输入:");
scanf("%d",&select);
switch(select)
{
case 1:add_book();choice_menu();login_options(head);break;
case 2:search_interface();find_option(head);break;
case 3:modify_book(head);break;
case 4:break;
case 5:break;
case 6:menu();menu1();break;
}
}
}
//查找界面
void search_interface()
{
system("cls");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
toxy(54,2);
printf("***本系统由***制作***");
toxy(58,5);
printf(" 图书管理系统");
toxy(46,8);
printf("| 按书号查找 请按【1】 |");
toxy(46,10);
printf("| 按书名查找 请按【2】 |");
toxy(46,12);
printf("| 按作者查找 请按【3】 |");
toxy(46,14);
printf("| 按图书类型查找 请按【4】 |");
toxy(46,16);
printf("| 按出版单位查找 请按【5】 |");
toxy(46,18);
printf("| 按出版时间查找 请按【6】 |");
toxy(46,20);
printf("| 按出版价格查找 请按【7】 |");
toxy(46,22);
printf("| 按出版数量查找 请按【8】 |");
toxy(46,24);
printf("| 返回 请按【9】 |");
}
//查找选项
void find_option(booka heada)
{
booka head;
head=heada;
while(1)
{
int select;
toxy(2,26);
printf("请输入:");
scanf("%d",&select);
switch(select)
{
case 1:search1(head);break;
case 2:search2(head);break;
case 3:search3(head);break;
case 4:search4(head);break;
case 5:search5(head);break;
case 6:search6(head);break;
case 7:search7(head);break;
case 8:search7(head);break;
case 9:choice_menu();login_options(head);break;
}
}
}
//按书号查找
void search1(booka head)
{
system("cls");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
booka p;
char number[20];
toxy(2,2);
printf("请输入你要搜索的书号:");
scanf("%s",number);
toxy(2,4);
printf("正在搜索...");
Sleep(500);
system("cls");
p=head->next;
while(p!=NULL)
{
if(strcmp(p->number,number)==0)
{
toxy(8,3);
printf("********************************************图书信息*************************************************");
toxy(8,5);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,7);
printf("登录号 书名 作者名 类型 出版单位 出版时间 价格 数量");
toxy(8,9);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,11);
printf("%-14s%-14s%-14s%-14s%-14s%-14s%-14s%-14s",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
toxy(2,13);
system("pause");
toxy(46,15);
printf("-------------------------");
toxy(46,16);
printf("| |");
toxy(46,17);
printf("| 查找成功,离开请按 1!|");
toxy(46,18);
printf("| |");
toxy(46,19);
printf("-------------------------");
int n;
toxy(2,21);
printf("请输入:");
scanf("%d",&n);
if(n==1)
{
search_interface();
find_option(head);
}
}
else
{
p=p->next;
}
}
if(p==NULL)
{
toxy(46,10);
printf("-------------------------");
toxy(46,11);
printf("| |");
toxy(46,12);
printf("| 输入错误,离开请按 1!|");
toxy(46,13);
printf("| |");
toxy(46,14);
printf("-------------------------");
int m;
toxy(2,21);
printf("请输入:");
scanf("%d",&m);
if(m==1)
{
search_interface();
find_option(head);
}
}
}
//按书名查找
void search2(booka head)
{
system("cls");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
booka p;
char name[20];
toxy(2,2);
printf("请输入你要搜索的书名:");
scanf("%s",name);
toxy(2,4);
printf("正在搜索...");
Sleep(500);
system("cls");
p=head->next;
while(p!=NULL)
{
if(strcmp(p->name,name)==0)
{
toxy(8,3);
printf("********************************************图书信息*************************************************");
toxy(8,5);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,7);
printf("登录号 书名 作者名 类型 出版单位 出版时间 价格 数量");
toxy(8,9);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,11);
printf("%-14s%-14s%-14s%-14s%-14s%-14s%-14s%-14s",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
toxy(2,13);
system("pause");
toxy(46,15);
printf("-------------------------");
toxy(46,16);
printf("| |");
toxy(46,17);
printf("| 查找成功,离开请按 1!|");
toxy(46,18);
printf("| |");
toxy(46,19);
printf("-------------------------");
int n;
toxy(2,21);
printf("请输入:");
scanf("%d",&n);
if(n==1)
{
search_interface();
find_option(head);
}
}
else
{
p=p->next;
}
}
if(p==NULL)
{
toxy(46,10);
printf("-------------------------");
toxy(46,11);
printf("| |");
toxy(46,12);
printf("| 输入错误,离开请按 1!|");
toxy(46,13);
printf("| |");
toxy(46,14);
printf("-------------------------");
int m;
toxy(2,21);
printf("请输入:");
scanf("%d",&m);
if(m==1)
{
search_interface();
find_option(head);
}
}
}
//按作者查找
void search3(booka head)
{
system("cls");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
booka p;
char author[20];
toxy(2,2);
printf("请输入你要搜索的作者名:");
scanf("%s",author);
toxy(2,4);
printf("正在搜索...");
Sleep(500);
system("cls");
p=head->next;
while(p!=NULL)
{
if(strcmp(p->author,author)==0)
{
toxy(8,3);
printf("********************************************图书信息*************************************************");
toxy(8,5);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,7);
printf("登录号 书名 作者名 类型 出版单位 出版时间 价格 数量");
toxy(8,9);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,11);
printf("%-14s%-14s%-14s%-14s%-14s%-14s%-14s%-14s",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
toxy(2,13);
system("pause");
toxy(46,15);
printf("-------------------------");
toxy(46,16);
printf("| |");
toxy(46,17);
printf("| 查找成功,离开请按 1!|");
toxy(46,18);
printf("| |");
toxy(46,19);
printf("-------------------------");
int n;
toxy(2,21);
printf("请输入:");
scanf("%d",&n);
if(n==1)
{
search_interface();
find_option(head);
}
}
else
{
p=p->next;
}
}
if(p==NULL)
{
toxy(46,10);
printf("-------------------------");
toxy(46,11);
printf("| |");
toxy(46,12);
printf("| 输入错误,离开请按 1!|");
toxy(46,13);
printf("| |");
toxy(46,14);
printf("-------------------------");
int m;
toxy(2,21);
printf("请输入:");
scanf("%d",&m);
if(m==1)
{
search_interface();
find_option(head);
}
}
}
//按图书类型查找
void search4(booka head)
{
system("cls");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
booka p;
char type[20];
toxy(2,2);
printf("请输入你要搜索的图书类型:");
scanf("%s",type);
toxy(2,4);
printf("正在搜索...");
Sleep(500);
system("cls");
p=head->next;
while(p!=NULL)
{
if(strcmp(p->type,type)==0)
{
toxy(8,3);
printf("********************************************图书信息*************************************************");
toxy(8,5);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,7);
printf("登录号 书名 作者名 类型 出版单位 出版时间 价格 数量");
toxy(8,9);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,11);
printf("%-14s%-14s%-14s%-14s%-14s%-14s%-14s%-14s",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
toxy(2,13);
system("pause");
toxy(46,15);
printf("-------------------------");
toxy(46,16);
printf("| |");
toxy(46,17);
printf("| 查找成功,离开请按 1!|");
toxy(46,18);
printf("| |");
toxy(46,19);
printf("-------------------------");
int n;
toxy(2,21);
printf("请输入:");
scanf("%d",&n);
if(n==1)
{
search_interface();
find_option(head);
}
}
else
{
p=p->next;
}
}
if(p==NULL)
{
toxy(46,10);
printf("-------------------------");
toxy(46,11);
printf("| |");
toxy(46,12);
printf("| 输入错误,离开请按 1!|");
toxy(46,13);
printf("| |");
toxy(46,14);
printf("-------------------------");
int m;
toxy(2,21);
printf("请输入:");
scanf("%d",&m);
if(m==1)
{
search_interface();
find_option(head);
}
}
}
//按出版单位查找
void search5(booka head)
{
system("cls");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
booka p;
char publish[20];
toxy(2,2);
printf("请输入你要搜索的出版单位:");
scanf("%s",publish);
toxy(2,4);
printf("正在搜索...");
Sleep(500);
system("cls");
p=head->next;
while(p!=NULL)
{
if(strcmp(p->publish,publish)==0)
{
toxy(8,3);
printf("********************************************图书信息*************************************************");
toxy(8,5);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,7);
printf("登录号 书名 作者名 类型 出版单位 出版时间 价格 数量");
toxy(8,9);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,11);
printf("%-14s%-14s%-14s%-14s%-14s%-14s%-14s%-14s",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
toxy(2,13);
system("pause");
toxy(46,15);
printf("-------------------------");
toxy(46,16);
printf("| |");
toxy(46,17);
printf("| 查找成功,离开请按 1!|");
toxy(46,18);
printf("| |");
toxy(46,19);
printf("-------------------------");
int n;
toxy(2,21);
printf("请输入:");
scanf("%d",&n);
if(n==1)
{
search_interface();
find_option(head);
}
}
else
{
p=p->next;
}
}
if(p==NULL)
{
toxy(46,10);
printf("-------------------------");
toxy(46,11);
printf("| |");
toxy(46,12);
printf("| 输入错误,离开请按 1!|");
toxy(46,13);
printf("| |");
toxy(46,14);
printf("-------------------------");
int m;
toxy(2,21);
printf("请输入:");
scanf("%d",&m);
if(m==1)
{
search_interface();
find_option(head);
}
}
}
//按出版时间查找
void search6(booka head)
{
system("cls");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
booka p;
char time[20];
toxy(2,2);
printf("请输入你要搜索的出版时间:");
scanf("%s",time);
toxy(2,4);
printf("正在搜索...");
Sleep(500);
system("cls");
p=head->next;
while(p!=NULL)
{
if(strcmp(p->time,time)==0)
{
toxy(8,3);
printf("********************************************图书信息*************************************************");
toxy(8,5);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,7);
printf("登录号 书名 作者名 类型 出版单位 出版时间 价格 数量");
toxy(8,9);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,11);
printf("%-14s%-14s%-14s%-14s%-14s%-14s%-14s%-14s",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
toxy(2,13);
system("pause");
toxy(46,15);
printf("-------------------------");
toxy(46,16);
printf("| |");
toxy(46,17);
printf("| 查找成功,离开请按 1!|");
toxy(46,18);
printf("| |");
toxy(46,19);
printf("-------------------------");
int n;
toxy(2,21);
printf("请输入:");
scanf("%d",&n);
if(n==1)
{
search_interface();
find_option(head);
}
}
else
{
p=p->next;
}
}
if(p==NULL)
{
toxy(46,10);
printf("-------------------------");
toxy(46,11);
printf("| |");
toxy(46,12);
printf("| 输入错误,离开请按 1!|");
toxy(46,13);
printf("| |");
toxy(46,14);
printf("-------------------------");
int m;
toxy(2,21);
printf("请输入:");
scanf("%d",&m);
if(m==1)
{
search_interface();
find_option(head);
}
}
}
//按出版价格查找
void search7(booka head)
{
system("cls");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
booka p;
char price[20];
toxy(2,2);
printf("请输入你要搜索的图书价格:");
scanf("%s",price);
toxy(2,4);
printf("正在搜索...");
Sleep(500);
system("cls");
p=head->next;
while(p!=NULL)
{
if(strcmp(p->price,price)==0)
{
toxy(8,3);
printf("********************************************图书信息*************************************************");
toxy(8,5);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,7);
printf("登录号 书名 作者名 类型 出版单位 出版时间 价格 数量");
toxy(8,9);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,11);
printf("%-14s%-14s%-14s%-14s%-14s%-14s%-14s%-14s",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
toxy(2,13);
system("pause");
toxy(46,15);
printf("-------------------------");
toxy(46,16);
printf("| |");
toxy(46,17);
printf("| 查找成功,离开请按 1!|");
toxy(46,18);
printf("| |");
toxy(46,19);
printf("-------------------------");
int n;
toxy(2,21);
printf("请输入:");
scanf("%d",&n);
if(n==1)
{
search_interface();
find_option(head);
}
}
else
{
p=p->next;
}
}
if(p==NULL)
{
toxy(46,10);
printf("-------------------------");
toxy(46,11);
printf("| |");
toxy(46,12);
printf("| 输入错误,离开请按 1!|");
toxy(46,13);
printf("| |");
toxy(46,14);
printf("-------------------------");
int m;
toxy(2,21);
printf("请输入:");
scanf("%d",&m);
if(m==1)
{
search_interface();
find_option(head);
}
}
}
//按出版数量查找
void search8(booka head)
{
system("cls");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
booka p;
char num[20];
toxy(2,2);
printf("请输入你要搜索的出版数量:");
scanf("%s",num);
toxy(2,4);
printf("正在搜索...");
Sleep(500);
system("cls");
p=head->next;
while(p!=NULL)
{
if(strcmp(p->num,num)==0)
{
toxy(8,3);
printf("********************************************图书信息*************************************************");
toxy(8,5);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,7);
printf("登录号 书名 作者名 类型 出版单位 出版时间 价格 数量");
toxy(8,9);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,11);
printf("%-14s%-14s%-14s%-14s%-14s%-14s%-14s%-14s",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
toxy(2,13);
system("pause");
toxy(46,15);
printf("-------------------------");
toxy(46,16);
printf("| |");
toxy(46,17);
printf("| 查找成功,离开请按 1!|");
toxy(46,18);
printf("| |");
toxy(46,19);
printf("-------------------------");
int n;
toxy(2,21);
printf("请输入:");
scanf("%d",&n);
if(n==1)
{
search_interface();
find_option(head);
}
}
else
{
p=p->next;
}
}
if(p==NULL)
{
toxy(46,10);
printf("-------------------------");
toxy(46,11);
printf("| |");
toxy(46,12);
printf("| 输入错误,离开请按 1!|");
toxy(46,13);
printf("| |");
toxy(46,14);
printf("-------------------------");
int m;
toxy(2,21);
printf("请输入:");
scanf("%d",&m);
if(m==1)
{
search_interface();
find_option(head);
}
}
}
//=============================================================
//=============================================================
//注册功能
void registe()
{
user a,b;
FILE *fp;
int flag=0;
fp=fopen("用户注册账号.dat","rb");
fread(&a,B,1,fp);
char str[20],stra[20];
toxy(40,22);
printf("请输入账号(账号长度不得超过8位):");
scanf("%s",str);
strcpy(b.account_number,str);
while(1)
{
if(strcmp(a.account_number,b.account_number)!=0)
{
if(!feof(fp))
{
fread(&a,B,1,fp);
}
else
break;
}
else
{
toxy(2,23);
printf("该用户名已存在!请重新注册!");
fclose(fp);
flag=1;
break;
}
}
if(flag==1)
{
toxy(2,24);
system("pause");
system("cls");
menu();
registe();
return;
}
toxy(40,24);
printf("请输入密码(密码长度不得超过8位):");
scanf("%s",b.password);
toxy(40,26);
printf("请再输入一次密码:");
scanf("%s",stra);
if(strcmp(b.password,stra)!=0)
{
toxy(40,28);
printf("两次密码不同,请重新申请!");
toxy(2,29);
system("pause");
system("cls");
menu();
registe();
}
else
{
toxy(40,28);
printf("请输入昵称:");
scanf("%s",b.nickname);getchar();
toxy(2,30);
printf("恭喜!武同学为你申请账号成功啦,请继续你的操作吧!");
toxy(1,31);
system("pause");
system("cls");
q=b;
storage();
}
}
//账号存储到磁盘
void storage()
{
FILE *fp;
if((fp=fopen("用户注册账号.dat","wb"))==NULL)
{
printf("文件打开失败!");
return;
}
fwrite(&q,B,1,fp);
fclose(fp);
}
//=================================================================
//添加图书
void add_book()
{
FILE *fp;
if((fp=fopen("图书信息.dat","w"))==NULL)
{
printf("打开文件失败!");
exit(0);
}
system("cls");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
booka head,p,q;
head=(booka)malloc(sizeof(book));
head->next=NULL;
q=head;
p=head->next;
while(1)
{
p=(booka)malloc(sizeof(book));
toxy(45,8);
printf("请输入图书登录号(小于10位数):");
scanf("%s",p->number);getchar();
fprintf(fp,"%s ",p->number);
toxy(45,10);
printf("请输入书名(小于10位数):");
scanf("%s",p->name);getchar();
fprintf(fp,"%s ",p->name);
toxy(45,12);
printf("请输入作者名(小于10位数):");
scanf("%s",p->author);getchar();
fprintf(fp,"%s ",p->author);
toxy(45,14);
printf("请输入图书类别(小于10位数):");
scanf("%s",p->type);getchar();
fprintf(fp,"%s ",p->type);
toxy(45,16);
printf("请输入图书出版单位(小于10位数):");
scanf("%s",p->publish);getchar();
fprintf(fp,"%s ",p->publish);
toxy(45,18);
printf("请输入图书出版时间(小于10位数):");
scanf("%s",p->time);getchar();
fprintf(fp,"%s ",p->time);
toxy(45,20);
printf("请输入图书价格(小于10位数):");
scanf("%s",p->price);getchar();
fprintf(fp,"%s ",p->price);
toxy(45,22);
printf("请输入图书价格(小于10位数):");
scanf("%s",p->num);getchar();
fprintf(fp,"%s ",p->num);
toxy(48,24);
printf("正在保存....");
Sleep(500);
system("cls");
toxy(46,8);
printf("-------------------------");
toxy(46,9);
printf("| |");
toxy(46,10);
printf("| 保存成功!是否继续? |");
toxy(46,12);
printf("| 1.是 2.否 |");
toxy(46,13);
printf("| |");
toxy(46,14);
printf("-------------------------");
p->next=NULL;
q->next=p;
q=p;
char ch;
toxy(2,16);
printf("请输入:");
scanf("%c",&ch);
if(ch=='2')
break;
else
system("cls");
}
fclose(fp);
}
//从文件中将数据读入链表
booka creatbook()
{
FILE *fp;
if((fp=fopen("图书信息.dat","r"))==NULL)
{
printf("打开文件失败!");
exit(0);
}
booka head,p,q;
book temp;
head=(booka)malloc(sizeof(book));
head->next=NULL;
q=head;
p=head->next;
while(fscanf(fp,"%s %s %s %s %s %s %s %s",&temp.number,&temp.name, &temp.author,&temp.type,&temp.publish,&temp.time,&temp.price,&temp.num)!=EOF)
{
p=(booka)malloc(sizeof(book));
strcpy(p->number,temp.number);
strcpy(p->name,temp.name);
strcpy(p->author,temp.author);
strcpy(p->type,temp.type);
strcpy(p->publish,temp.publish);
strcpy(p->time,temp.time);
strcpy(p->price,temp.price);
strcpy(p->num,temp.num);
p->next=NULL;
q->next=p;
q=p;
}
fclose(fp);
return head;
}
//修改图书
void modify_book(booka headc)
{
while(1)
{
FILE *fp;
fp=fopen("图书信息.dat","w");
if(fp==NULL)
{
printf("打开文件失败!");
exit(0);
}
system("cls");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
int j=0;
char name[20];
char cha;
char number[20];
char author[20];
char type[20];
char publish[20];
char time[20];
char price[20];
char num[20];
char name1[20];
booka head,p;
head=headc;
toxy(2,3);
printf("请输入你要修改的图书书名:");
scanf("%s",name1);
toxy(2,4);
printf("正在查找...");
Sleep(500);
p=head->next;
while(p!=NULL)
{
if(strcmp(p->name,name1)==0)
{
system("cls");
toxy(8,3);
printf("********************************************图书信息*************************************************");
toxy(8,5);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,7);
printf("登录号 书名 作者名 类型 出版单位 出版时间 价格 数量");
toxy(8,9);
printf("-----------------------------------------------------------------------------------------------------");
toxy(8,11);
printf("%-14s%-14s%-14s%-14s%-14s%-14s%-14s%-14s",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
j++;
break;
}
else
{
p=p->next;
}
}
if(j==0)
{
toxy(46,7);
printf("-------------------------");
toxy(46,8);
printf("| |");
toxy(46,9);
printf("| 没有找到此书信息! |");
toxy(46,10);
printf("| |");
toxy(46,11);
printf("| 1:返回 2:重新搜索 |");
toxy(46,12);
printf("| |");
toxy(46,13);
printf("-------------------------");
while(1)
{
toxy(2,15);
printf("请输入:");
scanf("%s",&cha);
if(cha=='1')
{
choice_menu();
login_options(head);
}
else if(cha=='2')
{
break;
}
}
if(cha=='2')
continue;
}
if(p!=NULL)
{
toxy(44,16);
printf("请输入图书登录号(小于10位数):");
scanf("%s",number);getchar();strcpy(p->number,number);
fprintf(fp,"%s ",p->number);
toxy(44,18);
printf("请输入书名(小于10位数):");
scanf("%s",name);getchar();strcpy(p->name,name);
fprintf(fp,"%s ",p->name);
toxy(44,20);
printf("请输入作者名(小于10位数):");
scanf("%s",author);getchar();strcpy(p->author,author);
fprintf(fp,"%s ",p->author);
toxy(44,22);
printf("请输入图书类别(小于10位数):");
scanf("%s",type);getchar();strcpy(p->type,type);
fprintf(fp,"%s ",p->type);
toxy(44,24);
printf("请输入图书出版单位(小于10位数):");
scanf("%s",publish);getchar();strcpy(p->publish,publish);
fprintf(fp,"%s ",p->publish);
toxy(44,26);
printf("请输入图书出版时间(小于10位数):");
scanf("%s",time);getchar();strcpy(p->time,time);
fprintf(fp,"%s ",p->time);
toxy(44,28);
printf("请输入价格(小于10位数):");
scanf("%s",price);getchar();strcpy(p->price,price);
fprintf(fp,"%s ",p->price);
toxy(44,30);
printf("请输入图书数量(小于10位数):");
scanf("%s",num);getchar();strcpy(p->num,num);
fprintf(fp,"%s ",p->num);
}
toxy(2,32);
system("pause");
system("cls");
toxy(46,10);
printf("-------------------------");
toxy(46,11);
printf("| |");
toxy(46,12);
printf("| 是否确定修改! |");
toxy(46,13);
printf("| |");
toxy(46,14);
printf("| 1:是 2:否 |");
toxy(46,15);
printf("| |");
toxy(46,16);
printf("-------------------------");
while(1)
{
toxy(2,18);
printf("请输入:");
char ch;
scanf("%s",&ch);
if(ch=='1')
{
fclose(fp);
booka headd;
headd=creatbook();
choice_menu();
login_options(headd);
break;
}
else if(ch=='2')
{
booka headd;
headd=creatbook();
choice_menu();
login_options(headd);
}
}
}
}