當前位置:歷史故事大全網 - 圖書館 - c語言課程設計:圖書管理系統設計的基本思想是什麽?

c語言課程設計:圖書管理系統設計的基本思想是什麽?

圖書管理系統主要要求可以錄入圖書、添加書目、查找圖書信息、刪除或修改信息,有的還要求顯示是否被借閱過。

結構數組、鏈表、文件操作和自定義函數是常用的。主要是需要把基礎知識掌握牢固。

先定義結構,再定義結構的成員,選擇壹個數組存儲圖書的各種信息。可以使用for和do while循環來輸入信息。

存儲信息需要文件操作函數,如fopen、fwrite等。

刪除和添加可以刪除節點或添加節點。

搜索等都可以通過字符串操作的各種功能來實現。

附加參考源代碼

#包含?& ltstdio.h & gt

#包含?& ltstring.h & gt

#包含?& ltstdlib.h & gt

#包含?& ltconio.h & gt

#定義書籍?" f:\\books.txt "

#定義?booksbak"f:\\booksbak.txt "

struct?bookinfo

{

夏爾?國際標準書號[20];

夏爾?標題[30];

夏爾?作者[20];

int?數數;

};

struct?書

{

struct?bookinfo?onebook

struct?書?*下壹個;

};

struct?書?*searchBook?(?struct?書?*listptr,char?國際標準書號[])

{

while(listptr!=(struct?書?*)0)

如果?(strcmp(list ptr-& gt;onebook.isbn,isbn)==0)

回歸?listptr

其他

list ptr = list ptr-& gt;接下來;

回歸?(struct?書?*)0;

}

作廢?MainSearchbook(struct?書?*firstptr)

{

struct?書?* ptr

夏爾?ISBN no[20];

Printf("請輸入ISBN:");

scanf("%s ",& ampISBN no);

ptr=searchBook(firstptr,ISBN no);

如果?(ptr!=(struct?書?*)0)

{

Printf("找到了!!!\ n ");

printf("ISBN:%s\n ",ptr-& gt;one book . ISBN);

printf("Title:%s\n ",ptr-& gt;one book . title);

printf("作者:%s\n ",ptr-& gt;one book . author);

}

其他

printf("抱歉,不是?找到了!!!\ n ");

}

int?addBook(struct?書?*listptr,struct?bookinfo?註意)

{

while(list ptr-& gt;下壹個!=0)

list ptr = list ptr-& gt;接下來;

list ptr-& gt;next=(struct?書?*)malloc(sizeof(struct?書));

list ptr-& gt;下壹個-& gt;onebook = note

list ptr-& gt;下壹個-& gt;next = 0;

回歸?0;

}

作廢?MainAdd(struct?書?*listptr,FILE?*fp)

