加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入

C語言程序設(shè)計(jì)-圖書管理系統(tǒng)

09/18 09:56
1048
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長(zhǎng)和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
實(shí)物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

圖書管理系統(tǒng)

本題目設(shè)計(jì)目的是訓(xùn)練學(xué)生的基本編程能力,了解管理信息系統(tǒng)的開發(fā)流程,熟悉C語言的文件和單鏈表的各種基本操作。本程序中涉及結(jié)構(gòu)體、文件等方面的知識(shí)。通過本程序的訓(xùn)練,使學(xué)生能對(duì)C語言的文件操作有一個(gè)更深刻的了解,掌握利用文件存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)對(duì)圖書管理的原理,為進(jìn)一步開發(fā)出高質(zhì)量的管理信息系統(tǒng)打下堅(jiān)實(shí)的基礎(chǔ)。

1自定義問題

圖1.0

創(chuàng)建一個(gè)圖書管理系統(tǒng)。假設(shè)圖書管理系統(tǒng)中僅僅包含圖書的書名和編號(hào)和作者等信息。程序的運(yùn)行效果如圖1.0所示,選擇任意菜單后,實(shí)現(xiàn)相應(yīng)功能

2系統(tǒng)設(shè)計(jì)

2.1總體設(shè)計(jì)

采用模塊化的程序設(shè)計(jì)方法,即將較大的任務(wù)按照一定的原則分為一個(gè)個(gè)較小的任務(wù),然后分別設(shè)計(jì)各個(gè)小任務(wù)。需要注意的是劃分出來的模塊應(yīng)該相對(duì)獨(dú)立但又相關(guān),且容易理解??梢杂媚K化層次結(jié)構(gòu)圖(即模塊圖)來分析其任務(wù)的劃分,一般從上到下進(jìn)行,最上面一層是主模塊,下面各層是其上一層模塊的逐步細(xì)化描述

2.2 詳細(xì)設(shè)計(jì)

2.2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

  1. 圖書信息結(jié)構(gòu)體
  2. struct describe
  3. {
  4. char book_name [10]; //書名
  5. int num ;//編號(hào)
  6. char author [10]; }book[N]//作者

2.2.2主控main()函數(shù)執(zhí)行流程

圖2.2? 主控函數(shù)執(zhí)行流程圖

2.2.3 初始化圖書模塊:choice1()//初 始 化 圖 書函數(shù)。?? 對(duì)圖書進(jìn)行輸入和保存,

choice1()//初 始 化 圖 書函數(shù)

{

int i,j,temp;//

printf("--------------初 始 化 圖 書 信 息---------------n");

printf("初始化圖書的本書: ");

scanf("%d",&temp);

printf("--------書名 編號(hào) 作者 n");

for(i=0;i<temp;i++)

{

printf("第%d本書:",i+1);

scanf("%s%d%s",book[i].book_name,&book[i].num,book[i].author);

for(j=0;j<i;j++)

{

again:

if((strcmp(book[i].book_name,book[j].book_name))==0||book[i].num==book[j].num)

{

printf("初始化失敗!------你輸入的數(shù)據(jù)違背了主鍵的唯一性!n");

printf(" 書名 編號(hào) 作者 n");

printf("第%d本書:",i+1);

scanf("%s%d%s",book[i].book_name,&book[i].num,book[i].author);//重新輸入書本信息

goto again;

}

}

}

FILE* fp;

if((fp=fopen("book.txt","wb"))==NULL)

{

printf("cannot open filen");

return;

}

for(i=0;i<temp;i++)

{

if(fwrite(&book[i],sizeof(struct describe ),1,fp)!=1)

printf("file write errorn");

}

fclose (fp);

}

該函數(shù)對(duì)圖書進(jìn)行初始化錄入保存,首先調(diào)用程序,首先輸入要錄入的圖書的本書,如圖

先輸入要初始化的本數(shù)為1;接下來輸入書的名字;編號(hào);作者如圖

