C语言——图书管理系统(不带文件操作) 2021-05-17

Posted 超霸霸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言——图书管理系统(不带文件操作) 2021-05-17相关的知识,希望对你有一定的参考价值。

说明:这是本人2021年寒假在家写的一个C语言大作业,供大家参考,写的不好的地方大家指正,有需要的朋友可以拿走,题目要求如下:
在这里插入图片描述

代码如下:

#include<stdio.h> 
#include<stdlib.h>
#include<time.h>

struct Number
{
	char alph;
	int num;
};

struct Book
{
	char title[128];
	char public[128];
	char author[128];
	int price;
    struct Number number;
	struct Book *next;
};

void menu() 
{
	printf("=====菜单=====\\n");
	printf("1.插入书包\\n");
	printf("2.删除书本\\n");
	printf("3.修改书本\\n");
	printf("4.打印书籍信息\\n");
	printf("5.退出\\n");
	printf("请输入你要执行的操作:");
}

void inseart(struct Book **head)
{
	srand(time(0));
	struct Book *previous;
	struct Book *current;
	struct Book *new;
	new=(struct Book*)malloc(sizeof(struct Book));
	int num=rand()%900000+100000;
	int alph=rand()%26;
	alph+='A';
	new->number.num=num;
	new->number.alph=alph;
	printf("请输入书名:");
	scanf("%s",&new->title);
	printf("请输入出版社:");
	scanf("%s",&new->public);
	printf("请输入作者:");
	scanf("%s",&new->author);
	printf("请输入价格:");
	scanf("%d",&new->price);
	current=*head;
	previous=NULL;
	while((current!=NULL)&&(current->number.num>num))
	{
		previous=current;
		current=current->next;
	}
	new->next=current;
	if(previous==NULL)
	{
		*head=new;
	}
	else
	{
		previous->next=new;
	}
}

void delete(struct Book **head)
{
	int num;
	printf("请输入你要删除的书的编号(数字部分):");
	scanf("%d",&num);
	struct Book *previous;
	struct Book *current;
	current=*head;
	previous=NULL;
	while(current!=NULL&&current->number.num!=num)
	{
		previous=current;
		current=current->next;
	}
	if(current==NULL)
	{
		printf("找不到匹配的结点\\n");
		return;
	}
	else
	{
		if(previous==NULL)
		{
			*head=current->next;
		}
		else
		{
			previous->next=current->next;
		}
		free(current);
		printf("删除成功!\\n");
	}
}

void print(struct Book *head)
{
	struct Book *book;
	int cnt=1;
	book=head;
	while(book!=NULL)
	{
		printf("Book%d\\n",cnt);
		printf("书名:%s\\n",book->title);
		printf("出版社:%s\\n",book->public);
		printf("作者:%s\\n",book->author);
		printf("价格:%d\\n",book->price);
		printf("编号:%c%d\\n",book->number.alph,book->number.num);
		book=book->next;
	}
	printf("========\\n");
}

void modify(struct Book *head)
{
	int num;
	struct Book *book;
	book=head;
	printf("请输入你要修改的书籍的编号(数字部分):");
	scanf("%d",&num);
	while(book->number.num!=num)
	{
		book=book->next;
	}
	if(book==NULL)
	{
		printf("很抱歉没有找到书籍信息,你输入的编号有误\\n");
	}
	else
	{
		printf("已找到你要修改的书籍.....\\n");
    	printf("书名:%s\\n",book->title);
    	printf("出版社:%s\\n",book->public);
     	printf("作者:%s\\n",book->author);
	    printf("价格:%d\\n",book->price);
    	printf("编号:%c%d\\n",book->number.alph,book->number.num);
		modifybook();
		int get;
		scanf("%d",&get);
		if(get==1)
		{
			printf("请输入修改后的书名:");
			scanf("%s",&book->title);
		}
		else if(get==2)
		{
			printf("请输入修改后的出版社:");
			scanf("%s",&book->public);
		}
		else if(get==3)
		{
			printf("请输入修改后的作者:");
			scanf("%s",&book->author);
		}
		else if(get==4)
		{
			printf("请输入修改后的价格:");
			scanf("%d",&book->price);
		}
		printf("修改成功!\\n");
	} 
}

void modifybook()
{
	printf("=====请选择要修改的信息=====\\n");
	printf("1.书名\\n");
	printf("2.出版社\\n");
	printf("3.作者\\n");
	printf("4.价格\\n");
	printf("请输入:"); 
}

void release(struct Book *head)
{
	struct Book *book;
	book=head;
	while(book!=NULL)
	{
		free(book);
		book=book->next;
	}
}

int main(void)
{
	struct Book *head=NULL;
	while(1)
	{
		int ch;
		menu();
		scanf("%d",&ch);
		if(ch==1)
		{
			inseart(&head);
		}
		else if(ch==2)
		{
			delete(&head);
		}
		else if(ch==3)
		{
			modify(head);
		}
		else if(ch==4)
		{
			print(head);
		}
		else if(ch==5)
		{
			break;
		}
		else
		{
			printf("你输入的操作有误\\n");
		}
	}
	release(head);
	return 0;
}

以上是关于C语言——图书管理系统(不带文件操作) 2021-05-17的主要内容,如果未能解决你的问题,请参考以下文章

图书管理系统

求图书馆管理系统程序(c语言)

怎样用C语言打开文件夹(源代码)

标准c库函数与Linux下系统函数库 区别 (即带不带缓冲区的学习)

借同学百度知道问的,求一个C语言课程设计,关于图书馆借阅的程序。

C语言图书管理系统