基于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;
}