2020年度C语言图书管理系统源代码_第1页
2020年度C语言图书管理系统源代码_第2页
2020年度C语言图书管理系统源代码_第3页
2020年度C语言图书管理系统源代码_第4页
2020年度C语言图书管理系统源代码_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言图书管理系

统源代码

文档仅供参考

/*需要在源代码相同目录下创立四个txt文件:

tushu_list.txt,jieshulist.txt,xueshenglist.txt,guanliyu

an.txt*/

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

structtushu{/*图书结构体*/

charnum[ll];/*编号*/

charname[31];/*书名*/

charwriter[21];/*作者*/

charpress[21];/*出版社*/

charkind[21];/*类别*/

doubletime;/*时间*/

doubleprice;/*价格*/

structtushu*next;

);

structstu/*学生结构体*/

(

intsnum;/*学号*/

charmima[ll];/*密码*/

structstu*next;

};

文档仅供参考

structjieshu{/*借书信息结构体*/

intxuehao;/*学生学号*/

charnum[11];/*编号*/

charname[31];/*书名*/

charwriter[21];/*作者*/

charpress[21];/*出版社*/

charkind[21];/*类别*/

doubletime;/*时间*/

doubleprice;/*价格*/

structjieshu*next;

);

intdenglu=-l;/*已登

录学生学号*/

FILE*fp;/*图书文件*/

FILE*fpl;/*管理

员信息文件*/

FILE*fp2;/*学生

信息文件*/

FILE*fp3;/*借书信息文

件*/

intmain();/*主函

数声明*/

文档仅供参考

structtushu*create();/*从文件创立

图书链表(从文件中读出图书信息,建立单链表)*/

structstu*xcreate();/*从文件创立

学生信息(从文件读出学生信息,建立学生链表)*/

structjieshu*jcreate();〃从文

件创立借书信息链表

structjieshu*borrowcreate(structtushu*k,struct

jieshu*h);〃直接创立借书信息链表

structtushu*Input();/*图书添加

(可进行图书的添加)*/

voidmenu();

管理员主菜单(管理员进入对图书及学生信息进行管理操作)*/

voidxmenu();/*学生

主菜单(学生进入可对图书,密码进行操作)*/

voidgfind();/*管理

员查询(管理员可按一定的方式查询图书)*/

voidxfind();/*学生

查询(学生可按一定的方式查询图书)*/

voidsecret();/*管理

员权限(管理员登陆所用,输入错误次数过多自动退出)*/

voidsort(structtushu*head);/*排序(管理

员可按一定的方式对图书进行排序,排序完之后可选择文件进行

文档仅供参考

保存)*/

voidfprint(structtushu*head);/*保存(可追

加的保存,如添加可用)*/

voidjsprint(structjieshu*h);〃将借书信息

添加到借书文件

voidjfprint_(structtushu*head);/*借书保存

(借书成功之后自动从图书馆删除)*/

voidfprint_(structtushu*head);/*保存(可覆

盖保存如修改,删除,排序后用)*/

voidgBrowse(structtushu*head);/*管理员浏览

(对图书进行遍历)*/

voidxBrowse(structtushu*head);/*学生浏览

(学生对图书进行遍历)*/

voidcount(structtushu*head);/*统计数量

(管理员可对图书进行统计)*/

voidFindofname(structtushu*head);/*按书名查找

*/

voidFindofwriter(structtushu*head);/*按作者查找

*/

voidFindofkind(structtushu*head);/*按类别查找

*/

voidxFindofname(structtushu*head);/*学生按书名

文档仅供参考

查找*/

voidxFindofwriter(structtushu*head);/*学生按作者

查找*/

voidxFindofkind(structtushu*head);/*学生按类别

查找*/

voidSort_time(structtushu*head);/*按时间排序

(管理员按时间对图书进行排序,排序完之后可选择文件进行保

存)*/

voidSort_price(structtushu*head);/*按价格排序

voidSortnum(structtushu*head);/*按编号排序

voidDelete(structtushu*head,charm[15]);/*按编号删除

(管理员可按编号删除图书)*/

