C语言之图书管理系统(功能齐全!!!)
【主要内容】
开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。使之能提供以下基本功能:
(1)图书信息录入功能(图书信息用文件保存)--输入
(2)图书信息浏览功能--输出
(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):
①按书名查询 ②按作者名查询 按照价钱排序 按出版时间排序等等
(4)图书信息的删除与修改
扩展功能:可以按照自己的程度进行扩展。比如(1)简单的权限处理 (2)报表打印功能(3)甚至根据自己情况,可以加上学生信息,并扩充为图书借阅系统。(4)模糊查询 (5)综合查询 (6)统计功能 比如统计处某一类别的图书信息 或 筛选出小于指定数量库存的图书信息等等。
【概要设计】
1 图书录入可以录入图书名,作者,出版社,出版日期,价格!录入图书编号时函数就会判断此编号是否存在,若存在不能成功录入!
2 图书浏览可以浏览全部图书!
3 图书查询提供按图书编号模糊查询,按图书名关键字查询,按图书编号精确查询,按图书名精确查询!模糊查询和关键字查询事通过比价字符串的相似度而实现的!
4 修改删除图书可以通过图书查询来查询操作的图书编号,通过编号操作!函数会提示用户是否调用图书查询来找到自己想要操作的图书的编号。如果某一本图书已经被借阅那么用户就不能删除该图书!
5 借阅图书通过学号和图书编号进行借阅!如果该学号是第一次借阅那么会提示用户输入自己的姓名,并存入student.txt,方便以后借阅与归还!
6 归还图书先提供学号,然后程序会输出该学号借阅的所有图书,然后再通过编号归还!
7 借阅查询可查询某个学生已借但未归还的图书!
【代码如下】(运行结果省略)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
FILE *fp,*fpj,*fps;
int i,xuan;
typedef struct book{char name[10];char num[10];char writer[10];int date;char press[10];float price;char leibie[10];int kucun;int jiechu;
}bo;
typedef struct student{char name[10];char num[10];int jie;
}st;
typedef struct jieyue{char snum[10];char bnum[10];
}ji;
void menu()//菜单
{printf("\n\n");for(i=0;i<80;i++)printf("#");printf("\n\n"); printf("\t\t1-----图书录入\t\t\t");printf("2-----图书浏览\n\n");printf("\t\t3-----图书查询\t\t\t");printf("4-----修改删除图书\n\n");printf("\t\t5-----借阅图书\t\t\t");printf("6-----归还图书\n\n");printf("\t\t7-----借阅查询\t\t\t\n");printf("\n\t\t\t\t输入其他任意键退出\n");printf("\n\n");for(i=0;i<80;i++)printf("#");printf("\n\n");
}
void end()//录入图书
{bo boo,booq;printf("请输入图书名(最多十个字符):");scanf("%s",boo.name);do{i=1;printf("请输入图书编号(最多十个字符):");scanf("%s",boo.num);fread(&booq,sizeof(bo),1,fp);while(!feof(fp)){if(strcmp(booq.num,boo.num)==0){printf("\n该编号已存在请重新输入\n\n");i=0;break;}fread(&booq,sizeof(bo),1,fp);}rewind(fp);}while(i==0);printf("请输入图书作者(最多十个字符):");scanf("%s",boo.writer);printf("请输入图书出版日期(例如2001年5月3日出版则输入20010503):");scanf("%d",&boo.date);printf("请输入图书价格:");scanf("%f",&boo.price);printf("请输入图书出版社(最多十个字符):");scanf("%s",boo.press);printf("请输入图书类别(最多十个字符):");scanf("%s",boo.leibie);printf("请输入图书入库数:");scanf("%d",&boo.kucun);boo.jiechu=0;getchar();fseek(fp,0,2);fwrite(&boo,sizeof(bo),1,fp);printf("\n录入成功!回到主菜单");system("pause");
}
void print()//浏览图书
{bo boo;printf("书名 编号 作者 价格 出版社 类别 原始库存 借出\n");fread(&boo,sizeof(bo),1,fp);while(feof(fp)==0){printf("%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",boo.name,boo.num,boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);fread(&boo,sizeof(bo),1,fp);}printf("\n浏览图书完毕!回到主菜单");system("pause");
}
int dui(char *p,char *p1)//对比两个字符串的相关度(用于精确搜索)
{int bao=0,fan=1;for(i=0;i<(int)strlen(p1);i++){if(p[0]==p1[i]){bao=i;break;}}if((int)strlen(p)>(int)strlen(p1)-bao+1)return 0;elsefor(i=0;i<(int)strlen(p);i++){if(p[i]!=p1[bao+i])fan=0;}return fan;
}
void find()//查询图书
{char hao[10];int fan=1;int bian=1;bo boo;printf("请选择查询类型:\n\n\t\t1-按图书编号模糊查询 2-按图书名关键字查询\n");printf(" \n\t\t3-按图书编号精确查询 4-按图书名精确查询\n\n代码:");scanf("%d",&xuan);if(xuan==1){printf("请输入编号(最多十个字符):");scanf("%s",hao);printf("序号 书名 编号 作者 价格 出版社 类别 原始库存 借出\n");fread(&boo,sizeof(bo),1,fp);while(!feof(fp)){fan=dui(hao,boo.num);if(fan==1){printf("%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",bian,boo.name,boo.num,boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);bian++;}fread(&boo,sizeof(bo),1,fp);}}else if(xuan==2){printf("请输入图书名关键字(最多十个字符):");scanf("%s",hao);printf("序号 书名 编号 作者 价格 出版社 类别 原始库存 借出\n");fread(&boo,sizeof(bo),1,fp);while(!feof(fp)){fan=dui(hao,boo.name);if(fan==1)printf("%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",bian,boo.name,boo.num,boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);fread(&boo,sizeof(bo),1,fp);}}else if(xuan==4){printf("请输入图书名(最多十个字符):");scanf("%s",hao);printf("序号 书名 编号 作者 价格 出版社 类别 原始库存 借出\n");while(!feof(fp)){if(strcmp(hao,boo.name)==0)printf("%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",bian,boo.name,boo.num,boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);fread(&boo,sizeof(bo),1,fp);}}else if(xuan==3){printf("请输入图书编号(最多十个字符):");scanf("%s",hao);printf("序号 书名 编号 作者 价格 出版社 类别 原始库存 借出\n");while(!feof(fp)){if(strcmp(hao,boo.num)==0)printf("%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",bian,boo.name,boo.num,boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);fread(&boo,sizeof(bo),1,fp);}}else{printf("输入错误,正在退出!");system("pause");return;}printf("\n查询图书完毕! ");system("pause");
}
void del()//修改删除图书
{FILE *p;ji jie;int j=0;char num[10];bo boo,booq;int xu;char or;char cha[10];printf("\n删除修改图书只能通过图书编号来完成!\n是否调用图书查询来查询你要操作的图书编号(Y/N)\n");getchar();scanf("%c",&or);if(or=='Y'||or=='y'){find();rewind(fp);}printf("\n请输入你要操作的图书的编号(如果输入错误的编号,将不做任何操作):");scanf("%s",cha);fread(&jie,sizeof(ji),1,fpj);while(!feof(fpj)){if(strcmp(jie.bnum,cha)==0){printf("\n这本书已有人借阅,不能操作!\n正在退出 ");system("pause");return;}fread(&jie,sizeof(ji),1,fpj);}printf("\n\n1-删除图书 2-修改图书\n\n");printf("请选择操作类型:");scanf("%d",&xuan);fread(&boo,sizeof(bo),1,fp);p=fopen("c:\\books1.txt","wb+");while(!feof(fp)){j++;if(strcmp(boo.num,cha)==0){ if(xuan==2){ printf("\n\n1-书名 2-编号 3-作者 4-价格 5-出版社 6-类别 7-库存\n\n");printf("请选择要修改的项目:");scanf("%d",&xu);if(xu==1){printf("你要把%s改为:",boo.name);scanf("%s",boo.name);}else if(xu==2){do{i=1;printf("你要把%s改为:",boo.num);scanf("%s",num);rewind(fp);fread(&booq,sizeof(bo),1,fp);while(!feof(fp)){if(strcmp(booq.num,num)==0){printf("\n该编号已存在请重新输入\n\n");i=0;break;}fread(&booq,sizeof(bo),1,fp);}}while(i==0);rewind(fp);for(i=0;i<j;i++){fread(&boo,sizeof(bo),1,fp);strcpy(boo.num,num);}}else if(xu==3){printf("你要把%s改为:",boo.writer);scanf("%s",boo.writer);}else if(xu==4){printf("你要把%.2f改为:",boo.price);scanf("%f",&boo.price);}else if(xu==5){printf("你要把%s改为:",boo.press);scanf("%s",boo.press);}else if(xu==6){printf("你要把%s改为:",boo.leibie);scanf("%s",boo.leibie);}else if(xu==7){printf("你要把%d改为:",&boo.kucun);scanf("%d",&boo.kucun);}fwrite(&boo,sizeof(bo),1,p);}}elsefwrite(&boo,sizeof(bo),1,p);fread(&boo,sizeof(bo),1,fp);}fclose(p);p=fopen("c:\\books1.txt","rb+");fclose(fp);fp=fopen("c:\\book.txt","wb+");fread(&boo,sizeof(bo),1,p);while(!feof(p)){fwrite(&boo,sizeof(bo),1,fp);fread(&boo,sizeof(bo),1,p); }fclose(fp);printf("操作成功 回到主菜单");system("pause");
}
void lend()//借阅图书
{bo boo;FILE *p;st stu;ji jie;int j=0;char or,num[10],xnum[10];printf("\n借阅图书只能通过图书编号完成!\n是否调用图书查询来查询你要操作的图书编号(Y/N)\n");getchar();scanf("%c",&or);if(or=='Y'||or=='y')find();printf("\n请输入你要借阅的图书的编号:");scanf("%s",num);fread(&boo,sizeof(bo),1,fp);while(!feof(fp)){if(strcmp(num,boo.num)==0){j=1;break; }fread(&boo,sizeof(bo),1,fp);}if(j==0){printf("\n书库没有该图书 正在退出\n");system("pause");return;}printf("\n你需要借阅的图书是:\n");printf("书名 编号 作者 价格 出版社 类别 原始库存 借出\n");printf("%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",boo.name,boo.num,boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);if(boo.kucun==boo.jiechu){printf("\n该册图书已全部借出!正在退出\n");system("pause");return;}printf("\n请输入你的学号:");scanf("%s",xnum);j=0;fread(&jie,sizeof(ji),1,fpj);while(!feof(fpj)){if((strcmp(jie.bnum,num)==0)&&(strcmp(jie.snum,xnum)==0)){j=1;break; }fread(&jie,sizeof(ji),1,fpj);}if(j==1){printf("\n你已经借阅过该书 正在退出\n");system("pause");return;}fread(&stu,sizeof(st),1,fps);j=0;while(!feof(fps)){if(strcmp(xnum,stu.num)==0){j=1;break;}fread(&stu,sizeof(st),1,fps);}if(j==0){printf("\n你是第一次借阅图书,为了方便管理请输入你的姓名:");scanf("%s",stu.name);strcpy(stu.num,xnum);stu.jie=1;fseek(fps,0,2);fwrite(&stu,sizeof(st),1,fps);}else{if(stu.jie==5){//这里可以控制每个学生最多借几本书printf("\n你已经借了5本书,不能再借\n");system("pause");return;}p=fopen("c:\\jie.txt","wb+");rewind(fps);fread(&stu,sizeof(st),1,fps);while(!feof(fps)){if(strcmp(xnum,stu.num)==0)stu.jie++;fwrite(&stu,sizeof(st),1,p);fread(&stu,sizeof(st),1,fps);}fclose(p);fclose(fps); p=fopen("c:\\jie.txt","rb+");fps=fopen("c:\\student.txt","wb+");fread(&stu,sizeof(st),1,p);while(!feof(p)){fwrite(&stu,sizeof(st),1,fps);fread(&stu,sizeof(st),1,p); }}strcpy(jie.bnum,num);strcpy(jie.snum,xnum);fseek(fpj,0,2);fwrite(&jie,sizeof(ji),1,fpj);rewind(fp);p=fopen("c:\\jie.txt","wb+");fread(&boo,sizeof(bo),1,fp);while(!feof(fp)){if(strcmp(num,boo.num)==0)boo.jiechu++;fwrite(&boo,sizeof(bo),1,p);fread(&boo,sizeof(bo),1,fp);}fclose(p);p=fopen("c:\\jie.txt","rb+");fclose(fp);fp=fopen("c:\\book.txt","wb+");fread(&boo,sizeof(bo),1,p);while(!feof(p)){fwrite(&boo,sizeof(bo),1,fp);fread(&boo,sizeof(bo),1,p); }printf("\n借阅成功!回到主菜单");system("pause");
}void huan(){//归还图书FILE *p;bo boo;ji jie;st stu;int j=0;char snum[10],bnum[10];i=0;printf("\n请输入你的学号:");scanf("%s",snum);printf("\n你借阅了以下图书\n");fread(&jie,sizeof(ji),1,fpj);printf("书名 编号 作者 价格 出版社 类别 原始库存 借出\n");while(!feof(fpj)){if(strcmp(jie.snum,snum)==0){fread(&boo,sizeof(bo),1,fp);while(!feof(fp)){if(strcmp(jie.bnum,boo.num)==0){printf("%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",boo.name,boo.num,boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);j=1;}fread(&boo,sizeof(bo),1,fp);}}fread(&jie,sizeof(ji),1,fpj);}if(j==0){printf("\n你没有借阅任何图书!\n\n正在退出");system("pause");return;}rewind(fp);rewind(fpj);printf("\n请输入你归还的图书的编号:");scanf("%s",bnum);fread(&jie,sizeof(jie),1,fpj);//改变jieyue.txt里的数据p=fopen("c:\\jie.txt","wb+");while(!feof(fpj)){if((strcmp(jie.bnum,bnum)==0)&&(strcmp(jie.snum,snum)==0))i=1;else fwrite(&jie,sizeof(jie),1,p);fread(&jie,sizeof(jie),1,fpj);}if(i==0){printf("\n你没有借过该图书\n正在退出");system("pause");return;}fclose(p);fclose(fpj); p=fopen("c:\\jie.txt","rb+");fpj=fopen("c:\\jieyue.txt","wb+");fread(&jie,sizeof(ji),1,p);while(!feof(p)){fwrite(&jie,sizeof(ji),1,fpj);fread(&jie,sizeof(ji),1,p); }fclose(p);//改变book.txt里的数据p=fopen("c:\\jie.txt","wb+");fread(&boo,sizeof(bo),1,fp);while(!feof(fp)){if(strcmp(bnum,boo.num)==0)boo.jiechu--;fwrite(&boo,sizeof(bo),1,p);fread(&boo,sizeof(bo),1,fp);}fclose(p);p=fopen("c:\\jie.txt","rb+");fclose(fp);fp=fopen("c:\\book.txt","wb+");fread(&boo,sizeof(bo),1,p);while(!feof(p)){fwrite(&boo,sizeof(bo),1,fp);fread(&boo,sizeof(bo),1,p); }fclose(p);//改变student.txt里的数据p=fopen("c:\\jie.txt","wb+");rewind(fps);fread(&stu,sizeof(st),1,fps);while(!feof(fps)){if(strcmp(snum,stu.num)==0)stu.jie--;fwrite(&stu,sizeof(st),1,p);fread(&stu,sizeof(st),1,fps);}fclose(p);fclose(fps); p=fopen("c:\\jie.txt","rb+");fps=fopen("c:\\student.txt","wb+");fread(&stu,sizeof(st),1,p);while(!feof(p)){fwrite(&stu,sizeof(st),1,fps);fread(&stu,sizeof(st),1,p); }printf("\n归还成功!回到主菜单");system("pause");
}
void cha(){//借阅查询char num[10];bo boo;ji jie;printf("\n请输入你的学号:");scanf("%s",num);fread(&jie,sizeof(ji),1,fpj);printf("书名 编号 作者 价格 出版社 类别 原始库存 借出\n");while(!feof(fpj)){if(strcmp(jie.snum,num)==0){fread(&boo,sizeof(bo),1,fp);while(!feof(fp)){if(strcmp(jie.bnum,boo.num)==0)printf("%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",boo.name,boo.num,boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);fread(&boo,sizeof(bo),1,fp);}}fread(&jie,sizeof(ji),1,fpj);}printf("\n查询完毕!回到主菜单");system("pause");
}
main(){if((fp=fopen("c:\\book.txt","rb+"))==NULL){printf("在c盘根目录下没有找到储存图书信息的book.txt文件\n请选择 1--手动导入! 2--创建此文件\n");scanf("%d",&xuan);switch(xuan){case 2:if((fp=fopen("c:\\book.txt","wb+"))!=NULL)printf("创建成功\n\n");break;case 1:printf("请把名为book.txt的文件复制到c盘根目录下\n\n");}}if((fpj=fopen("c:\\jieyue.txt","rb+"))==NULL){printf("在c盘根目录下没有找到储存借阅信息的jieyue.txt文件\n请选择 1--手动导入! 2--创建此文件\n");scanf("%d",&xuan);switch(xuan){case 2:if((fpj=fopen("c:\\jieyue.txt","wb+"))!=NULL)printf("创建成功\n\n");break;case 1:printf("请把名为jieyue.txt的文件复制到c盘根目录下\n\n");}}if((fps=fopen("c:\\student.txt","rb+"))==NULL){printf("在c盘根目录下没有找到储存学生信息的student.txt文件\n请选择 1--手动导入! 2--创建此文件\n");scanf("%d",&xuan);switch(xuan){case 2:if((fps=fopen("c:\\student.txt","wb+"))!=NULL)printf("创建成功\n\n");break;case 1:printf("请把名为student.txt的文件复制到c盘根目录下\n\n");}}menu();printf("\n 代码:");scanf("%d",&xuan); while(xuan==1||xuan==2||xuan==3||xuan==4||xuan==5||xuan==6||xuan==7){fp=fopen("c:\\book.txt","rb+");fps=fopen("c:\\student.txt","rb+");fpj=fopen("c:\\jieyue.txt","rb+");switch(xuan){case 0:break;case 1:end();break;case 2:print();break;case 3:find();break;case 4:del();break;case 5:lend();break;case 6:huan();break;case 7:cha();break;}fclose(fp);fclose(fpj);fclose(fps);menu();printf("\n 代码:");scanf("%d",&xuan);}}
C语言之图书管理系统(功能齐全!!!)相关推荐
- C语言实现图书管理系统
C语言实现图书管理系统 代码如下: # include "stdio.h" # include "stdlib.h" # include "strin ...
- 利用C语言制作图书管理系统
利用C语言制作图书管理系统 #include<stdio.h> #include<windows.h> #define LEN sizeof(commdity) #define ...
- c语言图书管理系统用什么软件,编写c语言的软件 纯C语言编写图书管理系统.doc...
编写c语言的软件 纯C语言编写图书管理系统 编写c语言的软件 纯C语言编写图书管理系统WORD文档bbszp 导读:就爱阅读网友为您分享以下"纯C语言编写图书管理系统WORD文档bbszp& ...
- c语言之bbs管理系统,编写c语言的软件 纯C语言编写图书管理系统WORD文档bbszp.doc...
编写c语言的软件 纯C语言编写图书管理系统WORD文档bbszp 编写c语言的软件 纯C语言编写图书管理系统WORD文档bbszp 导读:就爱阅读网友为您分享以下"纯C语言编写图书管理系统W ...
- 【C语言 实现图书管理系统】
项目 :C语言实现图书管理系统 编译环境 :Visual Studio 2019 作者 :wddkxg 时间 : 2019 LibraryManagementSystem.cpp #include&l ...
- c语言图书管理系统解析,基于C语言的图书管理系统的设计与实现解析.doc
毕业论文 题目:基于C语言的图书管理系统的设计与实现 英文题目:Design and Implementation of Books Management System Based on C Lang ...
- 教材征订管理系统c语言,基于C语言的图书管理系统的设计与实现范文.doc
毕业论文 题目:基于C语言的图书管理系统的设计与实现 英文题目:Design and Implementation of Books Management System Based on C Lang ...
- c语言注册登录系统代码6,C语言程序设计(图书管理系统)源代码.doc(6)
h"#include#include/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...
- C语言完成图书管理系统
引言:这个系统是我大一下册编写的,也没有再修改,C语言只学到简单的指针为止,对C的认识非常肤浅,并且没有代码经验,可以说这是我第一个能算上能实现功能的系统,仅仅借助书籍:程序设计第四版(谭浩强).数据 ...
- 第一个C语言项目——图书管理系统
[文末获取源码] 该系统是我们C语言课上的一个作业,本来是不打算写的,但是找了好久都没有找到心仪的代码,所以被迫写了该系统,该图书管理系统一共有十个功能,具体如下说明: 01.注册账号 02.登录账号 ...
最新文章
- 如何开启Windows 10隐藏的锁屏时间设置项
- 2019 GDUT Rating Contest II : Problem G. Snow Boots
- Linux 修改目录下所有文件权限
- Oracle 用子查询创建表
- okhttp上传文件结束后服务器才收到,okhttp3 Null Respone上传文件
- 《机器学习实战》chapter04 使用Python进行文本分类
- Centos7 Git源码安装
- STM32为何在诸多的单片机中脱颖而出?
- 简洁大气自适应后台登录模板单页源码
- slab中记录空闲对象
- python变量存为matlab,将matlab变量导出为python用法的文本
- 网站流量少的原因及解决方案
- 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_2 响应之返回值是String类型...
- 【FPGA】RGMII接口
- 用python实现计算器功能_Python实现的计算器功能示例
- oppoa59s计算机功能,OPPO A59s怎么开启OTG功能-OPPO A59s开启OTG功能方法 - 河东软件园...
- WORD中页码变成一样
- 思科FTP服务器基本配置
- java学习-画图小程序
- 企业人员信息管理(一)
热门文章
- python画方波_SciPyTutorial-方波信号fft频谱
- 计算机美术教学应用,浅谈计算机在美术教学中的应用
- matlab 函数定义 属性,matlab class()函数类定义技巧
- lg-1 x 怎么算_【言情】魔鬼的体温 by 藤萝为枝 敏感自卑男主x治愈天使女主 我凭美食成为国家宝藏by 十尾兔...
- 将 VSTO 与 SharePoint 内容类型相集成
- postgresql源码学习(38)—— 备份还原② - do_pg_stop_backup函数
- java计算机毕业设计绿洲小区快递配送系统源代码+数据库+系统+lw文档
- QT 小数位有效数显示
- kui 组件化库思路(来啦,老弟,持续更新哦,部署gitpages,添加issue)
- markdown生成chm电子书或在线文档