加入星計劃,您可以享受以下權益:

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

C語言程序設計-圖書信息管理系統(tǒng)

08/22 13:25
809
服務支持:
技術交流群

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

虛擬商品不可退

當前內容為數(shù)字版權作品,購買后不支持退換且無法轉移使用。

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

題??? 目: 圖書信息管理系統(tǒng)?

圖書信息管理系統(tǒng)

本題目設計目的是訓練學生的基本編程能力,了解圖書管理信息系統(tǒng)的開發(fā)流程,熟悉C語言的文件的基本操作。本程序中涉及結構體、文件等方面的知識。通過本程序的訓練,使學生能對C語言的文件操作有一個更深刻的了解,掌握利用文件存儲結構實現(xiàn)對學生成績管理的原理,為進一步開發(fā)出高質量的圖書管理系統(tǒng)打下堅實的基礎。

1、題目要求

設計“圖書信息管理系統(tǒng)

要求:

圖書信息包括:書號、書名、作者、價格等。使之提供以下功能:

  1. 系統(tǒng)以菜單方式工作。
  2. 圖書信息錄入功能。(圖書信息用文件保存)。
  3. 圖書信息瀏覽功能。
  4. 圖書信息的導入。
  5. 圖書信息的修改。
  6. 圖書信息查詢功能。
  7. 圖書信息的刪除。
  8. 圖書信息的保存和返回主菜。

2、分析:

??? 根據(jù)題目要求,應當把圖書信息用結構體形式輸入,再定義一個全局變量和文件指針進行整個程序的運行,然后把圖書信息送到文件中,所以應該提供一個結構體和文件的輸入輸出等操作;在程序中需實現(xiàn)圖書信息錄入,瀏覽,查詢,修改和刪除等功能的操作,在運行時達到所要目。

3、總體設計:

根據(jù)題目要求,可以將系統(tǒng)分為十三個模塊:

  1. 菜單選擇模塊。
  2. 圖書信息數(shù)據(jù)寫入文件。
  3. 圖書信息數(shù)據(jù)文件的導入。
  4. 圖書信息主菜單的打印。
  5. 輸出*與輸出~。
  6. 提供開關的效果。
  7. 圖書信息的輸入。
  8. 圖書信息的打印。
  9. 圖書信息的修改。
  10. 圖書信息的查找。
  11. 圖書信息的刪除。
  12. 圖書信息的保存。
  13. 返回主菜單。

4:部分程序設計:

頭函數(shù)名:

#include<stdio.h>

#include<string.h>

#include<conio.h>

#include<windows.h>

#define N 80

struct book_type

{char booknum[20];?????????????????? /*書號*/

char bookname[20];??????? ??????????????/*書名*/

char authorname[20];????????????????? /*作者*/

char price[20];????????????????????? //價格

}person[N];?????????????????????? /*存儲圖書信息*/

4.1:功能模塊

void menu();????????????????????? /*菜單函數(shù)*/

void display1();????????????????? /*執(zhí)行打印的功能*/

void display2();????????????????? /*執(zhí)行打印的功能*/

void reserve();?????????????????? /*保存到數(shù)組*/

void read();????????????????????? /*導入圖書信息*/

void delay();???????????????????? /*提供開關的效果*/

void choose();??????????????????? /*提供選擇的功能*/

void enter();???????????????????? /*圖書信息的輸入*/

void printfinformation();???????? /*圖書信息的打印*/

void modify();???????????????????? /*圖書信息的修改*/

void search();??????????????????? /*圖書信息的查找*/

void del();?????????????????????? /*圖書信息的刪除*/

void save();????????????????????? /*圖書文件信息的保存*/

void back();????????????????????? /*返回主菜單*/

char ch;????????????????????????? /*存儲主菜單的調用選項信息*/

int number=0,temp1,temp2=0;?????? /*記錄每次輸入的人數(shù)*/

void main()

{system("color 0e");????????????? //選擇顏色

menu();?????????????????????????? //菜單函數(shù)

do

{scanf(" %c",&ch);

system("cls");??????????????????? //清屏功能

choose();

}while(ch!='8');????????????????? //循環(huán)條件的判斷

}

//提供主菜單的選擇功能

void choose()

