1.课程目的

本程序旨在训练学生的C语言基本编程能力,通过串联C语言输入输出、循环语句、子函数设计、数组、结构体等知识点,完成一个简单系统的设计开发。

2.系统功能

(1)通过菜单的形式实现人机交互界面
(2)实现录入图书基本信息
(3)实现删除指定图书的基本信息
(4)实现修改指定图书的基本信息
(5)实现查询指定图书的基本信息

3.设计思想

(1)人机交互界面
使用printf()和scanf()输入输出函数设计出主界面交互菜单,通过switch case语句判断输入的选项值,执行相对应得子函数。
每一个选项执行完毕,需要考虑清屏(system(“cls”);),然后重新显示主界面,供用户下一次操作。
设计程序退出菜单选项,用户执行其选项后,需要使用C语言文件操作,保存当前录入得全部图书信息。
程序启动时需要打开上次保存得数据文件,读入到内存中,如果没有则新建一个文件用于程序退出时保存数据。
人机交互界面可以自己设计,可以加上开发者信息,体现每个学生的差异。
展示如下:

2)添加图书信息
设计为单独的子函供主函数调用。
定义一个结构体类型,包括七个成员变量(图书编号,图书名,作者名,出版单位,数量),并用该类型定义一个全局的结构体数组,供外部录入图书信息时存储。
//定义一个全局变量来存储当前学生个数。
添加图书信息时,需要从外部读入图书的图书编号,图书名,作者名,出版单位,数量,在获取图书编号时需要判断是否输入重复,图书个数变量加一,并根据当前图书个数将其保存在结构体数组对应序号的元素中。
一个图书信息录入结束后可以提示用户输入Y/N来选择是否接着输入下一个图书。

(3)显示全部图书信息
通过对当前结构体数组进行遍历,并显示输出
展示如下:


4)查找单个图书
根据输入需要查找图书名,遍历当前结构体数组,判断是否含有一致图书名的元素,若有则显示输出对应的信息和成绩,否则显示无此书籍。
显示如下:

(5)修改图书信息
根据输入需要查找图书的编号,遍历当前结构体数组,判断是否含有一致编号的元素,
若有则依次从外部读入用户所修改的值,保存到对应成员变量中。
展示如下:

(6)删除指定图书
根据输入需要查找图书的编号,遍历当前结构体数组,判断是否含有一致图书名称的元素,若有则从该元素之后依次将下一个元素赋值到上一个元素,直至最后一个赋值完成,最后当前图书个数变量减一。
显示如下:

(7)借阅图书
通过对当前结构体数组进行遍历,并显示输出
显示如下:

(8)归还图书
通过对当前结构体数组进行遍历,并显示输出
显示如下:

全部代码如下

