1、功能描述

  1. 新进图书基本信息的输入
  2. 图书借本信息的查询
  3. 对撤销图书的删除
  4. 办理借书手续
  5. 办理还书手续
  6. 提供使用文件方式存储数据

2、设计思想

  1. 新进图书的输入,首先要输入要添加的书的基本信息,如:书名、书号、价格、作者,再通过fprintf()函数将输入的信息写入文件中
  2. 图书信息的查询可分为两种方式,第一是查询文件中的全部数据,采用的方法是利用fscanf()函数读出文件中的数据到指定的变量,再将数据全部打印出来。第二是查询用户输入的书名的指定的数据,采用的方法是先输入要查询的书的名字,再用fscanf()函数将文件中的内容读取到指定的变量,再对其与输入的书名一一比较,相同则打印出该书的全部信息(本系统默认所有的书名不能相同)
  3. 图书信息的删除采用的方法是输入要删除的书的信息,然后通过fscanf()函数读取出文件中的所有信息,并将其存放再预先定义好的数组中,再利用循环对存储的数据的书名和输入的书名比对,直到找到对应的图书信息,并删除。删除后数组中存储该数据的位置就空出了一位,所以需要将后面的数据依次向前移动一位。(方法是将数组中要删除的信息的下一个元素的值赋给要删除的那个元素,依次类推,直到最后一个元素完成前移)删除完成之后,将剩下的数据采用fprintf()函数再次存入文件中
  4. 办理借书手续采用的方式fscnf()函数将文件内容读取出来,再与输入的要借的书名一一比对,找到对应的书之后,需要输入借书人的姓名、学号、和性别,并将这些信息写在图书信息的后面,并将图书状态改为“已借出”
  5. 办理还书手续与借书手续基本相同,只是清除了借书人的信息,并把图书的状态改为“在馆”。

3、界面和执行结果展示

1、主菜单界面:

2、执行增加新图书界面

执行的结果展示:代码执行后会自动在D盘的根目录下生成一个book文件夹(这里文件夹的生成位置和名称都可以更改),如果文件夹存在,就不用生成

3、执行删除操作的界面展示:

执行结果展示

4、执行查询图书操作展示:(为了展示效果,这里又增加了两本书)

5、办理借书手续操作展示:

执行结果展示:

6、办理还书手续操作展示:

执行结果展示:

