當前位置:歷史故事大全網 - 圖書館 - 用數據結構設計圖書管理系統

用數據結構設計圖書管理系統

# include & ltstdio.h & gt

# include & ltstring.h & gt

# include & ltconio.h & gt

# include & ltstdlib.h & gt

#定義N sizeof(結構書)

# define PT " %-5d % 10s % 6s % 6s % 8s % 3d \ n ",p-& gt;num,p->姓名,p-& gt;其中,p-& gt;作者,p-& gt;pub,p-& gt;數數

結構圖書/*圖書信息*/

{

int num/* ISBN */

字符名稱[10];/*標題*/

char where[10];/*在圖書館*/

char作者[15];/*作者*/

char pub[20];/*按*/

int計數;/*數量*/

struct book * next

};

/*輸出模塊*/

無效打印(結構書*p0)

{

結構書* p;

p = P0-& gt;接下來;

Printf ("\ n \ n \ t \ t圖書信息表");

printf(" \ n \ n書號-書名-圖書館-作者-出版社-數量\ n ");

而(p!=空)

{

printf(PT);

p = p-& gt;接下來;

}

getch();

}

/*輸入模塊*/

結構書*創建()

{

struct book *head,*p1,* p2

int I = 0;

head = p2 =(struct book *)malloc(N);

head->;next = NULL

printf(" \ n \ n \ t \ t輸入圖書信息");

printf(" \ n \ t-");

while(1)

{ p 1 =(struct book *)malloc(N);

printf(" \ n請輸入書號(書號以0結尾):");

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

if(p 1->;num!=0)

{

printf(" \ n \ n書名所在書庫和作者出版社的圖書數量\ n ");

scanf("%s%s%s%s%d ",p 1-& gt;名稱,p 1->;其中,p 1->;作者,p 1->;酒吧& ampp 1->;計數);

p2->;next = p 1;

p2 = p 1;

i++;

}

其他

打破;

}

p2->;next = NULL

免費(p 1);

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

Printf("\n\t\t已輸入%d本書",I);

getch();

回程頭;

}

/*查找模塊*/

無效查找(結構書*p0)

{

字符名稱[10];

int flag = 1;

結構書* p;

p = P0-& gt;接下來;

Printf("請輸入妳要找的書的書名:\ n ");

scanf("%s ",名稱);

for(p = P0;p;p = p-& gt;下壹個)

if(strcmp(p-& gt;name,name)==0)

{

printf(" \ n \ n書號-書名-圖書館-作者-出版社-數量\ n ");

printf(PT);

flag = 0;

打破;

}

if(flag)printf(" \ n沒有關於這本書的信息\ n ");

getch();

}

/*刪除模塊*/

void del(結構書*p0)

