书籍管理系统--基于c语言

基于C语言

主要采用单链表的数据结构

功能简单:书籍的增加,修改,查找,列出书籍清单

头文件


#ifndef BOOK_H_
#define BOOK_H_
#define OK 1
#define ERROR 0
typedef int Status ;

typedef struct BookNode
{
	char Title[20];
	char Author[10];
	int count;
	struct BookNode* next;
}BookNode,*pbook;


void GUI(char title[20],char content1[20],char content2[20],char content3[20],char content4[20],char content5[20],int CWin);
Status ShowFiveBooks(int number,pbook book);
Status Welcome(pbook book);
Status Listbooks(pbook book);
Status Modifybook(pbook book); 
Status Searchbook(pbook book);
Status Insertbook(pbook book);
Status AboutMe(void);
void ShowBooks(char title[20],char c1[20],char c2[20],char c3[20],char c4[20],char c5[20],char c6[20],char c7[20],char c8[20],char c9[20],char c10[20],int CWin);


#endif

主界面

在这里插入图片描述

书单界面

在这里插入图片描述

代码主体

#include "stdio.h"
#include "stdlib.h"
#include "Book.h"
#include "string.h"
pbook temp;


void GUI(char title[20],char content1[20],char content2[20],char content3[20],char content4[20],char content5[20],int CWin)
{	if(CWin) printf("\033c");
	printf("\n\n\n\n");
    printf("\t\t\t+-----------------------------------------------+\n");
    printf("\t\t\t|\t\t\t\t\t\t|\n"); 
    printf("\t\t\t\t\t   %s\t\t\t\n",title);
    printf("\t\t\t|_______________________________________________|\n");
    printf("\t\t\t\t\t\t\t\t\t\n"); 
    printf("\t\t\t%s\t\t\t\t\t\t\n",content1); 
    printf("\t\t\t%s\t\t\t\t\t\n",content2);
    printf("\t\t\t%s\t\t\t\t\t\n",content3);
    printf("\t\t\t%s\t\t\t\t\t\n",content4);
    printf("\t\t\t%s\t\t\t\t\t\n",content5); 
    printf("\t\t\t\t\t\t\t\t\t\n"); 
    printf("\t\t\t\t\t\t\t\t\t\n");
    printf("\t\t\t\t\t\t\t\t\t\n");
    printf("\t\t\t\t\t\tPress\'r\' to return Menu\n") ;
    printf("\t\t\t+-----------------------------------------------+\n");
}


void ShowBooks(char title[20],char c1[20],char c2[20],char c3[20],char c4[20],char c5[20],char c6[20],char c7[20],char c8[20],char c9[20],char c10[20],int CWin)
{	if(CWin) printf("\033c");
	printf("\n\n\n\n");
    printf("\t\t\t+-----------------------------------------------+\n");
    printf("\t\t\t|\t\t\t\t\t\t|\n"); 
    printf("\t\t\t\t\t   %s\t\t\t\n",title);
    printf("\t\t\t|_______________________________________________|\n");
    printf("\t\t\t\t\t\t\t\t\t\n"); 
    printf("\t\t\t___Title:        《 %s》\t\t\t\t\t\n",c1); 
    printf("\t\t\t___Author:       Mr/Mrs.%s\t\t\t\t\t\n",c2);
    printf("\t\t\t___Title:        《 %s》\t\t\t\t\t\n",c3);
    printf("\t\t\t___Author:       Mr/Mrs.%s\t\t\t\t\t\n",c4);
    printf("\t\t\t___Title:        《 %s》\t\t\t\t\t\n",c5); 
    printf("\t\t\t___Author:        Mr/Mrs.%s\t\t\t\t\t\n",c6); 
    printf("\t\t\t___Title:        《 %s》\t\t\t\t\t\n",c7);
    printf("\t\t\t___Author:        Mr/Mrs.%s\t\t\t\t\t\n",c8);
    printf("\t\t\t___Title:        《 %s》\t\t\t\t\t\n",c9);
    printf("\t\t\t___Author:        Mr/Mrs.%s\t\t\t\t\t\n",c10);
    printf("\t\t\t\t\t\tPress\'r\' to return Menu\n") ;
    printf("\t\t\t+-----------------------------------------------+\n");
}

Status Init(pbook* book)
{
	(*book) = (pbook)malloc(sizeof(BookNode));
	(*book)->next = NULL;	
	(*book)->count = 0;
}



Status Welcome(pbook book)
{
	GUI("WELCOME!","(a)  Add Books","(b)  List Books","(c)  Modify Books","(d)  Search Books","(e)  About Me",1);
    int ch;
    while(1)//the main process
    { 	ch = getchar();
        switch(ch)
        {  
            case 'a': 
				printf("\033c");
				Insertbook(book);
            	break;
            case 'b':
				printf("\033c");
				Listbooks(book);
                break;
            case 'c':
				printf("\033c");
				Modifybook(book);
				//GUI("Modify Books","","","","",1);
            	break;
			case 'd':
				printf("\033c");
				Searchbook(book);
				break;
			case 'e':
				printf("\033c");
				AboutMe();
				break;
			case 'r':
				printf("\033c");
				GUI("WELCOME!","(a)  Add Books","(b)  List Books","(c)  Modify Books","(d)  Search Books","(e)  About Me",1);
				break;
		}
	}	
}


