亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

基于C語言實現圖書管理信息系統設計

2020-01-26 13:48:28
字體:
來源:轉載
供稿:網友

本文實例為大家分享了圖書管理信息系統的設計與實現,供大家參考,具體內容如下

#include<stdio.h>#include<string.h>#define BookSize 100#define BLHum 50#define BLHnum 50#define RRnum 50/*主數據庫文件*/typedef struct { int bno; char bname[21]; int namenext; char author[9]; int authnext; char press[11]; int prenext; char sortno[4]; int storenum; int borrownum;}BookRecType;typedef struct { BookRecType BookDbase[BookSize]; int len;}BookDbaseFile;/*書號索引文件*/typedef struct { int bno; int RecNo;}BidxRecType;typedef struct { BidxRecType BnoIdx[BookSize]; int len;}BnoIdxFile;/*書名鏈頭索引文件*/typedef struct { char bname[21]; int lhead; int RecNum;}BNRecType;typedef struct { BNRecType LHFrecl[BLHum]; int len1;}LHFile1;/*作者鏈頭索引文件*/typedef struct { char author[9]; int lhead; int RecNum;}BARecType;typedef struct { BARecType LHFrec2[BLHnum]; int len2;}LHFile2;/*出版社鏈頭索引問件*/typedef struct { char press[11]; int lhead; int RecNum;}BPRecType;typedef struct { BPRecType LHFrec3[BLHnum]; int len3;}LHFile3;/*讀者文件*/typedef struct { int rno; char name[8]; int bn1; int bn2;}RRecType;typedef struct { RRecType ReadRec[RRnum]; int len;}ReadFile;/*借還書文件*/typedef struct { int rno; int bno; char date1[9]; char date2[9];}BbookRecType;typedef struct { BbookRecType Bbook[BookSize]; int len;}BbookFile;/*追加一條圖書記錄建立相關文件*/BookDbaseFile AppeDBaseRec(BookDbaseFile df){ int i; printf("書號 書名 作者名 出版社 分類 藏書量/n"); scanf("%d%s", df.BookDbase[i].bno, df.BookDbase[i].bname); scanf("%s%s", df.BookDbase[i].author, df.BookDbase[i].press); scanf("%s %d", df.BookDbase[i].sortno, &df.BookDbase[i].storenum); df.BookDbase[i].borrownum = 0; return df;}/*修改書號索引表的設計*/BnoIdxFile ChangeBnoIdxF(BookDbaseFile df, BnoIdxFile bif){ int i, j, k = 1; i = df.len; j = bif.len; while (j >= 1) {  if (df.BookDbase[i].bno>bif.BnoIdx[j].bno)  {   k = j + 1;   break;  }  j--; } if (bif.len>0)  for (j = bif.len; j >= k; j--)   bif.BnoIdx[j + 1] = bif.BnoIdx[j]; bif.BnoIdx[k].bno = df.BookDbase[i].bno; bif.BnoIdx[k].RecNo = i; bif.len++; return bif;}/*修改書名索引以及書名鏈頭索引的設計*/LHFile1 ChangeLinkHeadF1(BookDbaseFile *df, LHFile1 lhf1){ int i, j, k, m; char sm[21]; i = df->len; strcpy(sm , df->BookDbase[i].bname); j = 1; k = 0; while (j <= lhf1.len1) {  if (strcmp(sm, lhf1.LHFrecl[j].bname) == 0)  {   k = j;   break;  }  j++; } if (k != 0) {  df->BookDbase[i].namenext = lhf1.LHFrecl[k].lhead;  lhf1.LHFrecl[k].lhead = i;  lhf1.LHFrecl[k].RecNum++; } else {  m = ++lhf1.len1;  df->BookDbase[i].namenext = 0;  lhf1.LHFrecl[m].lhead = i;  lhf1.LHFrecl[m].RecNum = 1;  strcpy(lhf1.LHFrecl[m].bname, sm); } return lhf1;}/*修改作者索引以及作者鏈頭索引表的設計*/LHFile2 ChangeLinkHeadF2(BookDbaseFile *df, LHFile2 lhf2){ int i, j, k, m; char zz[9]; i = df->len; strcpy(zz, df->BookDbase[i].author); j = 1; k = 0; while (j <= lhf2.len2) {  if (strcmp(zz, lhf2.LHFrec2[j].author) == 0)  {   k = j;   break;  }  j++; } if (k != 0) {  df->BookDbase[i].authnext = lhf2.LHFrec2[k].lhead;  lhf2.LHFrec2[k].lhead = i;  lhf2.LHFrec2[k].RecNum = 1;  strcpy(lhf2.LHFrec2[m].author, zz); } return lhf2;}/*修改出版社的索引以及出版社鏈頭索引表的設計*/LHFile3 ChangeLinkHeadF3(BookDbaseFile *df, LHFile3 lhf3){ int i, j, k, m; char cbs[11]; i = df->len; strcpy(cbs, df->BookDbase[i].press); j = 1; k = 0; while (j <= lhf3.len3) {  if (strcmp(cbs, lhf3.LHFrec3[j].press) == 0)  {   k = j;   break;  }  j++; } if (k != 0) {  df->BookDbase[i].prenext = lhf3.LHFrec3[k].lhead;  lhf3.LHFrec3[k].lhead = i;  lhf3.LHFrec3[k].RecNum++; } else {  m = ++lhf3.len3;  df->BookDbase[i].prenext = 0;  lhf3.LHFrec3[m].lhead = i;  lhf3.LHFrec3[m].RecNum = i;  strcpy(lhf3.LHFrec3[m].press, cbs); } return lhf3;}/*用二分查找實現書號查詢算法*/int BinSearch(BnoIdxFile bif, int key){ int low, high, mid; low = 1; high = bif.len; while (low <= high) {  mid = (low + high) / 2;  if (key == bif.BnoIdx[mid].bno)   return bif.BnoIdx[mid].RecNo;  else   if (key<bif.BnoIdx[mid].bno)    high = mid - 1;   else    low = mid + 1; } return 0;}/*按書名查詢算法的設計*/int BnameFind(LHFile1 lhf1, char key[]){ int i, k = 0; for (i = 1; i<=lhf1.len1;i++) {  if (strcmp(key, lhf1.LHFrecl[1].bname) == 0)  {   k = lhf1.LHFrecl[i].lhead;   break;  } } return k;}/*按作者查詢算法的設計*/int BauthFind(LHFile2 lhf2, char key[]){ int i, k = 0; for (i = 1; i <= lhf2.len2; i++) {  if (strcmp(key, lhf2.LHFrec2[i].author) == 0)  {   k = lhf2.LHFrec2[i].lhead;   break;  } } return k;}/*按出版社查詢算法的設計*/int BnameFind(LHFile3 lhf3, char key[]){ int i, k = 0; for (i = 1; i <= lhf3.len3; i++) {  if (strcmp(key, lhf3.LHFrec3[i].press) == 0)  {   k = lhf3.LHFrec3[i].lhead;   break;  } } return k;}/*輸出一條圖書主數據庫記錄的設計*/void ShowRec(BookDbaseFile df, int i){ printf("書號 書名 作者名 出版社 分類號 可借數/n"); printf("==============================================/n"); printf("%d%12s", df.BookDbase[i].bno, df.BookDbase[i].bname); printf("%8s%12s", df.BookDbase[i].author, df.BookDbase[i].press); printf("%6s", df.BookDbase[i].sortno); printf("%4d/n", df.BookDbase[i].storenum - df.BookDbase[i].borrownum); printf("==============================================/n");}/*圖書查詢控制程序設計*/void SearchBook(BookDbaseFile df, BnoIdxFile bif, LHFile1 f1, LHFile2 f2, LHFile3 f3){ char sm[21], zz[9],cbs[11]; int i, k, choose = 1; int sh; while (choose >= 1 && choose <= 5) {  printf("圖書查詢子系統/n");  printf("------------------/n");  printf("1.書 號  2.書 名/n");  printf("3.作 者  4.出版社/n");  printf("5.退 出 查 詢");  printf("------------------/n");  printf(" 請 用 戶 選 擇:");  scanf("%d", &choose);  switch (choose)  {  case 1:   printf("輸入學號:");   scanf("%d", &sh);   k = BinSearch(bif, sh);   if (k == 0) {    printf("沒有要檢查的圖書,請檢查是否輸入有錯/n");    break;   }   ShowRec(df, k);   break;  case 2:   printf("輸入書名:");   scanf("%", &sm);   k = BnameFind(f1, sm);   if (k == 0) {    printf("沒有要檢查的圖書,請檢查是否輸入有錯/n");    break;   }   for (i = k; i; i = df.BookDbase[i].namenext)    ShowRec(df, i);   break;  case 3:   printf("輸入作者名:");   scanf("%s", &zz);   k = BauthFind(f2, zz);   if (k == 0) {    printf("沒有要檢查的圖書,請檢查是否輸入有錯/n");    break;   }   for (i = k; i; i = df.BookDbase[i].authnext)    ShowRec(df, i);   break;  case 4:   printf("輸入出版社:");   scanf("%s", &cbs);   k = BnameFind(f3,cbs);   if (k == 0) {    printf("沒有要檢查的圖書,請檢查是否輸入有錯/n");    break;   }   for (i = k; i; i = df.BookDbase[i].prenext)    ShowRec(df, k);   break;  case 5:   return;  } }}/*借還書處理算法*/void BorrowBook(BookDbaseFile *bf, BnoIdxFile bif, BbookFile *bbf, ReadFile *rf){ char jyrq[9]; int sh, dzh; int i, j, k = 0; printf("輸入讀者號 書號 借閱日期/n"); scanf("%d%d%s", &dzh, &sh, jyrq); for (i = 1; i <= rf->len; i++) {  if (dzh == rf->ReadRec[i].rno)  {   k = i;   break;  } } if (k == 0) {  printf("非法讀者!/n");  return; } if (rf->ReadRec[k].bn2 >= rf->ReadRec[k].bn1) {  printf("書已借滿!/n");  return; } j = BinSearch(bif, sh); if (j == 0) {  printf("非法書號!");   return; } if (bf->BookDbase[j].borrownum >= bf->BookDbase[j].storenum) {  printf("圖書已借出/n");  return; } i = ++bbf->len; bbf->Bbook[i].rno = dzh; bbf->Bbook[i].bno = sh; strcpy(bbf->Bbook[i].date1, jyrq); rf->ReadRec[k].bn2++; bf->BookDbase[j].borrownum++; printf("借書成功!/n");}/*還書處理算法的設計*/void BackBook(BookDbaseFile *bf,BnoIdxFile bif ,BbookFile *bbf, ReadFile *rf){ char hsrq[8]; int sh, dzh; int i, j, k = 0, m = 0; printf("讀者號 書號 還書日期/n"); scanf("%d%d%s", &dzh, &sh, hsrq); for (i = 1; i <= rf->len; i++) {  if (dzh == rf->ReadRec[i].rno)  {   k = i;   break;  } } if (k == 0) {  printf("非法讀者!/n");  return; } for (i = 1; i <= bbf->len; i++)  if (sh == bbf->Bbook[i].bno)  {   m = i;   break;  } if (m == 0) {  printf("非法書號!/n");  return; } j = BinSearch(bif, sh); if (j == 0) {  printf("非法書號!/n");  return; } rf->ReadRec[k].bn2--; bf->BookDbase[j].borrownum--; strcpy(bbf->Bbook[m].date2, hsrq); printf("還書成功!/n");}/*讀者管理子系統*/ReadFile ReaderManage(ReadFile rf){ int i; char yn = 'y'; i = ++rf.len; while (yn == 'y' || yn == 'Y') {  printf("輸入讀者號 讀者名 可借圖書數/n");  scanf("%d %s", &rf.ReadRec[i].rno, rf.ReadRec[i].name);  scanf("%d", &rf.ReadRec[i].bn1);  rf.ReadRec[i].bn2 = 0;  printf("繼續輸入嗎?y/n:");  getchar();  scanf("%c",&yn); } rf.len=i-1; return rf;}/*寫各類文件*/void writefile(BookDbaseFile bf, BnoIdxFile bif, LHFile1 f1, LHFile2 f2, LHFile3 f3, ReadFile rf, BbookFile bbf){ FILE *fp; int i; //圖書主文件  fp = fopen("book", "wb"); for (i = 1; i <= bf.len; i++)  fwrite(&bf.BookDbase[i],sizeof(BookRecType), 1, fp); fclose(fp); //圖書索引文件  fp = fopen("bidx", "wb"); for (i = 1; i <= bif.len; i++)  fwrite(&bif.BnoIdx[i], sizeof(BidxRecType), 1, fp); fclose(fp); //書名索引鏈頭文件  fp = fopen("nidx", "wb"); for (i = 1; i <= f1.len1; i++)  fwrite(&f1.LHFrecl[i], sizeof(BNRecType), 1, fp); fclose(fp); //作者索引鏈頭文件 fp = fopen("aidx", "wb"); for (i = 1; i <= f2.len2; i++)  fwrite(&f2.LHFrec2[i], sizeof(BARecType), 1, fp); fclose(fp); //出版社索引鏈頭文件 fp = fopen("pidx", "wb"); for (i = 1; i <= f3.len3; i++)  fwrite(&f3.LHFrec3[i], sizeof(BPRecType), 1, fp); fclose(fp); //讀者文件 fp = fopen("read", "wb"); for (i = 1; i <= rf.len; i++)  fwrite(&rf.ReadRec[i], sizeof(RRecType), 1, fp); fclose(fp); //借還書文件 fp = fopen("bbff", "wb"); for (i = 1; i <= bbf.len; i++)  fwrite(&bbf.Bbook[i], sizeof(BbookRecType), 1, fp); fclose(fp);}/*讀各類文件*/void readfile(BookDbaseFile *bf, BnoIdxFile *bif, LHFile1 *f1, LHFile2 *f2, LHFile3 *f3, ReadFile *rf, BbookFile *bbf){ FILE *fp; int i; //讀圖書主文件 fp = fopen("book", "rb"); i = 1; while (!feof(fp)) {  fread(&bf->BookDbase[i], sizeof(BookRecType), 1, fp);  i++;  if (feof(fp))break; } bf->len = i - 2; fclose(fp); //讀書好索引文件 fp = fopen("bidx", "rb"); i = 1; while (!feof(fp)) {  fread(&bif->BnoIdx[i], sizeof(BidxRecType), 1, fp);  i++; } bif->len = i - 2; fclose(fp); //讀書名索引文件 fp = fopen("nidx", "rb"); i = 1; while (!feof(fp)) {  fread(&f1->LHFrecl[i], sizeof(BNRecType), 1, fp);  i++; } f1->len1 = i - 2; fclose(fp); //讀作者索引文件 fp = fopen("aidx", "rb"); i = 1; while (!feof(fp)) {  fread(&f2->LHFrec2[i], sizeof(BARecType), 1, fp);  i++; } f2->len2 = i - 2; fclose(fp); //讀出版社索引鏈頭文件 fp = fopen("pidx", "rb"); i = 1; while (!feof(fp)) {  fread(&f3->LHFrec3[i], sizeof(BPRecType), 1, fp);  i++; } f3->len3 = i - 2; fclose(fp); //讀讀者文件 fp = fopen("read", "rb"); i = 1; while (!feof(fp)) {  fread(&rf->ReadRec[i], sizeof(RRecType), 1, fp);  i++; } rf->len = i - 2; fclose(fp); //讀借還書文件 fp = fopen("bbff", "rb"); i = 1; while (!feof(fp)) {  fread(&bbf->Bbook[i], sizeof(BbookRecType), 1, fp);  i++; } bbf->len = i - 2; fclose(fp);}/*主控菜單*/int main(void){ int j, m, k = 1; char xz = 'n'; BookDbaseFile bf; BnoIdxFile bif; LHFile1 f1; LHFile2 f2; LHFile3 f3; ReadFile rf; BbookFile bbf; while (k <= 5) {  printf("圖書管理系統/n");  printf("============/n");  printf(" 1.系統維護 /n");  printf(" 2.讀者管理 /n");  printf(" 3.圖書管理 /n");  printf(" 4.圖書流通 /n");  printf(" 5.退出系統 /n");  printf("============/n");  printf(" 請選擇1-5:");  scanf("%d", &k);  switch (k)  {   case 1:    printf("系統維護/n");    printf("--------/n");    printf("1.初始化/n");    printf("2. 讀 盤/n");    printf("--------/n");    printf("請選擇:/n");    scanf("%d", &m);    switch (m)    {    case 1:     printf("初始化只能做一次,需慎重!初始化嗎?y/n:");     getchar();     scanf("%c", &xz);     if ( xz == 'y' || xz == 'Y')     {      bf.len = bif.len = f1.len1 = f2.len2 = 0;      f3.len3 = rf.len = bbf.len = 0;     }     break;    case 2:     readfile(&bf, &bif, &f1, &f2, &f3, &rf, &bbf);     break;    }    break;   case 2:    ReaderManage(rf);    break;   case 3:    printf("圖書管理子系統/n");    printf("--------------/n");    printf("1.圖書信息輸入/n");    printf("2.圖書信息查詢/n");    printf("--------------/n");    printf(" 請 選 擇 :");    scanf("%d", &j);    if (j == 1)    {     char yn = 'y';     int k = 1;     while (yn = 'y' || yn == 'Y')     {      bf = AppeDBaseRec(bf);      bif = ChangeBnoIdxF(bf, bif);      f1 = ChangeLinkHeadF1(&bf, f1);      f2 = ChangeLinkHeadF2(&bf, f2);      f3 = ChangeLinkHeadF3(&bf, f3);      ShowRec(bf, k);      k++;      printf("繼續輸入嗎?y/n:");      getchar();      scanf("%c", &yn);     }    }    else     SearchBook(bf, bif, f1, f2, f3);    break;   case 4:     printf("圖書流通子系統/n");     printf("--------------/n");     printf(" 1. 借書處理 /n");     printf(" 2. 還書處理 /n");     printf("--------------/n");     printf(" 請 選 擇 : /n");     scanf("%d", &j);     if (j == 1)      BorrowBook(&bf, bif, &bbf, &rf);     else if (j == 2)      BackBook(&bf, bif, &bbf, &rf);     break;    case 5:     printf("系統正在寫盤,請稍后....../n");     writefile(bf, bif, f1, f2, f3, rf, bbf);     printf("再見!/n");     return 0;  } }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
秋霞av国产精品一区| 欧美性黄网官网| 97视频免费在线观看| 成人免费福利视频| 欧美成人免费网| 国产精品美女免费视频| 日韩成人激情在线| 成人黄色在线免费| 性亚洲最疯狂xxxx高清| 日韩欧美国产免费播放| 亚洲欧美日韩视频一区| 欧美寡妇偷汉性猛交| 97在线看免费观看视频在线观看| 亚洲第一区第一页| 国产精品美女999| 91久久国产婷婷一区二区| 国产在线观看一区二区三区| 91美女福利视频高清| 久久久久这里只有精品| 久久九九国产精品怡红院| 成人黄色大片在线免费观看| 亚洲欧美中文在线视频| 久久精品国产精品亚洲| 高清欧美性猛交xxxx黑人猛交| 色偷偷av亚洲男人的天堂| 久久91亚洲精品中文字幕| 中文字幕日韩精品在线观看| 亚洲图片欧美日产| 日韩av网址在线观看| 77777亚洲午夜久久多人| 欧美成人免费视频| 日韩欧美黄色动漫| 亚洲视频在线观看视频| 久久久av电影| 最近2019年好看中文字幕视频| 国产精品激情自拍| 久久久久成人网| 精品国产一区二区三区久久| 精品呦交小u女在线| 亚洲午夜未满十八勿入免费观看全集| 国产在线a不卡| 久久久久久999| 亚洲精品国产品国语在线| 性色av一区二区三区红粉影视| 狠狠色噜噜狠狠狠狠97| 国产精品久久不能| 中文字幕欧美精品日韩中文字幕| 日韩中文字幕亚洲| 国内精品400部情侣激情| 伊人久久久久久久久久久久久| 久久视频中文字幕| 一区二区国产精品视频| 亚洲美女精品成人在线视频| 97色在线视频| 亚洲欧美制服另类日韩| 欧美寡妇偷汉性猛交| 狠狠色狠狠色综合日日小说| 国产精品69久久| 国产日韩欧美中文在线播放| 国产精品久久77777| 亚洲在线免费视频| 精品亚洲一区二区三区四区五区| 欧美激情国产日韩精品一区18| 久久久国产91| 国内精品一区二区三区四区| 欧美激情一区二区三区在线视频观看| 日韩风俗一区 二区| 91亚洲va在线va天堂va国| 亚洲男人天天操| 日本一区二三区好的精华液| 国产91九色视频| 亚洲国产精品久久精品怡红院| 欧美国产日本高清在线| 97超级碰碰人国产在线观看| 国产精品日韩欧美综合| 日韩成人av一区| 国产精品电影网站| 高清欧美性猛交xxxx| 亚洲人成人99网站| 精品国内产的精品视频在线观看| 日韩精品在线视频| 伊是香蕉大人久久| 国外成人在线播放| 国产亚洲精品成人av久久ww| 国产精品久久久久久久久久久不卡| 狠狠做深爱婷婷久久综合一区| 国产综合久久久久| 国产精品久久精品| 国产精品视频xxxx| 亚洲欧美一区二区三区四区| 久久人91精品久久久久久不卡| 久久久久国产视频| 欧美日韩国产一区二区三区| 国产丝袜精品视频| 亚洲欧美日韩一区二区在线| 欧美性生交xxxxx久久久| 国产午夜精品美女视频明星a级| 亚洲一区二区三区成人在线视频精品| 久久天天躁狠狠躁夜夜躁2014| 浅井舞香一区二区| 97视频在线观看成人| 色偷偷9999www| 成人在线免费观看视视频| 97国产在线视频| 亚洲最大的av网站| 69av成年福利视频| 在线日韩av观看| 韩国欧美亚洲国产| 日韩av在线导航| 这里只有视频精品| 久久久久一本一区二区青青蜜月| 日韩av中文字幕在线免费观看| 亚洲欧美www| 日韩精品一二三四区| 久久久亚洲天堂| 亚洲精品videossex少妇| 亚洲欧洲成视频免费观看| 欧美激情伊人电影| 国产一区二区三区日韩欧美| 欧美美女18p| 亚洲国产天堂网精品网站| 亚洲高清av在线| 国产精品电影久久久久电影网| 懂色av影视一区二区三区| 中文字幕精品影院| 成人精品网站在线观看| 一区二区欧美激情| 日韩av快播网址| 国产日韩欧美在线播放| 亚洲精品国产精品自产a区红杏吧| 91成人国产在线观看| 久久久精品电影| 欧美成年人视频网站| 亚洲成人精品视频在线观看| 亚洲欧美日韩精品久久奇米色影视| 亚洲欧美日韩中文视频| 久久91亚洲精品中文字幕奶水| 欧美黑人巨大精品一区二区| 亚洲区一区二区| 国产97色在线| 久久久久久国产精品三级玉女聊斋| 日本不卡视频在线播放| 亚洲缚视频在线观看| 国产精品久久久久久久久免费看| 国产精品国产三级国产aⅴ浪潮| 日韩在线视频一区| 国产亚洲视频在线| 欧美精品一区二区三区国产精品| 久久久久久高潮国产精品视| 国产精品日韩电影| 国产中文字幕91| 亚洲男人天堂2023| 国产日韩欧美视频在线| 国内精品久久久久久| 国产精品日本精品| 日韩麻豆第一页| 色香阁99久久精品久久久| 高跟丝袜一区二区三区| 成人欧美一区二区三区在线| 久久久精品日本| 久久伊人精品天天| 57pao精品| 国产一区二区三区日韩欧美| 国产精品入口免费视频一|