{

int?ok;

struct?bookinfo?註意;

Printf("請輸入ISBN:");

scanf("%s ",e . ISBN);

Printf("請輸入標題:");

scanf("%s ",標題);

Printf("請輸入作者:");

scanf("%s ",作者);

ok=addBook(listptr,註);

如果?(ok==0)

{

//將添加的書籍寫入文件並保存。

fprintf(fp," \n%s?%s?%s?%d”,note.isbn,note.title,note.author,0);

Printf("添加書籍成功!!!\ n ");

}

其他

Printf("添加書籍失敗!!!\ n ");

}

int?removeBook(struct?書?*listptr,char?國際標準書號[])

{

while(list ptr-& gt;下壹個!=(struct?書?*)0)

{

如果?(strcmp(list ptr-& gt;下壹個-& gt;onebook.isbn,isbn)==0)

{

list ptr-& gt;next = list ptr-& gt;下壹個-& gt;接下來;

回歸?0;

}

其他

list ptr = list ptr-& gt;接下來;

}

回歸?-1;

}

作廢?MainRemove(struct?書?*listptr,FILE?*fp)

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

/*?刪除圖書功能,通過ISBN刪除鏈表節點,刪除文件中相應的信息*/

/*?刪除文件中的壹行是壹種愚蠢的方式,將所需信息寫入新文件,刪除舊文件並重命名...*/

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

{

夏爾?ISBN no[20];

int?ok;

struct?bookinfo?onebook

Printf("請輸入ISBN:");

scanf("%s ",& ampISBN no);

ok=removeBook(listptr,is bnno);

如果?(!好的)

{

文件?* fpbak

如果?((fpbak=fopen(booksbak," a+")= = NULL)

Printf("文件無法打開!!!\ n ");

fseek(fp,0,SEEK _ SET);?//移動到文件的開頭

while((fscanf(fp," %s?%s?%s?%d\n ",& ampone book . ISBN & amp;one book . title & amp;one book . author & amp;onebook.count))!=EOF)

{

如果?(strcmp(onebook.isbn,isbnno)!=0)

{

fprintf(fpbak," %s?%s?%s?%d\n ",onebook.isbn,onebook.title,onebook.author,one book . count);

}

}

fclose(FP);

fclose(fpbak);

如果?(移除(書籍))?//刪除失敗,返回非0。

{

Printf("刪除文件失敗!!!\ n ");

回歸?;

}

其他

如果?(rename(booksbak,books))//重命名失敗,返回非零值。

{

Printf("重命名失敗!!!\ n ");

回歸?;

}

Printf("刪除成功!!!\ n ");

}

其他

Printf("沒有這樣的書!!!");

}

intchoice(無效)

{

int?c;

Printf("1。查看書籍\ n ");

Printf("2。添加圖書\ n ");

Printf("3。刪書\ n”);

Printf("4。退出程序\ n ");

Printf("請選擇序列號:");

回歸?c = getchar();

//返回?c = getche();

printf(" \ n \ n ");

}

int?addEntry(文件?*fp,struct?書?*firstptr)

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

/*主要用於加載存儲在文件中的圖書信息*/

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

{

struct?bookinfo?onebook

while((fscanf(fp," %s?%s?%s?%d\n ",& ampone book . ISBN & amp;one book . title & amp;one book . author & amp;onebook.count))!=EOF)

{

while(first ptr-& gt;下壹個!=0)

first ptr = first ptr-& gt;接下來;

first ptr-& gt;next=(struct?書?*)malloc(sizeof(struct?書));

first ptr-& gt;下壹個-& gt;onebook = onebook

first ptr-& gt;下壹個-& gt;next = 0;

}

回歸?0;

}

int?main(int?argc,char?*argv[])

{

int?ch;

struct?書?第壹;

strcpy(first.onebook.isbn,“123456”);

strcpy(first.onebook.title,《編程?c”);

strcpy(first.onebook.author,“yhb”);

first . next = 0;

struct?書?* firstptr = & amp第壹;?//鏈表頭指針

文件?* fp

如果?((fp=fopen(books," a+")= = NULL)

Printf("文件無法打開!!!");

addEntry(fp,first ptr);

while(1)

{

系統(“CLS”);?//清除屏幕

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

/*想想為什麽要清空這裏的緩沖區*/

/*由於last (choice函數)的getchar(),緩沖區中還剩下壹個' \n '...*/

/*可以看看這句話。沒有這句話,妳會有麻煩?*/

/*如果不使用fflush,可以用getche()*/替換getchar()

/*比較getchar()、getch()、getche()...*/

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

fflush(stdin);?

ch = choice()-48;

切換?(ch)

{

案子?1:

main search book(first ptr);

打破;

案子?2:

MainAdd(firstptr,FP);

打破;

案子?3:

MainRemove(firstptr,FP);

打破;

案子?4:

Printf("感謝使用...\ n ");

退出(0);

默認值:

Printf("請輸入正確的序列號!");

}

系統(“暫停”);

}

回歸?0;

}

  • 上一篇:有哪些事是我去了上海才知道的?
  • 下一篇:二類公益機構和三類公益機構有什麽區別?
  • copyright 2024歷史故事大全網