輸入完后,函數(shù)將結(jié)果保存到book.txt文件中.

2.2.4 /增 加 圖 書模塊,對(duì)圖書館購進(jìn)新書時(shí)要對(duì)新書進(jìn)行錄入保存在圖書管理系統(tǒng)。

choice2()//增 加 圖 書函數(shù)

{

int i,m=0,y=1;

FILE *fp ;

printf("----------------增 加 圖 書 信 息----------------n");

if((fp=fopen("book.txt","rb"))==NULL)

{

printf("cannot open filen");

exit(0) ;

}

while((fread(&book[m],sizeof(struct describe ),1,fp))!=0)

m++ ;

fclose(fp);

while(y)

{

again:

printf("書名 編號(hào) 作者n");

scanf("%s%d%s",book[m].book_name,&book[m].num,book[m].author);

for(i=0;i<m;i++)

{

if((strcmp(book[i].book_name,book[m].book_name))==0||book[i].num==book[m].num)

{printf("添加圖書失??!----你輸入的數(shù)據(jù)違背了主鍵的唯一性!n");

goto again;}

}

printf("是否繼續(xù)(1繼續(xù)or 0結(jié)束):");

getchar();

scanf("%d",&y);

m++;

}

if((fp=fopen("book.txt","wb"))==NULL)

{

printf("cannot open filen");

exit(0) ;

}

for(i=0;i<m;i++)

{

if(fwrite(&book[i],sizeof(struct describe ),1,fp)!=1)//保存函數(shù)

printf("file write errorn");

}

fclose (fp);

}

該模塊主要對(duì)圖書館新購買回來的書籍進(jìn)行錄入保存,輸入數(shù)字2進(jìn)入choice2()函數(shù),依次輸入書本的名字,編號(hào),作者。函數(shù)要求輸入1和0,以判斷是否繼續(xù)輸入圖書信息;如圖

如果繼續(xù)輸入就輸入1或者結(jié)束就輸入0。

2.2.5修改圖書模塊:該模塊對(duì)輸入有錯(cuò)誤的圖書的信息進(jìn)行修改。在主菜單中輸入數(shù)字3,進(jìn)入choice2()函數(shù),

choice3()//修 改 圖 書函數(shù)

{

printf("----------------修 改 圖 書 信 息----------------n");

FILE *fp ;

int temp ;

again:

printf("輸入你要修改的圖書的編號(hào):");

scanf("%d",&temp);

struct describe update ;//再定義一個(gè)struct describe的結(jié)構(gòu)體

int i=0,k=0,j;

if((fp=fopen("book.txt","rb+"))==NULL)

{

printf("cannot open filen");

exit(0);

}

int n=10000;

while((fread(&book[k],sizeof(struct describe),1,fp))!=0)

{

if(book[k].num==temp)

n=k;

k++;

}

fclose(fp);

if(n==10000)

{

printf("你要-修改的-圖書-不存在!n");

getchar();

goto again ;

}

printf("書名 編號(hào) 作者n");

scanf("%s%d%s",update.book_name,&update.num,update.author);

for(j=0;j<k;j++)

{

if(j==n) continue ;

else

if((strcmp(book[j].book_name,update.book_name))==0||book[j].num==update.num)

{

printf("修改圖書信息失?。∧斎氲臄?shù)據(jù)違背了主鍵的唯一性!n");

goto again ;

}

}

if((fp=fopen("book.txt","rb+"))==NULL)

{

printf("cannot open filen");

exit(0);

}

while((fread(&book[i],sizeof(struct describe),1,fp))!=0)

{

if(book[i].num==temp)

{

fseek(fp,-sizeof(struct describe),1);//把文件fp向前后推sizeof(struct describe)字節(jié)

fwrite(&update,sizeof(struct describe ),1,fp);

fclose(fp);

}

i++;

  • 有需要資料的可了解一下.docx

相關(guān)推薦

電子產(chǎn)業(yè)圖譜