{switch(ch)

{case'1':enter();

break;

case'2':printfinformation();

back();

break;

case'3':modify();

back();

break;

case'4':search();

//back;

break;

case'5':del();

break;

case'6':save();

break;

case'7':read();

back();

case'8':printf("nnt感謝您的使用!n");

break;

default:menu();

printf("nnt請重新選擇:");

}

注釋:圖書信息以數(shù)據(jù)的形式寫入文件,以文件的形式保存圖書信息數(shù)據(jù)

//圖書信息數(shù)據(jù)寫入文件

void reserve()

{FILE *fp=NULL;

FILE *fp1=NULL;

int i;

if((fp=fopen("book.txt","w"))==NULL)??????????????????????????????????????????? //以文本只寫方式打開文件

{printf("不能打開文件");

exit(0);

}

if((fp1=fopen("book1.txt","w"))==NULL)????? ??????????????????????????????????????//以文本只寫方式打開文件

{printf("不能打開文件");

exit(0);

}

fprintf(fp1,"%20dn",number);

for(i=temp2;i<number;i++)

{fprintf(fp,"%10s%15s%15s%15sn",person[i].booknum,person[i].bookname,person[i].authorname,person[i].price);?????? //寫入文件

}

fclose(fp1);

fclose(fp);???????????????????????????????????????????????????????????????????? //關閉文件

}

注釋:當圖書信息不能打開時則關閉文件,返回菜單。

//圖書信息數(shù)據(jù)文件的讀取/導入

void read()

{FILE *fp;//=NULL;

FILE *fp1;

int i=0;

if((fp1=fopen("book1.txt","rb+"))==NULL)???????? 以文本只讀方式重新打開文件

{printf("不能打開文件");

exit(0);

}

fscanf(fp1,"%4dn",&number);

if((fp=fopen("book.txt","rb+"))==NULL)???? 為了讀與寫,打開一個二進制文件

{printf("不能打開文件");

exit(0);

}

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

{fscanf(fp,"%11s%11s%11s%11sn",person[i].booknum,person[i].bookname,person[i].authorname,person[i].price);

//讀文件

printf("%11s%11s%11s%11sn",person[i].booknum,person[i].bookname,person[i].authorname,person[i].price);

//輸出文件數(shù)據(jù)

}

reserve();

fclose(fp1);

fclose(fp);

menu();

back();

}

//主菜單的打印

void menu()

{char *s[9]={"【1】輸入圖書信息","【2】查看圖書信息","【3】修改圖書信息","【4】查找圖書信息","【5】刪除圖書信息","【6】保存圖書信息","【7】導入圖書信息","【8】退出管理系統(tǒng)","請選擇:"};

int i;

printf("n");

printf("tt");

display1();

printf("圖書管理系統(tǒng)");

display1();

printf("nn");

printf("tt");

display2();

printf("nn");

printf("tt");

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

{display1();

printf("%s",s[i]);

display1();

printf("n");

printf("tt");

}

}

//輸出*

void display1()

{int i;

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

{printf("*");

delay();

}

}

//輸出~

void display2()

{int i;

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

{printf("~");

delay();

}

}

//提供開關的效果

void delay()

{long i,n=4000000;

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

{if(ch!='?') i=n;??????????????? //運行過后可消除開關的延遲效果

}

}

//圖書信息的輸入

void enter()

{int i;

printf("請輸入圖書的冊數(shù):");

scanf("%d",&temp1);

number+=temp1;

for(i=temp2;i<number;i++)???????? //引用中間變量temp2,記錄每次輸入的人數(shù)

{printf("請輸入%d本圖書的信息:",i+1);

printf("t書號:");

scanf("%s",person[i].booknum);

printf("t書名:");

scanf("%s",person[i].bookname);

printf("t作者:");

scanf("%s",person[i].authorname);

printf("t價格:");

scanf("%s",person[i].price);

}

reserve();

temp2+=temp1;

back();?????????????????????????? //返回主菜單

}

//圖書信息的打印

void printfinformation()

{int i;

if(number==0)

{printf("t沒有圖書信息");

}

else

{printf("ntt~~~~~~~~~~~~圖書信息~~~~~~~~~~~~~~~n");

printf("--------------------------------------------------n");

printf("??????? 書號?????? 書名??????? 作者????? 價格n");

printf("--------------------------------------------------n");

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

{printf("%10s%11s%11s%11sn",person[i].booknum,person[i].bookname,person[i].authorname,person[i].price);

printf("--------------------------------------------------n");

}

}

}//圖書信息的修改

//圖書信息的查找

void search()

{int i,k,flag;

char temp[20],temp1;

if(number==0)

{printf("t沒有圖書信息");

}

else

{do

{printf("請輸入你要查找的圖書是書號或書名:");

scanf("%s",temp);

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

{if(strcmp(temp,person[i].booknum)==0||strcmp(temp,person[i].bookname)==0)

{k=i;

flag=1;

break;

}

if(i==(number-1)&&(strcmp(temp,person[i].booknum)!=0)&&(strcmp(temp,person[i].bookname)!=0))

{printf("不存在該圖書n");

flag=0;

}

}

if(flag==1)

{printf("該圖書的信息:n");

printf("--------------------------------------------------n");

printf("3? 書號??? 書名???? 作者???? 價格n");

printf("--------------------------------------------------n");

printf("%5s%7s%9s%9sn",person[k].booknum,person[k].bookname,person[k].authorname,person[k].price);

printf("--------------------------------------------------n");

}

printf("n是否繼續(xù)查找?Y/N:");

scanf("%c",&temp1);

}while(temp1=='y'||temp1=='Y');

}

back();

}

void del()

{int i,k,flag;

char temp[20],temp1;

if(number==0)

{printf("t沒有圖書信息");

}

else

{printfinformation();

do

{printf("請輸入要刪除的圖書信息的書號或書名:");

scanf("%s",temp);

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

{if(strcmp(temp,person[i].booknum)==0||strcmp(temp,person[i].bookname)==0)

{k=i;

flag=1;

break;

}

if(i==(number-1)&&(strcmp(temp,person[i].booknum)!=0)&&(strcmp(temp,person[i].bookname)!=0))

{printf("不存在該圖書n");

flag=0;

}

}

if((flag==1)&&(number==1))

{number--;

temp2--;

printf("該圖書信息已經(jīng)成功刪除nn");

}

if((flag==1)&&(number<=0))

{printf("已經(jīng)沒有圖書信息,請重新輸入!nn");

}

if((flag==1)&&(number>1))

{for(i=k;i<(number-1);i++)

{strcpy(person[i].booknum,person[i+1].booknum);

strcpy(person[i].bookname,person[i+1].booknum);

strcpy(person[i].authorname,person[i+1].authorname);

strcpy(person[i].price,person[i+1].price);

}

number--;

temp2--;

printf("該圖書信息已經(jīng)成功刪除nn");

}

printf("是否繼續(xù)刪除?Y/N");

scanf("%c",&temp1);

}while(temp1=='Y'||temp1=='y');

printf("是否顯示刪除操作后全部圖書信息?Y/N:");

scanf("%c",&temp1);

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

{printfinformation();

}

reserve();

}

back();

}

注釋:當輸入數(shù)據(jù)時選擇1則返回上次的記錄,2則保存記錄。會輸出相應的數(shù)據(jù)。

//保存記錄

void save()

{char temp;

printf("1、讀取上次的記錄:n2、保存現(xiàn)在的記錄:n請選擇:");

scanf("%c",&temp);

if(temp=='1')

{printf("ntt/~~~~~~~~~~~~~圖書信息~~~~~~~~~~~~~~~n");

printf("--------------------------------------------------n");

printf("? 書號??? 書名???? 作者??? 價格n");

read();

back();

}

else

{printf("t程序已經(jīng)保存n");

back();

}

}

//返回主菜單

void back()

{printf("ntt輸入任意鍵返回主菜單:");

getch();????????????????????????? //提供任意鍵返回效果

system("cls");??????????????????? //清屏功能

menu();?????????????????????????? //打印主菜單

}

5運行與測試報告:

功能選擇鍵。

輸入圖書信息。

查看圖書信息。

修改圖書信息。

查找圖信息。

刪除圖書信息。

保存圖書信息。

圖書信息的導入。

退出圖書管理系統(tǒng)。

需要全部資料可以在我的資源里下載,資料包括程序文檔、源程序。

需要完整的資料可在我的資源里下載,也可以加入我的紛傳圈子,里面有資源壓縮包的百度網(wǎng)盤下載地址及提取碼。

紛傳?點擊用微信打開即可,過程有點繁瑣請見諒。???????

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

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
MOC3021SR2M 1 Rochester Electronics LLC 1 CHANNEL TRIAC OUTPUT OPTOCOUPLER, SURFACE MOUNT, DIP-6
$0.68 查看
FM25CL64B-GA 1 Ramtron International Corporation Memory Circuit, 8KX8, CMOS, PDSO8, GREEN, MS-012AA, SOIC-8
$4.61 查看
B39431R964H110 1 TDK Corporation 1-Port Saw Resonator, 434.15MHz Nom, ROHS COMPLIANT, SMD, DCC6E, 6 PIN
暫無數(shù)據(jù) 查看

相關推薦

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