#include<stdio.h>  //预处理
#include<string.h>
#include<stdlib.h>
#include<conio.h>//定义结构体
struct book
{int id;char name[31];char author[27];char publish[31];int store;int total;int user[10];int days[10];
}books[100];//显示整体标题标题函数
void page_title(char *menu_item)
{printf("\t\t图书馆管理系统\n\n-%s-\n\n",menu_item);}
//等待返回函数
void return_confirm()
{printf("\n请按任意键返回……\n");getch();
} void book_add()
{void page_title(char *menu_item);int i;system("cls");   //清屏 page_title("注册新书"); for(i=0;i<2;i++){printf("序号:");scanf("%d",&books[i].id);printf("书名:");scanf("%s",&books[i].name); printf("作者:");scanf("%s",&books[i].author); printf("出版社:");scanf("%s",&books[i].publish); printf("数量:");scanf("%d",&books[i].total);books[i].store=books[i].total;printf("\n");         } //return 0;
}book_show()
{int i,flag=0;system("cls");for(i=0;i<100;i++){     if(strlen(books[i].publish)!=0){printf("序号:%d\t  ",books[i].id);printf("书名:%s\t  ",books[i].name);printf("作者:%s\t  ",books[i].author);printf("出版社:%s\t  ",books[i].publish);printf("存数:%d\t",books[i].store);printf("总数:%d\n\n",books[i].total);flag=1;}   } if(flag==0){printf("没有找到相关书籍\n");}getch();return i;
}int book_search()
{int n,i,flag=0;char nam[30];system("cls");printf("请输入书名:");scanf("%s",&nam);for(i=0;i<100;i++){if(strcmp(books[i].name,nam)==0){printf("序号:%d\t  ",books[i].id);printf("书名:%s\t  ",books[i].name);printf("作者:%s\t  ",books[i].author);printf("出版社:%s\t  ",books[i].publish);printf("存数:%d\t",books[i].store);printf("总数:%d\n",books[i].total);n=i;flag=1;getch();break;} } if(flag==0){printf("\n没有找到相关书籍\n");getch();return -1;}return n;
}book_edit()
{int i,id_change;system("cls");page_title("修改图书信息:");printf("输入要修改的图书id:");scanf("%d",&id_change);for(i=0;i<100;i++){if(books[i].id==id_change){printf("修改书名:");scanf("%s",&books[i].name); printf("修改作者:");scanf("%s",&books[i].author); printf("修改出版社:");scanf("%s",&books[i].publish); printf("修改数量:");scanf("%d",&books[i].total);printf("修改图书信息成功\n");books[i].store=books[i].total;return i; }   } printf("\n没有找到相关信息\n");getch();return -1;
}int book_del()
{int i,num,j;system("cls");page_title("删除图书");printf("输入所要删除的书的id:");scanf("%d",&num);for(i=0;i<100;i++){if(books[i].id==num){for(j=i;j<100;j++){books[j].id=books[j+1].id;strcpy(books[j].name,books[j+1].name);strcpy(books[j].publish,books[j+1].publish);printf("该书已经删除了!!!\n");getch();return i;}}  } printf("未找到相关记录\n");getch();return -1;
}//借书
book_out()
{void page_title(char *menu_item); int n,s,i,d;system("cls");page_title("借阅图书");n=book_search();if(n!=-1&&books[n].store>0){//赋初值,全为零 for(i=0;i<10;i++){books[n].user[i]=0;books[n].days[i]=0;}      printf("借书证序号:");scanf("%d",&s);printf("输入可借天数:");scanf("%d",&d); books[n].user[0]=s;books[n].days[0]=d; books[n].store--; //      书上这有何意义
//      for(i=0;i<10;i++)
//      {//          if(books[n].user[i]==0)
//          {//              books[n].user[i]=0;
//              books[n].days[i]=0;
//              break;
//          }
//          books[n].store--;
//      } }else if(n!=-1&&books[n].store==0){printf("此书已经完全借完\n\n");getch();}else;return_confirm();
}//归还图书
void book_in()
{int n,s,i;page_title("归还图书");n=book_search();printf("%d",n);if(n!=-1&&books[n].store<books[n].total){printf("借阅图书证列表\n");for(i=0;i<10;i++){if(books[n].user!=0){printf("[%d]--%d天\n",books[n].user[i],books[n].days[i]);}printf("输入借书证号:");scanf("%d",&s);for(i=0;i<10;i++){if(books[n].user[i]==s){books[n].store++;}}} }if(n!=-1&&books[n].store==books[n].total){printf("全部归还\n");}else if(n!=-1&&books[n].store<books[n].total){printf("归还成功\n");}else     ;return_confirm();}  main()
{menu:page_title("操作选单");printf("用数字选择操作\n\n");printf("\t\t1图书信息录入\t\t2显示图书\n");printf("\t\t3查询图书信息\t\t4修改图书信息\n");printf("\t\t5删除图书\t\t6借阅图书\n");printf("\t\t7归还图书\t\t8退出系统\n");printf("请按数字键:\n");switch(getchar()){case'1': book_add();break;case'2': book_show();break;case'3': book_search();break;case'4': book_edit();break;case'5': book_del();break;case'6': book_out();break;case'7': book_in();break;case'8': exit(0);}    goto menu;}

基于C语言图书馆管理系统编程设计相关推荐

  1. java管理系统中期报告_基于Java的图书馆管理系统的设计-中期报告

    基于Java的图书馆管理系统的设计-中期报告 毕业设计(论文)中期报告 毕业设计(论文)题目:基于Java的图书馆管理系统的设计 专业:计算机 学生信息: 指导教师信息: 报告提交日期:2012年5月 ...

  2. 图书馆系统c语言作业,C语言图书馆管理系统课程设计报告

    <C语言图书馆管理系统课程设计报告>由会员分享,可在线阅读,更多相关<C语言图书馆管理系统课程设计报告(16页珍藏版)>请在人人文库网上搜索. 1.高级语言程序设计课程设计报告 ...

  3. 【毕业设计_课程设计】基于SSM的图书馆管理系统

    文章目录 0 项目说明 1 概述 2 环境配置 3 概念设计 4 逻辑设计 5 功能展示 6 项目源码 0 项目说明 基于SSM的图书馆管理系统 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 ...

  4. 基于Java的敬老院管理系统的设计和实现(论文+PPT+源码)

    分类号_______________ 密级________________ UDC _______________ 学号_ ___ 毕业设计(论文) 毕业设计(论文)任务书 第1页 毕业设计(论文)题 ...

  5. 基于JSP(java)图书管理系统的设计和实现(含源文件)

    获取项目源文件,联系Q:1225467431,可指导毕设,课设 摘 要 伴随着互联网的蓬勃发展,人们已经不再满足于信息的浏览和发布,而是渴望着能够充分享受网络所带来的更加多的便利.掌握计算机知识和应用 ...

  6. 基于Java的旅行管理系统的设计与实现

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye2 摘 要:旅行社信息管理系统应当比较能符合社会发展对它的要求.随着旅行社所储存的信息量以几何的指 ...

  7. 基于Web的仓库管理系统的设计与实现(论文+PPT+源码)

    摘 要 仓库物品的管理是与我们的日常生活息息相关的一个重大问题.随着我国经济飞速的发展,改革开放的不断深入,企业要想在激烈的市场竞争中立于不败之地,要想继续的发展与生存,没有现代化的管理方式与方法是万 ...

  8. php图书馆管理系统的设计与实现毕业设计-附源码

    摘 要 大数据时代下,数据呈爆炸式地增长.为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已经是成为一种势不可挡的趋势.在图书馆的要求下,开发一款整体式结构的图书馆管理 ...

  9. 基于ASP学生资助管理系统的设计与实现

    项目描述 临近学期结束,还是毕业设计,你还在做ASP程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等.这里根据疫情当下,你想 ...

  10. C++课程设计实训_基于多态书籍信息管理系统的设计与实现、附源码、有过程截图

    C++课程设计实训_基于多态书籍信息管理系统的设计与实现.附源码,有过程截图 书籍信息管理系统的设计与实现(基于多态) 学生姓名: 学 号: 指导老师: 所 在 系: 专 业: 班 级: C++课程设 ...

最新文章

  1. 【solr专题之二】配置文件:solr.xml solrConfig.xml schema.xml
  2. 【PC工具】github项目辅助下载工具,github高速下载
  3. Eclipse + CDT引入OpenCV失败的解决的方法
  4. 【转】C#委托事件浅析
  5. 03--STL算法(常用算法)
  6. 详细解读Python 递归函数!
  7. flink1.12.2+hudi0.9.0测试
  8. Android Studio创建签名文件,打包apk,多渠道打包
  9. TDD LTE 中的HARQ过程
  10. Java并发编程:进程和线程之由来__进程让操作系统的并发性成为可能,而线程让进程的内部并发成为可能...
  11. stm32 ov2640硬件软件笔记
  12. HTML5+CSS编写个人博客界面
  13. Linux Nvidia显卡驱动安装
  14. ABB变频器维修,ABB变频器,ABB变频器配件FS300R12KE3/AGDR-61C 驱动模块APOW-01C 电源板AINP-01C 可控硅触发板
  15. Ubuntu安装客户端RabbitVCS(svn管理)
  16. Eclipse项目中显示隐藏的文件
  17. jquery使用 validate 插件进行验证是否通过
  18. nginx本地代理调试微信登录(window版本)
  19. 高通平台android 8.1基线某款usb camera打开dev/video1出错
  20. 2022Java面试笔记(上)

热门文章

  1. C# WinForm 为 RichTextBox 添加行号小技巧
  2. npm stripts 使用指南
  3. [转]FactoryBean用法
  4. C#中?与??的区别
  5. url采集工具_爬山虎采集实战-站长之家网站排行榜
  6. 怎么通过当地时区计算格林尼治_时间规划局:时间能看到,标注在你的手臂上,那时的你会怎么样...
  7. c语言枚举法在单片机的应用领域,当前单片机主要应用在哪些领域?
  8. 散射回波仿真Matlab,基于matlab的体目标回波模拟方法与流程
  9. Pyqt 的QThread vs Python标准库的线程
  10. javaScript 判断一个数是不是质数(素数)