<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦>論文大全>管理論文>

        c語言圖書管理論文

        時間: 家文952 分享

          c語言圖書管理論文是考評學生對所學專業知識綜合掌握水平的一種有效方式,但畢業論文的撰寫與指導環節存在各種各樣的問題.如果有一篇畢業論文的例文,那就容易多了。下面是學習啦小編為大家精心挑選的,希望大家喜歡!

          c語言圖書管理論文篇1

          課程名稱 c語 言 課 程 設 計 教師姓名 樊媛媛 本科生姓名 本科生學 本科生專業

          所在院系

          類別: 日期:

          課程設計評語

          注:1、無評閱人簽名成績無效;

          2、必須用鋼筆或圓珠筆批閱,用鉛筆閱卷無效;

          3、如有平時成績,必須在上面評分表中標出,并計算入總成績。

          目 錄

          2

          課程設計評語 ...................................................................................................................................... 1

          目 錄.................................................................................................................................................... 2

          ................................................................................................................................ 3

          ................................................................................................................................ 3

          .................................................................................................................................... 4

          ................................................................................................................................ 4

          5.算法設計 ........................................................................................................................................ 4

          ........................................................................................................................................ 5

          7.程序運行結果 .............................................................................................................................. 11

          .................................................................................................. 14

          .................................................................................................................. 15

          ............................................................................................................................................ 15

          1.課程論文題目

          圖書管理系統

          2.程序設計思路

          根據要求,圖書管理系統以文本文件存放在文件中,故需要提供文件的輸入、輸出等操作;還需要保持記錄以進行刪除,查詢,借書,還書,退出,添加等等操作;另外還有鍵盤式旋轉菜單以實現功能選擇模塊。

          3.功能模塊圖

          系統功能模塊圖

          4.數據結構設計

          先寫主函數main (),然后設計個功能選項,用switch選擇,然后進入不同模塊,進行不同選擇,實現不同功能。每個圖書信息設置一個結構體,將輸入信息存入文件,提供查詢功能,還有刪除功能以及借書還書功能。每運行一功能后都返回主界面,方便再次選擇,還有設置退出模塊,方便退出。

          5.算法設計

          先定義結構體數組struct books,然后設置主界面,主界面出現6個功能選項,分

          別是輸入sr()

          、借書js()、還書hs()、刪除sc()、退出tc()、查詢cx().各模塊設計如下:

          輸入模塊sr(),先調用文件eup,對其進行讀取,然后增加,再對其進行保存和調用。其中結構體只輸入tsmc圖書名稱,tsbh圖書編號,dj單價,zz作者, 然后自動生成,czzt存在狀態,姓名xm,學號xh,性別xb.

          查詢模塊cx(),有選項圖書編號和圖書名稱,然后選擇,用if選擇,然后用for循環查找,當輸入名稱與文件中的名稱相同時,便顯示此信息。

          刪除模塊就是在查找功能的圖書后,選擇刪除,將strcpy將s[i+1]的值賦給s[i]。 借出模塊也是在查詢的基礎上,若s[i]的存在狀態為已借出,則顯示已借出,無法再借,若未借出,則將s[i]的存在狀態czzt變為已借出,然后輸入姓名,學號,性別,最后顯示出已借出。

          還書模塊就是在查詢的基礎上,若s[i]的存在狀態為未借出,則無法歸還,若借出,則將存在狀態變為未借出,然后自動將姓名,學號,性別變為初始值。

          退出模塊使flag=1,而在main就有bool flag 且main中已令main=0.這樣就實現了退出功能。

          其中若輸入超過選項值后,都會顯示輸入錯誤,請重新輸入。若字符錯誤,程序就直接出現錯誤了。

          6.程序代碼

          #include<stdio.h>

          #include<windows.h>

          #include<string.h>

          #include<conio.h>

          #define M 100

          struct books

          {

          char tsmc[12];

          int tsbh;

          float dj;

          char zz[12];

          char czzt[12];

          char xm[12];

          char xb[12];

          int xh;

          }s[M];

          int N;

          bool flag;

          int main ()

          {

          int sele;

          flag=0;

          sele=1;

          void sr();

          void cx();

          void sc();

          void js();

          void hs();

          void tc();

          void jsh();

          //system ("tsgl");

          printf("\n\n");

          printf(" ************************\n"); printf(" 1:輸入 2:查詢 3:刪除 \n"); printf(" 4:借書 5:還書 0:退出 \n"); printf(" ************************\n"); while(1)

          {

          printf("\n\n請輸入功能序號:"); scanf ("%d",&sele);

          if(sele>=0 && sele<=5)

          {

          switch(sele)

          {

          case 1:sr();break;

          case 2:cx();break;

          case 3:sc();break;

          case 4:js();break;

          case 5:hs();break;

          case 0:jsh();break;

          }

          if(flag)

          break;

          printf("\n\n");

          printf(" ************************\n"); printf(" 1:輸入 2:查詢 3:刪除 \n"); printf(" 4:借書 5:還書 0:退出 \n"); printf(" ************************\n");

          }

          else

          {

          printf("輸入錯誤請再次輸入|\n\n"); printf("\n\n");

          printf(" ************************\n"); printf(" 1:輸入 2:查詢 3:刪除 \n"); printf(" 4:借書 5:還書 0:退出 \n"); printf(" ************************\n"); }

          printf("\n\n讓任意鍵繼續\n");

          }

          //wr_file();

          }

          /******主函數***/

          /*********輸入*********/

          void sr()

          {

          int n,i;

          N=0;

          printf("可輸入的書本數:");

          scanf("%d",&n);

          N=n+N;

          printf("請輸入相關信息:\n");

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

          {

          printf("圖書名稱:");

          scanf("%s",s[N-n-1+i].tsmc);

          printf("圖書編號:");

          scanf("%d",&s[N-n-1+i].tsbh);

          printf("單價:");

          scanf("%f",&s[N-n-1+i].dj);

          printf("作者:");

          scanf("%s",&s[N-n-1+i].zz);

          strcpy(s[N-n-1+i].czzt,"未借出");

          strcpy(s[N-n-1+i].xm,"無");

          }

          }

          /********查詢**********/

          void cx()

          {

          int i,j[100]={-1},d,k,t=0;

          char m[20];

          printf("查詢:");

          printf("1:圖書名稱

          printf("\n\n請輸入查詢選項:");

          scanf("%d",&k);

          if(k==1)

          {

          printf("請輸入圖書名稱:"); 2:圖書編號");

          scanf("%s",m);

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

          if(strcmp(m,s[i].tsmc)==0)

          {

          j[t]=i;

          t=t+1;

          }

          }

          else if(k==2)

          {

          printf("請輸入圖書編號:");

          scanf("%d",&d);

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

          if(d==s[i].tsbh)

          {

          j[t]=i;

          t++;

          }

          }

          if(j[0]==-1&&t==0)

          printf("沒有找到!\n");

          if(j[0]!=-1 && t!=0)

          {

          printf("\t圖書名稱 \t圖書編號 \t單價 \t作者 \t存在狀態 \t借書人姓名 \t性別 \t學號\n");

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

          printf("\t%s \t%d \t%f \t%s \t%s \t%s \t%s \t%d ", s[j[i]].tsmc,s[j[i]].tsbh,s[j[i]].dj,s[j[i]].zz,s[j[i]].czzt,s[j[i]].xm,s[j[i]].xb,s[j[i]].xh);

          }

          }

          /********刪除模塊*********/

          void sc()

          {

          int i,d,k,t=0;

          char ms[20];

          int ja=-1;

          printf("查詢:");

          printf("1:圖書名稱 2:圖書編號");

          printf("\n\n請輸入查詢選項:");

          scanf("%d",&k);

          if(k==1)

          {

          printf("請輸入圖書名稱:");

          scanf("%s",ms);

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

          if(strcmp(ms,s[i].tsmc)==0)

          {

          ja=i;

          break;

          }

          }

          else if(k==2)

          {

          printf("請輸入圖書編號:");

          scanf("%d",&d);

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

          if(d==s[i].tsbh)

          {

          ja=i;

          break;

          }

          }

          printf("確定刪除該圖書嗎?1表示Yes,其他No"); int p;

          scanf("%d",&p);

          if(p==1)

          printf("Congratulations,刪除成功||\n");

          if(ja!=-1 && p)

          {

          N=N-1;

          for(i=ja;i<N;i++)

          {

          strcpy(s[i].tsmc,s[i+1].tsmc);

          s[i].tsbh=s[i+1].tsbh;

          s[i].dj=s[i+1].dj;

          strcpy(s[i].zz,s[i+1].zz);

          strcpy(s[i].czzt,s[i+1].czzt);

          strcpy(s[i].xm,s[i+1].xm);

          strcpy(s[i].xb,s[i+1].xb);

          s[i].xh=s[i+1].xh;

          }

          }

          else if(ja==-1)

          printf ("沒有找到!\n");

          }

          /**********借書模塊***********/

          void js()

          {

          int i,j[100]={-1},d,k,t=0;

          char m[20];

          printf("查詢:");

          printf("1:圖書名稱

          printf("\n\n請輸入查詢選項:");

          scanf("%d",&k);

          if(k==1)

          {

          printf("請輸入圖書名稱:");

          scanf("%s",&m);

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

          if(strcmp(m,s[i].tsmc)==0)

          {

          j[t]=i;

          t=t+1;

          }

          } 2:圖書編號");

          else if(k==2)

          {

          printf("請輸入圖書編號:");

          scanf("%d",&d);

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

          if(d==s[i].tsbh)

          {

          j[t]=i;

          t++;

          }

          }

          if(j[0]==-1&&t==0)

          printf("沒有找到!\n");

          strcpy(s[j[i]].czzt,"已借出");

          printf("此書已借出\n");

          if(j[0]!=-1&&t!=0&&s[j[i]].czzt==" 未借出")

          {

          printf("%s %d %f %s %s %s %s %d ",

          s[j[i]].tsmc,s[j[i]].tsbh,s[j[i]].dj,s[j[i]].zz,s[j[i]].czzt,s[j[i]].xm,s[j[i]].xb,s[j[i]].xh); }

          printf("1:確定借閱 2:退出\n");

          scanf("%d",&k);

          switch(k)

          {

          case 1:printf("請輸入學號:\n");

          scanf("%d",&s[j[i]].xh);

          printf("請輸入姓名:\n");

          scanf("%s",&s[j[i]].xm);

          printf("請輸入性別:\n");

          scanf("%s",&s[j[i]].xb);

          strcpy(s[j[i]].czzt,"已借出");

          printf("已借出,按任意鍵繼續\n");

          //getch();

          case 2:break;

          }

          }

          /*************還書模塊***************/

          void hs()

          {

          int i,j[100]={-1},d,k,t=0;

          char m[20];

          printf("查詢:");

          printf("1:圖書名稱 2:圖書編號");

          printf("\n\n請輸入查詢選項:");

          scanf("%d",&k);

          if(k==1)

          {

          printf("請輸入圖書名稱:");

          scanf("%s",&m);

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

          if(strcmp(m,s[i].tsmc)==0)

          {

          j[t]=i;

          t++;

          break;

          }

          }

          else if(k==2)

          {

          printf("請輸入圖書編號:");

          scanf("%d",&d);

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

          if(d==s[i].tsbh)

          {

          j[t]=i;

          t++;

          break;

          }

          }

          if(t==0)

          printf("沒有找到!\n");

          else

          {

          printf("%s %f %s %s %s %s %d \n",

          s[j[i]].tsmc,s[j[i]].dj,s[j[i]].zz,s[j[i]].czzt,s[j[i]].xm,s[j[i]].xb,s[j[i]].xh);

          printf("1:確定歸還 2:退出\n");

          int p;

          scanf("%d",&p);

          if(p==1)

          {

          strcpy(s[j[i]].czzt,"未借出");

          strcpy(s[j[i]].xm,"無");

          s[j[i]].xh=0;

          printf("已歸還,按任意鍵繼續\n");

          }

          //getch();

          }

          }

          /*************結束模塊***************/

          void jsh()

          {

          flag=1;

          }

          7.程序運行結果

          11

          12

          13

          各模塊均能執行。

          8.編程中遇到的困難及解決方法

          14

          做程序時,文件函數無法實現,于是找了同學跟我講解,看書還有就是看例子等等,最終找出了個解決方案。還有系統最初運行時有很多不盡人意的,比如我希望每次運行后都出現主界面,這樣方便選擇。如果出現錯誤的話,要顯示出錯誤原因,并給出提示,我解決了幾個這樣的問題,比如借書時如果已借出就要顯示出“已借出,請重新選擇”,如果沒有,就顯示無法找到,并顯出主菜單,再次選擇。

          9.總結心得及良好建議

          對于程序的設計,必須先理解c語言的一些知識,用起來才會得心應手,最好之前就想好大致用什么算法去實現需要的程序。對于舉一反三的內容不是用來抄的,我們必須要先對其理解,這樣才能寫好一個程序。程序中最復雜的感覺是調試,有時候自己有很多習慣性的錯誤真的很難找到,所有要形成好的習慣。還有就是要養成好的思維,要多練習,不能眼高手低。

          10.致謝

          c語言圖書管理論文篇2

          學 號:

          班 級:計

          姓 名:陳

          完成時間:

          科083 陽 光

          一、 需求分析

          1. 依據題目要求以及現實中圖書館的需求,應將該系統分為兩大模塊:圖書管理和會

          員管理。圖書管理模塊中包括對圖書的增加、修改、刪除、查詢、統計等操作,以及對圖書借入借出服務。會員管理包括對會員卡號的申請、刪除、統計等操作。 2. 界面應該具有友善、直觀、易操作等特點,本系統采用數字輸入選擇操作。 二、 概要設計 1. 整體設計

          經過需求分析,本系統分為兩大模塊:書籍管理模塊和會員管理模塊。但是從易用性方面考慮,將書籍管理模塊中的借書和還書模塊放到主界面中。結構圖如下所示:

          2. 詳細設計

          2.1結構體設計

          流程圖 struct student /*定義會員類型,用于存放借出的書籍*/ {

          int cardnum; //卡號

          char lendbook[10]; //借書數組 最多借書十本 }student[1000];

          struct book /*定義書的類型*/ { int booknum; //書號 char bookname[20]; //書名 char author[10]; //作者

          int bookcount; //書的剩余數量 }book[1000];

          struct card /*借書卡的數據類型*/

          {

          int cardnum; //卡號

          char studentname[10];//會員姓名

          char studentclass[10]; //會員班級

          }card[1000];

          2.2 主函數

          主函數要求設計比較簡潔,只提供設輸入,處理和輸出部分的函數調用。其中各功能模塊用菜單方式選擇。

          HWND hwnd=GetForegroundWindow();

          SetWindowText(hwnd,"★圖 書 管 理 系 統★");

          int ch1,ch2,ch3;

          do

          { SetConsoleTextAttribute(h,FOREGROUND_RED);//設置字體顏色為紅色

          printf("\n\t\t ★歡★迎★進★入★圖★書★管★理★系★統★\n\n");

          printf("\t ※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("\t ※ ※\n"); printf("\t ※ ★ 圖 書 管 理 系 統 ★ ※\n"); printf("\t ※ ※\n"); printf("\t ※ 1:<借書系統> 2:<還書系統> ※\n"); printf("\t ※ 3:<會員管理> 4:<書籍管理> ※\n"); printf("\t ※ 0:<退出> ※\n"); printf("\t ※ ※\n");

          printf("\t ※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n\n"); printf("\t\t請選擇操作類型(0-4):");

          scanf("%d",&ch1);

          switch(ch1)

          { case 1:lendbook();break;

          case 2:returnbook();break;

          case 3:{

          do

          {SetConsoleTextAttribute(h, FOREGROUND_GREEN);//設置字體顏色為綠色

          printf("\n\n");

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

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

          printf("\t ※ ★ 歡 迎 進 入 會 員 管 理 系 統 ★ ※\n");

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

          printf("\t ※ 1:<申請新卡> 2:<刪除卡號> ※\n"); printf("\t ※ 3:<借書統計> 4:<會員統計> ※\n"); printf("\t ※ 0:<返回> ※\n");

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

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

          printf("\t\t請選擇操作類型(0-4):");

          scanf("%d",&ch3);

          switch(ch3)

          { case 1:addcard();break;

          case 2:delcard();break;

          case 3:lendcount();break;

          case 4:cardcount();break;

          case 0:break;

          default:printf("\n\t\t無效操作,按任意鍵返回...\n");getch();break; } }while(ch3!=0);

          }break;

          case 4:{

          do {

          SetConsoleTextAttribute(h, FOREGROUND_GREEN);//設置字體顏色為綠色

          printf("\n\n");

          printf("\t ※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("\t ※ ※\n"); printf("\t ※ ★ 歡 迎 進 入 書 籍 管 理 系 統 ★ ※\n"); printf("\t ※ ※\n"); printf("\t ※ 1:<增加圖書> 2:<刪除圖書> ※\n"); printf("\t ※ 3:<查詢圖書> 4:<書籍統計> ※\n"); printf("\t ※ 5:<修改圖書資料> 0:<返回主菜單> ※\n"); printf("\t ※ ※\n"); printf("\t ※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n\n");

          printf("\t\t請選擇操作類型(0-5):");

          scanf("%d",&ch2);

          switch(ch2)

          { case 1:addbook();break;

          case 2:delbook();break;

          case 3:searchbook();break;

          case 4:bookcount();getch();break;

          case 5:modifybook();break;

          case 0:break;

          default:printf("\n\t\t無效操作,按任意鍵返回...\n");getch();break;

          }

          }while(ch2!=0);

          }break;

          case 0:break;

          default:printf("\n\t\t無效操作,按任意鍵返回...\n");getch();break;

          }

          }while(ch1!=0);

          2.3 借書模塊

          void lendbook() { //借書功能函數

          HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);

          SetConsoleTextAttribute(h, FOREGROUND_GREEN); FILE *fp,*fp2;

          int i,n;

          int cardnum;

          printf("\n\t\t請你輸入你的卡號: "); scanf("%d",&cardnum); fp=fopen("card.txt","r"); for(i=0;fread(&card[i],sizeof(struct card),1,fp)!=0;i++) { if(card[i].cardnum==cardnum) { n=i; fclose(fp); printf("\n\t\t請輸入你要借閱的書的名字: "); scanf("%s",student[n].lendbook); fp=fopen("book.txt","r"); {

          回...\n");

          { if(book[i].bookcount==0) { printf("\t\t對不起,此書有人借出,請借其他書.按任意鍵返 fclose(fp); getch(); return; }else{ //book[i].bookcount --; fclose(fp); } fp=fopen("record.txt","a+"); //以讀寫方式打開record.txt student[n].cardnum=cardnum; fwrite(&student[n],sizeof(struct student),1,fp); fclose(fp);

          fp=fopen("book.txt","r"); fp2=fopen("booktemp.txt","w"); for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) { if(strcmp(book[i].bookname,student[n].lendbook)==0) { book[i].bookcount--; fwrite(&book[i],sizeof(struct book),1,fp2); continue; } fwrite(&book[i],sizeof(struct book),1,fp2); } fclose(fp); fclose(fp2); fp=fopen("book.txt","w"); fp2=fopen("booktemp.txt","r"); for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++) { fwrite(&book[i],sizeof(struct book),1,fp); } fclose(fp); fclose(fp2); fopen("booktemp.txt","w"); fclose(fp2); printf("\n\t\t借書完畢,按任意鍵返回..."); getch(); return; } } printf("\n\t\t很抱歉,不存在這本書,按任意鍵返回..."); fclose(fp); getch(); return; } }

          printf("\n\t\t你的卡號不存在,請申請新卡,按任意鍵返回..."); fclose(fp);

          getch();

          }

          2.4 還書模塊

          void returnbook() /*還書函數*/

          {

          HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);

          SetConsoleTextAttribute(h, FOREGROUND_GREEN);//設置字體顏色為綠色

          FILE *fp,*fp2; /*定義兩個文件指針,fp2用于修改數據時設立臨時文件用,防止數據遭破壞*/

          int i,temp;

          int cardexit=0,bookexit=0;//卡號 書籍是否存在(借閱)標志 存在(借閱)為1 不存在為0

          int cardnum;

          char lendbook[10];

          printf("\n\t\t請你輸入你的卡號: ");

          scanf("%d",&cardnum);

          fp=fopen("card.txt","r"); /*讀取卡號記錄*/ for(i=0;fread(&card[i],sizeof(struct card),1,fp)!=0;i++) /*for循環判斷卡號是否存在*/ { if(card[i].cardnum==cardnum) /*卡號存在,進入下一循環*/ { cardexit=1; temp=i; fclose(fp); printf("\n\t\t請輸入你要還的書的名字: "); scanf("%s",lendbook); fp=fopen("record.txt","r");

          for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) /*判斷是否借閱了輸入的書*/

          {

          if(student[i].lendbook==lendbook) /*借閱了該書,進入下一循環,否則出錯顯示*/

          {

          bookexit=1;

          fclose(fp);

          fp=fopen("record.txt","r");

          fp2=fopen("booktemp.txt","w");

          for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++)

          {

          if(student[i].lendbook==lendbook)

          {

          continue; /*刪除還掉的書的借書記錄*/

          }

          fwrite(&student[i],sizeof(struct student),1,fp2); /*寫入原來沒還的書的記錄*/

          }

          fclose(fp);

          fclose(fp2);

          fp=fopen("record.txt","w");

          fp2=fopen("booktemp.txt","r");

          for(i=0;fread(&student[i],sizeof(struct student),1,fp2)!=0;i++)

          { fwrite(&student[i],sizeof(struct student),1,fp); /*將借書記錄信息寫 回*/ } fclose(fp); fclose(fp2); fopen("booktemp.txt","w"); /*清臨時文件的記錄*/ fclose(fp2); fp=fopen("book.txt","r"); fp2=fopen("booktemp.txt","w");

          for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++) /*將書的記錄寫入臨時文件,防止因為修改信息破壞以前的記錄*/

          {

          if(i==temp)

          {

          book[i].bookcount++;

          fwrite(&book[i],sizeof(struct book),1,fp); /*將還的書的可借數量加1*/

          continue;

          }

          fwrite(&book[i],sizeof(struct book),1,fp2);

          }

          fclose(fp);

          fclose(fp2);

          fp=fopen("book.txt","w");

          fp2=fopen("booktemp.txt","r");

          for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)

          {

          fwrite(&book[i],sizeof(struct book),1,fp); /*將臨時文件寫回*/ }

          fclose(fp);

          fclose(fp2);

          fopen("booktemp.txt","w"); /*清臨時文件*/

          fclose(fp2);

          printf("\n\t\t還書完畢,按任意鍵返回...\n");

          }

          }

          fclose(fp);

          }

          }

          fclose(fp);

          if(cardexit==0)

          printf("\n\t\t系統沒此卡號,請和管理員聯系,按任意鍵返回...\n");/*出錯提示*/

          else if(bookexit==0)

          printf("\n\t\t你沒有借這本書,按任意鍵返回...\n"); /*出錯提示*/ getch();

          }

          2.5 會員管理模塊

          會員管理有四個功能:申請新卡、刪除卡號、借書統計、卡號統計,分別對應以下四個函數:

          void addcard()

          { //增加新卡函數

          FILE *fp;

          int i=0,tempcard,temp=0;

          fp=fopen("card.txt","a+");

          printf("\n\t\t請輸入卡號:"); scanf("%d",&tempcard); for(i=0;fread(&card[i],sizeof(struct card),1,fp)!=0;i++) //判斷卡號是否存在 if(tempcard==card[i].cardnum) temp=1; if(temp==1) //如果卡號存在,返回 { printf("\n\t\t此卡號已經存在,按任意鍵返回..."); getch(); } else if(temp==0){ //如果卡號不存在,繼續下面操作 card[i].cardnum=tempcard; printf("\n\t\t請輸入學生姓名:"); scanf("%s",card[i].studentname);

          printf("\n\t\t請輸入班級:");

          scanf("%s",&card[i].studentclass);

          fwrite(&card[i],sizeof(struct card),1,fp);

          fclose(fp);

          printf("\n\t\t輸入完畢,任意鍵返回...\n");

          getch();

          }

          }

          void delcard()

          { //刪除卡號記錄函數

          FILE *fp,*fp2;

          int i;

          int cardnum;

          char choice;

          fp=fopen("card.txt","r");

          fp2=fopen("booktemp.txt","w");

          printf("\n\t\t提示:如果你輸入的卡號存在,系統自動刪除該信息.");

          printf("\n\t\t如果不存在,系統不做任何改動."); printf("\n\t\t請輸入你要刪除的卡號: "); scanf("%d",&cardnum); for(i=0;fread(&card[i],sizeof(struct card),1,fp)!=0;i++) { if(card[i].cardnum!=cardnum) { fwrite(&card[i],sizeof(struct card),1,fp2); } } fclose(fp); fclose(fp2); printf("\n\t\t是否真的要刪除該卡?刪除后該書籍的所有信息將無法恢復<Y/N>:"); scanf("%s",&choice); if(choice=='y'||choice=='Y') { fp=fopen("card.txt","w"); fp2=fopen("booktemp.txt","r"); for(i=0;fread(&card[i],sizeof(struct card),1,fp2)!=0;i++) { fwrite(&card[i],sizeof(struct card),1,fp); } fclose(fp); fclose(fp2); fp2=fopen("booktemp.txt","w"); fclose(fp2); printf("\t\t按任意鍵返回...\n"); getch(); } else {

          printf("\t\t按任意鍵返回...\n");

          getch();

          }

          }

          int lendcount()

          { //會員借書統計函數

          FILE *fp;

          int i,n=0;

          fp=fopen("record.txt","r");

          for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) {

          printf("\t\t卡號:%d 借出的書籍:%s \n",student[i].cardnum,student[i].lendbook); n=n+1; } fclose(fp);

          printf("\t\t目前共有%d本書借出\n",n);

          printf("\t\t按任意鍵返回...\n");

          getch();

          return n;

          }

          void cardcount()

          {

          //會員卡號統計函數 FILE *fp; int i,n=0; fp=fopen("card.txt","r");

          printf("\t\t卡號 姓名 班級\n");

          for(i=0;fread(&card[i],sizeof(struct card),1,fp)!=0;i++)

          {

          printf("\n\t\t%-10d%-10s%-2s\n",card[i].cardnum,card[i].studentname,card[i].studentclass); n=n+1;

          }

          fclose(fp);

          printf("\n\t\t目前共有%d個會員\n",n);

          printf("\t\t按任意鍵返回...\n");

          getch();

          }

          2.6書籍管理模塊

          書籍管理模塊有五個功能:增加圖書、刪除圖書、查詢圖書、書籍統計、修改圖書資料。分別對應下面五個函數:

          void addbook()

          {

          //增加新書函數 FILE *fp; int i=1,temp=0,booktemp; char choice='y'; fp=fopen("book.txt","a+"); while(choice=='y'||choice=='Y') { printf("\n\t\t請輸入書的序號:"); scanf("%d",&booktemp); for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) //判斷卡號是否存在 if(booktemp==book[i].booknum) { temp=1;

          choice='n'; } // scanf("%d",&book[i].booknum); if(temp==1) { printf("\n\t\t此書號已經存在,按任意鍵返回..."); getch(); } else { printf("\n\t\t請輸入書名:"); scanf("%s",book[i].bookname); printf("\n\t\t請輸入書的作者:"); scanf("%s",book[i].author); printf("\n\t\t請設定書可借數量:"); scanf("%d",&book[i].bookcount); fwrite(&book[i],sizeof(struct book),1,fp);

          printf("\n\t\t是否要輸入下本書(Y or N):");

          scanf("%s",&choice);

          }

          }

          fclose(fp);

          }

          void delbook()

          { //刪除圖書函數

          FILE *fp,*fp2;

          int i;

          char bookname[10],choice;

          fp=fopen("book.txt","r");

          fp2=fopen("booktemp.txt","w");

          printf("\n\t\t提示:如果你輸入的書名存在,系統自動刪除該信息!\n\t\t如果不存在,系統不做任何改動!");

          printf("\n\t\t請輸入你要刪除的書名:");

          scanf("%s",bookname);

          for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)

          {

          if(strcmp(bookname,book[i].bookname)!=0)

          {

          fwrite(&book[i],sizeof(struct book),1,fp2);

          }

          }

          fclose(fp);

          fclose(fp2);

          printf("\n\t\t是否真的要刪除該書籍?刪除后該書籍的所有信息將無法恢復<Y/N>:"); scanf("%s",&choice);

          if(choice=='y'||choice=='Y') { fp=fopen("book.txt","w"); fp2=fopen("booktemp.txt","r"); for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++) { fwrite(&book[i],sizeof(struct book),1,fp); } fclose(fp); fclose(fp2); fp2=fopen("booktemp.txt","w"); fclose(fp2);

          printf("\n\t\t按任意鍵返回...\n");

          getch();

          }

          else

          {

          printf("\n\t\t按任意鍵返回...\n");

          getch();

          }

          }

          void searchbook()

          { //圖書查詢系統函數

          int ch5;

          do

          { HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);

          SetConsoleTextAttribute(h, FOREGROUND_GREEN);//設置字體顏色為綠色 printf("\n\t\t1:<按書名查找>");

          printf("\t\t2:<按作者查找>");

          printf("\n\t\t3:<按書號查找>");

          printf("\t\t0:<返回主菜單>");

          printf("\n\n\t\t請輸入要選擇的操作(0-3):");

          scanf("%d",&ch5);

          switch(ch5)

          {

          case 1:findbook();getch();break;

          case 2:findbook1();getch();break;

          case 3:

          {findbook2();

          getchar();

          }break;

          case 0: break;

          } default:printf("\t\t無效操作,按任意鍵返回...\n");getch();break; } }while(ch5!=0);

          int findbook() //findbook1() findbook2()分別為按作者和書號查詢,和此函數類似,再次不

          { //按書名查閱書籍信息 //在此不再一一列出,具體請參考源程序

          FILE *fp;

          char bookname[10];

          int i;

          fp=fopen("book.txt","r");

          printf("\n\t\t請輸入你要查找的書名:");

          scanf("%s",bookname);

          for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)

          {

          if(strcmp(bookname,book[i].bookname)==0)

          {

          if(book[i].bookcount!=0)

          {

          printf("\n\t\t這本書的詳細資料是:%d %s %s 此書現在還可借。\n\t\t按任意鍵返回...\n",book[i].booknum,book[i].bookname,book[i].author);

          }

          else {

          printf("\n\t\t這本書已經借完!\n");

          fclose(fp);

          return 0;

          }

          fclose(fp);

          return 0;

          }

          }

          printf("\n\t\t沒有你要查詢的書籍,按任意鍵返回...\n");

          fclose(fp);

          return 0;

          }

          void bookcount()

          { //書籍統計函數

          FILE *fp;

          int i,n=0;

          fp=fopen("book.txt","r");

          printf("\t\t書號 書名 作者 剩余數量\n");

          for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)

          {

          if(book[i].booknum!=0&&strlen(book[i].bookname)!=0&&strlen(book[i].author)!=0) {

          printf("\t\t%-10d%-20s%-10s%-2d\n",book[i].booknum,book[i].bookname,book[i].author,book[i].bookcount);

          n=n+1;

          }

          }

          fclose(fp);

          printf("\n\t\t目前共有%d本書",n);

          printf("\t\t按任意鍵返回...\n");

          }

          void modifybook()

          { //修改圖書信息

          FILE *fp,*fp2;

          char bookname[20],choice;

          int i;

          fp=fopen("book.txt","r");

          fp2=fopen("booktemp.txt","w");

          printf("\n\t\t請你輸入要修改的書籍的書字:");

          scanf("%s",bookname);

          for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)

          {

          //printf("測試");

          if(strcmp(bookname,book[i].bookname)==0)

          {

          printf("\t\t你所要修改的書的資料如下,請選擇你要修改的內容\n"); printf("\t\t序號:〈%d〉 書名:〈%s〉 作者:〈%s〉

          \n",book[i].booknum,book[i].bookname,book[i].author);

          printf("\t\t1:修改書的序號\n");

          printf("\t\t2:修改書名\n");

          printf("\t\t3:修改作者\n");

          printf("\t\t4: 修改書的借出狀態\n");

          printf("\t\t請輸入選擇的操作(1-4):");

          scanf("%s",&choice);

          switch(choice)

          {

          case '1':

          {

          printf("\n\t\t請輸入新的序號: ");

          scanf("%d",&book[i].booknum);

          fwrite(&book[i],sizeof(struct book),1,fp2);

          }break;

          case '2':

          } { printf("\n\t\t請輸入新的書名: "); scanf("%s",book[i].bookname); fwrite(&book[i],sizeof(struct book),1,fp2); }break; case '3': { printf("\n\t\t請輸入書的作者: "); scanf("%s",book[i].author); fwrite(&book[i],sizeof(struct book),1,fp2); }break; case '4': { printf("\n\t\t請輸入書剩余數量: "); scanf("%d",book[i].bookcount ); fwrite(&book[i],sizeof(struct book),1,fp2); }break; default:printf("\t\t無效操作\n");break; } continue; } fwrite(&book[i],sizeof(struct book),1,fp2); } fclose(fp); fclose(fp2); fp=fopen("book.txt","w"); fp2=fopen("booktemp.txt","r"); for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++) { fwrite(&book[i],sizeof(struct book),1,fp); } fclose(fp); fclose(fp2); fp2=fopen("booktemp.txt","w"); fclose(fp2); printf("\t\t很抱歉,不存在要修改的圖書!\n"); getchar();

          三、 編碼測試

          1. 主界面

          2. 會員管理界面

          從主界面選擇操作類型3 進入會員管理界面:

          3.書籍管理界面

          從主界面選擇操作類型4進入書籍管理界面:

          注:由于篇幅有限,其他功能不再一一截圖,更多詳細情況請參考附件。

          四、 設計總結

          經過幾天的努力,圖書管理系統總算可以正常運行了,功能也算基本完善。實習過程中也遇到了很多的困難,但通過圖書館和上網查閱資料,總算得以一一解決。最后感謝我的隊友安龍飛和蘭其海的對此的大力幫助。

          五、 源碼

          請參考附件

        2052868 主站蜘蛛池模板: 亚洲一区二区在线无码| 热久在线免费观看视频| 熟女少妇精品一区二区| 翘臀少妇被扒开屁股日出水爆乳| 亚洲图片自拍偷图区| 67194亚洲无码| AV秘 无码一区二| 毛片免费观看视频| 宝贝腿开大点我添添公视频免| 欧美xxxx性bbbbb喷水| 国产稚嫩高中生呻吟激情在线视频| 成人国产亚洲精品天堂av| 国内精品久久久久影院网站| 日本熟妇XXXX潮喷视频| 国产女人在线视频| 1313午夜精品理论片| 69精品丰满人妻无码视频a片| 我要看特黄特黄的亚洲黄片| 国产成人午夜福利院| 九九热精品免费视频| 免费无码肉片在线观看| 亚洲国产精品线观看不卡| 九九热在线观看视频免费| 亚洲а∨精品天堂在线| av新版天堂在线观看| 久久国产精品无码网站| 内射视频福利在线观看| 亚洲中文字幕国产综合| 国产亚洲视频免费播放| 国产办公室秘书无码精品99| 久久久久久久久18禁秘| 国产尤物精品自在拍视频首页| 亚洲av日韩在线资源| 国产精品视频免费一区二区三区| 国产v综合v亚洲欧美大天堂| 精品嫩模福利一区二区蜜臀 | 国产免费无遮挡吸奶头视频| 国产精品性视频一区二区| 久久天堂综合亚洲伊人HD妓女| 丁香花成人电影| 8848高清电视|