4、代码展示

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define OK 1
typedef struct Book{char book_name[20];//书名  默认情况下书名不能重复char number[20];//书号char price[10];//价格char auther[20];//作者char status[10];//1为在图书馆,0表示已经借出char borrow_name[20];//借书人的姓名char sex[10];//借书人的性别char id[20];//借书人的学号
}Information;//读取文件行数的函数
int count_lines() {int count = 0;char c;FILE *fp;if((fp=fopen("d:\\book.txt","r"))==NULL){printf("cannot open file strike any key  exit!");exit(1);}while ((c = fgetc(fp)) != EOF) {if (c == '\n') {count++;}}fclose(fp);return count;
}
//增加新图书
int add(){Information book_data;FILE *fp;int a=1,line;if((fp=fopen("d:\\book.txt","a"))==NULL){printf("cannot open file strike any key  exit!");exit(1);}line=count_lines();while(a){printf("请分别输入要添加的书的书名、书号、价格和作者,之间用空格隔开:");scanf("%s%s%s%s",book_data.book_name,book_data.number,book_data.price,book_data.auther);memcpy(book_data.status,"在馆",10);//book_data.status=1;memcpy(book_data.borrow_name,"无",20);memcpy(book_data.sex,"空",10);memcpy(book_data.id,"空",20);//book_data.id="空";fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s",book_data.book_name,book_data.number,book_data.price,book_data.auther,book_data.status,book_data.borrow_name,book_data.sex,book_data.id);fputs("\n",fp);printf("是否继续增加新的图书:\n");printf("--------------------------\n");printf("     1、是     2、否      \n");printf("--------------------------\n");scanf("%d",&a);if(a==2){a=0;fclose(fp);}}return OK;
}//删除图书
int deletebook(){Information book_data[20];char a[20];FILE *fp;int line;line=count_lines();fp=fopen("d:\\book.txt","r");for(int i=0;i<line;i++){fscanf(fp,"%s%s%s%s%s%s%s%s",book_data[i].book_name,book_data[i].number,book_data[i].price,book_data[i].auther,book_data[i].status,book_data[i].borrow_name,book_data[i].sex,book_data[i].id);}printf("请输入要删除的书籍名称:");scanf("%s",a);for(int j=0;j<line;j++){if(strcmp(a,book_data[j].book_name)==0){while(j<line-1){                    //此处可能存在错误book_data[j]=book_data[j+1];j++;}break;}}fp=fopen("d:\\book.txt","w");for(int k=0;k<line-1;k++){fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t",book_data[k].book_name,book_data[k].number,book_data[k].price,book_data[k].auther,&book_data[k].status,book_data[k].borrow_name,book_data[k].sex,book_data[k].id);fputs("\n",fp);}fclose(fp);printf("删除成功!\n");return OK;
}//查询书籍
int search(){FILE *fp;Information book_data;char b[20];int a,line;line=count_lines();printf("-------------------------------------------------\n");printf("   1、查询全部图书信息     2、查询指定图书信息   \n");printf("-------------------------------------------------\n");printf("请输入查询方式:");scanf("%d",&a);if(a==1){fp=fopen("d:\\book.txt","r");for(int i=0;i<line;i++){fscanf(fp,"%s%s%s%s%s%s%s%s",book_data.book_name,book_data.number,book_data.price,book_data.auther,book_data.status,book_data.borrow_name,book_data.sex,book_data.id);printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",book_data.book_name,book_data.number,book_data.price,book_data.auther,book_data.status,book_data.borrow_name,book_data.sex,book_data.id);}} else {fp=fopen("d:\\book.txt","r");printf("请输入要查询的书的书名:");scanf("%s",b);for(int j=0;j<line;j++){fscanf(fp,"%s%s%s%s%s%s%s%s",book_data.book_name,book_data.number,book_data.price,book_data.auther,book_data.status,book_data.borrow_name,book_data.sex,book_data.id);if(strcmp(book_data.book_name,b)==0){printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",book_data.book_name,book_data.number,book_data.price,book_data.auther,book_data.status,book_data.borrow_name,book_data.sex,book_data.id);break;}}if(j>=line){printf("不存在该书!");}}fclose(fp);return OK;
}//办理借书手续
int borrow(){FILE *fp;Information data[20];char a[20],name1[20],sex1[10],id1[20];int line;line=count_lines();printf("请分别输入借书人的姓名,性别,学号:");scanf("%s%s%s",name1,sex1,id1);printf("请输入要借的书的书名:");scanf("%s",a);fp=fopen("d:\\book.txt","r");for(int i=0;i<line;i++){fscanf(fp,"%s%s%s%s%s%s%s%s",data[i].book_name,data[i].number,data[i].price,data[i].auther,data[i].status,data[i].borrow_name,data[i].sex,data[i].id);}for(int j=0;j<line;j++){if(strcmp(data[j].book_name,a)==0){memcpy(data[j].status,"已借出",10);//data[j].status=0;memcpy(data[j].borrow_name,name1,20);//data[j].borrow_name=name1;memcpy(data[j].sex,sex1,10);//data[j].sex=sex1;memcpy(data[j].id,id1,20);//data[j].id=id1;break;}}fp=fopen("d:\\book.txt","w");for(int k=0;k<line;k++){fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t",data[k].book_name,data[k].number,data[k].price,data[k].auther,data[k].status,data[k].borrow_name,data[k].sex,data[k].id);fputs("\n",fp);}fclose(fp);printf("借书成功!\n");return OK;
}//办理还书手续
int returnbook(){FILE *fp;Information data[20];char a[20];int line;line=count_lines();printf("请输入要还的书的书名:");scanf("%s",a);fp=fopen("d:\\book.txt","r");for(int i=0;i<line;i++){fscanf(fp,"%s%s%s%s%s%s%s%s",data[i].book_name,data[i].number,data[i].price,data[i].auther,data[i].status,data[i].borrow_name,data[i].sex,data[i].id);}for(int j=0;j<line;j++){if(strcmp(data[j].book_name,a)==0){memcpy(data[j].status,"在馆",10);//data[j].status=1;memcpy(data[j].borrow_name,"无",20);//data[j].borrow_name="无";memcpy(data[j].sex,"空",10);//data[j].sex="空";memcpy(data[j].id,"空",20);//data[j].id="空";break;}}fp=fopen("d:\\book.txt","w");for(int k=0;k<line;k++){fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t",data[k].book_name,data[k].number,data[k].price,data[k].auther,data[k].status,data[k].borrow_name,data[k].sex,data[k].id);fputs("\n",fp);}fclose(fp);printf("还书成功!\n");return OK;
}//主函数
void main(){int a=0,line=0,selection;while(a==0){printf("---------------------------------\n");printf("|          图书管理系统         |\n");printf("---------------------------------\n");printf("|                               |\n");printf("|         1、增加新图书         |\n");printf("|                               |\n");printf("|         2、删除图书           |\n");printf("|                               |\n");printf("|         3、查询图书           |\n");printf("|                               |\n");printf("|         4、办理借书手续       |\n");printf("|                               |\n");printf("|         5、办理还书手续       |\n");printf("|                               |\n");printf("|         6、退出系统           |\n");printf("|                               |\n");printf("---------------------------------\n");printf("请输入操作:");scanf("%d",&selection);switch(selection){case 1:{add();}break;case 2:{deletebook();}break;case 3:{search();}break;case 4:{borrow();}break;case 5:{returnbook();}break;case 6:{a=1;}break;}}
}

图书管理系统——C语言课程设计相关推荐

  1. 课程设计图书管理系统c语言,图书管理系统c语言课程设计c语言课程设计作业获得95分全院第一......

    > 下载中心  >   > 图书管理系统 c语言课程设计 english version 图书管理系统 c语言课程设计 所属分类: 开发工具:c/c++ 文件大小:2720kb 下载 ...

  2. c语言课程设计作业图书管理系统,C语言课程设计图书馆管理系统程序代码.doc

    C语言课程设计图书馆管理系统程序代码.doc includestdio.h includewindows.h includestring.h includeconio.h define M 100 s ...

  3. c语言大作业书店图书管理系统,c语言课程设计 书店管理系统.pdf

    c语言课程设计 书店管理系统 计算机程序设计(C语言) 课程设计报告 题目:图书管理系统 学院: 专业: 班级: 学号: 姓名: 指导教师: 设计日期:2013年06月24 日 一.选题背景: 设计一 ...

  4. c语言大作业书店图书管理系统,C语言课程设计书店管理系统.pdf

    计算机程序设计(C语言) 课程设计报告 题目:图书管理系统 学院: 专业: 班级: 学号: 姓名: 指导教师: 设计日期:2013年06月24 日 一.选题背景: 设计一个图书管理系统,管理员通过登陆 ...

  5. 学生个人消费系统设计C语言,个人消费管理系统C语言课程设计毕业设计word格式.doc...

    个人消费管理系统C语言课程设计毕业设计word格式 目 录 TOC \o "1-3" \h \z HYPERLINK \l "_Toc256000000" 1 ...

  6. c语言课程设计报告停车系统,停车场管理系统C语言课程设计

    <停车场管理系统C语言课程设计>由会员分享,可在线阅读,更多相关<停车场管理系统C语言课程设计(27页珍藏版)>请在人人文库网上搜索. 1.计算机科学与技术系课程设计报告20 ...

  7. c语言程序设计服装销售系统报告,服装销售管理系统—C语言课程设计

    服装销售管理系统-C语言课程设计 C 语言课程设计实验报告第 1 页 共 37 页C 语言课程设计实验报告一. 目的(本次课程设计所涉及并要求掌握的知识点. )用户与商品信息要采用文件存储,因而要提供 ...

  8. 通讯录管理系统 C语言课程设计实验报告

    通讯录管理系统C语言课程设计 一.实验目的 1.巩固和加深学生对C语言课程的基本知识的理解和掌握 2.掌握C语言编程和程序调试的基本技能 3.利用C语言进行基本的软件设计 4.掌握书写程序设计说明文档 ...

  9. c语言人事管理课程设计,人事管理系统--c语言课程设计.doc

    人事管理系统--c语言课程设计 本科生C语言课程设计论文 课程名称 C语言课程设计 教师姓名 朱莉 本科生姓名 李百蝉 本科生学号 20111002986 本科生专业 地质学 所在院系 地球科学学院 ...

最新文章

  1. 给手绘图着色(添加颜色或色彩):CVPR2020论文点评
  2. 位操作符:位与、|位或、^异或、~求反、左移位、带符号右移位、无符号右移位...
  3. APUE-文件和目录(八)文件时间
  4. 64位java_99.9%的Java程序员都说不清的问题:JVM中的对象内存布局?
  5. spark上运行xgboost-scala接口
  6. hdu 6035:Colorful Tree (2017 多校第一场 1003) 【树形dp】
  7. 《Effective Objective-C 2.0》1、熟悉Objective-C
  8. 解决windows系统无法对docker容器进行端口映射的问题
  9. linux Flatpak 安装包,snap卸载
  10. python数据建模python_Python 数据建模总结和实战(共两万字)
  11. Linux相关配置VMware安装
  12. 【JVM学习笔记】JVM内存区域定义与内存结构
  13. 【迁移学习】STL(Stratified Transfer Learning)小结
  14. cns服务搭建+手机ml,百度直连
  15. 8.3 bert的蒸馏方法概述
  16. Android项目:基于Android安卓医院挂号预约系统软件app(计算机毕业设计)
  17. datawhale 8月学习——NLP之Transformers:编写BERT模型
  18. 大学生期末考试html,《大学英语(第二学期)》期末考试试卷(A卷)
  19. 不一样的Python(10)——objects
  20. 通信网络安全与保密综述报告——无线通信系统网络安全发展的现状、趋势及新技术

热门文章

  1. 线性回归分析中的哑变量
  2. ab进行压力测试详解
  3. Ceph-ansible 安装 ceph (rbd + rgw)
  4. 前端性能优化 七个方面
  5. Oracle 中常用的字符串函数总结
  6. 第三方登录之微信登录
  7. checkbox 点击搜索失去焦点_jquery获取焦点和失去焦点事件代码
  8. Docker的常用命令大全
  9. 7-基本数据类型和复合数据类型(引用数据类型)
  10. Kafka(生产者)