voidRevise(structtushu*head);/*修改

(管理员可对图书进行修改,并选择是否保存)*/

voidborrow(structtushu*head);/*借书*/

voidhuanshu(structtushu*head);/*还书(学生

借完书之后进行还书,若没有图书则不能借)*/

voidgxinxi();/*管理员信息

(有管理员的账号及密码,可进行修改)*/

voidxmima(structstu*headl);/*学生密码修

文档仅供参考

改(学生可对自己的密码进行修改)*/

voidxsecret(structstu*headl);/*学生权限

(学生登陆所用)*/

voidjsdelete(structjieshu*h);〃学生还书时

删除借书记录

voidputin(jieshu*h);〃将还书信息

加入图书文件

voidmenu。/*管理员主菜单(管理员进入对图书及学生信息进行

管理操作)*/

(

intchoice,n=0;

structtushu*head;

structstu*headl,*p;

charm[15];

there:

printf("

I--------1---------------------------------------------------------------------------------------I----------1\n");

printfC||图书管理系统

II\n〃);

文档仅供参考

printf(〃

1-------------------------------------------1I\n");

printf("|•[()]退出系统

I\n〃);

printf(〃|

I\n〃);

printf("|•[口返回主菜

单I\n〃);

printfC|

I\n〃);

printf(〃|•⑵浏览图书

I\n〃);

printf(〃|

I\n〃);

printf(〃|•⑶统计图书

数目I\n〃);

printfC|

I\n〃);

printfC|・[4]查询

I\n〃);

printf(〃|

I\n〃);

文档仅供参考

printf(z/|・[5]添加

I\n〃);

printf(〃|

I\n〃);

printf("I・[6]排序

I\n〃);

printf("|

I\n〃);

printf(z/|・[7]修改

I\n〃);

printf(z,|

I\n〃);

printf("|・[8]删除

I\n〃);

printf("|

I\n〃);

printf("|•[9]修改账号

及密码I\n〃);

printf(z,|

I\n〃);

printfC|•[10]学生信息

I\n〃);

文档仅供参考

printf(〃

1-----------------------------------------------------1\n〃);

printf("请选择:〃);

fflush(stdin);

head=create();

scanf&choice);

if(choice=l)

