图书管理系统代码--课程设计.doc_第1页
图书管理系统代码--课程设计.doc_第2页
图书管理系统代码--课程设计.doc_第3页
图书管理系统代码--课程设计.doc_第4页
图书管理系统代码--课程设计.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

#include#include#include#include#include#include#include/*这是时间结构体定义*/struct timeint year;int mon;int day;/*这是已借书籍结构体定义*/struct borrbklong int bkid;/*书籍编号*/char name20;/*书籍名字*/char remark50;/*书籍简介*/int bknum;/*书籍数量*/int ifb;/*书籍借阅与否标志*/int bornum;/*借阅书籍所在数组下标*/struct time botm;/*借书时间*/struct time retm;/*还书时间*/;/*这是学生结构体定义*/struct studentlong int stunum;/*学号*/char name18;/*名字*/char pawo10;/*密码*/struct borrbk bobk12;/*借阅书籍结构体数组*/;/*这是所有书结构体定义*/struct booklong int bkid;/*书籍编号*/char name20;/*书籍名字*/char remark50;/*书籍简介*/int bknum;/*书籍数量*/int rebknum;/*书籍剩余数量*/;struct student stu99;struct book bk999;FILE *st,*bok;/*这里是内层调用的函数*/*函数名:void save()函数功能:把所有书籍和学生记录保存到文件 函数参数: 无函数编制者:马瑞宜*/void save() int i; bok=fopen(book.txt,w+);/*打开文件*/ for(i=0;i999;i+) if(bki.bknum!=0)/*判断是否存在内容*/fwrite(&bki,sizeof(struct book),1,bok); fflush(bok);/*写入磁盘*/ fclose(bok);/*关闭文件*/ st=fopen(student.txt,w+); for(i=0;i99;i+) if(stui.stunum!=0)fwrite(&stui,sizeof(struct student),1,st); fflush(st); fclose(st);/*函数名:void load()函数功能:把所有书籍和学生记录读取到数组 函数参数: 无函数编制者:马瑞宜*/void load() int i; bok=fopen(book.txt,r); for(i=0;i999;i+) fread(&bki,sizeof(struct book),1,bok); fclose(bok);st=fopen(student.txt,r); for(i=0;i99;i+) fread(&stui,sizeof(struct student),1,st); fclose(st); /*函数名:void haborbks (int n)函数功能:输出某学生已借书籍 函数参数: 传递学生所在数组下标给形参函数编制者:马瑞宜*/void haborbks (int n)int i;printf(编号 名字 介绍 借阅日期 应还日期n);for(i=0;i12;i+)if (stun.bobki.ifb=1)/*判断该数组是否存有已借书内容既存在标志*/printf(%ld %-15s %-24s %d-%d-%d %d-%d-%dn,stun.bobki.bkid,,stun.bobki.remark,stun.bobki.botm.year,stun.bobki.botm.mon,stun.bobki.botm.day,stun.bobki.retm.year,stun.bobki.retm.mon,stun.bobki.retm.day);/*函数名:void allbooks()函数功能:输出所有书籍函数参数: 无函数编制者:马瑞宜*/void allbooks()int i;printf(编号 名字 介绍 数量 剩余数量n);for(i=0;i999;i+)if(bki.bkid!=0)/*判断该数组是否存有书籍编号既存在标志*/printf(%ld %-15s %-32s %-4d %dn,bki.bkid,,bki.remark,bki.bknum,bki.rebknum);/*这里开始是学生的管理系统*/*函数名:int login()函数功能:用于学生登录 函数参数: 返回学生数组下标函数编制者:马瑞宜*/int login()long int loginnum;int i,j,pac;char pawod10;printf(请输入学号:);scanf(%ld,&loginnum);for(i=0;i99;i+)if (loginnum=stui.stunum)/*判断学号是否存在*/j=i;goto loginpawo2;printf(n不存在该学号!请重新登录!n);getch();return -1;loginpawo2:pac=0;loginpawo:printf(请输入密码:);scanf(%s,pawod);if (pac2)/*密码错误计数器*/if (strcmp(pawod,stuj.pawo)=0)/*判断密码是否正确*/return j;elseprintf(n密码错误,请重新输入!n);pac+;goto loginpawo;elseprintf(n连续三次密码输入错误,请重新登录!n);getch();return -1;/*函数名:void borrbook(int n)函数功能:借阅用函数 函数参数: 传递学生所在数组下标给形参函数编制者:马瑞宜*/void borrbook(int n)long int fdbknum;int choice,i,con,j,bbk;char confi;struct tm *local;time_t t;fdbk:j=0;printf(请输入所要借阅的图书编号:);scanf(%ld,&fdbknum);printf(编号 名字 介绍 借阅日期 应还日期n);for(i=0;i999;i+)if (fdbknum=bki.bkid)/*判断书籍号是否存在*/printf(%ld %-15s %-40s %d %dn,bki.bkid,,bki.remark,bki.bknum,bki.rebknum);if(bki.rebknum=0)/*书籍剩余数量是否为零*/printf(剩余馆藏为零!n);goto againchoice;elsej=1;/*存在此书可借*/con=i;/*确定该数组下标*/break;if (j=1)againchoice2:printf(确定借阅本书(y/n)?);scanf(%s,&confi);if(confi=y|confi=Y)for(bbk=0;bbktm_mday;stun.bobkbbk.botm.mon=local-tm_mon+1;stun.bobkbbk.botm.year=local-tm_year+1900;stun.bobkbbk.retm.day=local-tm_mday;if (stun.bobkbbk.botm.mon=12)stun.bobkbbk.retm.mon=1;stun.bobkbbk.retm.year=stun.bobkbbk.botm.year+1;elsestun.bobkbbk.retm.year=local-tm_year+1900;stun.bobkbbk.retm.mon=local-tm_mon+2;bkcon.rebknum=bkcon.rebknum-1;/*馆藏数量-1*/stun.bobkbbk.ifb=1;/*书籍借阅与否标志置为1既已借*/stun.bobkbbk.bornum=con;/*已借书籍在书籍数组的下标*/printf(借阅成功!n);goto againchoice;printf(你已借满12本书,无法继续借阅!);else if(confi=n|confi=N)printf(未借阅本书!n);elseprintf(输入错误,请重新输入!);goto againchoice2;else printf(不存在该编号的书!n);againchoice:printf(1、重新查询借阅tt2、退出借阅n);printf(请输入你的选择:);scanf(%d,&choice);switch(choice)case 1: system(cls);goto fdbk;case 2:break;save();printf(n请按任意键退出。n);/*函数名:void retubook (int n)函数功能:归还书籍用函数 函数参数: 传递学生所在数组下标给形参函数编制者:马瑞宜*/void retubook (int n)long int fdbknum;int choice,con,i,j;char confi;haborbks(n);/*调用借阅历史函数*/fdbk:j=0;printf(请输入所要归还的图书编号:);scanf(%ld,&fdbknum);printf(编号 名字 介绍 借阅日期 应还日期n);for(i=0;i12;i+)if (stun.bobki.ifb=1)/*书籍已借*/if (stun.bobki.bkid=fdbknum)printf(%ld %-15s %-24s %d-%d-%d %d-%d-%dn,stun.bobki.bkid,,stun.bobki.remark,stun.bobki.botm.year,stun.bobki.botm.mon,stun.bobki.botm.day,stun.bobki.retm.year,stun.bobki.retm.mon,stun.bobki.retm.day);j=1;/*存在此书可还*/con=i;/*确定该数组下标*/break;if (j=1)againchoice2:printf(确定归还本书(y/n)?);scanf(%s,&confi);if(confi=y|confi=Y)bkstun.bobkcon.bornum.rebknum=bkstun.bobkcon.bornum.rebknum+1;/*馆藏数量+1*/for(i=con;i12;i+)/*将后一个数组成员的值赋给前一个数组*/stun.bobki.bkid=stun.bobki+1.bkid;stun.bobki.bknum=stun.bobki+1.bknum;strcpy(,stun.bobki+1.name);strcpy(stun.bobki.remark,stun.bobki+1.remark);stun.bobki.botm.year=stun.bobki+1.botm.year;stun.bobki.botm.mon=stun.bobki+1.botm.mon;stun.bobki.botm.day=stun.bobki+1.botm.day;stun.bobki.retm.year=stun.bobki+1.retm.year;stun.bobki.retm.mon=stun.bobki+1.retm.mon;stun.bobki.retm.day=stun.bobki+1.retm.day;stun.bobki.ifb=stun.bobki+1.ifb;stun.bobki.bornum=stun.bobki+1.bornum;/*置空最后的数组*/stun.bobk11.bkid=0;stun.bobk11.bknum=0;strcpy(,);strcpy(stun.bobk11.remark,);stun.bobk11.botm.year=0;stun.bobk11.botm.mon=0;stun.bobk11.botm.day=0;stun.bobk11.retm.year=0;stun.bobk11.retm.mon=0;stun.bobk11.retm.day=0;stun.bobk11.ifb=0;stun.bobk11.bornum=0;printf(归还成功!n);else if(confi=n|confi=N)printf(不归还本书!n);elseprintf(输入错误,请重新输入!);goto againchoice2;elseprintf(你未借阅该书!n);printf(1、重新查询归还tt2、退出归还n);printf(请输入你的选择:);scanf(%d,&choice);switch(choice)case 1:goto fdbk;case 2: break;save();printf(n请按任意键退出。n);/*函数名:altpassword(int n)函数功能:用于学生修改密码 函数参数: 传递学生下标给形参函数编制者:马瑞宜*/void altpassword(int n)int pac;char pawod,newpass110,newpass210;pac=0;loginpawo2:printf(请输入你的旧密码:);scanf(%s,&pawod);if (pac2)if(strcmp(&pawod,stun.pawo)=0)/*旧密码是否正确*/printf(请输入你的新密码:);scanf(%s,newpass1);printf(请再次输入你的新密码:);scanf(%s,newpass2);if (strcmp(newpass1,newpass2)=0)/*两次密码输入是否一样*/strcpy(stun.pawo,newpass2);save();printf(修改密码成功!请记住新密码!n);elseprintf(输入的两次密码不一样!n按任意键退出修改!);elseprintf(密码错误,请重新输入!);pac=pac+1;goto loginpawo2;elseprintf(连续三次密码输入错误!n按任意键退出修改!);/*这里开始是管理员的管理系统*/*函数名:int adminlogin()函数功能:用于管理员登录 函数参数: 无函数编制者:马瑞宜*/int adminlogin()long int pac,p;char adminname26=admin,pawod26=admin,adminname16,pawod16;printf(请输入账号:);scanf(%s,adminname1);if (strcmp(adminname1,adminname2)=0)goto loginpawo;elseprintf(n账号错误!请重新登录!n);getch();return p=0;loginpawo:pac=0;loginpawo2:printf(请输入密码:);scanf(%s,&pawod1);if (pac2)if(strcmp(pawod1,pawod2)=0)p=1;return p;elseprintf(n密码错误,请重新输入!n);pac=pac+1;goto loginpawo2;elseprintf(n连续三次密码输入错误,请重新登录!n);getch();p=0;return p;/*函数名:void findbooknum()函数功能:查询书籍 函数参数:无函数编制者:马瑞宜*/void findbooknum()long int i,fdbknum;int choice,j;allbooks();/*调用输出所有图书函数*/fdbk:printf(请输入所要查询的图书编号:);scanf(%ld,&fdbknum);printf(编号 名字 介绍 数量 剩余数量n);for(i=0;i999;i+)if (fdbknum=bki.bkid)printf(%ld %-15s %-32s %-4d %dn,bki.bkid,,bki.remark,bki.bknum,bki.rebknum);j=1;break;if (j=1)printf(查询完毕。n);elseprintf(不存在该编号的书!n);printf(1、重新查询tt2、退出查询n);printf(请输入你的选择:);scanf(%d,&choice);switch(choice)case 1:goto fdbk;case 2: break;printf(n请按任意键退出。n);/*函数名:void booksave()函数功能:用于管理员添加新书 函数参数: 无函数编制者:马瑞宜*/void booksave()long int idnum;char name,remark;int i,num;printagain:printf(请输入书的编号:);scanf(%ld,&idnum);for (i=0;i999;i+)if (bki.bkid=idnum)printf(此编号已存在,请重新输入!n);goto printagain;for (i=0;i999;i+)if (bki.bkid=0)/*找到未存内容的数组下标*/break;bki.bkid=idnum;printf(请输入书的名字:);scanf(%s,&name);strcpy(,&name);printf(请输入书的简介:);scanf(%s,&remark);strcpy(bki.remark,&remark);printf(请输入书的数量:);scanf(%d,&num);bki.bknum=num;bki.rebknum=num;save();printf(添加成功!请输入任意键退出!n);getch();/*函数名:void bookalter()函数功能:用于管理员修改书籍 函数参数: 无函数编制者:马瑞宜*/void bookalter()long int fdbknum,altbkid;int choice,altcho,j,altbknum,i,con;char confi,altname,altremark;fdbk:printf(请输入所要修改的图书编号:);scanf(%ld,&fdbknum);printf(编号 名字 介绍 数量 剩余数量n);for(i=0;i999;i+)if (fdbknum=bki.bkid)con=i;printf(%ld %-15s %-32s %-4d %dn,bki.bkid,,bki.remark,bki.bknum,bki.rebknum);j=1;break;if (j=1)againchoice:printf(确定修改本书(y/n)?);scanf(%s,&confi);if (confi=y|confi=Y)altercho:printf(请选择修改选项:n1、编号n2、书名n3、简介n4、数量n5、退出修改n);scanf(%d,&altcho);switch(altcho)printagain:case 1: printf(请输入编号:);scanf(%ld,&altbkid);for (i=0;i999;i+)if (bki.bkid=altbkid)printf(此编号已存在,请重新输入!n);goto printagain;bkcon.bkid=altbkid;case 2:printf(请输入书名:);scanf(%s,&altname);strcpy(,&altname);case 3:printf(请输入书的简介:);scanf(%s,&altremark);strcpy(bkcon.remark,&altremark);printnumagain:case 4:printf(请输入书的数量:);scanf(%d,&altbknum);if (altbknum(bkcon.bknum-bkcon.rebknum)printf(有%d本书被借出,修改数量应该大于或等于%d,n请重新输入。,bkcon.bknum-bkcon.rebknum,bkcon.bknum-bkcon.rebknum);goto printnumagain;bkcon.bknum=altbknum;case 5:goto againchoice2;default:printf(输入错误,请重新输入!n);goto altercho;else if (confi=n|confi=N)printf(未修改本书!n);goto againchoice2;elseprintf(输入错误,请重新输入!);goto againchoice;printf(修改成功!n);getch();goto altercho;else printf(不存在该编号的书!n);againchoice2:printf(1、重新查询修改tt2、退出修改n);printf(请输入你的选择:);scanf(%d,&choice);switch(choice)case 1: system(cls);goto fdbk;case 2: break;save();printf(请输入任意键退出!n);/*函数名:void bookdel()函数功能:用于管理员删除书籍 函数参数: 无函数编制者:马瑞宜*/void bookdel()long int fdbknum;int choice,i,con,j;char confi;fdbk:printf(请输入所要删除的图书编号:);scanf(%ld,&fdbknum);printf(编号 名字 介绍 数量 剩余数量n);for(i=0;ibki.rebknum)printf(该书已有%d本被借出,无法删除!n,bki.bknum-bki.rebknum);goto againchoice2;elsecon=i;j=1;break;if (j=1)againchoice:printf(确定删除本书(y/n)?);scanf(%s,&confi);if (confi=y|confi=Y)for(i=con;i999;i+)/*将后一个数组成员的值赋给前一个数组*/bki.bkid=bki+1.bkid;bki.bknum=bki+1.bknum;strcpy(,bki+1.name);strcpy(bki.remark,bki+1.remark);/*置空最后的数组*/bk998.bkid=0;bk998.bknum=0;strcpy(,);strcpy(bk998.remark,);save();printf(删除成功!);else if (confi=n|confi=N)printf(未删除本书!n);elseprintf(输入错误,请重新输入!);goto againchoice;else printf(不存在该编号的书!n);againchoice2:printf(1、重新查询删除tt2、退出删除n);printf(请输入你的选择:);scanf(%d,&choice);switch(choice)case 1: system(cls);goto fdbk;case 2: break;printf(请输入任意键退出!n);getch();/*函数名:void stusave()函数功能:用于管理员注册新生 函数参数: 无函数编制者:马瑞宜*/void stusave()long int num;char name;int i;printagain:printf(请输入学生的学号:);scanf(%ld,&num);for (i=0;i99;i+)if (stui.stunum=num)printf(此账号已存在,请重新输入!n);goto printagain;for (i=0;i99;i+)/*找到未存内容的数组下标*/if (stui.stunum=0)break;stui.stunum=num;printf(请输入学生的名字:);scanf(%s,&name);strcpy(,&name);strcpy(stui.pawo,888888);save();printf(添加成功!默认密码为888888,请及时修改密码!n按任意键退出!n);getch();/*函数名:void main()函数功能:主函数 函数参数: 无函数编制者:马瑞宜*/void main()int choice;printf(=nn);printf( 广东工业大学自动化学院电子信息科学与技术1班图书管理系统nn);printf( 注意事项nn);printf(=nnn);printf(请保证student.txt和book.txt该两文件(在初始文档文件夹里面)在可执行文件exe的目录和工程文件.c的目录下,否则运行会出错。nn按任意键进入系统。nn);getch();system(cls);load();inbegin:system(cls);printf(=nn);print

温馨提示

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

评论

0/150

提交评论