當前位置:編程學習大全網 - 編程語言 - 圖書館圖書管理系統(C語言)

圖書館圖書管理系統(C語言)

完整的c語言圖書管理系統

# include & ltstdlib.h & gt

# include & ltstdio.h & gt

# include & ltconio.h & gt

#包含“graphics.h”

#包含“math.h”

#定義m 1

結構數據

{ int年;

int月;

int日;

};

結構讀取器節點

{

字符編號[20];

結構數據bro

將數據結構化回;

};

結構書節點

{

char title[15];

char writer[15];

int currentnum

int totalnum

char brief[30];

結構讀取器節點讀取器[20];

};

結構樹節點

{

int n;

struct TreeNode * prt

int key[2 * m];

struct book node * rec[2 * m];

struct TreeNode * link[2 * m+1];

};

struct book node * input node();

struct TreeNode * MB search(struct TreeNode * BTH,int x,int *k,int * flag);

struct TreeNode * mbinsert(struct TreeNode * BTH);

struct TreeNode * MB del(struct TreeNode * BTH);

void output node(struct TreeNode * BTH);

void borrow(struct TreeNode * BTH);

void return(struct TreeNode * BTH);

char菜單(void);

struct TreeNode * MB search(struct TreeNode * BTH,int x,int *k,int *flag)

{

struct TreeNode *p,* q;

p = bth* flag = 0;q = p;

而((p!= NULL)& amp;& amp(*flag==0))

{

* k = 1;q = p;

while((* k & lt;q->;n)& amp;& amp(問->;key[* k-1]& lt;x))* k = * k+1;

如果(q->;key[* k-1]= = x)* flag = 1;

else if((* k = = q-& gt;n)& amp;& amp(問->;key[* k-1]& lt;x)){ p = q-& gt;link[* k];p->;PRT = q;}

else { p = q-& gt;鏈接[* k-1];p->;PRT = q;* k = * k-1;}

}

返回(q);

}

struct TreeNode * mbinsert(struct TreeNode * BTH)