{

字符名稱[10];

int flag = 1;

結構書* p;

p = p0

Printf("請輸入要刪除的標題:\ n ");

scanf("%s ",名稱);

而(p!=空)

{

if(strcmp(p-& gt;name,name)==0)

{

P0->;next = p-& gt;接下來;/*在後繼節點連接到前趨節點之後*/

免費(p);

printf(" \ t這本書已被刪除。");

flag = 0;

打破;

}

P0 = p;

p = p-& gt;接下來;

}

if(flag)printf(" \ n \ t沒有關於這本書的信息。);

getch();

}

/*添加模塊*/

空插入(結構書*p0)

{

結構書* p;

p =(struct book *)malloc(N);

while(1)

{

printf(" \ n請輸入要添加的書號(書號為0退出):");

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

如果(p->;num!=0)

{

如果(P0-& gt;下壹個!= NULL & amp& ampP0->;下壹個-& gt;num = = p-& gt;Num) /*發現重復的數字*/

{

p = p-& gt;接下來;

免費(p);

printf(" \ t這本書已經存在");

}

其他

{ printf(" \ n \ n書庫中的圖書數量以及書名所在的作者出版社\ n ");

scanf("%s%s%s%s%d ",p-& gt;姓名,p-& gt;其中,p-& gt;作者,p-& gt;酒吧& ampp->;計數);

p->;next = P0-& gt;接下來;

P0->;next = p;

printf(" \ t成功插入。);

}

}

其他

打破;

}

getch();

}

/*修改模塊*/

無效修改(結構書*p0)

{

字符名稱[10];

int flag = 1;

int選擇;

結構書* p;

p = P0-& gt;接下來;

Printf("請輸入要修改的書名:\ n ");

scanf("%s ",名稱);

而(p!= NULL & amp& ampflag==1)

{

if(strcmp(p-& gt;name,name)==0)

{

printf(" \ n \ t請選擇要修改的項目:");

Printf("\n\t 1。修改書號\ n”);

Printf("\n\t 2。修改書所在的圖書館\ n ");

Printf("\n\t 3。修改圖書作者\ n”);

Printf("\n\t 4。修改圖書出版社\ n”);

Printf("\n\t 5。修改圖書庫存\ n ");

scanf("%d ",& amp選擇);

開關(選擇)

{

案例1:{ printf(" \ n請輸入新的書號:");

scanf("%d ",p-& gt;num);打破;

}

案例2:{ printf(" \ n請輸入壹個新庫:");

scanf("%s ",p-& gt;哪裏);打破;

}

案例3:{ printf(" \ n請輸入新書作者:");

scanf("%s ",p-& gt;作者);打破;

}

案例4:{ printf(" \ n請輸入新書出版商:");

scanf("%s ",p-& gt;pub);打破;

}

案例5:{ printf(" \ n請輸入新書庫存:");

scanf("%d ",p-& gt;計數);打破;

}

}

printf(" \ n \ t該項已被成功修改。\ n \新書信息:“);

printf(" \ n \ n書號-書名-圖書館-作者-出版社-數量\ n ");

printf(PT);

flag = 0;

}

P0 = p;

p = P0-& gt;接下來;

}

if(flag)printf(" \ n \ t沒有關於這本書的信息。);

getch();

}

/*讀取文件*/

struct book *read_file()

{

int I = 0;

struct book *p,*p1,* head = NULL

FILE * fp

if((fp=fopen("library.txt "," Rb ")= = NULL)

{ printf(" \ n \ n \ n \ n \ t * * * * * *庫文件不存在,請創建!**********");

getch();

返回NULL

}

head =(struct book *)malloc(N);

p 1 =頭;

head->;next = NULL

printf(" \ n現有圖書信息:");

printf(" \ n \ n書號-書名-圖書館-作者-出版社-數量\ n ");

而(!feof(fp))

{

p =(struct book *)malloc(N);/*開辟空間存儲獲得的信息*/

while(fscanf(fp," %d%s%s%s%s%d ",& ampp->;num,p->姓名,p-& gt;其中,p-& gt;作者,p-& gt;酒吧& ampp->;數數)!=EOF)

{

printf(PT);

i++;

}

p 1->;next = p;

p 1 = p;

}

p 1->;next = NULL

fclose(FP);

Printf("\n ***種%d圖書信息",I);

printf(" \ n \ n \ n可以正確讀取文件中的信息。按任意鍵進入主菜單。”);

getch();

返回(頭);

}

/*保存文件*/

無效保存(結構書*頭)

{

FILE * fp

結構書* p;

fp=fopen("library.txt "," WB ");/*以只寫方式打開二進制文件*/

If(fp==NULL) /*無法打開文件*/

{

printf(" \ n = = = = = & gt;無法打開文件!\ n ");

getch();

返回;

}

其他

for(p = head-& gt;接下來;p!= NULLp = p-& gt;下壹個)

fprintf(fp," %d %s %s %s %s %d\n ",p-& gt;num,p->姓名,p-& gt;其中,p-& gt;作者,p-& gt;pub,p-& gt;計數);

fclose(FP);

printf(" \ n \ t文件保存成功!\ n ");

}

void main()

{

struct book * head = NULL

int choice = 1;

head = read _ file();

if(head==NULL)

{

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

getch();

head = creat();

}

{

系統(“cls”);

printf(" \ t \ t-Welcome-\ n ");

printf(" \ n \ n \ t歡迎,圖書管理員。\ n ");

printf(" \ n \ n \ n \ n ");

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

Printf("\n\t 1。查詢圖書信息\ n ");

Printf("\n\t 2。修改圖書信息\ n ");

Printf("\n\t 3。添加圖書信息\ n”);

Printf("\n\t 4。刪除圖書信息\ n ");

Printf("\n\t 5。顯示所有圖書信息\ n ");

Printf("\n\t 0。退出系統\ n ");

scanf("%d ",& amp選擇);

開關(選擇)

{

案例1:查找(頭);打破;

情況二:修改(頭);打破;

案例三:插入(頭);打破;

案例四:德爾(頭);打破;

案例五:打印(頭);打破;

案例0:系統(“cls”);

printf(" \ n \ n \ n \ n \ t感謝您的使用,再見!\ n \ n ");

打破;

}

}while(選擇!=0);

保存(頭);

}

  • 上一篇:銷售職業規劃書4篇範文
  • 下一篇:求清明上河圖全可打印。
  • copyright 2024歷史故事大全網