资源描述
精品文档就在这里
-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有--------------
--------------------------------------------------------------------------------------------------------------------------------------------
图书管管理系统源代码
经过三周小学期教学,终于把任务完成了,先把成果贴在这,希望同志们提出不足之处.也希望同志们遇见这个问题后可以借鉴以下.
一定要先建立一个密码文件.
程序源代码:
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct readers_list
{
char readernum[20]; /*读者学号*/
char readername[20]; /*读者姓名*/
char readerage[10]; /*读者年龄*/
char sex[10]; /*读者性别*/
char reader1[20]; /*读者职业*/
char reader2[20];/*读者单位*/
char readertel[20];/*读者电话*/
struct readers_list * next; /*链表的指针域*/
};
struct books_list
{
char author[20]; /*作者名*/
char bookname[20]; /*书名*/
char publisher[20]; /*出版单位*/
char pbtime[15]; /*出版时间*/
char booknum[20]; /*图书编号*/
float price; /*价格*/
char classfy[20]; /*分类号*/
int num;/*图书数量*/
struct books_list * next; /*链表的指针域*/
};
struct borrow_lend_list
{
char readernum[20]; /*读者学号*/
char booknum[20]; /*图书编号*/
char borrowtime[15]; /*借书时间*/
char backtime1[15]; /*应归还时间*/
char backtime2[15]; /*实际归还时间*/
char other[20];/*备注*/
struct borrow_lend_list * next; /*链表的指针域*/
};
struct readers_list *head1;
struct books_list *head2;
struct borrow_lend_list *head3;
void save1(struct readers_list *tp);/*保存数据至读者文件*/
void save2(struct books_list *tp);/*保存数据至图书文件*/
void save3(struct borrow_lend_list *tp);
void borrow_book( );
void borrow_reader( );
struct readers_list *CreateDoc1( ); /*新建读者链表*/
struct books_list *CreateDoc2( ); /*新建图书链表*/
struct borrow_lend_list *CreateDoc3( );
void InsertDoc1( ); /*读者插入*/
void InsertDoc2( ); /*图书插入*/
void InsertDoc3( );
struct readers_list * head1DeleteDoc1(struct readers_list * head1);/*读者信息删除*/
struct books_list * head2DeleteDoc2(struct books_list * head2 );/*图书信息删除*/
struct borrow_lend_list *DeleteDoc3(struct borrow_lend_list * head3);
void search_reader(char read[20]); /*读者查询*/
void search_book(char book[20]); /*图书查询*/
void info_change1(struct readers_list * head1);/*读者修改*/
void info_change2(struct books_list * head2);/*图书修改*/
void info_change3(struct borrow_lend_list * head3);/*图书修改*/
int password( );
void changepassword( );
//*************************************************************************************************
/*保存读者数据至文件*///******************************************************************************
void save1(struct readers_list *tp)
{
struct readers_list *p;
FILE *fp;
p=tp;
fp=fopen("readerdata.txt","wb+"); /*以写方式新建并打开 data.txt文件*/
while(p != NULL)
{
fwrite(p,sizeof(struct readers_list),1,fp);
p=p->next;
}
fclose(fp);
printf("\n 已将读者数据保存到 readerdata.txt 文件\n");
}
/*保存图书数据至文件*/
void save2(struct books_list *tp)
{
struct books_list *p;
FILE *fp;
p=tp;
fp=fopen("bookdata.txt","wb+"); /*以写方式新建并打开 data.txt文件*/
while(p != NULL)
{
fwrite(p,sizeof(struct books_list),1,fp);
p=p->next;
}
fclose(fp);
printf("\n已将图书数据保存到 bookdata.txt 文件\n");
}
/*保存借/还书数据至文件*/
void save3(struct borrow_lend_list *tp)
{
struct borrow_lend_list *p;
FILE *fp;
p=tp;
fp=fopen("borrow_lenddata.txt","wb+"); /*以写方式新建并打开 data.txt文件*/
while(p != NULL)
{
fwrite(p,sizeof(struct borrow_lend_list),1,fp);
p=p->next;
}
fclose(fp);
printf("\n 已将借/换书数据保存到 borrow_lenddata.txt 文件\n");
}
//**********************************************************************************************
//**********************************************************************************************
/*录入读者信息*/
struct readers_list *CreateDoc1( )
{
/*定义结构体指针变量 s指向开辟的新结点首地址 p为中间变量*/
struct readers_list *s, *p ,*head;
char flag='Y'; /*定义flag,方便用户选择重复输入*/
int u=0;
p=NULL; head=p;
while(flag=='Y'||flag=='y')
{
s=(struct readers_list *)malloc(sizeof(struct readers_list));
if(s==NULL)
{ printf("malloc error.\n");
break;
}
printf("\n 请输入读者学号:");
fflush(stdin);
scanf("%s",s->readernum);
printf("\n 请输入读者姓名:");
fflush(stdin);
scanf("%s",s->readername);
printf("\n 请输入读者年龄:");
fflush(stdin);
scanf("%s",s->readerage);
printf("\n 请输入读者性别:");
fflush(stdin);
scanf("%s",s->sex);
printf("\n 请输入读者职业:");
fflush(stdin);
scanf("%s",s->reader1);
printf("\n 请输入读者单位:");
fflush(stdin);
scanf("%s",s->reader2);
printf("\n 请输入读者电话:");
fflush(stdin);
scanf("%s",s->readertel);
printf("\n");
s->next=NULL;
if(head== NULL) head=p=s;
else {
p->next=s;
p=s;
}
printf(" ━━━━ 添加成功!━━━━");
printf("\n 继续添加?(Y/N):");
fflush(stdin);
scanf("%c",&flag);
printf("\n");
if(flag=='N'||flag=='n')
break;
else if(flag=='Y'||flag=='y')
continue;
else {
while(1)
{
u=0;
printf("请重新选择,是否继续添加?(Y/N):");
fflush(stdin);
scanf("%c",&flag);
printf("\n");
if(flag=='N'||flag=='n')
break;
else if(flag=='Y'||flag=='y')
{
u=1;
break;
}
else continue;
}
}
if(u==1)
{
u=0;
continue;
}
else break;
}
save1(head); /*保存数据至文件*/
return(head);
}
/*录入图书信息*/
struct books_list *CreateDoc2( )
{
/*定义结构体指针变量 s指向开辟的新结点首地址 p为中间变量*/
struct books_list *s, *p ,*head;
char flag='Y'; /*定义flag,方便用户选择重复输入*/
int u=0;
p=NULL; head=p;
while(flag=='Y'||flag=='y')
{
s=(struct books_list *)malloc(sizeof(struct books_list));
if(s==NULL)
{ printf("malloc error.\n");
break;
}
printf("\n 请输入图书书号:");
fflush(stdin);
scanf("%s",s->booknum);
printf("\n 请输入图书书名:");
fflush(stdin);
scanf("%s",s->bookname);
printf("\n 请输入图书作者名:");
fflush(stdin);
scanf("%s",s->author);
printf("\n 请输入图书出版社:");
fflush(stdin);
scanf("%s",s->publisher);
printf("\n 请输入图书出版时间:");
fflush(stdin);
scanf("%s",s->pbtime);
printf("\n 请输入图书分类号:");
fflush(stdin);
scanf("%s",s->classfy);
printf("\n 请输入图书价格:");
fflush(stdin);
scanf("%f",&s->price);
printf("\n请输入图书数量:");
fflush(stdin);
scanf("%d",&s->num);
printf("\n");
s->next=NULL;
if(head== NULL) head=p=s;
else {
p->next=s;
p=s;
}
printf(" ━━━━ 添加成功!━━━━");
printf("\n 继续添加?(Y/N):");
fflush(stdin);
scanf("%c",&flag);
printf("\n");
if(flag=='N'||flag=='n')
break;
else if(flag=='Y'||flag=='y')
continue;
else {
while(1)
{
u=0;
printf("请重新选择,是否继续添加?(Y/N):");
fflush(stdin);
scanf("%c",&flag);
printf("\n");
if(flag=='N'||flag=='n')
break;
else if(flag=='Y'||flag=='y')
{
u=1;
break;
}
else continue;
}
}
if(u==1)
{
u=0;
continue;
}
else break;
}
save2(head); /*保存数据至文件*/
return(head);
}
/*录入借书信息*/
struct borrow_lend_list *CreateDoc31( )
{
/*定义结构体指针变量 s指向开辟的新结点首地址 p为中间变量*/
struct borrow_lend_list *s, *p ,*head;
struct books_list *p2;
char flag='Y'; /*定义flag,方便用户选择重复输入*/
int u=0;
p=NULL; head=p;
while(flag=='Y'||flag=='y')
{
s=(struct borrow_lend_list *)malloc(sizeof(struct borrow_lend_list));
if(s==NULL)
{ printf("malloc error.\n");
break;
}
printf("\n 请输入读者学号:");
fflush(stdin);
scanf("%s",s->readernum);
printf("\n 请输入图书编号:");
fflush(stdin);
scanf("%s",s->booknum);
printf("\n 请输入借书时间:");
fflush(stdin);
scanf("%s",s->borrowtime);
printf("\n 请输入应归还时间:");
fflush(stdin);
scanf("%s",s->backtime1);
strcpy(s->backtime2 ,"--------");
strcpy(s->other ,"--------");
printf("\n 请输入备注:");
fflush(stdin);
gets(s->other);
printf("\n");
s->next=NULL;
if(head== NULL) head=p=s;
else {
p->next=s;
p=s;
}
p2=head2;
while(p2!=NULL)
{
if(strcmp(p2->booknum,s->booknum)==0)
{
p2->num-=1;
break;
}
else p2=p2->next;
}
save2(head2);
printf(" ━━━━ 添加成功!━━━━");
printf("\n 继续添加?(Y/N):");
fflush(stdin);
scanf("%c",&flag);
printf("\n");
if(flag=='N'||flag=='n')
break;
else if(flag=='Y'||flag=='y')
continue;
else {
while(1)
{
u=0;
printf("请重新选择,是否继续添加?(Y/N):");
fflush(stdin);
scanf("%c",&flag);
printf("\n");
if(flag=='N'||flag=='n')
break;
else if(flag=='Y'||flag=='y')
{
u=1;
break;
}
else continue;
}
}
if(u==1)
{
u=0;
continue;
}
else break;
}
save3(head); /*保存数据至文件*/
return(head);
}
/*录入还书信息*/
struct borrow_lend_list *CreateDoc32( )
{
/*定义结构体指针变量 s指向开辟的新结点首地址 p为中间变量*/
struct borrow_lend_list *s, *p ;
struct books_list *p2;
char flag='Y'; /*定义flag,方便用户选择重复输入*/
int u=0;
while(flag=='Y'||flag=='y')
{
s=(struct borrow_lend_list *)malloc(sizeof(struct borrow_lend_list));
printf("\n 请输入读者学号:");
fflush(stdin);
scanf("%s",s->readernum);
printf("\n 请输入图书编号:");
fflush(stdin);
scanf("%s",s->booknum);
printf("\n 请输入实际归还时间:");
fflush(stdin);
gets(s->backtime2);
printf("\n 请输入备注:");
fflush(stdin);
gets(s->other);
printf("\n");
p2=head2;
while(p2!=NULL)
{
if(strcmp(p2->booknum,s->booknum)==0)
{
p2->num+=1;
break;
}
else p2=p2->next;
}
save2(head2);
p=head3;
while(p!=NULL)
{
if(strcmp(p->booknum,s->booknum)==0&&strcmp(p->booknum,s->booknum)==0)
{
strcpy(p->backtime2,s->backtime2);
strcpy(p->other,s->other);
break;
}
else p=p->next;
}
save3(head3);
printf(" ━━━━ 添加成功!━━━━");
printf("\n 继续添加?(Y/N):");
fflush(stdin);
scanf("%c",&flag);
printf("\n");
if(flag=='N'||flag=='n')
break;
else if(flag=='Y'||flag=='y')
continue;
else {
while(1)
{
u=0;
printf("请重新选择,是否继续添加?(Y/N):");
fflush(stdin);
scanf("%c",&flag);
printf("\n");
if(flag=='N'||flag=='n')
break;
else if(flag=='Y'||flag=='y')
{
u=1;
break;
}
else continue;
}
}
if(u==1)
{
u=0;
continue;
}
else break;
}
save3(head3); /*保存数据至文件*/
return(head3);
}
//*****************************************************************************************
//*****************************************************************************************
/*插入读者信息*/
void InsertDoc1( )
{
struct readers_list *s, *p, *u,*p1;
char flag='Y';
int w,h,t=0,k=0;
while(flag=='Y'||flag=='y')
{
h=0;
s=(struct readers_list *)malloc(sizeof(struct readers_list));
printf("\n 请输入读者学号:");
fflush(stdin);
scanf("%s",s->readernum);
p1=head1;
while(p1!=NULL)
{
if(strcmp(p1->readernum,s->readernum)==0)
{
h=1;
printf("\n 已有本读者信息!");
if(t!=0) save1(head1); /*保存数据至文件*/
break;
}
p1=p1->next;
}
if(h==1) break;
printf("\n 请输入读者姓名:");
fflush(stdin);
scanf("%s",s->readername);
printf("\n 请输入读者年龄:");
fflush(stdin);
scanf("%s",s->readerage);
printf("\n 请输入读者性别:");
fflush(stdin);
scanf("%s",s->sex);
printf("\n 请输入读者职业:");
fflush(stdin);
scanf("%s",s->reader1);
printf("\n 请输入读者单位:");
fflush(stdin);
scanf("%s",s->reader2);
printf("\n 请输入读者电话:");
fflush(stdin);
scanf("%s",s->readertel);
printf("\n");
s->next=NULL;
p=head1;
w=0;
while(p->next != NULL)
{
u=p->next;
if(strcmp(s->readernum,p->readernum)>0&&strcmp(s->readernum,u->readernum)<0)
{
w=1;
p->next=s;
s->next=u;
break;
}
else
p=p->next;
}
if(w==0&&strcmp(s->readernum,p->readernum)>0)
p->next=s;
else
if(w==0&&strcmp(s->readernum,head1->readernum)<0)
{
s->next=head1;
head1=s;
}
t++;
printf(" ━━━━ 插入成功!━━━━");
printf("\n 继续添加?(Y/N):");
fflush(stdin);
scanf("%c",&flag);
printf("\n");
if(flag=='N'||flag=='n')
{
save1(head1); /*保存数据至文件*/
break;
}
else if(flag=='Y'||flag=='y')
continue;
else {
while(1)
{
k=0;
printf("请重新选择,是否继续添加?(Y/N):");
fflush(stdin);
scanf("%c",&flag);
printf("\n");
if(flag=='N'||flag=='n')
break;
else if(flag=='Y'||flag=='y')
{
k=1;
break;
}
else continue;
}
}
if(k==1)
{
k=0;
continue;
}
else break;
}
save1(head1);
return;
}
/*插入图书信息*/
void InsertDoc2( )
{
struct books_list *s, *p, *u,*p2;
char flag='Y';
int w,h,t=0,k=0;
while(flag=='Y'||flag=='y')
{
h=0;
s=(struct books_list *)malloc(sizeof(struct books_list));
printf("\n 请输入图书书号:");
fflush(stdin);
scanf("%s",s->booknum);
p2=head2;
while(p2 !=NULL)
{
if(strcmp(p2->booknum,s->booknum)==0)
{
h=1;
printf("\n 已有本图书的信息!");
if(t!=0) save2(head2); /*保存数据至文件*/
break;
}
p2=p2->next;
}
if(h==1) break;
printf("\n 请输入图书书名:");
fflush(stdin);
scanf("%s",s->bookname);
printf("\n 请输入图书作者名:");
fflush(stdin);
scanf("%s",s->author);
printf("\n 请输入图书出版社:");
fflush(stdin);
scanf("%s",s->publisher);
printf("\n 请输入图书出版时间:");
fflush(stdin);
scanf("%s",s->pbtime);
printf("\n 请输入图书分类号:");
fflush(stdin);
scanf("%s",s->classfy);
printf("\n 请输入图书价格:");
fflush(stdin);
scanf("%f",&s->price);
printf("\n请输入图书数量:");
fflush(stdin);
scanf("%d",&s->num);
printf("\n");
s->next=NULL;
p=head2;
w=0;
while(p->next != NULL)
{
u=p->next;
if(strcmp(s->booknum,p->booknum)>0&&strcmp(s->booknum,u->booknum)<0)
{
w=1;
p->next=s;
s->next=u;
break;
}
else
p=p->next;
}
if(w==0&&strcmp(s->booknum,p->booknum)>0)
p->next=s;
else
if(w==0&&strcmp(s->booknum,head2->booknum)<0)
{
s->next=head2;
head2=s;
}
t++;
printf(" ━━━━ 插入成功!━━━━");
printf("\n 继续添加?(Y/N):");
fflush(stdin);
scanf("%c",&flag);
printf("\n");
if(flag=='N'||flag=='n')
{
save2(head2); /*保存数据至文件*/
break;
}
else if(flag=='Y'||flag=='y')
continue;
else {
while(1)
{
k=0;
printf("请重新选择,是否继续添加?(Y/N):");
fflush(stdin);
scanf("%c",&flag);
printf("\n");
if(flag=='N'||flag=='n')
break;
else if(flag=='Y'||flag=='y')
{
k=1;
break;
}
else continue;
}
}
if(k==1)
{
k=0;
continue;
}
else break;
}
save2(head2);
return;
}
/*插入借/还书信息*/
void InsertDoc3( )
{
struct borrow_lend_list *s, *p, *u;
char flag='Y';
int w,h,k=0;
while(flag=='Y'||flag=='y')
{
h=0;
s=(struct borrow_lend_list *)malloc(sizeof(struct borrow_lend_list));
printf("\n 请输入读者学号:");
fflush(stdin);
scanf("%s",s->readernum);
printf("\n 请输入图书编号:");
fflush(stdin);
scanf("%s",s->booknum);
printf("\n 请输入借书时间:");
fflush(stdin);
scanf("%s",s->borrowtime);
printf("\n 请输入应归还时间:");
fflush(stdin);
scanf("%s",s->backtime1);
strcpy(s->backtime2,"---------");
printf("\n 请输入实际归还时间:");
fflush(stdin);
gets(s->backtime2);
strcpy(s->other,"---------");
printf("\n 请输入备注:");
fflush(stdin);
gets(s->other);
printf("\n");
s->next=NULL;
p=head3;
w=0;
while(p->next != NULL)
{
u=p->next;
if(strcmp(s->borrowtime,p->borrowtime)>0&&strcmp(s->borrowtime,u->borrowtime)<0)
{
w=1;
p->next=s;
s->next=u;
break;
}
else
p=p->next;
}
if(w==0&&strcmp(s->borrowtime,p->borrowtime)>0)
p->ne
展开阅读全文