版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程设计姓名:莫方民班级:计算机1403学号:《图书管理系统》目录TOC\o"1-5"\h\z一、题目要求及能实现的功能 2二、程序总体设计 2三、详细设计\o"CurrentDocument"1、主函数 4\o"CurrentDocument"2、各功能模块设计 5四、附录 26题目要求及能实现的功能图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等,使之能提供以下功能:1、新进图书基本信息的输入。2、图书基本信息的查询。3、对撤消图书信息的删除。4、办理借书手续。5、办理还书手续【提示】建立图书管理信息结构体,结构体成员包括图书馆名称、图书编号、单价啊、作者、存在状态、借书人姓名、性别、学号。存在状态设为整型,可用不同的数字代表借还状态。借书和还书手续要注意修改结构题的成员变量存在状态的值。总体设计
为了程序显示的清晰可读,应先清屏之后调用菜单函数。[流程]*显示一系列功能选项调用与n相应的模块2、各功能模块设计(2)查阅模块[说明]输入个员工信息后,浏览、查找、排序时同一个员工的所有信息都要同时显示,所以运用结构体运行。数据信息存放在文件中,一条记录对应一条学生信息,方便管理。[流程]
(3)借阅模块[说明]查阅完图书记录后,用户要借阅图书,系统要在操作过程中提示用户输入流程,根据用户所输入的指令,帮助其完成借阅。[流程](4)管理模块[说明]管理模块最为复杂,管理所有的图书及职工、学生的信息。先进入总体的管理系统,在这个系统中重点的操作是图书的管理,为其中的1至4项(分别是增加图书、删除图书、修改图书资料、书籍统计),同时系统还连接了职工、学生管理两个系统,为下一步的操作提供了条件。职工管理系统主要有增加图书、删除图书、修改图书资料、书籍统计,学生管理系统主要有申请新卡、删除卡号、借书统计、卡号统计四个模块,用于管理学生登录信息。[流程]图书馆管理系统设计源程序清单#include<stdio.h>#include<string.h>#include<stdlib.h>#include<ctype.h>#defineSTACK_INIT_SIZE10#defineOK1#defineTRUE1#defineERROR0structstudent{intcarnum;charlendbook[10];}student[1000];structbook{intbooknum;charbookname[20];floatbookprice;charbookcreat[20];intturefalse;}book[1000];structcar{intcarnum;charsex[5];charstudentname[20];intstudentclass;}car[1000];findbook(){FILE*fp;charbookname[10];inti;fp=fopen("book.txt","r");printf("请输入你要查找的书名:\n");scanf("%s",bookname);for(i=0;fread(&book[i],sizeof(structbook),1,fp)!=0;i++){if(strcmp(bookname,book[i].bookname)==0){if(book[i].turefalse==1){printf("书号书名作者\n%d%s%s\n",book[i].booknum,book[i].bookname,book[i].bookcreat);printf("此书现在无人借阅\n按任意键返回\n");}else{printf(“这本书已经有人借出\n");fclose(fp);return0;}fclose(fp);return0;}}printf("没有你要查询的书籍!\n");fclose(fp);return0;}findbook1(){FILE*fp;charbookcreat[10];inti;fp=fopen("book.txt","r");printf("请输入你要查找的作者名:\n");scanf("%s",bookcreat);for(i=0;fread(&book[i],sizeof(structbook),1,fp)!=0;i++){if(strcmp(bookcreat,book[i].bookcreat)==0){if(book[i].turefalse==1){printf("书号书名作者\n%d %s %s\n",book[i].booknum,book[i].bookname,book[i].bookcreat);printf("此书现在无人借阅\n按任意键返回\n");}else{printf("这本书已经有人借出!\n");fclose(fp);return0;}fclose(fp);return0;}}printf("没有你要查询的书籍\n");fclose(fp);return0;}chabook(){charch5;do{printf("1:按书名查找\n");printf("2:按作者查找\n");printf("0:返回\n");printf("请输入0—2:\n");ch5=getch();switch(ch5){case'1':findbook();getch();break;case'2':findbook1();getch();break;case'0':break;default:printf("无此操作!\n");getch();break;}}while(ch5!='0');return0;}lendbook(){FILE*fp,*fp2;inti,n;intcarnum;printf("请输入借书人的:\n卡号:\n");scanf("%d",&carnum);fp=fopen("car.txt","r");for(i=0;fread(&car[i],sizeof(structcar),1,fp)!=0;i++){if(car[i].carnum==carnum){n=i;fclose(fp);printf("书名:\n");scanf("%s",student[n].lendbook);fp=fopen("book.txt","r");for(i=0;fread(&book[i],sizeof(structbook),1,fp)!=0;i++){if(strcmp(book[i].bookname,student[n].lendbook)==0){if(book[i].turefalse==0){printf("对不起,此书有人借出,请借其他书\n");fclose(fp);getch();return0;}elsefclose(fp);fp=fopen("record.txt","a+");student[n].carnum=carnum;fwrite(&student[n],sizeof(structstudent),1,fp);fclose(fp);fp=fopen("book.txt","r");fp2=fopen("bookl.txt","w");for(i=0;fread(&book[i],sizeof(structbook),1,fp)!=0;i++){if(strcmp(book[i].bookname,student[n].lendbook)==0){book[i].turefalse=0;fwrite(&book[i],sizeof(structbook),1,fp2);continue;}fwrite(&book[i],sizeof(structbook),1,fp2);}fclose(fp);fclose(fp2);fp=fopen("book.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!=0;i++){fwrite(&book[i],sizeof(structbook),1,fp);}fclose(fp);fclose(fp2);fopen("bookl.txt","w");fclose(fp2);printf("借书完毕,按任意键返回...\n");getch();return0;}}printf("不存在这样的书,任意键返回...\n");fclose(fp);getch();return0;}}printf("你的卡号不存在,请申请新卡,按任意键返回...\n");fclose(fp);getch();return0;}huanbook(){FILE*fp,*fp2;inti,n;intcarnum;charlendbook[10];printf("\t\t。二)欢迎进入还书界面。二)”);printf("\n请你输入你的\n卡号:\n");scanf("%d”,&carnum);fp=fopen("car.txt","r");for(i=0;fread(&car[i],sizeof(structcar),1,fp)!=0;i++){if(car[i].carnum==carnum){n=i;fclose(fp);printf("请输入你要还的书的名字:\n");scanf("%s",lendbook);fp=fopen(〃record.txt〃,〃r〃);for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!=0;i++){if(strcmp(student[i].lendbook,lendbook)==0){fclose(fp);fp=fopen("record.txt〃,〃r〃);fp2=fopen("bookl.txt","w");for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!=0;i++){if(strcmp(student[i].lendbook,lendbook)==0){continue;}fwrite(&student[i],sizeof(structstudent),1,fp2);}fclose(fp);fclose(fp2);fp=fopen("record.txt〃,〃w〃);fp2=fopen("bookl.txt","r");for(i=0;fread(&student[i],sizeof(structstudent),1,fp2)!=0;i++){fwrite(&student[i],sizeof(structstudent),1,fp);}fclose(fp);fclose(fp2);fopen(〃bookl.txt〃,〃w〃);fclose(fp2);fp=fopen("book.txt","r");fp2=fopen("bookl.txt","w");for(i=0;fread(&book[i],sizeof(structbook),1,fp)!=0;i++){if(i==n){book[i].turefalse=1;fwrite(&book[i],sizeof(structbook),1,fp2);continue;}fwrite(&book[i],sizeof(structbook),1,fp2);}fclose(fp);fclose(fp2);fp=fopen("book.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!=0;i++){fwrite(&book[i],sizeof(structbook),1,fp);}fclose(fp);fclose(fp2);fopen("bookl.txt","w");fclose(fp2);printf("还书完毕,按任意键返回...\n");getch();return1;}}printf("你没有借这样的书,任意键返回...\n");fclose(fp);getch();return0;}}printf("没这样的卡,和管理员联系,按任意键返回...\n");fclose(fp);getch();return0;}lendcount(){FILE*fp;inti,n=0;fp=fopen("record.txt","r");if((fp=fopen("record.txt","r"))==0){printf("文件中没有数据!\n");printf("按任意键返回...\n");getch();return(0);}for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!=0;i++){printf("卡号借出的书籍\n");printf("%d%s\n",student[i].carnum,student[i].lendbook);n=n+1;}fclose(fp);printf("目前共有%d本书借出\n",n);printf("按任意键...\n");getch();returnn;}addcar(){FILE*fp;inti=0;fp=fopen("car.txt","a+");printf("卡号八n");scanf("%d",&car[i].carnum);printf("性别八n");scanf("%s",car[i].sex);printf("姓名:\n");scanf("%s",car[i].studentname);printf("班级:\n");scanf("%d”,&car[i].studentclass);fwrite(&car[i],sizeof(structcar),1,fp);fclose(fp);printf("输入完毕,任意键返回...\n");getch();}delcar(){FILE*fp,*fp2;inti;intcarnum;charchoice;fp=fopen("car.txt","r");fp2=fopen("bookl.txt","w");printf("要删除的卡号(不存在则不作改动):\n");scanf("%d",&carnum);for(i=0;fread(&car[i],sizeof(structcar),1,fp)!=0;i++)if(car[i].carnum!=carnum){fwrite(&car[i],sizeof(structcar),1,fp2);}}fclose(fp);fclose(fp2);printf("确认删除?(Y/N)!\n");scanf("%s”,&choice);if(choice=='y'||choice=='Y'){fp=fopen("car.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&car[i],sizeof(structcar),1,fp2)!=0;i++){fwrite(&car[i],sizeof(structcar),1,fp);}fclose(fp);fclose(fp2);fp2=fopen("bookl.txt","w");fclose(fp2);printf("操作超成功!\n按任意键返回...\n");getch();return0;}else{printf("操作已取消!\n按任意键返回...\n");getch();return0;}}carcount(){FILE*fp;inti,n=0;fp=fopen("car.txt","r");for(i=0;fread(&car[i],sizeof(structcar),1,fp)!=0;i++){printf("第%d张卡\n”,i+1);printf("卡号性别 姓名班级\n");printf("\t\t\n");%3dprintf(" %d %6s %%3d\n\n",car[i].carnum,car[i].sex,car[i].studentname,car[i].studentclass);n=n+1;}fclose(fp);printf("目前共有%d个学生。\n",n);printf("按任意键返回...\n");getch();}addbook(){FILE*fp;inti=0;charchoice='y';fp=fopen("book.txt","a+");while(choice=='y'||choice=='Y'){printf("书号八n");scanf("%d",&book[i].booknum);printf("书名八n");scanf("%s",book[i].bookname);printf("作者八n");scanf("%s",book[i].bookcreat);printf("单价:\n");scanf("%f",&book[i].bookprice);printf("请你设定书的状态(1在架/0不在)八n");scanf("%d",&book[i].turefalse);fwrite(&book[i],sizeof(structbook),1,fp);printf("是否要输入下本书(y/n)\n");scanf("%s”,&choice);}fclose(fp);}delbook(){FILE*fp,*fp2;inti;charbookname[10],choice;fp=fopen("book.txt","r");fp2=fopen("bookl.txt","w");printf("书名八n");scanf("%s",bookname);for(i=0;fread(&book[i],sizeof(structbook),1,fp)!=0;i++){if(strcmp(bookname,book[i].bookname)!=0){fwrite(&book[i],sizeof(structbook),1,fp2);}fclose(fp);fclose(fp2);printf("确认删除(y/n)?\n");scanf("%s”,&choice);if(choice=='y'||choice=='Y'){fp=fopen("book.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!=0;i++){fwrite(&book[i],sizeof(structbook),1,fp);}fclose(fp);fclose(fp2);fp2=fopen("bookl.txt","w");fclose(fp2);printf("按任意键返回...\n");getch();return0;}else{printf("按任意键返回...\n");getch();return0;}}changebook(){FILE*fp,*fp2;charbookname[10],choice;inti;fp=fopen("book.txt","r");fp2=fopen("bookl.txt","w");printf("书名:\n");scanf("%s",bookname);for(i=0;fread(&book[i],sizeof(structbook),1,fp)!=0;i++){if(strcmp(book[i].bookname,bookname)==0){printf("你所要修改的书的资料如下,请选择你要修改的内容:\n");printf("序号书名作者\n");printf("%d%s%s\n",book[i].booknum,book[i].bookname,book[i].bookcreat);printf("1:修改书号八n");printf("2:修改书名:\n");printf("3:修改作者:\n");printf("4:修改单价:");printf("请输入1—3:");choice=getch();switch(choice){case1:{printf("新的书号:\n");scanf("%d",&book[i].booknum);fwrite(&book[i],sizeof(structbook),1,fp2);}break;case'2':{printf("新的书名:\n");scanf("%s",book[i].bookname);fwrite(&book[i],sizeof(structbook),1,fp2);}break;case'3':{printf("新的作者:\/");scanf("%s",book[i].bookcreat);fwrite(&book[i],sizeof(structbook),1,fp2);}break;case'4':{printf("新的单价:");scanf("%f",book[i].bookprice);fwrite(&book[i],sizeof(structbook),1,fp2);}default:printf("没有这样的操作!");break;}continue;}fwrite(&book[i],sizeof(structbook),1,fp2);}fclose(fp);fclose(fp2);fp=fopen("book.txt","w");fp2=fopen("bookl.txt","r");for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!=0;i++){fwrite(&book[i],sizeof(structbook),1,fp);}fclose(fp);fp2=fopen("bookl.txt","w");fclose(fp2);printf("按任意键返回・・.\n");getchar();return0;}bookcount(){FILE*fp;inti,n=0;fp=fopen("book.txt〃,〃r〃);for(i=0;fread(&book[i],sizeof(structbook),1,fp)!=0;i++){if(book[i].booknum!=0&&strlen(book[i].bookname)!=0&&strlen(book[i].bookcreat)!=O){printf("第%d本书\n序号 书名 作者单价状态\n”,i+1);printf("\t\t\n");printf("%d %10s ",book[i].booknum,book[i].bookname);printf("%15s %4.2f %d(1在/0不在)\n”,book[i].bookcreat,book[i].bookprice,book[i].turefalse);n=n+1;}}fclose(fp);printf("目前共有%d本书.\n”,n);printf("按任意键返回・・.\n〃);}end(){printf("\t\t'n");printf("\t\t'n");printf("\t\t||谢谢使用本系统,再见!||\n");printf("\t\t\n");printf("\t\t\n");}main(){charch1,ch2,ch4;do{printf("\t\
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年三亚理工职业学院单招综合素质考试题库附答案详细解析
- 广东深圳南山二外(集团)学府二小招聘小学体育教师1人笔试参考题库及答案解析
- 2026陕西师范大学生命科学学院教学科研人员招聘笔试模拟试题及答案解析
- 2026浙江事业单位统考柯桥区招聘75人考试备考题库及答案解析
- 2026青海海南州贵南县自然资源和林业草原局林业站招聘生态护林员2人笔试参考题库及答案解析
- 2026年中国人民解放军第五七二0工厂招聘笔试模拟试题及答案解析
- 2026浙江省对外服务有限公司丽水分公司招聘1人笔试模拟试题及答案解析
- 2026福建三明市教育局华东师范大学附属三明中学公开招聘专业技术人员13人 (河南师范大学专场)笔试备考试题及答案解析
- 2026年宜兴市事业单位公开招聘人员109人考试备考题库及答案解析
- 泸州市雁林高级中学2026年春期招聘笔试模拟试题及答案解析
- DB11-T 2382-2024 建设工程施工消耗量标准
- 酒吧股东合作协议范本
- 昆虫记老象虫课件
- 2026年广西南宁市教育局直属单位招聘教职工易考易错模拟试题(共500题)试卷后附参考答案
- 如新公司产品培训课件
- 8 池子与河流【新课标版 教学课件】
- 六年级心理健康-尊重好朋友
- DB31∕T 1598-2025 城市轨道交通车辆寿命评估通 用要求
- 埋石混凝土挡墙监理实施细则
- 消防队队伍安全教育课件
- 耕地保护和粮食安全责任工作总结
评论
0/150
提交评论