c语言程序设计--图书管理系统

这个原本是c语言程序设计书里面的习题,老师布置的作业,既然写好了,就在网上分享下,相信肯定有很多和我一样使用的是这本教材,大家可以借鉴下答案,在dev c++上运行是没有任何错误的。文末已经贴了源码,还有什么不了解的可以在评论里讲下!!!

在这里插入图片描述

输入1添加数据
在这里插入图片描述
输入2
在这里插入图片描述
输入3 查询
在这里插入图片描述
输入4
在这里插入图片描述
再输入2,查看改变后的数据
在这里插入图片描述
输入5(注意此程序只能从后面删除,切不可删前面的id,否则就是复制后面的数据)
在这里插入图片描述
在这里插入图片描述
输入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();
} book_add()
{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"); } 
}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()
{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;} 

代码与书上不一样的点:
书上的struct结构体错误,未在后面添加数组
借书里面有一段都等于0看不懂
这个项目主要训练了我调试项目的能力,受教了

带有多名学生的动态链表

#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Student)struct Student
{long num;int score;struct Student *next;
};int n;struct Student *creat()
{struct Student *head;struct Student *p1,*p2;n=0;printf("请输入学号和成绩以逗号隔开:\n");printf("结束请按911+回车键:\n");printf("第1个学生学号和成绩:\n");p1=p2=(struct Student *)malloc(LEN);scanf("%d,%d",&p1->num,&p1->score);head=NULL;while(p1->num!=911){n=n+1;if(n==1)head=p1;elsep2->next=p1;p2=p1;p1=(struct Student *)malloc(LEN);printf("第%d个学生学号和成绩:\n",n+1);scanf("%ld,%d",&p1->num,&p1->score);}p2->next=NULL;return head;
}struct Student *del(struct Student *head)
{struct Student *p1,*p2;long n;printf("输入删除的学号:");scanf("%ld",&n);p1=head;if(p1->num==n)head=p1->next;else{do{p2=p1;p1=p1->next;} while(p1!=NULL&&p1->num!=n);if(p1->num==n)p2->next=p1->next;elseprintf("没找到\n");}free(p1);return(head);
}void print(struct Student *head)
{struct Student *p;p=head;n=0;if(head!=NULL)do{n=n+1;printf("第%d个学生的学号:%ld,成绩:%d\n",n,p->num,p->score);p=p->next;}while(p!=NULL);
}int main()
{struct Student *pHead;pHead=creat();print(pHead);pHead=del(pHead);print(pHead);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Access denied for user ‘root‘ @‘123.233.244.218‘(using password:YES)的解决方法

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 前言 在我们新买了个服务器之后&#xff0c;数据库我觉得是比不可少的吧&#xff0c;任何一个项目&#xff0c;只要是动态的&#xff0c;都需要数据做数据的服务于支撑&#xff0c;目前我…

nssl1192-加密【字符串hash】

正题 题目大意 对于每个字母都有一个加密后的字母对应。 然后给一段字母其中包括密文和密文对应的原文的一部分(也有可能没有原文)&#xff0c;求一段最短的密文加原文。 解题思路 枚举密文和原文分界处。然后用字符串hash判断改变后的密文和后段原文是否相等。 code #inclu…

初探SQL Server 2017 on Docker@macOS

编者语&#xff1a;假期到了最后一天&#xff0c;或者你人在旅途&#xff0c;或者你睡了8天&#xff0c;而我在家修炼了几天&#xff0c;完成了一堆好玩的&#xff0c;慢慢和大家分享下。 9月27日SQL Server 2017 正式发布&#xff0c;看点一堆&#xff0c;而这次发布不仅有传统…

阿里面试,为什么Kafka不支持读写分离

转载自 阿里面试&#xff0c;为什么Kafka不支持读写分离 为什么数据库、redis都支持了读写分离功能&#xff0c;而kafka却没有&#xff1f; 厮大也是狠人&#xff0c;直接打开源码从头开始讲&#xff0c;我一看这情况不对&#xff0c;按照这进度得讲到天黑了&#xff0c;蹭着…

手机号、邮箱、用户名均可登录系统的实现方式

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是2022年4月28日13:41:29&#xff01; 需求&#xff1a;用户可以通过手机号、邮箱来注册我们的系统&#xff0c;用户完成之后&#xff0c;可以去完善自己的个人信息&#xff0c;…

.Net 内存对象分析

在生产环境中&#xff0c;通过运行日志我们会发现一些异常问题&#xff0c;此时&#xff0c;我们不能直接拿VS远程到服务器上调试&#xff0c;同时日志输出的信息无法百分百反映内存中对象的状态&#xff0c;比如说我们想查看进程中所有的Socket连接状态、服务路由信息等等。 即…

百度开源的分布式唯一ID生成器UidGenerator,解决了时钟回拨问题

转载自 百度开源的分布式唯一ID生成器UidGenerator&#xff0c;解决了时钟回拨问题 UidGenerator是百度开源的Java语言实现&#xff0c;基于Snowflake算法的唯一ID生成器。而且&#xff0c;它非常适合虚拟环境&#xff0c;比如&#xff1a;Docker。另外&#xff0c;它通过消…

nssl1193-地主【dp】

正题 题目大意 一个2∗n2*n2∗n的矩形&#xff0c;求分歌成k块的方案数。 解题思路 我们用fi,j,0/1f_{i,j,0/1}fi,j,0/1​表示前i列&#xff0c;分成j块&#xff0c;第i列是相同一块还是分开的一块。 然后我们分析 (不同颜色表示不同联通块)(字型体汇) 然后推出方程 (f[i][…

MyBatis-generator使用,Example缺少分页问题解决

一、分页问题 MyBatis自动生成代码没有分页功能。 如&#xff1a; public class User {private Integer userId;private String name;public Integer getUserId() {return userId;}public void setUserId(Integer userId) {this.userId userId;}public String getName() {r…

调试 ASP.NET Core 2.0 源代码

在Visual Studio 2017中可以通过符号以及源链接&#xff0c;非常方便对 ASP.NET Core 2.0中源代码进行调试。在这篇文章中&#xff0c;我们将重点介绍如何使用源链接对ASP.NET Core源进行调试。 什么是源链接&#xff1f; 和我一样&#xff0c;您可能已经注意到在编译代码时&am…

html新知

文章目录[x]开门大吉轮播样式账户密码获取回车发送命令&#xff08;按键&#xff09;计时器通过按钮实现清屏选项卡&#xff08;轮播图原型&#xff09;阶乘密码一致登录导航栏&#xff08;新学的&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c;其实就是简单的h…

nssl1196-摘果子【树形依赖背包,dp】

正题 题目大意 有n个东西&#xff0c;每个东西有价值和价格&#xff0c;然后要求一个价格上限&#xff0c;和除了第一个东西以外都有一个买这个之前必须要买的东西。 求最大价值 解题思路 我们考虑之前的树形背包 然后发现时间复杂度O(n3)O(n^3)O(n3)&#xff0c;之后我们考虑…

JavaFX8 modena样式(css)源码

转载自 JavaFX8 modena样式(css)源码 /* Modena This is the second generation theme for JavaFX after Caspian. */ /* * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HE…

如何将每日新闻添加到自己博客中,发送到微信群中

大家好&#xff0c;我是雄雄。 前言 最近新整了个博客网站&#xff0c;同事在gitee上找的&#xff0c;还不错&#xff0c;gitee上的地址在这里&#xff1a;拾壹博客管理系统。 别人的业务&#xff0c;再好也有不满足自己的地方&#xff0c;所以我就拉下来源码看了看&#xff0…

烦躁、感悟

也不知道怎么回事&#xff0c;经历了很多纠结之后&#xff0c;感觉自己现在学的东西以后可能会都用不到。很烦恼&#xff0c;学了有什么用是吧&#xff1f;一个人学真的很孤独&#xff0c;连跟人家聊天都聊不到一起去&#xff0c;你跟行外人聊ajax聊bootstrap的神奇&#xff0c…

nssl1195-健美猫【???】

正题 题目大意 给出序列s(s∈[1,n])(s\in [1,n])(s∈[1,n])&#xff0c;将序列旋转 旋转操作 sisi1(i∈[1,n−1])sns1\begin{matrix} \\s_is_{i1}(i\in [1,n-1]) \\ s_ns_1 \end{matrix}si​si1​(i∈[1,n−1])sn​s1​​ 然后要求 ∑i1nsi−i\sum _{i1}^ns_i-ii1∑n​si​−i…

Hack for Cloud Beginner微软黑客松大赛

在这美丽的西子湖畔&#xff0c;我们欢迎各行各业的开发者参与此次Hack for Cloud Beginner微软黑客松大赛。我们致力于为开发者们提供在技术、社区领域中的交流平台&#xff0c;重在参与&#xff0c;意于创新。 此次黑客松大赛将于10月22日在中国杭州拉开帷幕&#xff0c;参与…

Asp.Net Core 2.0 多角色权限认证

在使用 WebForm 技术开发网站的时候&#xff0c;微软就提供了 Form 身份认证&#xff0c;这使得登录认证简单了许多&#xff0c;不同于 WebForm 以及后来的 Asp.Net Mvc&#xff0c;Asp.Net Core 中的身份认证与之前相比使用更加便捷&#xff0c;本文介绍 Asp.Net Core 2.0 多角…

html近期所学

导航栏&#xff08;新学的&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c;其实就是简单的href&#xff09; css 开门大吉 轮播样式 js css js1 js1 js1 js1 js1 js7 首先是css 开门大吉 改只需其中的gif <html><head><style>section{width…

nssl1210-质数【素数筛】

正题 题目大意 求l∼rl\sim rl∼r这个区间素数或两个素数的乘积的数个数 解题思路 在欧式筛的时候判断j是不是素数&#xff0c;是就标记就行了。 code #pragma GCC optimize(2) #include<cstdio> #define N 10000000 #define ll int using namespace std; ll prime[N]…