(

system(〃cls〃);

printf(z/\n\n\n\t\t您已退出登录!\n\n\n\n");

system("pause");

main();

}

elseif(choice==2)

(

system(〃cls〃);

if(head=NULL)

(

printf(〃没有图书,请先添加图书!\n〃);

system("pause");

system(〃cls〃);

menu();

文档仅供参考

gBrowse(head);

}

elseif(choice==3)

{

system("cls");

count(head);

}

elseif(choice==4)

{

system(,,cls,/);

if(head==NULL)

(

printf(〃没有图书,请先添加图书!\n〃);

system("pause");

system("cis");

menu();

}

gfind();

}

elseif(choice==5)

文档仅供参考

Input();

}

elseif(choice==6)

(

system("cls〃);

if(head=NULL)

(

printf(〃没有图书,请先添加图书!\n〃);

system(/,pause/,);

system("cis");

menu();

}

sort(head);

}

elseif(choice==7)

(

system(〃cls〃);

if(head—NULL)

(

printf(〃没有图书,请先添加图书!\n〃);

system("pause");

system("cis");

文档仅供参考

menu();

Revise(head);

}

elseif(choice==8)

(

if(head=NULL)

{

printf(〃没有图书,请先添加图书!\n〃);

system("pause");

system("cls〃);

menu();

}

printf(〃请输入想要删除的图书编号:〃);

scanfm);

Delete(head,m);

)

elseif(choice==9)

{

gxinxi();

)

elseif(choice-10)

文档仅供参考

system(z,clsz,);

headl=xcreate();

if(headl=NULL)

{

printfC没有学生信息,请到

xuesheng_list.txt添力口!\n");

system("pause");

system(〃cls〃);

menu();

}

printf(〃学生学号密码\n〃);

for(p=headl;p!=NULL;p=p->next)

(

printf("%-10d%-10s\n〃,p->snum,p->iniina);

}

system("pause");

system(z,clsz,);

menu();

elseif(choice==0)

文档仅供参考

system(〃cls〃);

printf(/,\n\n\n\n/,);

printf(〃----------------感谢使用图

书管理系统----------------\n\n\n\n\n");

exit(0);

)

else

(

system(〃cls〃);

printf(z,\n\n\n\n--------输入错

误,请重新输入!--------\n\n\n〃);

system("pause");

system(〃cls〃);

n++;

if(n==3)

(

printf(z,\n\n\n----------------

你错误次数太多,自动退出!----------------\n\n\n〃);

printf(z,----------------感谢

使用图书管理系统----------------\n\n\n〃);

system("pause");

exit(0);

文档仅供参考

}

gotothere;

}

}

//-----------------

voidxmenu()/*学生主菜单(学生进入可对图书,密码进行操

作)*/

(

structtushu*head;

structstu*headl;

intchoice,n=0;

there:

printf(〃

IIII\n,);

printfC||图书借阅系统

IIM);

printfC|

1-------------------------------------------1I\n");

printf(z,|•[()]退出系统

I\n〃);

printf(〃|

I\n〃);

文档仅供参考

printf(〃•[1]返回主菜

单I\n〃);

printf(〃|

I\n〃);

printfC|•⑵浏览图书

I\n〃);

printf("|

I\n〃);

printf("|・[3]查询

I\n〃);

printf(z,|

I\n〃);

printf("|・[4]借书

I\n〃);

printf("|

I\n〃);

printf(z/|・[5]还书

I\n〃);

printf(z,|

I\n〃);

printf("|•[6]修改密码

\n〃)

文档仅供参考

printf(〃

1-----------------------------------------------------1\n〃);

printf("请选择:〃);

fflush(stdin);

head=create();

scanf&choice);

if(choice=l)

(

denglu=-l;

system(〃cls〃);

printf(v\n\n\n\t\t您已退出登录!\n\n\n\n");

system("pause");

mainO;

}

elseif(choice=2)

(

system(〃cls〃);

if(head=NULL)

(

printf(〃没有图书!\n〃);

system("pause");

system("cis");

文档仅供参考

xmenu();

}

xBrowse(head);

}

elseif(choice==3)

(

if(head=NULL)

(

printf(〃没有图书!\n〃);

system("pause");

system("cls〃);

xmenu();

}

xfind();

}

elseif(choice==4)

(

if(head—NULL)

(

printf(〃没有图书!\n〃);

system("pause");

system("cis");

文档仅供参考

xmenu();

}

borrow(head);

}

elseif(choice==5)

(

huanshu(head);

}

elseif(choice==6)

(

system("cls〃);

headl=xcreate();

if(headl=NULL)

(

printf(〃学生信息被清空!!\n〃);

system("pause");

system(〃cls〃);

xmenu();

}

xmima(headl);;

elseif(choice==0)

文档仅供参考

system(z,clsz,);

printf(〃\n\n\n\n");

printf(〃----------------感谢使用图

书管理系统----------------\n\n\n");

exit(0);

}

else

(

system(z,clsz,);

printf(z,\n\n\n\n--------输入错

误,请重新输入!--------\n\n\n〃);

system("pause");

system(〃cls");

n++;

if(n==3)

(

printf(z,\n\n\n----------------

你错误次数太多,自动退出!----------------\n\n\n");

printf(〃----------------感谢

使用图书管理系统----------------\n\n\rT);

system("pause");

文档仅供参考

exit(0);

}

gotothere;

}

}

//--------------------

voidgfind()/*管理员查询(管理员可按一定的方式查询图书)

*/

(

intchoice,n=0;

structtushu*head;

there:

system("cls〃);

printf("

iiII;

printf(/z||图书借阅系统

IIM);

printfC|

1-------------------------------------------1IM);

printfC|•[()]返回

I\n〃);

printf(〃|

文档仅供参考

I\n〃);

printf(,z|按书名查

找I\n〃);

printfC|

I\n〃);

printf(〃|•[2]按作者查

找I\n〃);

printf(z/|

I\n〃);

printf(〃|•[3]按类别查

找I\n〃);

printf("

1-------------------------------------------------1\n〃);

printf("请选择:〃);

fflush(stdin);

head=create();

scanf("%d〃,&choice);

if(choice=l)

system("cls");

Findofname(head);

文档仅供参考

elseif(choice==2)

system(〃cls〃);

Findofwriter(head);

}

elseif(choice==3)

(

system(z,clsz,);

Findofkind(head);

}

elseif(choice==0)

(

system(〃cls〃);

menu();

}

else

(

system(z,clsz,);

printf(〃\n\n\n\n输入错

误,请重新输入!--------\n\n\n〃);

system("pause");

system(〃cls");

文档仅供参考

n++;

if(n==3)

(

printf(z,\n\n\n-------------------

你错误次数太多,自动退出!----------------\n\n\n〃);

printf(〃-------------------感谢

使用图书管理系统----------------\n\n\n〃);

system("pause");

exit(0);

}

gotothere;

}

}

//---------------------

voidxfind()/*学生查询(学生可按一定的方式查询图书)*/

(

structtushu*head;

intchoice,n=0;

there:

system("cls〃);

printf("

1\n〃);

文档仅供参考

printfCII图书借阅系统

II\n〃);

printf(z,|

1------------------------------------------------1IM);

printf("|•[()]返回

I\n〃);

printf("|

I\n〃);

printfC|•n]按书名查

找I\n〃);

printf(z,|

I\n〃);

printfCI•[2]按作者查

找I\n〃);

printf("|

I\n〃);

printfC|•[3]按类别查

找I\n〃);

printf(〃

1-------------------------------------------------1\n〃);

printf("请选择:〃);

fflush(stdin);

文档仅供参考

head=create();

scanf("%d〃,&choice);

if(choice=l)

(

system("cls〃);

xFindofname(head);

}

elseif(choice==2)

(

system(,,cls/,);

xFindofwriter(head);

}

elseif(choice==3)

(

system(〃cls〃);

xFindofkind(head);

}

elseif(choice==0)

(

system("cls");

xmenu();

文档仅供参考

else

system(〃cls〃);

printf(z,\n\n\n\n--------输入错

误,请重新输入!--------\n\n\n〃);

system("pause");

system(〃cls〃);

n++;

if(n==3)

(

printf(〃\n\n\n----------------

你错误次数太多,自动退出!----------------\n\n\n〃);

printf(〃----------------感谢

使用图书借阅系统----------------\n\n\n〃);

system("pause");

exit(0);

}

gotothere;

}

}

//-------------------

voidsort(structtushu*head)

文档仅供参考

structtushu*head2;

intchoice,n=0;

there:

system(/zclsz,);

printf("

I-------1---------------------------------------------------------------------------I---------1\n〃)

printf(〃||图书借阅系统

11M);

printf(〃1

111\n〃);

printf(z,|•[0]返回

1\n〃);

printf("1

1\n〃);

printf(,z|•[1]按时间排序

1\n〃);

printf("1

1\n〃);

printf(z,|•[2]按价格排序

1\n〃);

printf("1

文档仅供参考

I\n〃);

printf("•[3]按编号排序

I\n〃);

printf("

------1\n");

printf("请选择:〃);

fflush(stdin);

head2=create();

scanf&choice);

if(choice=l)

(

system("cls");

Sort_time(head2);

}

elseif(choice=2)

(

system("cls〃);

Sort_price(head2);

}

elseif(choice==3)

system(〃cls");

文档仅供参考

Sort_num(head2);

}

elseif(choice==0)

(

system(〃cls〃);

menu();

}

else

(

system(z,clsz,);

printf('\n\n\n\n--------输入错

误,请重新输入!--------\n\n\n〃);

system("pause");

system(〃cls");

n++;

if(n==3)

(

printf(z,\n\n\n----------------

你错误次数太多,自动退出!----------------\n\n\n");

printf(〃----------------感谢

使用图书借阅系统----------------\n\n\rT);

system("pause");

文档仅供参考

exit(0);

}

gotothere;

}

}

//---------------------

structtushu*Input()

(

structtushu*pl,*p2,*head,*ptr;

charnum;

intx,i=0;

system("cls〃);

pl=(structtushu*)malloc(sizeof(structtushu));

head=pl;

pl->price=-l;

while(i!=1)

(

printf(〃请输入编号。若要结束图书信息录入,请输

入'。\n〃);

scanf("%s〃,pl->num);

if(strcmp(pl—>num,"#〃)==0)

i=l;

文档仅供参考

while(i!=1)

printf(〃请依次输入书名作者出版社类别出

版年份价格:\n〃);

scanfpl->name,pl-

>writer,pl->press,pl->kind,&pl->time,&pl->price);

p2=pl;

pl=(structtushu*)malloc(sizeof(struct

tushu));

p2->next=pl;

break;

}

}

if(pl->price!=-l)

p2->next=NULL;

else

head=NULL;

system(〃cls〃);

printf(z/\n\n\n\t\t\t图书信息输入结束!\n\n\n");

system("pause");

system("cls〃);

printf("\n\n\n\t\t\t是否保存图书信息?(1.是/2.

文档仅供参考

否):〃);

scanf("%d",&x);

if(x==l)

fprint(head);

else

(

system(〃cls");

printf("\n\n\n\t\t\t文件没有被保存!\n\n\n\n");

system("pause");

system(〃cls〃);

menu();

}

}

//------------------------

voidfprint(structtushu*head)

(

structtushu*pl;

if((fp=fopen(z,tushu_list.txt","a"))==NULL)

(

printf("Fileopenerror!\nz,);

system("pause");

exit(0);

文档仅供参考

if(head=NULL)

(

printf(〃没有图书保存!\n〃);

system("pause");

system(〃cls");

menu();

}

for(pl=head;pl!=NULL;pl=pl->next)/*遍历*/

fprintf(fp,z,%-10s%-30s%-20s%-20s%-

20s%.Olf%.21f\n〃,pl->num,pl->name,pl->writer,pl-

>press,pl->kind,pl->time,pl->price);/*将图书信息写入文件

*/

fclose(fp);

system(〃cls〃);

printf("\n图书信息已成功保存到文件tushu_list.txt

中!\n〃);

system("pause");

system("cls");

getchar();

menu();

文档仅供参考

//---------------------------------

voidfprint_(structtushu*head)

(

structtushu*pl;

chara[31];

printf(〃请输入你保存的文件!\n〃);

scanf(〃%s〃,a);

if((fp=fopen(a,"w"))==NULL)

(

printf(z,Fileopenerror!\n',);

system("pause");

exit(0);

}

if(head=NULL)

(

system("cis");

printf(〃没有图书!\n〃);

system("pause");

system("cis");

menu();

for(p1=head;p1!=NULL;pl=pl->next)

文档仅供参考

fprintf(fp,"%-lOs%-30s%-20s%-20s%-

20s%.Olf%.21f\n〃,pl->num,pl->name,pl->writer,pl-

>press,pl->kind,pl->time,pl->price);/*将图书信息写入文件

*/

fclose(fp);

system(〃cls");

printf(,z\n图书信息已成功保存到文件%s中!\n",a);

system("pause");

system("cis");

menu();

}

//-------------------------

voidhfprint(structtushu*head)

(

structtushu*pl;

if((fp=fopen(,ztushu_list.txt","a"))==NULL)

(

printf(z,Fileopenerror!\n',);

system("pause");

exit(0);

}

if(head==NULL)

文档仅供参考

printf("没有还书!\n");

xmenu();

}

for(pl=head;pl!=NULL;pl=pl->next)/*遍历*/

fprintf(fp,"%-lOs%-30s%-20s%-20s%-

20s%.Olf%.21f\n〃,pl->num,pl->name,pl->writer,pl-

>press,pl->kind,pl->time,pl->price);/*将图书信息写入文件

*/

fclose(fp);

xmenu();

}

//----------------------

voidjfprint_(structtushu*head)

(

structtushu*pl;

if((fp=fopen("tushu_list.txt〃,"w"))==NULL)

(

printf("Fileopenerror!\n',);

system("pause");

exit(0);

文档仅供参考

if(head=NULL)

xmenu();

}

for(pl=head;pl!=NULL;pl=pl->next)

(

fprintf(fp,"%-lOs%-30s%-20s%-20s%-

20s%.Olf%.21f\n〃,pl->num,pl->name,pl->writer,pl-

>press,pl->kind,pl->time,pl->price);/*将图书信息写入文件

*/

}

fclose(fp);

system(//cls/,);

getchar();

xmenu();

}

//------------------------

voidjsprint(jieshu*h)

(

structjieshu*pj;

if((fp3=fopen(,,jieshu_list.txt","a〃))==NULL)

文档仅供参考

printf(z,Fileopenerror!\n,z);

system("pause");

exit(0);

}

for(pj=h;pj!=NULL;pj=pj->next)

fprintf(fp3,〃%T0d%-10s%-30s%-20s%-

20s%-20s%.Olf%.21f\n”,pj->xuehao,pj->num,pj-

>name,pj->writer,pj->press,pj->kind,pj->time,pj->price);

fclose(fp3);

}

//-------------------------

structtushu*create()

(

structtushu*head=NULL,*p,*pl,*p2;

if((fp=fopen(,,tushu_list.txt","r"))==NULL)/*先安全打

开目录文件*/

(

printf("Fileopenerror!\n',);

system("pause");

exit(0);

while(!feof(fp))/*读取并创立链表*/

文档仅供参考

p=(structtushu*)malloc(sizeof(structtushu));

p->price=-l;

fscanf(fp,/,%s%s%s%s%s%lf%lf/,,p->num,p->name,p-

>writer,p->press,p->kind,&p->time,&p->price);

if(p->price--1)

(

free(p);

break;

}

if(head==NULL)

(

head=p;

P1=P;

pl->next=NULL;

}

else

(

pl->next=p;

p2=pl;

P1=P;

pl->next=NULL;

文档仅供参考

}

}

fclose(fp);

returnhead;

structjieshu*jcreate()

(

structjieshu*head=NULL,*p,*pl,*p2;

if((fp3=fopen(/,jieshu_list.txt","r〃))==NULL)

(

printf(z,Fileopenerror!\n',);

system("pause");

exit(0);

}

while(!feof(fp3))

(

p=(structjieshu*)malloc(sizeof(struct

jieshu));

p->price=-l;

fscanf(fp3,//%d%s%s%s%s%s%lf%lf,/,&,p->xuehao,p-

>num,p->name,p->writer,p->press,p->kind,&,p->time,&p-

文档仅供参考

>price);

if(p->price==-l)

(

free(p);

break;

}

if(head=NULL)

(

head=p;

P1=P;

pl->next=NULL;

}

else

(

pl->next=p;

p2=pl;

P1=P;

pl->next=NULL;

}

}

fclose(fp3);

returnhead;

文档仅供参考

}

//-------------------------------

structjieshu*borrowcreate(structtushu*k,struct

jieshu*h)

(

structjieshu*head;

head=(structjieshu*)malloc(sizeof(structjieshu));

if(h==NULL)

{

h=head;

h->xuehao=denglu;

strcpy(h->num,k->num);

strcpy(h->name,k->name);

strcpy(h->writer,k->writer);

strcpy(h->press,k->press);

strcpy(h->kind,k->kind);

h->time=k->time;

h->price=k->price;

h-〉next=NULL;

returnh;

}

else

文档仅供参考

head->xuehao=denglu;

strcpy(head->num,k->num);

strcpy(head->name,k->name);

strcpy(head->writer,k->writer);

strcpy(head->press,k->press);

strcpy(head->kind,k->kind);

head->time=k->time;

head->price=k->price;

head->next=h;

returnhead;

}

}

//--------------------------------------

voidgBrowse(structt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论