Status AboutMe(void)
{
	printf("Here\n");
	GUI("About me","2022年8月8日,炽夏,伏山乡","那远远的山,山上有悠悠的风力发电机,我的","心中也有这样一个美好的地方,山山层叠,夕阳徐徐","我们会上岸的对吗?\n\n\n","Author:---------yanchao",1);
	return OK;
}



Status Searchbook(pbook book)
{
	if(book->count == 0) 
	{
		
		GUI("**Wrong**","--------------","No Book!","--------------","","",1);
		return ERROR; 
	}
	GUI("Search Book","Please enter book title","","","","",1);
	printf("Input here\n");
	char Title[20];
	scanf("%s",Title);
	pbook SearchBook = book;
	while(SearchBook)
	{
		
		if(strcmp(SearchBook->Title,Title) == 0)
		{
			GUI("Search Result","------Title------",SearchBook->Title,"------Author-----",SearchBook->Author,"",1);
			return OK;
		}
		SearchBook = SearchBook->next;
	}

	GUI("No such Book","--------------","Please check Title!\n","--------------","","",1);
	return ERROR;
}


Status Modifybook(pbook book)
{
	if(book->count == 0) 
	{
		
		GUI("**Wrong**","--------------","No Book!","--------------","","",1);
		return ERROR; 
	}
	GUI("Modify Books","Please enter book title","","","","",1);
	printf("Input here\n");
	char Title[20];
	//char NewTitle[20]; 
	scanf("%s",Title);
	pbook ModifyBook = book;
	while(ModifyBook)
	{
		if(strcmp(ModifyBook->Title,Title) == 0)
		{
			printf("Find Node!\n");
			GUI("Modify Books","New book title is ?","","","","",1);
			printf("Input here\n");
			scanf("%s",ModifyBook->Title);
			GUI("Modify Books","book Author is?","","","","",1);
			printf("Input here\n");
			scanf("%s",ModifyBook->Author);
			GUI("Modify Books","--------------","Modify sucess!","--------------","","",1);

			return OK;
		}
		ModifyBook = ModifyBook->next;
	}
	GUI("No such Book","--------------","Modify defeat!","--------------","","",1);
	return ERROR;
 } 

Status Insertbook(pbook book)//与以往不同的是,以前是一次插入很多数据,这次是每次插入一个数据。
{	printf("Insert\n");
	pbook newbook = (pbook)malloc(sizeof(BookNode));
	if(book->count >= 5) 
	{
		printf("Can only store 5 books! \n");
		GUI("**Wrong**","","(b)  List Books","(c)  Modify Books","(d)  Search Books","(e) About Me",0);
		return ERROR;
	}
	
	if(book->count == 0)   
	{
	temp = (pbook)malloc(sizeof(BookNode));
	temp = book;
	}//第一次运行时 temp指向头指针
	GUI("Book Title","Please enter Book title","","","","",1);
	scanf("%s",newbook->Title);
	GUI("Books's Author","Please enter Book Author","","","","",1);
	scanf("%s",newbook->Author);
	GUI("Book Information","----The author is Mr/Mrs:",newbook->Author,"----The book title:",newbook->Title,"",1);
	newbook->next = NULL;
	temp->next = newbook;
	temp = newbook;
	book->count++;
}


Status Listbooks(pbook book)// 此时book应该指向第一个节点
{	//printf("book%s\n",book->Title);
	if(!book) 
	{
			GUI("**Wrong**","--------------","No Initialize!","--------------","","",1);
	}
	if(!book->next)
	{
			GUI("**Wrong**","--------------","No Book!","--------------","","",1);
			return ERROR;
	}
	pbook temp = book->next;
	
	ShowFiveBooks(book->count,temp);
	
	printf("Continue Input\n");
	
	return OK;
}


Status ShowFiveBooks(int number,pbook temp)
{	 // 最多能够添加五本书。
	
	if (number == 5)
	ShowBooks("Book List",temp->Title,temp->Author,temp->next->Title,temp->next->Author, temp->next->next->Title,temp->next->next->Author,temp->next->next->next->Title,temp->next->next->next->Author,temp->next->next->next->next->Title,temp->next->next->next->next->Author,1);
	if (number == 4)
	ShowBooks("Book List",temp->Title,temp->Author,temp->next->Title,temp->next->Author, temp->next->next->Title,temp->next->next->Author,temp->next->next->next->Title,temp->next->next->next->Author,"","",1);
	if(number == 3)
	ShowBooks("Book List",temp->Title,temp->Author,temp->next->Title,temp->next->Author, temp->next->next->Title,temp->next->next->Author,"","","","",1);
	if(number == 2)
	ShowBooks("Book List",temp->Title,temp->Author,temp->next->Title,temp->next->Author,"","","","","","",1);
	if(number == 1)
	ShowBooks("Book List",temp->Title,temp->Author,"","","","","","","","",1);
	
}

int main()
{	
	pbook book;
	Init(&book);	
	Welcome(book);
	return OK;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山河锦绣放眼好风光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值