欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      數(shù)據(jù)結(jié)構(gòu)CAI系統(tǒng)項目手冊

      時間:2019-05-12 08:12:43下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《數(shù)據(jù)結(jié)構(gòu)CAI系統(tǒng)項目手冊》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《數(shù)據(jù)結(jié)構(gòu)CAI系統(tǒng)項目手冊》。

      第一篇:數(shù)據(jù)結(jié)構(gòu)CAI系統(tǒng)項目手冊

      數(shù)據(jù)結(jié)構(gòu)

      項目書

      項目經(jīng)理: 產(chǎn)品經(jīng)理: 測試經(jīng)理:

      北京工業(yè)大學數(shù)據(jù)結(jié)構(gòu)課程設計項目書

      一、問題描述:

      以數(shù)據(jù)結(jié)構(gòu)教材中樹和圖的內(nèi)容為例,設計數(shù)據(jù)結(jié)構(gòu)的CAI(計算機輔助教學)系統(tǒng),用菜單的形式選擇各項功能。用圖形化界面的形式顯示算法的執(zhí)行過程。

      二、程序分析:

      二叉樹的遍歷算法演示中,首先定義一個TREE的結(jié)構(gòu)體,里面存放的數(shù)據(jù)類型分別是char,兩個TREE類型指針*lchild(左孩子),*rchild(右孩子),兩個int分別是x和y,分別代表了樹的x坐標和y坐標。再建立一個名稱為OUTPUT的結(jié)構(gòu)體里面存放了三種遍歷的x坐標和y坐標。通過對Tree *CreatTree();函數(shù)的調(diào)用生成二叉樹再通過void Preorder(Tree *t);void Midorder(Tree *t);void Posorder(Tree *t);這三個函數(shù)進行前中后的遍歷來判斷左右孩子是否存在。

      三、程序設計:

      1、結(jié)構(gòu)化函數(shù)設計

      北京工業(yè)大學數(shù)據(jù)結(jié)構(gòu)課程設計項目書

      2、設計工具

      Win-TC, c文件

      3、編碼

      頭文件:

      #include #include #include #include #include

      結(jié)構(gòu)體:

      typedef struct TREE {

      char data;

      /*樹的結(jié)點數(shù)據(jù)*/

      struct TREE *lchild;

      struct TREE *rchild;

      int x;

      /*樹的x坐標*/

      int y;

      /*樹的y坐標*/ }Tree;

      struct OUTPUT {

      int x;

      /*三種遍歷的x坐標*/

      int y;

      /*三種遍歷的y坐標*/

      int num;}s;

      函數(shù):

      ·函數(shù)名稱:void DrawTree(Tree *t);·函數(shù)描述:用圖形顯示創(chuàng)建好的樹

      ·函數(shù)名稱:void Preorder(Tree *t);·函數(shù)描述:前序遍歷

      ·函數(shù)名稱:void Midorder(Tree *t);·函數(shù)描述:中序遍歷

      ·函數(shù)名稱:void Posorder(Tree *t);·函數(shù)描述:后序遍歷

      北京工業(yè)大學數(shù)據(jù)結(jié)構(gòu)課程設計項目書

      ·函數(shù)名稱:void DrawNode(Tree *t,int color);

      ·函數(shù)描述:遍歷時顯示每個結(jié)點的過程

      ·函數(shù)名稱:void ClrScr();

      ·函數(shù)描述:清空樹的區(qū)域

      ·函數(shù)名稱:void Close(void);·函數(shù)描述:圖形模式結(jié)束

      四、測試與調(diào)試:

      1、調(diào)試報告

      一開始的調(diào)試中,我們就碰到了很嚴重的問題,圖形化的界面一直無法正常的顯示出來,運行之后,都是一閃即逝,為此,我們上網(wǎng)查閱了很多信息。加了getch(); 也加了system(“plause”);,這些基本的解決方法毫無用處;又有說要把Egavga.bgi這個文件和生成的exe文件放在一起,起初使用TC3.0時也無法正常顯示圖形界面。多番嘗試無果之后打算試試Win-TC,結(jié)果莫名其妙的成功了。并且發(fā)現(xiàn)Egavga.bgi的確要和exe文件放在同一個文件夾,不在一起時無法進入圖形界面,這是在一次另存為把文件保存到其他文件夾時發(fā)現(xiàn)的。還有最開始時,對于一些需要用到的函數(shù)所需的頭文件不是很了解,不過通過網(wǎng)絡的搜索之后,都一一得到解答。但是直到目前為止,依然有個比較大的問題,就是系統(tǒng)自動生成二叉樹的時候,經(jīng)常會出現(xiàn)重復字母的結(jié)點,我們想的是能不能一個節(jié)點之后就在26個字母之中把這個結(jié)點用到的字母抽出去,然后剩下的位置就從剩下的字母中選取,可是二叉樹是一下子全部顯示出來,好像沒有明顯的先后順序,最后還是不會。

      2、測試結(jié)果

      A:主界面---選擇生成樹的方式(自動/手動)

      北京工業(yè)大學數(shù)據(jù)結(jié)構(gòu)課程設計項目書

      B:選擇1后

      C:選擇2后

      D:按任意鍵后,進入二叉樹的演示初始界面---圖形化界面的初始化

      北京工業(yè)大學數(shù)據(jù)結(jié)構(gòu)課程設計項目書

      E:按任意鍵后開始遍歷,并輸出遍歷結(jié)果

      五、主要算法分析:

      (一)二叉樹的生成

      Tree *InitTree(int h,int t,int w){

      char ch;

      int n;

      /*自動建立時隨機賦值判斷是否是NULL的標志*/

      Tree *node;

      if(way=='2')

      /*手動建立需要自己輸入*/

      scanf(“%c”,&ch);

      else

      /*自動建立的賦值*/

      {

      n=random(5);

      if(n==0&&nodeNUM>=3)

      /*隨機賦值時候確保自動建立的二叉樹有三個結(jié)點*/

      ch=' ';

      else

      ch=65+random(25);

      }

      if(ch==' ')

      /*輸入空格代表NULL*/

      return NULL;

      北京工業(yè)大學數(shù)據(jù)結(jié)構(gòu)課程設計項目書

      else

      {

      if(h==6||nodeNUM==26)/*如果樹的層次已經(jīng)到5或者結(jié)點樹到達26個就自動返回NULL*/

      return NULL;

      node=(Tree*)malloc(sizeof(Tree));

      node->data=ch;

      node->x=t;

      /*樹的x坐標是傳遞過來的橫坐標*/

      node->y=h*50;/*樹的y坐標與層次大小有關*/

      nodeNUM++;

      node->lchild=InitTree(h+1,t-w,w/2);

      node->rchild=InitTree(h+1,t+w,w/2);

      }

      return node;} 功能:實現(xiàn)二叉樹的生成功能,用于構(gòu)建二叉樹

      (二)圖形化顯示二叉樹

      void DrawTree(Tree *t){ if(t!=NULL){ setcolor(BLACK);setfillstyle(SOLID_FILL,BLACK);fillellipse(t->x,t->y,9,9);setcolor(WHITE);circle(t->x,t->y,10);/*畫圓*/ sprintf(str,“%c”,t->data);/*將內(nèi)容轉(zhuǎn)換成字符串輸出*/ outtextxy(t->x-3,t->y-2,str);if(t->lchild!=NULL)

      /*左子樹*/ { line(t->x-5,t->y+12,t->lchild->x+5,t->lchild->y-12);DrawTree(t->lchild);} if(t->rchild!=NULL)

      /*右子樹*/ { line(t->x+5,t->y+12,t->rchild->x-5,t->rchild->y-12);DrawTree(t->rchild);} } } 功能:利用坐標實現(xiàn)圖形化輸出二叉樹的功能,用于圖形化演示

      北京工業(yè)大學數(shù)據(jù)結(jié)構(gòu)課程設計項目書

      六、心得體會:

      項目經(jīng)理-肖毅:

      剛開始拿到課設的題目時,瀏覽一遍之后發(fā)現(xiàn)毫無頭緒,不知從何下手。從大一接觸C語言開始,到后來學習C++,到現(xiàn)在的數(shù)據(jù)結(jié)構(gòu),學到現(xiàn)在,面對大型完整程序的編寫,依然感覺很是無力。最后我們選擇了數(shù)據(jù)結(jié)構(gòu)CAI系統(tǒng),因為覺得可以直接從所學的一些算法中直接完成,已經(jīng)學過現(xiàn)成的算法,有了明確的目標,我們要做的就是將這些算法圖形化的演示出來,不會毫無思路。雖然的確有些思路了,但是也并沒有我們想象的那么簡單,從最開始的計劃完成3個算法的演示到最后只完成了一個二叉樹的三種遍歷的演示。另外我們覺得選擇這個也能夠幫助我們復習數(shù)據(jù)結(jié)構(gòu)的一些知識,對于即將到來的數(shù)據(jù)結(jié)構(gòu)考試也是有所幫助的,雖然查找和排序并沒有完成,但是我們也翻閱數(shù)據(jù)結(jié)構(gòu)課本仔細研究了書上關于那些部分的算法,這也是一種復習,排序和查找也是數(shù)據(jù)結(jié)構(gòu)中很重要的一部分。

      確定完題目之后,就要開始著手編寫了,我們組成員的整體水平雖然不是很高,但我們依然能夠憑借自己的努力來完成程序,遇到不會的問題,我們會向其他同學請教,并且自己上網(wǎng)搜索相關信息,不得不再次感嘆網(wǎng)絡的強大,網(wǎng)絡確實是現(xiàn)代生活中不可缺少的一部分。這次課設中我和池璐主要負責程序的編寫,我們也是邊寫程序邊學習,我主要負責程序中二叉樹圖形化輸出和二叉樹的生成等部分,圖形化輸出需要用到坐標,我們要將想要輸出的東西放到屏幕上正確的部分,需要經(jīng)過多次嘗試之后才能最后確定坐標。同時也讓其他幾位成員參與編寫并學習,對于一些我會的地方,也會跟他們講解,為了讓他們更好的理解程序,并完成后期PPT的制作。團隊協(xié)作能力也是考校一個計算機專業(yè)學生的一個很重要的因素。

      通過這次課設,對于數(shù)據(jù)結(jié)構(gòu)基本功的知識是一種強化,更扎實了數(shù)據(jù)結(jié)構(gòu)的基本功,并學習到了很多課堂上沒有學到過的知識,對于計算機知識的學習之路,光靠課堂所學是遠遠不夠的。實際程序的編寫也是很重要的,每一個完整的程序?qū)τ谧约憾际且淮螝v練,這對于以后的學習和未來的工作都是很有幫助的。

      項目經(jīng)理-池璐:

      在忙碌了一個星期之后,課設終于結(jié)束了?!皩嵺`出真知”,編出一些有用的程序更是對數(shù)據(jù)結(jié)構(gòu)這門課程學習的最好檢驗。正是這次的檢驗,讓我受益良多。

      我們設計的是一款教學CAI輔助程序,用直觀便于理解的動態(tài)圖示為學生展現(xiàn)的是二叉樹的3種遍歷方式。我主要負責的是界面設計和3種遍歷。界面上我設計的比較簡潔,用一些特殊符號構(gòu)成了框架。為了方便老師,我設計了2種方式,一種為計算機自動分配二叉樹,另一種是認為輸入。3種不同的遍歷方式主要看的是根節(jié)點的位置。例如先序遍歷的根節(jié)點最先被訪問。在算法的設計中我也參與了進去,與項目經(jīng)理進行了探討,最終完成了整個程序。

      當然,編程之路并非一帆風順。其間我們也遇到了許多問題。比如菜單的編程問題,編程環(huán)境的影響一記圖形函數(shù)的應用。在查閱資料后,大部分問題得到了解決,我也學到了之前不太了解的問題。另外,我計劃還設計一款二分法的CAI程序,由于知識水平有限,我便看書試圖解決這個問題。但是最后沒有能夠解決。課設雖然結(jié)束了,但是學習的腳步還沒有就此停下。更多的實踐等著我把

      北京工業(yè)大學數(shù)據(jù)結(jié)構(gòu)課程設計項目書

      數(shù)據(jù)結(jié)構(gòu)這么課在學習生活中運用的更加嫻熟,理解的更加透徹。這才是學好這門課的意義。

      產(chǎn)品經(jīng)理-黃友鵬:

      通過本次課設,我學到很多。首先必須承認,我的基礎很差,本來對編一大段程序就很頭疼,但是這次以小組方式進行,使我能夠向他人學習,就算是大家都不會的問題我們也可以分工上網(wǎng)尋找解決的辦法,總之,第一次覺得學習也可以變得很輕松。

      而且,通過這次課設,我也懂得了好多專業(yè)的名詞,如路演,CAI系統(tǒng)...這些都是我以前沒有接觸過的。

      本次課設我擔任產(chǎn)品經(jīng)理的職位,這不只是一個小小的虛銜,這是讓我們提早感受社會,事實上我也是這么努力的,我自己做了路演PPT,而且目的就是讓別人接收我們的產(chǎn)品,雖然還有很多的不足,但我們努力了,我也很有成就感。

      總之,在這次課設中我學到了很多,也感覺進步了很大。

      測試經(jīng)理-于連明:

      這次課設給了我很大的鍛煉,使我進一步理解數(shù)據(jù)結(jié)構(gòu)的重要性。我們小組設計的是CAI(Computer Assisted Instruction),也就是計算機輔助教學。目前我們所學的數(shù)據(jù)結(jié)構(gòu)計算機專業(yè)一門重要的專業(yè)技術(shù)基礎課程,有人概括過這樣一個公式:程序=算法+數(shù)據(jù)結(jié)構(gòu),要設計好的程序,除了要設計好的算法之外,還必須采用合適的數(shù)據(jù)結(jié)構(gòu)。所以數(shù)據(jù)結(jié)構(gòu)的知識對設計和實現(xiàn)計算機系統(tǒng)軟件如操作系統(tǒng)、編譯程序和數(shù)據(jù)庫管理系統(tǒng)等是十分重要的;它對于編寫應用軟件的人來說也是必不可少的。

      然而學習這門課程有一些困難:

      (1)內(nèi)容豐富,學習量大,給學習帶來困難。

      (2)貫穿的動態(tài)鏈表存儲結(jié)構(gòu)和遞歸技術(shù)是學習中的重點也是難點;

      (3)所用到的技術(shù)多,而在此之前的各門課程中所介紹的專業(yè)性知識又不多,因而加大了學習難度;在解答問題時出會因此而困難重重。

      因此我們小組為了解決數(shù)據(jù)結(jié)構(gòu)學起來困難的麻煩,設計了CAI系統(tǒng)。這是一種嶄新的教學方式,它可以代替教師模擬教學過程,是通過學生與計算機之間的交互活動達到教學的目的。其圖文并茂,靈活方便的眾多特點,可以激發(fā)我們學生的學習興趣,且發(fā)揮學生的學生積極性,提高教學質(zhì)量。CAI可以將某些非順序信息呈現(xiàn)出來,可以包括一門課程或與某個對象有關的全部知識。我們即可以瀏覽所有知識,也可以按自己的需要獲取其中任意所感興趣的一部分,學生可以控制學習內(nèi)容和進度。

      但是我們設計的CAI系統(tǒng)缺乏網(wǎng)絡支持。它是運行在單機下環(huán)境下的。無法利用網(wǎng)絡在知識更新上的方便與快捷的優(yōu)勢。這樣的CAI課件一旦生產(chǎn)完成就再也無法對教學的內(nèi)容進行更新和維護,因而是沒有生命力的,將隨著時間的發(fā)展而逐步被淘汰。這類弊端有待研究解決。

      這次課設也使我明白團隊的合作是非常重要的,團結(jié)就是勝利。

      北京工業(yè)大學數(shù)據(jù)結(jié)構(gòu)課程設計項目書

      七、分工協(xié)作:

      項目經(jīng)理:肖毅 池璐

      職責:負責整個項目小組的人員管理、進度管理,主要攻克軟件產(chǎn)品技術(shù)環(huán)節(jié)的問題,負責路演環(huán)節(jié)技術(shù)問題的答辯,負責項目手冊中的核心算法部分的書寫及整個項目手冊的整理定稿。負責進行項目中期匯報及與指導教師的溝通。

      產(chǎn)品經(jīng)理:黃友鵬

      職責:負責整個產(chǎn)品的框架設計、外觀設計和功能模塊的升級設計,主要負責產(chǎn)品的需求分析及性能改良,負責手冊中產(chǎn)品外觀和框架及需求的書寫,負責路演環(huán)節(jié)PPT的制作。

      測試經(jīng)理:于連明

      職責:負責整個產(chǎn)品的功能模塊部分的設計與最終產(chǎn)品測試環(huán)節(jié),建立產(chǎn)品所需的數(shù)據(jù)資源庫,負責路演環(huán)節(jié)產(chǎn)品使用的答辯,負責項目手冊中功能模塊及算法的書寫。

      八、附錄:源代碼

      /********二叉樹的三種遍歷算法演示********/ #include #include #include #include #include

      typedef struct TREE {

      char data;

      /*樹的結(jié)點數(shù)據(jù)*/

      struct TREE *lchild;

      struct TREE *rchild;

      int x;

      /*樹的x坐標*/

      int y;

      /*樹的y坐標*/ }Tree;

      struct OUTPUT {

      int x;

      /*三種遍歷的x坐標*/

      int y;

      /*三種遍歷的y坐標*/

      int num;}s;

      int nodeNUM=0;/*統(tǒng)計當前的結(jié)點數(shù)字,最多26個*/ char way;

      /*自動建立樹和手動建立樹的標志,2手動,1自動*/ char str[3];

      /*顯示結(jié)點數(shù)據(jù)的字符串*/

      北京工業(yè)大學數(shù)據(jù)結(jié)構(gòu)課程設計項目書

      void Init();

      /*圖形初始化*/ void Close();/*圖形關閉*/ Tree *CreatTree();

      /*文本模式下創(chuàng)建樹的過程*/ Tree *InitTree(int h,int t,int w);/*創(chuàng)建樹,h層次,t橫坐標,w樹之間的寬度,n樹的建立方式*/ void DrawTree(Tree *t);/*用圖形顯示創(chuàng)建好的樹*/ void Preorder(Tree *t);/*前序遍歷*/ void Midorder(Tree *t);/*中序遍歷*/ void Posorder(Tree *t);/*后序遍歷*/ void DrawNode(Tree *t,int color);

      /*遍歷時顯示每個結(jié)點的過程*/ void ClrScr();

      /*清空樹的區(qū)域*/

      void main(){

      Tree *root;

      randomize();

      root=CreatTree();/*創(chuàng)建樹*/

      Init();

      DrawTree(root);

      /*每次遍歷前顯示白色的樹*/

      sleep(1);

      s.x=100;s.y=300;s.num=1;/*每次遍歷前設置顯示遍歷順序顯示的x,y坐標*/

      Preorder(root);

      /*前序遍歷*/

      getch();

      ClrScr();

      DrawTree(root);

      sleep(1);

      s.x=100;

      s.y=350;

      s.num=1;

      Midorder(root);

      /*中序遍歷*/

      getch();

      ClrScr();

      DrawTree(root);

      sleep(1);

      s.x=100;

      s.y=400;

      s.num=1;

      Posorder(root);

      /*后序遍歷*/

      Close();}

      /*清空樹的區(qū)域*/ void ClrScr(){

      setcolor(BLACK);

      北京工業(yè)大學數(shù)據(jù)結(jié)構(gòu)課程設計項目書

      setfillstyle(SOLID_FILL,BLACK);

      bar(0,20,640,280);}

      /*樹的創(chuàng)建*/ Tree *CreatTree(){

      Tree *root;

      clrscr();

      printf(“n”);

      printf(“n”);

      printf(“

      Binary tree traversal

      n”);

      printf(“

      ----------------------------n”);

      printf(“

      **********Please input '1' OR '2' to choose********** n”);

      printf(“

      *

      * n”);

      printf(“

      *

      1.Computer creat

      * n”);

      printf(“

      *

      * n”);

      printf(“

      *

      2.People creat

      * n”);

      printf(“

      *

      * n”);

      printf(“

      ***************************************************** n”);

      way=getch();/*輸入創(chuàng)建樹的方法,1電腦自動建立,2人工手動建立*/

      if(way!='2')

      way='1';

      /*其他數(shù)字默認自動建立*/

      if(way=='2')/*手動建立提示輸入結(jié)點,例abc de f g

      */

      printf(“

      Please creat the tree:

      n”);

      root=InitTree(1,320,150);

      system(“pause”);

      return root;}

      /*生成二叉樹,h表示層次,t表示橫坐標,w表示結(jié)點左右子樹的寬度,隨機數(shù)n確定結(jié)點是空或非空,如n為0,則為空,但要限定確保結(jié)點數(shù)不少于三個*/ Tree *InitTree(int h,int t,int w){

      char ch;

      int n;

      /*自動建立時隨機賦值判斷是否是NULL的標志*/

      Tree *node;

      if(way=='2')

      /*手動建立需要自己輸入*/

      scanf(“%c”,&ch);

      else

      /*自動建立的賦值*/

      {

      n=random(5);

      if(n==0&&nodeNUM>=3)

      /*隨機賦值時候確保自動建立的二叉樹有三個結(jié)點*/

      ch=' ';

      北京工業(yè)大學數(shù)據(jù)結(jié)構(gòu)課程設計項目書

      else

      ch=65+random(25);

      }

      if(ch==' ')

      /*輸入空格代表NULL*/

      return NULL;

      else

      {

      if(h==6||nodeNUM==26)/*如果樹的層次已經(jīng)到5或者結(jié)點樹到達26個就自動返回NULL*/

      return NULL;

      node=(Tree*)malloc(sizeof(Tree));

      node->data=ch;

      node->x=t;

      /*樹的x坐標是傳遞過來的橫坐標*/

      node->y=h*50;/*樹的y坐標與層次大小有關*/

      nodeNUM++;

      node->lchild=InitTree(h+1,t-w,w/2);

      node->rchild=InitTree(h+1,t+w,w/2);

      }

      return node;}

      /*用圖形顯示創(chuàng)建好的樹*/ void DrawTree(Tree *t){

      if(t!=NULL)

      {

      setcolor(BLACK);

      setfillstyle(SOLID_FILL,BLACK);

      fillellipse(t->x,t->y,9,9);

      setcolor(WHITE);

      circle(t->x,t->y,10);/*畫圓*/

      sprintf(str,“%c”,t->data);/*將內(nèi)容轉(zhuǎn)換成字符串輸出*/

      outtextxy(t->x-3,t->y-2,str);

      if(t->lchild!=NULL)

      /*左子樹*/

      {

      line(t->x-5,t->y+12,t->lchild->x+5,t->lchild->y-12);

      DrawTree(t->lchild);

      }

      if(t->rchild!=NULL)

      /*右子樹*/

      {

      line(t->x+5,t->y+12,t->rchild->x-5,t->rchild->y-12);

      DrawTree(t->rchild);

      }

      }

      北京工業(yè)大學數(shù)據(jù)結(jié)構(gòu)課程設計項目書

      }

      /*遍歷時顯示每個結(jié)點的過程*/ void DrawNode(Tree *t,int color){

      setcolor(RED);

      setfillstyle(SOLID_FILL,RED);

      fillellipse(t->x,t->y,10,10);

      setcolor(YELLOW);

      sprintf(str,“%c”,t->data);/*將內(nèi)容轉(zhuǎn)換成字符串輸出*/

      outtextxy(t->x-3,t->y-2,str);

      setcolor(color);

      outtextxy(s.x,s.y,str);

      setcolor(YELLOW);

      sprintf(str,“%d”,s.num);

      /*將遍歷次序用數(shù)字顯示在樹的結(jié)點上*/

      outtextxy(t->x-3,t->y-20,str);

      s.num++;

      sleep(1);}

      /*前序遍歷*/ void Preorder(Tree *t){

      if(t!=NULL)

      {

      s.x+=15;

      DrawNode(t,YELLOW);

      Preorder(t->lchild);

      Preorder(t->rchild);

      } }

      /*中序遍歷*/ void Midorder(Tree *t){

      if(t!=NULL)

      {

      Midorder(t->lchild);

      s.x+=15;

      DrawNode(t,WHITE);

      Midorder(t->rchild);

      } }

      北京工業(yè)大學數(shù)據(jù)結(jié)構(gòu)課程設計項目書

      /*后序遍歷*/ void Posorder(Tree *t){

      if(t!=NULL)

      {

      Posorder(t->lchild);

      Posorder(t->rchild);

      s.x+=15;

      DrawNode(t,GREEN);

      } }

      /*圖形初始化*/ void Init(){

      int gd=DETECT,gm;

      initgraph(&gd,&gm,“c: c”);

      cleardevice();/*清除圖形屏幕*/

      setcolor(YELLOW);

      outtextxy(225,10,“Press anykey to continue”);

      setcolor(RED);

      outtextxy(20,300,“preorder”);

      outtextxy(20,350,“midorder”);

      outtextxy(20,400,“posorder”);

      getch();}

      /*關閉圖形*/ void Close(){

      getch();

      closegraph();}

      九、參考書目

      《數(shù)據(jù)結(jié)構(gòu)(c語言版)》.The Internet.

      第二篇:學籍系統(tǒng)手冊

      學籍系統(tǒng)升級結(jié)束。本次系統(tǒng)升級內(nèi)容: 1 待辦業(yè)務提示

      用戶登錄時,在首頁彈出窗口,提示本單位各主要業(yè)務的待辦數(shù)量,用戶可通過鏈接直接訪問對應處理功能。2 問題學籍處理

      2.1 L、G字頭學籍號學生均可進行佐證 一組問題學籍,同時存在正式學籍號和臨時學籍號的學籍時,臨時學籍號學籍可以申請佐證。雙G問題學籍時,兩方G學籍號都可以進行佐證。2.2 G字頭學籍號學生可刪除

      一組問題學籍中,正式學籍號問題學籍可以發(fā)起刪除處理。2.3 問題學籍佐證后發(fā)起重新處理

      之前通過佐證方式處理結(jié)束的問題學籍,學校可以重新發(fā)起問題學籍處理業(yè)務。2.4 身份證件號已發(fā)生變更的處理 新增一類問題學籍,公安部認證不通過的問題學籍,新增錯誤類型“公安部校驗不通過:身份證件號已發(fā)生變更”。處理方式仍為三種:佐證、刪除、變更。2.5 認證不通過問題學籍信息中新增反饋信息項 問題學籍信息中新增“反饋描述”信息項,對于公安部身份認證不通過的問題學籍,該信息項給出錯誤提示信息。2.6 補充了問題學籍處理流程幫助

      系統(tǒng)中提供了《問題學籍處理流程幫助》文檔,學校用戶可以在問題學籍處理功能中下載,教育管理部門用戶可以在問題學籍審核功能中下載。3 正式學籍號下發(fā)的相關控制

      用于新一批正式學籍號通過數(shù)據(jù)交換下發(fā)到省級后,省級的下發(fā)業(yè)務邏輯控制。4 無身份證在校學生列表

      學校學籍管理員可查詢本學校沒有身份證號的在校學生學籍,方便聯(lián)系學生家長確認學生身份證信息。

      各級教育管理部門可查詢轄區(qū)內(nèi)學校沒有身份證號的在校學生學籍。5 其他

      不允許將正式學籍號學籍的身份證件類型變更為“其他”,包括問題學籍處理和關鍵數(shù)據(jù)變更。

      不允許將身份證件類型變更為“戶口簿”。

      第三篇:數(shù)據(jù)結(jié)構(gòu)課程設計 飛機訂票系統(tǒng)

      飛機訂票系統(tǒng)

      1.需求分析

      描述要求編程解決的問題。以無歧義的陳述說明程序設計的任務,強調(diào)的是程序要做什么?明確規(guī)定:

      (a)輸入的形式和輸入值的范圍;

      (b)輸出的形式;

      (c)程序所能達到的功能;

      (d)測試數(shù)據(jù):包括正確的輸入及其輸出結(jié)果和含有錯誤的輸入及其輸出結(jié)果。

      2.概要設計

      給出程序要達到的具體的要求。描述解決相應問題算法的設計思想。描述所設計程序的各個模塊(即函數(shù))功能。說明本程序中用到的所有抽象數(shù)據(jù)類型的定義、主程序的流程以及各程序模塊之間的層次(調(diào)用)關系。

      3.詳細設計

      實現(xiàn)概要設計中定義的所有數(shù)據(jù)類型,對每個操作只需要寫出流程或偽碼算法;對主程序和其他模塊也都需要寫出流程或偽碼算法(偽碼算法達到的詳細程度建議為:按照偽碼算法可以在計算機鍵盤直接輸入高級程序設計語言程序);畫出函數(shù)的調(diào)用關系圖。給出所使用的基本抽象數(shù)據(jù)類型,所定義的具體問題的數(shù)據(jù)類型,以及新定義的抽象數(shù)據(jù)類型。設計出良好的輸入輸出界面(清晰易懂)。

      4.調(diào)試分析 內(nèi)容包括:

      (a)調(diào)試過程中遇到的問題是如何解決的以及對設計與實現(xiàn)的回顧討論和分析;

      (b)算法的時空分析(包括基本操作和其他算法的時間復雜度和空間復雜度的分析)和改進設想;

      (c)經(jīng)驗和體會等。

      5.用戶使用說明

      說明如何使用你編寫的程序,詳細列出每一步的操作步驟。

      6.測試結(jié)果

      設計測試數(shù)據(jù),或具體給出測試數(shù)據(jù)。要求測試數(shù)據(jù)能全面地測試所設計程序的功能。列出你的測試結(jié)果,包括輸入和輸出。這里的測試數(shù)據(jù)應該完整和嚴格,最好多于需求分析中所列。

      7.測試情況:給出程序的測試情況,并分析運行結(jié)果

      附錄(非必須,按照需要添加)

      帶注釋的源程序。可以只列出程序文件名的清單。

      需求分析

      任務:通過此系統(tǒng)可以實現(xiàn)如下功能: 錄入:

      可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定)

      查詢:

      可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵達城市,航班票價,票價折扣,確定航班是否滿倉); 可以輸入起飛抵達城市,查詢飛機航班情況;

      訂票:(訂票情況可以存在一個數(shù)據(jù)文件中,結(jié)構(gòu)自己設定)可以訂票,如果該航班已經(jīng)無票,可以提供相關可選擇航班;

      退票: 可退票,退票后修改相關數(shù)據(jù)文件;

      客戶資料有姓名,證件號,訂票數(shù)量及航班情況,訂單要有編號。

      概要設計

      詳細設計

      詳列函數(shù) void list(){

      struct airline *info;

      int i=0;

      info=start;

      printf(“起點城市t終點城市t航班號t起飛時間t降落時間t總票數(shù)t余票數(shù)n”);

      while(i

      {

      display(info);

      info++;

      i++;

      }

      printf(“nn”);}

      查詢函數(shù) void search(){

      struct airline *info,*find();

      char qiname[10];

      char jiangname[10];

      int i=0;

      info=start;

      printf(“請輸入要起飛城市的名稱:”);

      scanf(“%s”,qiname);

      printf(“請輸入要抵達城市的名稱:”);

      scanf(“%s”,jiangname);

      while(i

      {

      if(!strcmp(jiangname,info->jiang_name))

      {

      break;

      }

      info++;

      i++;

      }

      if(i>=MAXSIZE)

      {

      printf(“沒有這條航線!n”);

      }

      else

      {

      printf(“起飛城市t降落城市t航班號t起飛時間t降落時間t總票數(shù)t余票數(shù)n”);

      display(info);

      } }

      struct airline *find(){

      struct airline *info;

      char number[10];

      int i=0;

      info=start;

      printf(“請輸入航班號:”);

      scanf(“%s”,number);

      while(i

      {

      if(!strcmp(number,info->air_num))

      {

      return info;

      }

      info++;

      i++;

      }

      printf(“沒有這條航線!n”);

      return NULL;}

      訂票函數(shù) void order(){

      struct airline *info;

      char qiname[10];

      char jiangname[10];

      int amount;

      char name[10];

      char id[30];

      info=start;

      printf(“請輸入您的起飛城市:”);

      scanf(“%s”,qiname);

      printf(“請輸入您的降落城市:”);

      scanf(“%s”,jiangname);

      printf(“請輸入您需要的票數(shù):”);

      scanf(“%d”,&amount);

      int i=1;

      while(i<5)

      {

      if(!strcmp(info->qi_name,qiname)&&!strcmp(info->jiang_name,jiangname))

      {

      if(amount<=info->ticket_left)

      {

      int i;

      printf(“請輸入您的姓名:”);

      scanf(“%s”,name);

      printf(“請輸入您的身份證號:”);

      scanf(“%s”,id);

      info->order=insertlink(info->order,amount,name,id);

      printf(“您的航班信息為:n”);

      display(info);

      for(i=0;i

      {

      printf(“%s的座位號是:%dn”,name,info->ticket_all-info->ticket_left+i+1);

      }

      info->ticket_left-=amount;

      printf(“訂票成功!n”);

      break;

      }

      else

      {

      info++;

      i++;

      }

      }

      else

      {

      info++;

      i++;

      }

      } }

      退票函數(shù)

      void returnticket(){

      struct airline *info;

      linklist *p1,*p2,*head;

      char name[10];

      if(!(info=find()))

      {

      return;

      }

      head=info->order;

      p1=head;

      printf(“請輸入您的姓名:”);

      scanf(“%s”,name);

      while(p1!=NULL)

      {

      if(!strcmp(name,p1->name))

      {

      break;

      }

      p2=p1;

      p1=p1->next;

      }

      if(p1==NULL)

      {

      printf(“您沒有訂過票!n”);

      return;

      }

      else

      {

      if(p1==head)

      {

      head=p1->next;

      }

      else

      {

      p2->next=p1->next;

      }

      info->ticket_left+=p1->tickets;

      printf(“%s退票成功!n”,p1->name);

      free(p1);

      }

      info->order=head;}

      存儲結(jié)構(gòu)

      typedef struct passenger {

      char name[10];

      int tickets;

      char id[30];

      struct passenger *next;} linklist;typedef struct airline {

      char qi_name[10];

      char jiang_name[10];

      char air_num[10];

      char qi_time[10];

      char jiang_time[10];

      int ticket_all;

      int ticket_left;

      linklist *order;} lineinfo;調(diào)試分析

      查看航線信息

      查詢航線 ① 輸入起飛城市 ② 輸入抵達城市 ③ 輸出航班信息

      辦理訂票業(yè)務 ① 查詢符合的航班 ② 查詢余票量 ③ 輸出航班信息

      辦理退票業(yè)務

      源代碼

      #include #include #include #include #include #include using namespace std;#define MAXSIZE 5 typedef struct passenger {

      char name[10];

      int tickets;

      char id[30];

      struct passenger *next;} linklist;

      typedef struct airline {

      char qi_name[10];

      char jiang_name[10];

      char air_num[10];

      char qi_time[10];

      char jiang_time[10];

      int ticket_all;

      int ticket_left;

      linklist *order;} lineinfo;

      struct airline *start;

      void display(struct airline *info){ printf(“%st %10st %10st %10st %10st %5dt %5dn”,info->qi_name,info->jiang_name,info->air_num,info->qi_time,info->jiang_time,info->ticket_all,info->ticket_left);} void list(){

      struct airline *info;

      int i=0;

      info=start;

      printf(“起點城市t終點城市t航班號t起飛時間t降落時間t總票數(shù)t余票數(shù)n”);

      while(i

      {

      display(info);

      info++;

      i++;

      }

      printf(“nn”);}

      void search(){

      struct airline *info,*find();

      char qiname[10];

      char jiangname[10];

      int i=0;

      info=start;

      printf(“請輸入要起飛城市的名稱:”);

      scanf(“%s”,qiname);

      printf(“請輸入要抵達城市的名稱:”);

      scanf(“%s”,jiangname);

      while(i

      {

      if(!strcmp(jiangname,info->jiang_name))

      {

      break;

      }

      info++;

      i++;

      }

      if(i>=MAXSIZE)

      {

      printf(“沒有這條航線!n”);

      }

      else

      {

      printf(“起飛城市t降落城市t航班號t起飛時間t降落時間t總票數(shù)t余票數(shù)n”);

      display(info);

      } } struct airline *find(){

      struct airline *info;

      char number[10];

      int i=0;

      info=start;

      printf(“請輸入航班號:”);

      scanf(“%s”,number);

      while(i

      {

      if(!strcmp(number,info->air_num))

      {

      return info;

      }

      info++;

      i++;

      }

      printf(“沒有這條航線!n”);

      return NULL;}

      linklist *insertlink(linklist *head,int amount,char name[],char id[]){

      linklist *p1,*new1;

      p1=head;

      new1=(linklist*)malloc(sizeof(linklist));

      strcpy(new1->name,name);

      new1->tickets=amount;

      new1->next=NULL;

      strcpy(new1->id,id);

      if(head==NULL)

      {

      head=new1;

      new1->next=NULL;

      }

      else

      {

      while(p1->next!=NULL)

      p1=p1->next;

      p1->next=new1;

      }

      return head;}

      void order(){

      struct airline *info;

      char qiname[10];

      char jiangname[10];

      int amount;

      char name[10];

      char id[30];

      info=start;

      printf(“請輸入您的起飛城市:”);

      scanf(“%s”,qiname);

      printf(“請輸入您的降落城市:”);

      scanf(“%s”,jiangname);

      printf(“請輸入您需要的票數(shù):”);

      scanf(“%d”,&amount);

      int i=1;

      while(i<5)

      {

      if(!strcmp(info->qi_name,qiname)&&!strcmp(info->jiang_name,jiangname))

      {

      if(amount<=info->ticket_left)

      {

      int i;

      printf(“請輸入您的姓名:”);

      scanf(“%s”,name);

      printf(“請輸入您的身份證號:”);

      scanf(“%s”,id);

      info->order=insertlink(info->order,amount,name,id);

      printf(“您的航班信息為:n”);

      display(info);

      for(i=0;i

      {

      printf(“%s的座位號是:%dn”,name,info->ticket_all-info->ticket_left+i+1);

      }

      info->ticket_left-=amount;

      printf(“訂票成功!n”);

      break;

      }

      else

      {

      info++;

      i++;

      }

      }

      else

      {

      info++;

      i++;

      }

      } }

      void returnticket(){

      struct airline *info;

      linklist *p1,*p2,*head;

      char name[10];

      if(!(info=find()))

      {

      return;

      }

      head=info->order;

      p1=head;

      printf(“請輸入您的姓名:”);

      scanf(“%s”,name);

      while(p1!=NULL)

      {

      if(!strcmp(name,p1->name))

      {

      break;

      }

      p2=p1;

      p1=p1->next;

      }

      if(p1==NULL)

      {

      printf(“您沒有訂過票!n”);

      return;

      }

      else

      {

      if(p1==head)

      {

      head=p1->next;

      }

      else

      {

      p2->next=p1->next;

      }

      info->ticket_left+=p1->tickets;

      printf(“%s退票成功!n”,p1->name);

      free(p1);

      }

      info->order=head;}

      int menu_select(){

      int c;

      char s[20];

      printf(“

      訂票系統(tǒng)n”);

      printf(“-------------n”);

      printf(“

      1.查看航線信息

      printf(”

      2.查詢航線

      printf(“

      3.辦理訂票業(yè)務

      printf(”

      4.辦理退票業(yè)務

      printf(“

      5.退出系統(tǒng)

      printf(”-------------n“);

      do

      {

      printf(”請選擇(1-5):“);

      scanf(”%s“,s);

      c=atoi(s);

      }

      while(c<1||c>6);

      return c;

      n”);n“);n”);n“);

      n”);

      }

      int main(){

      struct airline air[MAXSIZE]=

      {

      {“harbin”,“beijing”,“1”,“12:00”,“14:00”,30,30},{“harbin”,“shanghai”,“2”,“10:00”,“13:00”,20,20},{“harbin”,“beijing”,“3”,“13:30”,“10:00”,50,50},{“harbin”,“guangzhou”,“4”,“17:00”,“21:00”,50,50},{“harbin”,“dalian”,“5”,“14:00”,“17:00”,40,40}

      };

      start=air;

      while(1)

      {

      system(“cls”);

      switch(menu_select())

      {

      case 1:

      list();

      break;

      case 2:

      search();

      break;

      case 3:

      order();

      break;

      case 4:

      returnticket();

      break;

      case 5:

      exit(0);

      }

      getch();

      } }

      經(jīng)驗體會

      1、通過設計飛機訂票系統(tǒng),加深了對鏈表的運用和理解。

      2、通過多組測試數(shù)據(jù),發(fā)現(xiàn)了程序的問題,并做了調(diào)整、3、通過設計選擇菜單,對選擇結(jié)構(gòu)有更深刻的了解。

      第四篇:圖書管理系統(tǒng) 數(shù)據(jù)結(jié)構(gòu) 課程設計

      《數(shù)據(jù)結(jié)構(gòu)》

      課程設計報告書

      一.課程設計題目

      圖書借閱管理系統(tǒng)

      二.課程設計內(nèi)容

      實現(xiàn)圖書管理信息系統(tǒng)的設計

      (一)管理員功能:

      ①登錄:輸入管理員密碼,若密碼錯誤則不得執(zhí)行管理員操作。

      ②添加新書:增加新的圖書資料,同時需檢查新書的圖書編號是否已存在于原圖書資料中,若已存在則應取消添加或提示重新輸入。

      ③修改圖書:通過編號查詢該圖書資料,若該編號存在,則顯示已有信息,允許修改,否則提示 無該圖書信息。

      ④刪除圖書:通過編號查詢該圖書資料,若該編號存在,則顯示已有信息,允許刪除,否則提示無該圖書信息。刪除對象包括該圖書資料以及“圖書狀態(tài)”和“借閱人”中與此書相關的所有記錄。

      ⑤查找圖書:

      A.按書號查找:通過編號查詢該圖書資料,若該編號存在,則顯示圖書信息,否則提示無該圖書信息。

      B.按書名查找:通過書名查詢該圖書資料,若該編號存在,則顯示圖書信息,否則提示無該圖書信息。

      C.按作者查找:通過作者查詢該圖書資料,若該編號存在,則顯示圖書信息,否則提示無該圖書信息。

      ⑥查看全部圖書:顯示所有圖書資料,包括書號、書名、作者、狀態(tài)和借閱人等信息。

      ⑦修改讀者:通過姓名查詢該讀者信息,若該姓名存在,則顯示已有信息,允許修改,否則提示無該讀者信息。

      ⑧刪除讀者:通過姓名查詢該讀者信息,若該姓名存在,則顯示已有信息,允許刪除,否則提示無該讀者信息。刪除對象包括該讀者姓名、班級、電話以及“圖書狀態(tài)”和“借閱人”中與此人相關的所有記錄。

      ⑨查看所有讀者:顯示所有讀者資料,包括姓名、班級、電話等信息。

      (二)讀者功能:

      ①登錄:輸入讀者姓名,若未經(jīng)注冊則不得進入讀者服務界面。②注冊:新用戶經(jīng)注冊方可登錄系統(tǒng)并使用讀者服務功能。③借書:

      A.輸入所需圖書編號,判斷該編號是否存在,若不存在則提示重新輸入。

      B.若所輸入圖書編號存在,則判斷該書籍是否已被借出,若已借則不允許執(zhí)行借書操作。

      C.若所輸入圖書未借,則提示輸入讀者姓名,判斷所輸入讀者姓名是否存在,若不存在則提示重新輸入。D.若讀者姓名存在,則允許執(zhí)行借書操作。

      E.借書處理包括在“圖書狀態(tài)”中加上“已借”標記。④還書:

      A.輸入所借書編號,判斷該編號是否存在,若不存在則提示重新輸入。B.判斷該書是否已借出,若未借則不允許執(zhí)行還書操作。C.借書處理包括在“圖書狀態(tài)”中加上“未借”標記。⑤查詢圖書:

      A.按書號查找:通過編號查詢該圖書資料,若該編號存在,則顯示圖書信息,否則提示無該圖書信息。

      B.按書名查找:通過書名查詢該圖書資料,若該編號存在,則顯示圖書信息,否則提示無該圖書信息。

      C.按作者查找:通過作者查詢該圖書資料,若該編號存在,則顯示圖書信息,否則提示無該圖書信息。

      ⑥查看借閱情況:輸入讀者姓名,若該姓名不存在則提示重新輸入,若該姓名存在則顯示該讀者借閱信息。

      三.算法設計

      1.流程圖(部分示例)

      ①管理員登錄

      ②讀者登錄

      ③讀者借閱圖書

      ④管理員或讀者按書名查找圖書

      2.代碼實現(xiàn)

      #include #include

      #include #include //文件流 #include #define BookFile “book.txt”

      //將字符串BookFile替換原文件中的宏名稱book #define ReaderFile “reader.txt” using namespace std;//**********讀者結(jié)構(gòu)體,用于存放讀者基本信息********** class Reader {

      private:

      char rname[10];

      char rclass[10];

      char rtel[10];public:

      Reader()//構(gòu)造函數(shù),實現(xiàn)數(shù)據(jù)初始化

      {strcpy(rname,“");strcpy(rclass,”“);strcpy(rtel,”“);} //初始化

      void set_rname(char *rn)//設置讀者姓名

      {strcpy(rname,rn);} //將rn的字符復制給rname

      char * get_rname()//獲得讀者姓名

      {return rname;} //返回rname的值

      void set_rclass(char *rc)//設置班級

      {strcpy(rclass,rc);}

      char *get_rclass()

      //獲得班級

      {return rclass;}

      void set_rtel(char *rt)

      //設置電話

      {strcpy(rtel,rt);}

      char *get_rtel()

      //獲得電話

      {return rtel;}

      void copy(Reader m)//讀者Reader結(jié)構(gòu)體copy函數(shù)

      {strcpy(rname,m.get_rname());strcpy(rclass,m.get_rclass());strcpy(rtel,m.get_rtel());} };//*********讀者管理結(jié)構(gòu)體,實現(xiàn)對讀者用戶的管理********* class ReaderManage {

      Reader readers[50];//定義讀者結(jié)構(gòu)體數(shù)組對象,最多50位

      int length;

      void readFile()

      //讀取讀者文件函數(shù)

      {

      ifstream fread;//定義輸入文件流對象fread

      length=0;

      //計數(shù)

      if(!fread)

      {cout<<”讀取磁盤文件失敗!“<

      fread.open(ReaderFile,ios::binary);//使文件流與文件關聯(lián),以二進制方式打開

      int i=0;

      while((fread.read((char *)&readers[i],sizeof(Reader))))//計算并返回所占字節(jié)數(shù)

      i++;

      length=i;

      fread.close();//關閉磁盤文件

      } void saveFile()//保存讀者文件

      {

      ofstream fwrite;

      //定義輸出文件流對象fwrite

      if(!fwrite)

      {cout<<”文件保存失敗!n“;exit(1);}

      fwrite.open(ReaderFile,ios::binary);//使文件流與文件關聯(lián),以二進制方式打開

      fwrite.write((char *)readers,length*sizeof(Reader));//計算并返回所占字節(jié)數(shù)

      fwrite.close();//關閉磁盤文件

      } public:

      ReaderManage()//構(gòu)造函數(shù),讀取讀者文件

      {readFile();}

      ~ReaderManage()//析構(gòu)函數(shù),保存讀者文件

      {saveFile();}

      void add_reader(Reader r)//添加讀者用戶函數(shù)

      {

      if(length>=50)

      {cout<<”對不起,注冊人數(shù)已滿!n“;return;}

      readers[length].copy(r);//調(diào)用讀者結(jié)構(gòu)體copy函數(shù)

      length++;} int search(char *rn)//按姓名查找讀者函數(shù)

      {

      for(int i=0;i

      if(strcmp(readers[i].get_rname(),rn)==0)//判斷是否相等

      return i;

      return-1;

      } bool revise(Reader reader,int i)//修改讀者資料函數(shù)

      {

      readers[i].copy(reader);//調(diào)用讀者結(jié)構(gòu)體cpoy函數(shù)

      return true;} void delete_reader(int index)//刪除讀者函數(shù)

      {

      for(int i=index;i

      readers[i].copy(readers[i+1]);//用后面的地址覆蓋前面的地址

      length--;} bool log_reader(Reader r)//登錄時判斷讀者用戶是否存在函數(shù),相當于遍歷

      {

      for(int i=0;i

      if(strcmp(readers[i].get_rname(),r.get_rname())==0)

      return true;

      return false;

      } void reg_reader()//注冊用戶函數(shù)

      {

      char n[10];

      //姓名name

      char c[10];

      //班級class

      char t[10];

      //電話tel

      Reader reader;

      cout<<”nt請輸入您的姓名:“;

      cin>>n;

      cout<<”nt請輸入您的所在班級:“;

      cin>>c;

      cout<<”nt請輸入您的聯(lián)系電話:“;

      cin>>t;

      reader.set_rname(n);//調(diào)用讀者結(jié)構(gòu)體設置讀者姓名函數(shù)

      reader.set_rclass(c);//調(diào)用讀者結(jié)構(gòu)體設置讀者班級函數(shù)

      reader.set_rtel(t);//調(diào)用讀者結(jié)構(gòu)體設置聯(lián)系電話函數(shù)

      add_reader(reader);//調(diào)用讀者結(jié)構(gòu)體添加讀者函數(shù)

      cout<<”nt注冊成功!“;} void show_reader()//不帶參的顯示讀者信息函數(shù)

      { cout<<”n ☆☆☆☆☆☆☆☆☆☆☆☆讀★★者★★信★★息★★列★★表☆☆☆☆☆☆☆☆☆☆☆nn“;

      cout<<”姓名ttt班級ttt電話n“;

      for(int i=0;i

      {

      cout<

      cout<<”ttt“<

      cout<<”ttt“<

      } } void show_reader(int i)//帶參的顯示讀者信息函數(shù)

      {

      cout<<”n ☆☆☆☆☆☆☆☆☆☆☆☆讀★★者★★信★★息★★列★★表☆☆☆☆☆☆☆☆☆☆nn“;

      cout<<”姓名ttt班級ttt電話n“;

      cout<

      cout<<”ttt“<

      cout<<”ttt“<

      }

      };

      //********書籍結(jié)構(gòu)體,用于存放書籍基本信息******** class Book { private:

      char bnum[10];

      //書號

      char bname[20];

      //書名

      char bauthor[10];

      //作者

      char rname[10];

      //借閱人 public: int tag;

      //狀態(tài)標記判斷指標(已借/在架)Book()

      //構(gòu)造函數(shù)初始化信息

      {strcpy(bnum,”“);strcpy(bname,”“);strcpy(bauthor,”“);strcpy(rname,”“);tag=0;}

      void set_bnum(char *no)

      //設置書號

      {strcpy(bnum,no);}

      //把字符串no中的字符復制到字符串bnum中

      char *get_bnum()

      //獲得書號

      {

      return bnum;}

      //返回值為bnum

      void set_bname(char *n)

      //設置書名

      {strcpy(bname,n);}

      char *get_bname()

      //獲得書名

      {return bname;}

      void set_bauthor(char *a)

      //設置作者

      {strcpy(bauthor,a);}

      char * get_bauthor()

      //獲得作者姓名

      {return bauthor;}

      void set_tag(int t)

      //狀態(tài)設置

      {tag=t;}

      void set_rname(char *rn)

      //設置借閱人

      {strcpy(rname,rn);}

      char *get_rname()

      //獲得借閱人姓名

      {return rname;}

      void show_tag()

      //顯示圖書狀態(tài)

      {

      if(tag==1)

      {cout<<”已借“;}

      else

      {cout<<”在架“;}

      }

      void copy(Book m)

      //Book結(jié)構(gòu)體copy函數(shù)

      {

      strcpy(bnum,m.get_bnum());

      //將獲得書號函數(shù)里的返回值里的字符復制到bnum

      strcpy(bname,m.get_bname());

      strcpy(bauthor,m.get_bauthor());

      tag=0;

      } };//**********書籍管理結(jié)構(gòu)體,實現(xiàn)管理書籍功能********** class BookManage { private:

      Book books[100];

      //定義Book書籍結(jié)構(gòu)體數(shù)組對象,最大容量100本

      int length;

      void saveFile()

      //保存書籍文件

      {

      ofstream fwrite;//定義輸出文件流ofstream結(jié)構(gòu)體對象fwrite

      if(!fwrite)

      {cout<<”文件保存失敗!n“;exit(1);

      }

      fwrite.open(BookFile,ios::binary);//使文件流與文件建立關聯(lián),以二進制方式打開

      fwrite.write((char *)books,length*sizeof(Book));//計算并返回所占字節(jié)數(shù)

      fwrite.close();

      //關閉磁盤文件

      } void readFile()

      //讀取書籍文件

      {

      ifstream fread;//定義輸入文件流對象fread

      length=0;

      if(!fread)

      {cout<<”文件讀取失敗!“<

      Book temp;

      //定義書籍結(jié)構(gòu)體臨時對象temp

      int i=0;

      fread.open(BookFile ,ios::binary);//使文件流與文件建立關聯(lián),以二進制方式打開

      while((fread.read((char *)&books[i],sizeof(Book))))

      i++;

      //每讀完一次,指針后移一位,直到不能讀出正確結(jié)果為止

      length=i;

      fread.close();} public:

      BookManage()

      //構(gòu)造函數(shù),讀取磁盤文件

      {

      length=0;

      //從頭讀起,計數(shù),最大100

      readFile();

      //調(diào)用讀取文件函數(shù)

      }

      ~BookManage()

      //析構(gòu)函數(shù),保存磁盤文件

      {

      saveFile();

      //調(diào)用保存文件函數(shù)

      }

      bool add(Book book)

      //添加圖書資料

      {

      if(length>=100)

      { cout<<”對不起,儲存已滿,您無法繼續(xù)添加!n“;

      return-1;

      }

      else

      {

      books[length].copy(book);//調(diào)用書籍結(jié)構(gòu)體copy函數(shù)

      length++;

      return(length-1);

      } } int bnu_search(char *bnu)

      //按書號查找書籍

      {

      for(int i=0;i

      if(strcmp(books[i].get_bnum(),bnu)==0)//字符串比較,判斷是否相等

      return i;

      return-1;

      } int bna_search(char *bna)

      //按書名查找書籍

      {

      for(int i=0;i

      if(strcmp(books[i].get_bname(),bna)==0)//判斷

      return i;

      return-1;

      } int bau_search(char *bau)//按作者查找書籍

      {

      for(int i=0;i

      if(strcmp(books[i].get_bauthor(),bau)==0)//判斷

      return i;

      return-1;

      }

      int rn_search(char *rn)//按借閱人查找書籍

      {

      for(int i=0;i

      if(strcmp(books[i].get_rname(),rn)==0)//判斷

      return i;

      return-1;

      }

      void revise(Book book,int i)//帶參的修改書籍函數(shù)

      {books[i].copy(book);} //調(diào)用Book結(jié)構(gòu)體copy函數(shù)

      void deleteBook(int index)//帶參的刪除書籍資料函數(shù)

      {

      for(int i=index;i

      books[i].copy(books[i+1]);//用后面的地址將當前的地址覆蓋

      length--;

      } void show_book()//不帶參的顯示書籍函數(shù)

      {

      cout<<” ☆☆☆☆☆☆☆☆☆☆☆書★★籍★★信★★息★★列★★表☆☆☆☆☆☆☆☆☆☆☆nn“;

      cout<<”書號“;

      cout.width(10);

      cout<<”書名“;

      cout.width(10);

      cout<<”作者“;

      cout.width(17);

      cout<<”狀態(tài)“;

      cout.width(25);

      cout<<”借閱人n“;

      for(int i=0;i

      { cout<

      cout.width(10);

      cout<

      cout.width(10);

      cout<

      cout.width(20);

      books[i].show_tag();

      cout.width(20);

      cout<

      }

      } void show_book(int i)//帶參的顯示書籍函數(shù)

      { cout<<” ☆☆☆☆☆☆☆☆☆☆☆書★★籍★★信★★息★★列★★表☆☆☆☆☆☆☆☆☆☆☆nn“;

      cout<<”書號“;

      cout.width(10);

      cout<<”書名“;

      cout.width(10);

      cout<<”作者“;

      cout.width(17);

      cout<<”狀態(tài)“;

      cout.width(25);

      cout<<”借閱人n“;

      cout<

      cout.width(10);

      cout<

      cout.width(10);

      cout<

      cout.width(20);

      books[i].show_tag();

      cout.width(20);

      cout<

      }

      void br_book()//讀者借、還書功能函數(shù)

      {

      ReaderManage reader;

      int choi;//選擇

      int a;

      //圖書狀態(tài)指標(1已借2在架)

      char sh[10];//需要還書的書號

      char dz[10];//讀者姓名

      cin>>sh;

      int index=bnu_search(sh);//定義一個變量等于查找到的書號

      if(index>=0)

      { if(books[index].tag==1)//已借

      a=1;

      if(books[index].tag==0)//在架

      a=2;

      switch(a)

      { case 1:

      cout<<”nt該書目前狀態(tài)為<已借出>n“;

      cout<<”nt請選擇您需要的服務:1:還書

      0:返回n“;

      cin>>choi;

      cin.ignore();//清除以回車結(jié)束的輸入緩沖區(qū)的內(nèi)容,消除上一次輸入對下一次輸入的影響

      if(choi!=1&&choi!=0)

      {

      cout<<”nt操作有誤,請重新選擇(0/1)!n“;

      return;

      }

      else if(choi==1)

      {

      cout<<”nt請輸入您的姓名:“;

      cin>>dz;

      cin.ignore();

      int index1=reader.search(dz);

      if(index1==-1)

      {

      cout<<”nt對不起,系統(tǒng)無該讀者記錄,新用戶請先注冊!“;

      return;

      }

      else

      {

      strcpy(dz,”“);//將讀者姓名已空白代替

      books[index].set_rname(dz);//借閱人一項變?yōu)榭瞻?/p>

      books[index].set_tag(0);//圖書狀態(tài)變?yōu)樵诩?/p>

      cout<<”nt還書成功!“<

      }

      }break;

      case 2:

      cout<<”nt該書目前狀態(tài)為<在館>n“;

      cout<<”nt請您需要的服務:1:借書

      0:返回n“;

      cin>>choi;

      cin.ignore();

      if(choi!=1&&choi!=0)

      {

      cout<<”nt操作有誤,請重新選擇(0/1)!n“;

      return;

      }

      else if(choi==1)

      {

      cout<<”nt請輸入您的姓名:“;

      cin>>dz;

      int index1=reader.search(dz);

      if(index1==-1)

      { cout<<”nt對不起,系統(tǒng)無改讀者記錄,新用戶請先注冊!“;

      return;

      }

      else

      {

      books[index].set_rname(dz);

      books[index].set_tag(1);

      cout<<”nt借書成功!“<

      }

      }break;

      }

      }

      else

      {

      cout<<”nt對不起,系統(tǒng)無該書記錄!“;}

      }

      bool in(int i)//判斷圖書是否在架函數(shù)

      {

      if(books[i].tag==1)

      return false;

      return true;

      }

      };//**********菜單結(jié)構(gòu)體,實現(xiàn)界面引導********** class Menu {

      BookManage bm;

      //定義書籍管理結(jié)構(gòu)體對象bm ReaderManage rm;

      //定義讀者管理結(jié)構(gòu)體對象rm Reader r;

      //定義讀者結(jié)構(gòu)體對象r private: int choice;

      //菜單序號選擇

      int key;

      //管理員密碼 public: void header()

      //頁眉

      {

      system(”color fd“);

      cout<<”t

      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      統(tǒng)

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n“;} void log_menu()

      //主界面登錄菜單

      {

      system(”color fd“);

      header();

      cout<<”nttt< 請

      份 >n“;

      cout<<”ntttt1: 管理員nntttt2: 讀

      者nntttt0: 退

      出nt您的選擇是: “;choice: cin>>choice;

      cin.ignore();

      //清除以回車結(jié)束的輸入緩沖區(qū)的內(nèi)容,消除上一次輸入對下一次輸入的影響

      switch(choice)

      {

      case 1:

      log_admin();

      //管理員登錄,需密碼驗證

      break;

      case 2:

      reader_lr();

      //讀者登錄或注冊

      break;

      case 0:

      exit(1);

      //退出系統(tǒng)

      break;

      default:

      cout<<”nt您的操作有誤,請重新選擇(0→2): “;

      goto choice;

      } } void admin_menu()

      //管理員管理菜單

      {

      system(”cls“);

      system(”color f9“);

      cout<<”t

      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      系★統(tǒng)★管★理★界★面

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      1: 添加新的圖書資料

      2: 修改已有圖書資料

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      3: 刪除已有圖書資料

      4: 查找已有圖書資料

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      5: 查看所有圖書資料

      6: 修改讀者用戶信息

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      7: 刪除讀者用戶信息

      8: 查看所有讀者信息

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      9: 返回系統(tǒng)登錄界面

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

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n“;

      cout<<”nt請選擇您需要的服務序號: “;choice: cin>>choice;

      cin.ignore();

      switch(choice)

      {

      case 1:

      //添加圖書

      addBook();

      bm.~BookManage();

      break;

      case 2:

      //修改圖書

      reviseBook();

      bm.~BookManage();

      break;

      case 3:

      //刪除圖書

      delBook();

      bm.~BookManage();

      break;

      case 4:

      //查找圖書

      absearch_menu();

      break;

      case 5:

      //查看全部圖書

      bm.show_book();

      cout<<”nt顯示完畢!“;

      system(”pause“);

      admin_menu();

      break;

      case 6:

      //修改讀者

      reviseReader();

      rm.~ReaderManage();

      break;

      case 7:

      //刪除讀者

      delReader();

      rm.~ReaderManage();

      break;

      case 8: //查看所有讀者

      rm.show_reader();

      cout<<”nt顯示完畢!“;

      system(”pause“);

      admin_menu();

      break;

      case 9: //返回系統(tǒng)登錄界面

      system(”cls“);

      log_menu();

      case 0: //退出系統(tǒng)

      exit(1);

      break;

      default:

      cout<<”nt您的操作有誤,請重新選擇(0→7): “;

      goto choice;

      } } void reader_menu()

      //讀者服務菜單

      {

      system(”cls“);

      system(”color f9“);

      cout<<”t

      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      讀★者★服★務★界★面

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      1: 借 閱 圖 書

      2: 歸 還 圖 書

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      3: 查 找 圖 書

      4: 借 閱 情 況

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      5: 返 上 一 級

      0: 退 出 系 統(tǒng)

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n“;

      cout<<”nt請選擇您需要的服務序號: “;choice: cin>>choice;

      cin.ignore();

      switch(choice)

      {

      case 1:

      cout<<”nt請輸入您欲借閱的圖書書號: “;

      bm.br_book();

      bm.~BookManage();

      break;

      case 2:

      cout<<”nt請輸入您欲歸還的圖書書號: “;

      bm.br_book();

      bm.~BookManage();

      break;

      case 3:

      bsearch_menu();

      break;

      case 4:

      rn_search();

      break;

      case 5:

      system(”cls“);

      reader_lr();

      break;

      case 0:

      exit(1);

      break;

      default:

      cout<<”nt您的操作有誤,請重新選擇(0→5):

      goto choice;

      } } void bsearch_menu()

      //讀者查找書籍菜單

      {

      system(“color f2”);

      cout<<“ttt☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n”;cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      書★籍★查★找★界★面

      ☆n”;

      cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      1: 按 書號查找

      ☆n”;

      cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      2: 按 書名查找

      ☆n”;

      cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      3: 按 作者查找

      ☆n”;

      cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      4: 返 回 上 級

      ☆n”;

      cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      0: 退 出 系 統(tǒng)

      ☆n”;cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n”;

      int bsc;//book search choice cout<<“nt請輸入您需要的服務序號: ”;

      cin>>bsc;

      cin.ignore();

      switch(bsc){

      case 1:

      bnu_search();

      break;

      case 2:

      bna_search();

      “;

      break;

      case 3:

      bau_search();

      break;

      case 4:

      reader_menu();

      break;

      case 5:

      exit(1);

      default:

      cout<<”nt操作有誤,請重新選擇<0→4>“;

      break;

      }

      }

      void absearch_menu()

      //管理員查找書籍菜單

      {

      system(”color f2“);

      cout<<”ttt☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      書★籍★查★找★界★面

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      1: 按 書號查找

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      2: 按 書名查找

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      3: 按 作者查找

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      4: 返 回 上 級

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      0: 退 出 系 統(tǒng)

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n“;

      int bsc;//book search choice

      cout<<”nt請輸入您需要的服務序號: “;

      cin>>bsc;

      cin.ignore();

      switch(bsc)

      {

      case 1:

      bnu_search();

      break;

      case 2:

      bna_search();

      break;

      case 3:

      bau_search();

      break;

      case 4:

      admin_menu();

      break;

      case 5:

      exit(1);

      default:

      cout<<”nt操作有誤,請重新選擇<0→4>“;

      break;

      }

      } void reader_lr()//讀者登錄或注冊菜單 {

      system(”cls“);

      header();

      system(”color f1“);

      cout<<”nttt< 讀

      面 >n“;

      cout<<”nttt

      1: 登

      錄t2: 注

      冊nnttt

      3: 返

      回t0: 退

      出nt您的選擇是: “;

      int rlc;//reader login choice choice: cin>>rlc;

      cin.ignore();

      switch(rlc)

      {

      case 1:

      //已注冊讀者登錄

      cout<<”nt請輸入您的姓名: “;

      char rn[10];//reader name

      cin>>rn;

      r.set_rname(rn);

      if(rm.log_reader(r))

      {

      cout<<”nt登錄成功!“;

      system(”pause“);

      reader_menu();

      }

      else

      cout<<”nt登錄失敗!新用戶請先注冊!“;

      system(”pause“);

      reader_lr();

      break;

      case 2:

      //新用戶注冊

      rm.reg_reader();

      rm.~ReaderManage();

      system(”pause“);

      reader_lr();

      break;

      case 3:

      system(”cls“);

      log_menu();

      case 0:

      exit(1);

      break;

      default:

      cout<<”nt您的操作有誤,請重新選擇(0→2):

      goto choice;

      } } void log_admin()

      //管理員登錄

      {

      cout<<“nt請輸入管理員密碼:”;

      int key;

      cin>>key;

      if(key==14125)

      {

      cout<<“nt登錄成功!nnt”;

      system(“pause”);

      admin_menu();

      //管理員操作菜單

      }

      else

      {cout<<“nt登錄失敗!原因是密碼錯誤!n”;

      cout<<“nt請選擇 <1:返回上一級菜單

      0:退出系統(tǒng)>

      cin>>choice;

      cin.ignore();

      switch(choice)

      ”;“;

      {

      case 1:

      system(”cls“);

      log_menu();

      break;

      case 0:

      exit(1);

      break;

      default:

      cout<<”nt操作有誤,請重新選擇(0/1)“;

      }

      } } void rn_search()

      //按書號查找函數(shù)

      {

      char rn[10];//reader name

      cout<<”nt請輸入您的姓名:“;

      cin>>rn;

      int index=bm.rn_search(rn);

      if(index>=0)

      bm.show_book(index);

      else

      cout<<”nt對不起,系統(tǒng)無您的借閱記錄!“;

      cout<<”nt“;

      system(”pause“);

      reader_menu();

      } void bnu_search()

      //按書號查找函數(shù)

      {

      char bnu[10];

      cout<<”nt請輸入您要查找的書號:“;

      cin>>bnu;

      int index=bm.bnu_search(bnu);

      if(index>=0)

      bm.show_book(index);

      else

      cout<<”nt對不起,系統(tǒng)無該書籍記錄!“;

      cout<<”nt“;

      system(”pause“);

      bsearch_menu();

      }

      void bna_search()

      //按書名查找函數(shù)

      {

      cout<<”nt請輸入您要查找的書名:“<

      char bna[20];

      cin>>bna;

      int index=bm.bna_search(bna);

      if(index>=0)

      bm.show_book(index);

      else

      cout<<”nt對不起,系統(tǒng)無該書籍記錄!“;

      cout<<”nt“;

      system(”pause“);

      bsearch_menu();

      }

      void bau_search()

      //按作者查找函數(shù)

      {

      cout<<”nt請輸入您要查找的作者:“<

      char bau[10];

      cin>>bau;

      int index=bm.bau_search(bau);

      if(index>=0)

      bm.show_book(index);

      else

      cout<<”nt對不起,系統(tǒng)無該書籍記錄!“;

      cout<<”nt“;

      system(”pause“);

      bsearch_menu();

      }

      void addBook()

      //新增書籍函數(shù)

      { char numb[10];

      //書號

      char nameb[20];

      //書名

      char authorb[10];//作者

      Book book;

      //書籍結(jié)構(gòu)體對象book

      int tag1;input1:cout<<”nt請輸入新書書號:“;

      cin>>numb;

      int index=bm.bnu_search(numb);

      if(index==-1)

      {

      cout<<”nt系統(tǒng)目前尚無該書記錄,您可以繼續(xù)操作!n“;

      cout<<”nt請輸入新書書名:“;

      cin>>nameb;

      cout<<”nt請輸入新書作者:“;

      cin>>authorb;

      tag1=0;

      book.set_bnum(numb);

      book.set_bname(nameb);

      book.set_bauthor(authorb);

      book.set_tag(tag1);

      bm.add(book);

      cout<<”nt恭喜您!新書資料錄入成功!“;

      }

      else

      {

      cout<<”nt對不起,該書號紀錄已存在!請重新輸入!“;

      goto input1;

      }

      system(”pause“);

      admin_menu();} void reviseBook()

      //修改書籍函數(shù)

      {

      char numb[10];

      char nameb[20];

      char authorb[10];

      Book book;

      int index=-1;input2: cout<<”nt請輸入您要修改書籍的書號:“;

      cin>>numb;

      index=bm.bnu_search(numb);

      if(index==-1)

      {

      cout<<”nt對不起,您輸入的書號不存在,請重新輸入!“<

      goto input2;

      return;

      }

      bool sta=bm.in(index);//判斷是否在館

      if(sta)

      { cout<<”nt該書目前處于<在架>狀態(tài),您可以繼續(xù)操作!“;

      cout<<”nt請輸入更改后的書名:“;

      cin>>nameb;

      cout<<”nt請輸入更改后的作者:“;

      cin>>authorb;

      book.set_bnum(numb);

      book.set_bname(nameb);

      book.set_bauthor(authorb);

      bm.revise(book,index);

      cout<<”nt恭喜您!書籍資料修改成功!“;}

      else

      cout<<”nt該書已被借出,請于讀者歸還后再進行相關操作!“<

      system(”pause“);

      admin_menu();

      } void delBook()

      //刪除書籍函數(shù)

      {

      char numb[10];

      cout<<”nt請輸入您要刪除書籍的書號:“;

      cin>>numb;

      int index=bm.bnu_search(numb);

      if(index>=0)

      {

      cout<<”nt您確定要刪除該書記錄嗎(y/n)

      “;

      char y;

      cin>>y;

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

      {

      bm.deleteBook(index);

      cout<<”nt刪除成功!“;

      }

      else

      cout<<”nt刪除取消!“;

      }

      else

      cout<<”nt對不起,系統(tǒng)沒有該圖書記錄!“;

      system(”pause“);

      admin_menu();

      } void reviseReader()//修改讀者用戶函數(shù)

      {

      char namer[10];

      Reader reader;get1:

      cout<<”nt請輸入你要修改讀者用戶的姓名: “;

      cin>>namer;

      int index=rm.search(namer);

      if(index==-1)

      {

      cout<<”nt對不起,系統(tǒng)無改讀者記錄,重新輸入請按1,返回請按0:

      int a;

      cin>>a;get2:

      cin.ignore();

      switch(a)

      {

      case 1:

      goto get1;

      break;

      case 0:

      system(“pause”);

      admin_menu();

      break;

      default:

      cout<<“nt您的操作有誤,請重新選擇(0/1):

      ”;

      goto get2;

      }

      return;

      }

      “;

      else

      {

      char namer[10];

      char classr[10];

      char telr[10];

      Reader reader;

      cout<<”nt請輸入更改后的讀者姓名:“;

      cin>>namer;

      cout<<”nt請輸入更改后的班級名稱:“;

      cin>>classr;

      cout<<”nt請輸入更改后的聯(lián)系電話:“;

      cin>>telr;

      reader.set_rname(namer);

      reader.set_rclass(classr);

      reader.set_rtel(telr);

      cout<<”nt是否真的修改該記錄(y/n?):“;

      char y;

      cin>>y;

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

      { rm.revise(reader,index);

      cout<<”nt修改成功!n“;

      }

      else

      cout<<”nt操作取消!n“;

      }

      system(”pause“);

      admin_menu();

      }

      void delReader()

      //刪除讀者用戶函數(shù)

      {

      cout<<”nt請輸入您要刪除的讀者用戶的姓名:“<

      char namer[10];

      cin>>namer;

      int index=rm.search(namer);

      if(index>=0)

      {

      cout<<”nt是否真的刪除該記錄(y/n?): “;

      char y;

      cin>>y;

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

      {

      rm.delete_reader(index);

      cout<<”nt刪除成功!n“;

      }

      else

      cout<<”nt操作取消!n“;

      }

      else

      cout<<”nt對不起,系統(tǒng)尚無該讀者記錄!“;

      system(”pause“);

      admin_menu();

      } };//********主函數(shù)******** int main(){

      system(”color fd“);Menu menu;//定義菜單結(jié)構(gòu)體對象menu

      cout<<”ttt 文計091-1 龐麗萍 200990514125

      “;cout<<”ttt

      當前日期:2011-6-22 星期三“;cout<<”ttt

      當前時間:08:00

      “;cout<<”nttt

      ★ 歡 “;cout<<”★ 迎 “;

      } cout<<”★ 進 “;cout<<”★ 入 ★nn";menu.log_menu();return 0;四.程序正確性驗證

      1主頁面

      2.管理員登陸頁面

      3.圖書添加

      五.課程設計過程中出現(xiàn)的問題、原因及解決方法

      1.用戶登錄密碼時,不能使用暗碼來保護密碼。(未解決成功)2.每個界面都能退出到主頁面,而不是直接跳出系統(tǒng)。(以解決)3.書名字長太多影響書籍、作者、數(shù)量等之間的一一對應關系。(為解決成功)

      六.課程設計的主要收獲

      通過這幾天學習設計圖書信息管理系統(tǒng),認識到一切看似簡單的事情只有自己動手做,明白了其中的原理才會更好的把它變成自己的東西。圖書管理系統(tǒng)主要用到了文件的輸入輸出,以及利用簡單的順序查找知識,加深了對數(shù)據(jù)結(jié)構(gòu)的理解與應用。對于這次的課程設計,首先,許多知識不僅僅只是課本上的,需要我們自己去圖書館或網(wǎng)上收集資料。其次,編程過程終遇到各種錯誤,需要我們耐心分析,討論,最后得出正確結(jié)果。第三,程序無錯,進行調(diào)試,然后進行加工修改優(yōu)化。

      七.對今后課程設計的建議

      希望老師可以分小組做課程設計,題目可以相應的增大難度。分組可以鍛煉團對合作能力,隊員可以相互討論解決問題,彼此能夠激發(fā)更多的思想,做出更完善的作品,同時也防止了互相拷貝的情況,讓每個同學都積極的參與到設計中,而不是坐享其成。

      第五篇:財務管理CAI項目修改意見

      《財務管理CAI項目》修改意見 中山大學新華學院管理學系李安蘭

      針對該項目立項評審時專家提出,財務管理課程的內(nèi)容涉及大量的數(shù)學運算,如何利用PPT課件解決的意見,現(xiàn)提出如下解決辦法:

      一、從教學經(jīng)驗來看,利用公式編輯程序“Microsoft公式3.0”能解決目前財務管理教學中的所有數(shù)學公式的輸入問題。

      二、學生在學習財務管理時,已經(jīng)學習了《高等數(shù)學》等相關數(shù)學知識,財務管理學習中主要是一些基本的數(shù)學方法的運用,很少數(shù)學推導。目前碰到的最復雜的也就是等比數(shù)列的求和以及一元回歸方程的運用,這些都已經(jīng)在前面的教學中輸入了ppt課件。

      三、財務管理是一門理論和實踐都比較成熟的專業(yè)課,一方面,很多復雜的數(shù)學計算在實踐中已經(jīng)通過列表等形式簡化了,比如資金的時間價值計算中涉及的指數(shù)運算,財務管理就有復利終值系數(shù)表、復利現(xiàn)值系數(shù)表、年金終值系數(shù)表、年金現(xiàn)值系數(shù)表等附表,計算時比較簡單;另一方面,教學中會運用大量的案例教學,利用PPT既節(jié)省板書時間,又有利于學生理解案例意思??傊?,從08財務管理、08市場營銷、08電子商務和08工商管理的教學實踐來看,利用公式編輯程序Microsoft公式3.0,PPT課件的制作已經(jīng)得以解決。另外,在教學過程中,為了強化某個知識點,會輔以必要的粉筆板書。從教學實踐來看,利用PPT課件教學,不僅增加了數(shù)學方法的直觀性,更節(jié)省了板書時間,提高了案例教學的效果。所以,筆者認為財務管理CAI課件項目是可行的。

      下載數(shù)據(jù)結(jié)構(gòu)CAI系統(tǒng)項目手冊word格式文檔
      下載數(shù)據(jù)結(jié)構(gòu)CAI系統(tǒng)項目手冊.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關范文推薦

        美容院項目手冊

        1、 面部基礎補水護理 作用:補充肌膚基底水庫深入肌膚底層,從根源解除惱人色斑問題,提升肌膚自身 鎖水能力。操作流程: (1)潔面。取3克雪顏凈白潔面乳清潔面部(5分鐘) (2)爽膚 3-......

        項目執(zhí)行手冊

        【前期方案對接】----標準 A.活動主題和副題(直接了當 耐人尋味 當下流行 貼合商家等) 現(xiàn)在主流多為諧音,或?qū)⒐久智度牖顒又黝},例: 大牌夏價,黃金陪嫁 非裝不可,就在當夏 飾界......

        數(shù)據(jù)結(jié)構(gòu)課程設計—西文圖書管理系統(tǒng)

        數(shù)據(jù)結(jié)構(gòu)課程設計報告 課程名稱:數(shù)據(jù)結(jié)構(gòu)課程設計課設題目: 西文圖書管理系統(tǒng) 教師姓名: 郭艷本科生姓名: 王瑞林本科生學號: 20121002932 班號:191124 日期:2014年6月20日 題號......

        數(shù)據(jù)結(jié)構(gòu)課程設計—java通訊錄管理系統(tǒng)

        import java.io.*; import java.util.*; public class LittleProgram { static boolean isDelete = true; static boolean isFind = true; public static void main(String......

        數(shù)據(jù)結(jié)構(gòu)大型實驗報告-銀行系統(tǒng)模擬

        數(shù)據(jù)結(jié)構(gòu)大型實驗報告 軟工1102班 201126630230 周云閣 問題描述..........................................................................................................

        通訊錄管理系統(tǒng)-數(shù)據(jù)結(jié)構(gòu)課程設計報告

        信息科學與技術(shù)學院 程序設計基礎課程設計報告 題目名稱: 通信管理系統(tǒng) 學生姓名: 學 號: 專業(yè)班級: 指導教師: 2016年 12月 31日 目錄 1.課程設計題目與要求 .......................

        數(shù)據(jù)結(jié)構(gòu)課程設計-職工管理系統(tǒng)(精選五篇)

        目錄 一、前言--------2 二、需求分析--3 三、概要設計--4 四、詳細設計--5 五、調(diào)試分析--6 六、用戶使用說明---------------------------7 七、測試結(jié)果--8 八、......

        計算機系統(tǒng)操作員手冊

        XX縣人民醫(yī)院 計算機系統(tǒng)操作員手冊 信息科 2013 目錄 一、計算機網(wǎng)絡系統(tǒng)管理制度總則 二、計算機硬件管理 三、計算機軟件管理 四、移動存儲介質(zhì)管理 五、計算機網(wǎng)絡管理......