{

int flag,j,k,t;

int y,x,z;

結構TreeNode *p,*q,*u,* s;

struct BookNode *r,* l;

clr SCR();

printf(" \ n \ t請輸入您要插入的圖書:");

scanf("%d ",& ampx);

q=mbsearch(bth,x,& ampk & amp;旗幟);

if(flag==1)

{

printf(" \ n \ t已有%d本這種書,是否要添加另壹本?(y/n)\n ",(q-& gt;rec[k-1])-& gt;total num);

z = getch();

if(z=='y'||z=='Y ')

{

(問->;rec[k-1])-& gt;total num++;(問->;rec[k-1])-& gt;current num++;

printf(" \ n \ t現在總共有%d本這種書,",(q-& gt;rec[k-1])-& gt;total num);

printf(" \ n \ t當前在庫中有%d。,(q-& gt;rec[k-1])-& gt;current num);

}

返回(BTH);

}

r =輸入節點(BTH);

if(bth==NULL)

{

BTH = p =(struct TreeNode *)malloc(size of(struct TreeNode));

p->;n = 1;p->;key[0]= x;p->;rec[0]= r;p->;prt = NULL

for(j = 1;j & lt= 2 * m+1;j++)p-& gt;link[j-1]= NULL;

返回(p);

}

p = NULLt = 0;

while(t==0)

{

if(k = = q-& gt;n){ y = x;l = r;u = p;}

其他

{

y = q-& gt;鍵[q->;n-1];l = q-& gt;rec[q->;n-1];u = q-& gt;鏈接[q-& gt;n];

for(j =(q-& gt;n)-1;j & gt= k+1;j -)

{

q->;key[j]= q-& gt;鍵[j-1];q->;rec[j]= q-& gt;rec[j-1];q->;link[j+1]= q-& gt;link[j];

}

q->;key[k]= x;q->;rec[k]= r;q->;link[k+1]= p;

如果(p!= NULL)p-& gt;PRT = q;

}

如果(q->;n & lt2 *米)

{

q->;n =(q-& gt;n)+1;

t = 1;

q->;鍵[(q->;n)-1]= y;q->;rec[(q-& gt;n)-1]= l;q->;鏈接[q-& gt;n]= u;

如果(u!= NULL)u-& gt;PRT = q;

}

其他

{

p =(struct TreeNode *)malloc(sizeof(struct TreeNode))。

p->;n = m;q->;n = m;p->;PRT = q-& gt;prt

x = q-& gt;鍵[m];r = q-& gt;建議[m];

for(j = 1;j & lt= m-1;j++)

{

p->;key[j-1]=q->key[m+j];p->;rec[j-1]=q->rec[m+j];p->;link[j-1]=q->link[m+j];

如果(q->;鏈接[m+j]!= NULL)(q-& gt;link[m+j])-& gt;PRT = p;

}

p->;link[m-1]=q->link[2 * m];

p->;link[m]= u;

p->;key[m-1]= y;

p->;rec[m-1]= l;

如果(u!= NULL)u-& gt;PRT = p;

for(j = m+2;j & lt= 2 * m+1;j++)

{

q->;link[j-1]= NULL;p->;link[j-1]= NULL;

}

如果(q->;prt==NULL)

{

s =(struct TreeNode *)malloc(sizeof(struct TreeNode))。

s-& gt;key[0]= x;s-& gt;rec[0]= r;

s-& gt;link[0]= q;s-& gt;link[1]= p;

s-& gt;n = 1;s-& gt;prt = NULLq->;PRT = s;p->;PRT = s;

for(j = 3;j & lt= 2 * m+1;j++)s-& gt;link[j-1]= NULL;

BTH = s;t = 1;

}

其他

{

q = q-& gt;prtk = 1;

而((k & lt= q->;n)& amp;& amp(問->;key[k-1]& lt;x))k = k+1;

k = k-1;

}

}

}

返回(BTH);

}

結構樹節點*mbdel(結構樹節點*bth)

{

int flag,j,k,t;

int x,y;

結構TreeNode *u,*s,*p,* q;

struct BookNode *r,* l;

clr SCR();

printf(" \ n \ t請輸入您要刪除的圖書:");

scanf("%d ",& ampx);

q=mbsearch(bth,x,& ampk & amp;旗幟);

if(flag = = 0){ printf(" \ n \ t該書不存在!\ n ");返回(BTH);}

p = q-& gt;link[k];

如果(p!=空)

{

while(p->;鏈接[0]!= NULL)p = p-& gt;鏈接[0];

q->;key[k-1]=p->鍵[0];

q->;rec[k-1]=p->rec[0];

k = 1;q = p;

}

for(j = k;j & lt= q->;n-1;j++)

{

q->;key[j-1]=q->鍵[j];

q->;rec[j-1]=q->建議[j];

}

q->;n = q-& gt;n-1;

而((q!= BTH)& amp;& amp(問->;n & ltm))

{

p = q-& gt;prtj = 1;

while(p->;鏈接[j-1]!= q)j = j+1;

如果((j & lt= p->;n)& amp;& amp((p->;link[j])-& gt;n & gtm))

{

s = p-& gt;link[j];

y = s-& gt;鍵[0];

l = s-& gt;rec[0];

u = s-& gt;鏈接[0];

for(k = 1;k & lt= s-& gt;n-1;k++)

{

s-& gt;key[k-1]= s-& gt;鍵[k];

s-& gt;rec[k-1]=s->rec[k];

s-& gt;link[k-1]= s-& gt;link[k];

}

s-& gt;link[s-& gt;n-1]=s->link[s-& gt;n];

s-& gt;link[s-& gt;n]= NULL;

s-& gt;n = s-& gt;n-1;q->;n = q-& gt;n+1;

q->;鍵[q->;n-1]= p->;鍵[j-1];

q->;rec[q->;n-1]= p->;rec[j-1];

q->;鏈接[q-& gt;n]= u;

p->;key[j-1]= y;

p->;rec[j-1]= l;

如果(u!= NULL)u-& gt;PRT = q;

}

else if((j & gt;1);& amp((p->;link[j-2])-& gt;n & gtm))

{

s = p-& gt;鏈接[j-2];

q->;n = q-& gt;n+1;

q->;鏈接[q-& gt;n]= q-& gt;鏈接[q-& gt;n-1];

for(k = q-& gt;n-1;k & gt=1;k -)

{

q->;key[k]= q-& gt;key[k-1];

q->;rec[k]= q-& gt;rec[k-1];

q->;link[k]= q-& gt;鏈接[k-1];

}

q->;key[0]= p-& gt;鍵[j-2];

q->;rec[0]= p-& gt;建議[j-2];

u = s-& gt;link[s-& gt;n];

q->;link[0]= u;

如果(u!= NULL)u-& gt;PRT = q;

p->;key[j-2]= s-& gt;鍵[s->;n-1];

p->;rec[j-2]=s->rec[s-& gt;n-1];

s-& gt;link[s-& gt;n]= NULL;

s-& gt;n = s-& gt;n-1;

}

其他

{

if(j = = p-& gt;n+1)

{ q = p-& gt;鏈接[j-2];s = p-& gt;鏈接[j-1];j = j-1;}

else s = p-& gt;link[j];

q->;鍵[q->;n]= p-& gt;鍵[j-1];

q->;rec[q->;n]= p-& gt;rec[j-1];

t = q-& gt;n+1;

for(k = 1;k & lt= s-& gt;n;k++)

{ q->;key[t+k-1]= s-& gt;key[k-1];

q->;rec[t+k-1]= s-& gt;rec[k-1];

u = s-& gt;鏈接[k-1];

q->;link[t+k-1]= u;

如果(u!= NULL)u-& gt;PRT = q;

}

u = s-& gt;link[s-& gt;n];q->;link[t+s->;n]= u;

如果(u!= NULL)u-& gt;PRT = q;

q->;n = 2 * m;

免費;

for(k = j;k & lt= p->;n-1;k++)

{

p->;key[k-1]=p->鍵[k];

p->;rec[k-1]=p->rec[k];

p->;link[k]= p-& gt;鏈接[k+1];

}

p->;n = p-& gt;n-1;s = q;q = p;

}

}

if((q = = BTH)& amp;& amp(問->;n==0))

{免費(BTH);BTH = s;BTH-& gt;prt = NULL

if(s-& gt;n = = 0){ BTH = NULL;免費;}

}

printf(" \ n \ t該書已被刪除!");

返回(BTH);

}

struct BookNode *InputNode()

{

struct book node * p;

int I;

p =(struct BookNode *)malloc(sizeof(struct BookNode));

clr SCR();

fflush(stdin);

printf(" \ n \ t輸入標題:");

獲取(p-& gt;標題);

printf(" \ n \ t輸入編寫器:");

獲取(p-& gt;作家);

printf(" \ n \ t輸入賬面當前金額:");

scanf("%d ",& ampp->;current num);

printf(" \ n \ t輸入賬面總金額:");

scanf("%d ",& ampp->;total num);

fflush(stdin);

printf(" \ n \ t輸入圖書簡要說明:");

獲取(p-& gt;簡短);

for(I = 0;我& lt20;i++)

(p->;讀者[我])。num[0]= ' \ 0 ';

返回(p);

}

void output node(struct TreeNode * BTH)

{

struct TreeNode * q;

struct book node * p;

int k;

int x;

int標誌;

clr SCR();

printf(" \ n \ t請輸入您要搜索的圖書:");

scanf("%d ",& ampx);

q=mbsearch(bth,x,& ampk & amp;旗幟);

if(flag==1)

{

p = q-& gt;rec[k-1];

printf("\n\tTitle: %s ",p-& gt;標題);

printf("\n\tWriter: %s ",p-& gt;作家);

printf("\n\tCurrentAmount: %d ",p-& gt;current num);

printf("\n\tTotalAmount: %d ",p-& gt;total num);

printf(" \ n \ tbrief introduction:% s \ n ",p-& gt;簡短);

}

else printf(" \ n \ t這本書不存在!");

}

void borrow(struct TreeNode *bth)

{

struct TreeNode * q;

struct book node * p;

結構reader node * r;

int i,k,x,flag,t;

clr SCR();

printf(" \ n \ t請輸入您想借的書:");

scanf("%d ",& ampx);

q=mbsearch(bth,x,& ampk & amp;旗幟);

if(flag==1)

{

p = q-& gt;rec[k-1];

printf(" \ n \ t您想要這本書嗎?(y/n)");

printf("\n\tTitle: %s ",p-& gt;標題);

printf("\n\tWriter: %s ",p-& gt;作家);

printf("\n\tCurrentAmount: %d ",p-& gt;current num);

printf("\n\tTotalAmount: %d ",p-& gt;total num);

printf(" \ n \ tbrief introduction:% s ",p-& gt;簡短);

t = getch();

if(t=='y'||t=='Y ')

{

如果((p-& gt;current num)= = 0)printf(" \ n \ t抱歉,這本書已全部借出...");

其他

{

clr SCR();

for(I = 0;我& lt20;i++)if((p-& gt;讀者[我])。num[0]= = ' \ 0 ')break;

printf(" \ n \ t請輸入您的證書號:");

scanf("%s ",(p-& gt;讀者[我])。num);

printf(" \ n \ t請輸入借用數據:");

printf(" \ n \ tYear:");

scanf("%d ",& amp((p->;reader[I]). bro . year);

printf(" \ t month:");

scanf("%d ",& amp((p->;reader[I]). bro . month);

printf(" \ tDay:");

scanf("%d ",& amp((p->;reader[I]). bro . day);

printf(" \ n \ t請輸入回報數據:");

printf(" \ n \ tYear:");

scanf("%d ",& amp((p->;reader[I]). back . year);

printf(" \ t month:");

scanf("%d ",& amp((p->;reader[I]). back . month));

printf(" \ tDay:");

scanf("%d ",& amp((p->;reader[I]). back . day));

p->;current num-;

printf(" \ n \ t您已經借了這本書。);}

}

}

else printf(" \ n \ t這本書不存在!");

}

void回收(struct TreeNode *bth)

{

struct TreeNode * q;

struct book node * p;

int i,k,x,flag,t,j;

int年,月,日,d;

浮動薪酬;

充電溫度[20];

clr SCR();

printf(" \ n \ t請輸入您想要償還的圖書:");

scanf("%d ",& ampx);

q=mbsearch(bth,x,& ampk & amp;旗幟);

if(flag==1)

{

p = q-& gt;rec[k-1];

printf(" \ n \ t您想償還這本書嗎?(y/n)");

printf("\n\tTitle: %s ",p-& gt;標題);

printf("\n\tWriter: %s ",p-& gt;作家);

printf("\n\tCurrentAmount: %d ",p-& gt;current num);

printf("\n\tTotalAmount: %d ",p-& gt;total num);

printf(" \ n \ tbrief introduction:% s ",p-& gt;簡短);

t = getch();

if(t=='y'||t=='Y ')

{

如果((p-& gt;currentnum)>=(p->;總計數量) )

printf(" \ n \ t您想提供更多圖書\ n ");

其他

{

clr SCR();

printf(" \ n \ t請輸入您的證書號:");

scanf("%s ",temp);

j = 0;

for(I = 0;我& lt20;i++)

{

如果(!(strcmp(temp,(p-& gt;讀者[我])。num)){ j = 1;打破;}

}

if(j = = 0){ printf(" \ n \ t您沒有借這本書。");返回;}

printf(" \ n \ t今天是:");

printf(" \ n \ tYear:");

scanf("%d ",& amp年份);

printf(" \ t month:");

scanf("%d ",& amp月);

printf(" \ tDay:");

scanf("%d ",& amp天);

d = 0;

如果(年份& lt(p->;reader[I]). back . year)d = 1;

如果(年份& lt=(p->;讀者[我])。& amp月份& lt(p->;reader[I]). back . month)d = 1;

如果(年份& lt=(p->;讀者[我])。& amp月份& lt=(p->;讀者[i]),back.month & amp& ampday & lt(p->;reader[I]). back . day)d = 1;

如果(d==0)

{

clr SCR();

工資=(年-(p-& gt;reader[i]).back.year)*365+(月-(p-& gt;reader[I]). back . month)* 30+(day-(p-& gt;讀者[我]). back . day);

printf(" \ n \ t您在%d-%d-%d "中借了這本書,(p-& gt;reader[i]).bro.year,(p-& gt;reader[I])bro . month,(p-& gt;reader[I]). bro . day);

printf(" \ n \ t應該在%d-%d-%d "內償還,(p-& gt;reader[i]).back.year,(p-& gt;reader[i]).back.month,(p-& gt;讀者[我]). back . day);

printf(" \ n \ t今天是%d-%d-%d ",年、月、日);

printf(" \ n \ n \ t所以妳已經走出了償還日");

printf(" \ n \ t您必須支付%2.1f元。",0.1 *付);

}

(p->;讀者[我])。num[0]= ' \ 0 ';

p->;current num++;

printf(" \ n \ t您已經償還了這本書。");

}

}

}

else printf(" \ n \ t您想要歸還壹本不存在的書嗎?");

}

東華()

{ int graphdriver = VGA

int graphmode = VGAHI

int i,j;

registerbgidriver(EGA VGA _ driver);

init graph(& amp;graph driver & amp;graphmode,“”;

clr SCR();

for(I = 0;我& lt=150;i+=5)

{ set color(I);

textbackground(紅色);

settextstyle(0,0,2);

outtextxy(100,i+140,“圖書館管理系統”);

延時(1000000);

clr SCR();

}

setcolor(紅色);

outtextxy(50,200,“加載”);

延時(10000000000);

outtextxy(50,200,“加載中。”);

延時(10000000000);

outtextxy(50,200,“加載中..”);

延時(10000000000);

outtextxy(50,200,"正在加載...");

延時(10000000000);

outtextxy(50,200,“正在加載…”);

延時(10000000000);

outtextxy(50,200,“正在加載.....”);

延時(10000000000);

outtextxy(50,200,“正在加載……”);

延時(10000000000);

outtextxy(50,200,“正在加載.......”);

延時(10000000000);

outtextxy(50,200,"正在加載.......");

延時(10000000000);

outtextxy(50,200,"加載......");

延時(10000000000);

outtextxy(50,200,"加載.......");

延時(10000000000);

outtextxy(50,200,“加載..........”);

outtextxy(50,200,“加載..........”);

延時(10000000000);

for(I = 0;我& lt=10;i++)

延時(10000000000);

clr SCR();

}

字符菜單(無效)

{

clr SCR();

窗口(1,1,80,25);

textmode(單聲道);

textbackground(黑色);

text color(5);

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * * *);

printf("\n\t *****歡迎使用圖書館管理系統* * * * *);

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * * *);

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * * *);

printf("\n\t *1。加壹本書*);

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * * *);

printf("\n\t *2。刪除壹本書* ";

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * * *);

printf("\n\t *3。搜壹本書*);

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * * *);

printf("\n\t *4。借書*”;

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * * *);

printf("\n\t *5。《還書*》;

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * * *);

printf(" \ n \ t * 0 . exit * ");

printf(" \ n \ t * * * * * * * * * * * * * * * * * * * * * * * *);

printf("\n\t請選擇:");

返回getch();

}

東方東華

{ int graphdriver = VGA

int graphmode = VGAHI

int i,j;

char c;

registerbgidriver(EGA VGA _ driver);

init graph(& amp;graph driver & amp;graphmode,“”;

/* * * * * * * * * * * * * *石富方博董華?**************/

printf:{ set color(RED);

settextstyle(3,0,5);

outtextxy(100,30,“方博東華?”);

outtextxy(150,80,“是”);

outtextxy(300,80,“否”);

c = getch();

if(c=='Y'||c=='y ')

{東華();

menu();

}

其他

if(c=='N'||c=='n ')

menu();

其他

{setcolor(綠色);

settextstyle(3,0,8);

outtextxy(200,240,"錯誤!");

延時(1000000000);

clr SCR();

goto printf

}

}

/**************************************/

}

void main()

{

char c,t;

int x;

int k,flag,p = 1;

struct TreeNode * bth = NULL

博方東華();

while(1)

{

c = menu();

putch(c);

getch();

開關(c)

{

case ' 1 ':BTH = mbinsert(BTH);

打破;

情況' 2 ':BTH = MB del(BTH);

打破;

情況“3”:output node(BTH);

打破;

情況“4”:借入(BTH);

打破;

案例‘5’:回報(BTH);

打破;

案例“0”:clrscr();

printf(" \ n \ t是否要返回?(y/n)");

t = getch();

if(t = = ' Y ' | | t = = ' Y ')exit(0);

打破;

def ult:break;

}

printf(" \ n \ t按任意鍵進入主菜單...");

getch();

}

}

  • 上一篇:日照編程鹽霧試驗機制造商
  • 下一篇:快速學習編程語言的十個步驟?
  • copyright 2024編程學習大全網