2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩31頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  C語言課程設計報告</b></p><p>  2011~2012學年第2學期</p><p>  課 程:C語言課程設計</p><p>  課程設計名稱:圖書管理系統</p><p>  2012年05月04日</p><p><b>  

2、一、需求分析</b></p><p>  為了滿足圖書管理的要求,通過計算機技術給圖書管理人員和讀者借、還書帶來便利。使用c語言編寫了圖書此管理系統。本系統主要實現圖書信息管理的功能,通過此系統可對圖書館庫存圖書信息進行管理和維護操作。實現了圖書館內管理的幾乎所有功能,包括查詢、添加、刪除、修改圖書信息,以及對圖書信息的存檔、讀取、排序。所設計的系統以菜單方式工作,為用戶提供清晰的使用提示,依據用戶的

3、選擇來進行各種處理,并且在此過程中能夠盡可能的處理用戶使用過程中可能出現的異常情況。圖書信息包括作者名、書名、出版社、出版時間、圖書編號、價格、借書人姓名、借書人性別、借書人學號。圖書信息的錄入和顯示要求有一定的規范格式,錄入的圖書信息用文件形式保存,并可以對其進行瀏覽、查詢、修改、刪除等基本操作。整個程序實現鏈表操作,對圖書信息的操作逐個地進行。</p><p><b>  二、算法設計:</b

4、></p><p><b>  1.設計思想:</b></p><p>  整個系統制造的而過程中,涉及了較多C語言知識點,對于不同的數據類型、程序控制結構、數據結構作以分析和總結,并結合這個課題進行綜合的應用,在一定程度上做到了對所學知識融會貫通。進一步加深、鞏固了所學的專業的基本理論知識,培養了綜合分析問題、解決問題的能力。在設計程序時,實現了程序的模塊化、

5、結構化。在主函數中調用各種子函數,操作界面簡單,易操作。 </p><p><b>  2.設計表示:</b></p><p>  (1)整個系統除了主函數外,另外還有各種功能子函數,利用循環語句do-while()和選擇語句switch()實現各個子函數的調用,系統根據輸入的數字選項來調用相應的函數,以實現相應的功能。主函數中首先從文件讀取信息到鏈表中,以用于后面其

6、他函數的操作??傮w主要實現了圖書的錄入、存儲、查詢、添加、刪除、修改、排序等功能。</p><p> ?。?)在主函數中選擇管理員登錄或者學生登錄,并且輸入正確密碼后才可以進入系統,若連續3次輸入密碼錯誤將會被強制退出。</p><p>  (3) Create_Books_Doc();這是一個指針函數,它主要實現了鏈表的創建,它返回的時一個單向鏈表的頭。其他函數調用時只需調用它返回的頭即

7、可。Clear();此為清屏操作,在運行中可以隨時將屏幕清空。</p><p>  (4) Print_Book_Doc ();這個函數為鏈表的輸出函數,把鏈表的頭傳給函數后,可以表格的形式輸出整個鏈表的所有信息。、</p><p>  (5)save();這個函數為保存信息到文件的函數,使用時將鏈表的頭傳給函數,函數可將整個鏈表的所有信息存入到磁盤文件中。并覆蓋掉源文件,以便以后調用。R

8、ead()這個函數為讀取文件的函數,將文件中的數據讀入鏈表中。 </p><p>  (7)search_book1();search_book2();search_book3();search_book4();search_book5();這五個函數為查詢圖書信息函數,它們分別按編號、書名、作者、借書人姓名、借書人學號進行查詢。查詢到信息后返回信息所在節點,查詢不到則返回空指針。</p>&l

9、t;p>  (8)InsertDoc();Sorting_order1();Sorting_order2();DeleteDoc ();info_change ();這四個函數為功能函數,InsertDoc();添加圖書信息、Sorting_order1();將圖書按編號排序、Sorting_order2();將圖書按價格排序、DeleteDoc ();刪除圖書信息、info_change ();修改圖書信息。調用時將鏈表頭指針傳

10、遞給函數,函數返回經過功能操作后的頭指針。</p><p><b>  3.結構體系設計:</b></p><p><b>  以下為部分流程圖:</b></p><p>  圖書管理系統主界面流程圖</p><p>  管理員版圖書管理系統流程圖</p><p>  圖書查

11、詢系統主界面流程圖</p><p><b>  排序頁面</b></p><p>  5.設計過程中的想法與程序中的不足:</p><p>  總的來說這個程序大致實現了題目的要求,但是這套程序仍然存在著很多的問題與不足。比如,程序中主函數寫的有點繁瑣,有太多的嵌套,不是那么井然有序,條理清晰,程序注釋也不是很完善,對信息處理功能還有些不足之處

12、,提示信息不明確。還有就是沒能做到模糊查詢。</p><p>  這個系統主要是參照課本手機通訊錄模版編寫的,同時也得到了老師和同學的一些幫助。我在做系統的過程中也遇到了很多問題,有的是知識不足,有的是考慮不夠周全。事實證明,只靠自己的知識面還是很窄,獨立處理問題能力不是很強,以后還要加強對c語言的學習。 </p><p>  我認為對于C語言編寫的程序來說,使用方法大致都是一樣的,所以如

13、果要改進的話,就是要改進一些算法,盡量把界面編寫清楚,提示信息全面,方便易用。</p><p><b>  三、調試與測試:</b></p><p>  上機操作(部分截圖)</p><p>  系統主界面(選擇數字進入,退出系統)</p><p>  選擇1輸入密碼進入管理員版系統,然后出現功能菜單;</p>

14、;<p>  選擇1進入錄入系統,錄入后瀏覽;</p><p><b>  選擇8進行清屏;</b></p><p>  由于版面原因,其他操作頁面可以上機運行進行操作,在此就不再一一列出。</p><p><b>  四、小節:</b></p><p>  在這一個星期的實踐中,通過

15、編寫這個圖書管理系統,我體會到了c語言學習的實用性。將理論和實踐結合在一起,用先進的計算機工具方便人們的生活。C語言程序的編寫首先要從大局考慮,把自己編寫整個程序的思想都寫在草稿上,這樣有助于自己編寫程序,在編寫時要完善注釋,方便其他人理解程序。編寫的程序從理論上來說并沒有錯,但一上機就問題不斷。甚至有些課本上的知識照搬不變,也不能得到正確的結果。有時一個程序改了一遍又一遍,但就是不能成功,編程顯得枯燥乏味,看似簡單的程序題,在調試時卻

16、屢屢出錯。經反復的修改后,結果正確了,這時所有的乏味都顯得那么無力,一切都是值得的。</p><p>  我認為,開發一套系統,最重要的是細心,并且思考要全面,結合實際,充分考慮到客戶的需求和現實意義。不管什么系統,只用運用到實際應用中,才具有現實意義。 所以c語言程序的實用性很強,我們以后還要更加努力認真地學習編程語言。</p><p><b>  附錄:</b>&

17、lt;/p><p><b>  源代碼:</b></p><p>  #include<stdio.h></p><p>  #include<math.h></p><p>  #include<string.h></p><p>  #include<st

18、dlib.h></p><p>  struct books_list{</p><p>  char author[20]; /*作者名*/</p><p>  char bookname[20]; /*書名*/ </p><p>  char publisher[20];

19、 /*出版單位*/</p><p>  char pbtime[15]; /*出版時間*/</p><p>  char booknum[10]; /*圖書編號*/</p><p>  float price; /*價格*/</p><p>  char

20、 lendername[20]; /*借書人姓名*/</p><p>  char lendersex[10]; /*借書人性別*/</p><p>  char lendernum[20]; /*借書人學號*/</p><p>  struct books_list * next; /*鏈表的指針域

21、*/</p><p><b>  };</b></p><p><b>  /*清屏函數*/</b></p><p>  void Clear()</p><p><b>  { </b></p><p>  system("cls"

22、);</p><p><b>  }</b></p><p>  /*保存數據至文件*/</p><p>  void save(struct books_list * head)</p><p><b>  {</b></p><p>  struct books_list

23、 *p;</p><p><b>  FILE *fp;</b></p><p><b>  p=head;</b></p><p>  fp=fopen("f1.txt","w+"); </p><p>  fprintf(fp,"%20s%20s

24、%20s%20s%20s%20f%20s%20s%20s",p->booknum,p->bookname,p->author,p->publisher,p->pbtime,p->price,p->lendername,p->lendersex,p->lendernum);</p><p>  while(p->next!= NULL){<

25、/p><p>  p=p->next;</p><p>  fprintf(fp,"%20s%20s%20s%20s%20s%20f%20s%20s%20s",p->booknum,p->bookname,p->author,p->publisher,p->pbtime,p->price,p->lendername,p->

26、;lendersex,p->lendernum);</p><p><b>  }</b></p><p>  fclose(fp);</p><p>  printf("已將數據保存到 f1.txt 文件\n");</p><p><b>  }</b></p>

27、;<p><b>  /*插入*/</b></p><p>  struct books_list * InsertDoc(struct books_list * head,struct books_list * book)</p><p><b>  {</b></p><p><b>  cha

28、r a;</b></p><p>  struct books_list * ptr,* p;</p><p><b>  p=head;</b></p><p><b>  ptr=book;</b></p><p>  if(head==NULL){</p><p

29、><b>  head=ptr;</b></p><p>  head->next=NULL;</p><p><b>  }</b></p><p><b>  else{</b></p><p>  while(p->next!=NULL)</p&g

30、t;<p>  p=p->next;</p><p>  p->next=ptr;</p><p>  ptr->next=NULL;</p><p><b>  }</b></p><p>  printf("是否保存插入的圖書信息?(Y/N)");</p>

31、;<p>  getchar();</p><p>  scanf("%c",&a);</p><p>  if(a=='Y'||a=='y')</p><p>  save(head);</p><p><b>  else</b></p&

32、gt;<p>  printf("\n未保存插入后數據!\n\n");</p><p>  return head;</p><p><b>  }</b></p><p>  /*新建鏈表頭節點*/</p><p>  struct books_list * Create_Books_

33、Doc()</p><p><b>  {</b></p><p>  struct books_list * head,*p;</p><p>  int size=sizeof(struct books_list);</p><p>  head=NULL;</p><p>  char fl

34、ag='Y';</p><p>  while(flag=='Y'||flag=='y'){</p><p>  p=(struct books_list *)malloc(sizeof(struct books_list));/*開辟新空間,存入數據,添加進鏈表*/</p><p><b>  here0:

35、</b></p><p>  printf("\n 請輸入圖書編號:");</p><p>  getchar();</p><p>  scanf("%s",p->booknum);</p><p>  printf("\n

36、 請輸入圖書書名:");</p><p>  getchar();</p><p>  scanf("%s",p->bookname);</p><p>  printf("\n 請輸入圖書作者名:");</p><p> 

37、 getchar();</p><p>  scanf("%s",p->author);</p><p>  printf("\n 請輸入圖書出版社:");</p><p>  getchar();</p><p>  scanf("%s"

38、,p->publisher);</p><p>  printf("\n 請輸入圖書出版時間:");</p><p>  getchar();</p><p>  scanf("%s",p->pbtime);</p><p>  printf("

39、;\n 請輸入圖書價格:");</p><p>  getchar();</p><p>  if(scanf("%f",&p->price)!=1){</p><p>  printf("價格輸入有誤,請重新輸入!");</p><p> 

40、 goto here0;</p><p><b>  }</b></p><p>  printf("\n 請輸入借書人姓名:");</p><p>  getchar();</p><p>  scanf("%s",p->lendern

41、ame); </p><p>  printf("\n 請輸入借書人性別:");</p><p>  getchar();</p><p>  scanf("%s",p->lendersex); </p><p>  printf("\n

42、 請輸入借書人學號:");</p><p>  getchar();</p><p>  scanf("%s",p->lendernum);</p><p>  printf("\n");</p><p>  head=InsertDoc(head,p);<

43、;/p><p>  printf(" ━━━━ 添加成功!━━━━");</p><p>  printf("\n 繼續添加(輸入‘Y’或‘y’繼續,否則結束)?");</p><p>  getchar();</p><p

44、>  scanf("%c",&flag);</p><p>  printf("\n");</p><p><b>  }</b></p><p>  return head;</p><p><b>  }</b></p><

45、;p><b>  /*修改操作*/</b></p><p>  void info_change(struct books_list * head)</p><p><b>  {</b></p><p>  struct books_list * p;</p><p>  int pandu

46、an=0; </p><p>  char temp[20],a;</p><p><b>  p=head;</b></p><p>  if(head==NULL)</p><p>  printf(" ━━━━ 圖書庫為空!━━━━\n");</p><p&

47、gt;<b>  else{</b></p><p>  printf("請輸入要修改圖書的書名:");</p><p>  getchar();</p><p>  scanf("%s",temp);</p><p>  while(p!=NULL){</p>&l

48、t;p>  if(strcmp(p->bookname,temp)==0){</p><p>  printf("\n 請輸入修改后的圖書編號:");</p><p>  getchar();</p><p>  scanf("%s",p->booknum);</p

49、><p>  printf("\n 請輸入修改后的圖書書名:");</p><p>  getchar();</p><p>  scanf("%s",p->bookname);</p><p>  printf("\n

50、 請輸入修改后的圖書作者名:");</p><p>  getchar();</p><p>  scanf("%s",p->author);</p><p>  printf("\n 請輸入修改后的圖書出版社:");</p><p>  get

51、char();</p><p>  scanf("%s",p->publisher);</p><p>  printf("\n 請輸入修改后的圖書出版時間:");</p><p>  getchar();</p><p>  scanf("%s&q

52、uot;,p->pbtime);</p><p>  printf("\n 請輸入修改后的圖書價格:");</p><p>  getchar();</p><p>  scanf("%f",&p->price);</p><p>  print

53、f("\n 請輸入修改后的借書人姓名:");</p><p>  getchar();</p><p>  scanf("%s",p->lendername); </p><p>  printf("\n 請輸入修改后的借書人性別:&q

54、uot;);</p><p>  getchar();</p><p>  scanf("%s",p->lendersex); </p><p>  printf("\n 請輸入修改后的借書人學號:");</p><p>  getchar();</p&

55、gt;<p>  scanf("%s",p->lendernum);</p><p>  printf("\n");</p><p>  getchar();</p><p>  panduan=1;</p><p><b>  }</b></p>

56、<p>  p=p->next;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(panduan==0){</p><p>  printf("\n ━━━━ 沒有此圖書記

57、錄! ━━━━\n\n");</p><p><b>  }</b></p><p><b>  else{</b></p><p>  printf("是否保存修改后的圖書信息?(Y/N)");</p><p>  scanf("%c",&

58、;a);</p><p>  if(a=='Y'||a=='y')</p><p>  save(head);</p><p><b>  else</b></p><p>  printf("\n未保存修改后數據!\n\n");</p><p>

59、;<b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  /*按照圖書號查詢*/</p><p>  void search_book1(struct books_list *head)</p

60、><p><b>  {</b></p><p><b>  int a=0;</b></p><p>  struct books_list * p;</p><p>  char temp[20];</p><p><b>  p=head;</b>&l

61、t;/p><p>  if(head==NULL)</p><p>  printf(" ━━━━ 圖書庫為空!━━━━\n");</p><p><b>  else{</b></p><p>  printf("請輸入您要查找圖書的編號: ");</p>

62、;<p>  getchar();</p><p>  scanf("%s",temp);</p><p>  while(p!= NULL){</p><p>  if(strcmp(p->booknum,temp)==0){</p><p>  printf("\n圖書已找到!\n&quo

63、t;);</p><p>  printf("\n");</p><p>  printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━━┳━━━━━┳━━━━━┳━━━━━━┓\n"); </p><p>  printf("┃圖書號┃ 書 名 ┃ 作 者┃ 出版單位 ┃ 出

64、版時間 ┃ 價格 ┃借書人姓名┃借書人性別┃ 借書人學號 ┃\n"); </p><p>  printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━━╋━━━━━╋━━━━━╋━━━━━━┫\n");</p><p>  printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.

65、12s┃%-8.2f┃%-10.11s┃%-10.10s┃%-12.12s┃\n",p->booknum,p->bookname,p->author,p->publisher,p->pbtime,p->price,p->lendername,p->lendersex,p->lendernum);</p><p>  printf("┗━━━

66、┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━━┻━━━━━┻━━━━━┻━━━━━━┛\n");</p><p>  printf("\n");</p><p><b>  a++;</b></p><p><b>  }</b></p><p>  p=

67、p->next;</p><p>  if(p==NULL&&a==0)</p><p>  printf("\n查詢完畢,未找到所要查詢的信息!\n");</p><p><b>  } </b></p><p><b>  }</b></p>

68、<p><b>  return;</b></p><p><b>  }</b></p><p>  /*按照圖書名查詢*/</p><p>  void search_book2(struct books_list *head)</p><p><b>  {</b

69、></p><p><b>  int a=0;</b></p><p>  struct books_list * p;</p><p>  char temp[20];</p><p><b>  p=head;</b></p><p>  if(head==NUL

70、L)</p><p>  printf(" ━━━━ 圖書庫為空!━━━━\n");</p><p><b>  else{</b></p><p>  printf("請輸入您要查找書本的名稱: ");</p><p>  getchar();</p>

71、;<p>  scanf("%s",temp);</p><p>  while(p!= NULL){</p><p>  if(strcmp(p->bookname,temp)==0){</p><p>  printf("\n圖書已找到!\n");</p><p>  print

72、f("\n");</p><p>  printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━━┳━━━━━┳━━━━━┳━━━━━━┓\n"); </p><p>  printf("┃圖書號┃ 書 名 ┃ 作 者┃ 出版單位 ┃ 出版時間 ┃ 價格 ┃借書人姓名┃借書人性別┃ 借書人學號

73、┃\n"); </p><p>  printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━━╋━━━━━╋━━━━━╋━━━━━━┫\n");</p><p>  printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-8.2f┃%-10.11s┃%-10.10s┃%-1

74、2.12s┃\n",p->booknum,p->bookname,p->author,p->publisher,p->pbtime,p->price,p->lendername,p->lendersex,p->lendernum);</p><p>  printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━━┻━

75、━━━━┻━━━━━┻━━━━━━┛\n");</p><p>  printf("\n");</p><p><b>  a++;</b></p><p><b>  }</b></p><p>  p=p->next;</p><p>

76、  if(p==NULL&&a==0)</p><p>  printf("\n查詢完畢,未找到所要查詢的信息!\n");</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  return;<

77、;/b></p><p><b>  }</b></p><p>  /*按照圖書作者查詢*/</p><p>  void search_book3(struct books_list *head)</p><p><b>  {</b></p><p><b&

78、gt;  int a=0;</b></p><p>  struct books_list * p;</p><p>  char temp[20];</p><p><b>  p=head;</b></p><p>  if(head==NULL)</p><p>  printf

79、(" ━━━━ 圖書庫為空!━━━━\n");</p><p><b>  else{</b></p><p>  printf("請輸入您要查找圖書的作者: ");</p><p>  getchar();</p><p>  scanf("%s&qu

80、ot;,temp);</p><p>  while(p!= NULL){</p><p>  if(strcmp(p->author,temp)==0){</p><p>  printf("\n圖書已找到!\n");</p><p>  printf("\n");</p><

81、;p>  printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━━┳━━━━━┳━━━━━┳━━━━━━┓\n"); </p><p>  printf("┃圖書號┃ 書 名 ┃ 作 者┃ 出版單位 ┃ 出版時間 ┃ 價格 ┃借書人姓名┃借書人性別┃ 借書人學號 ┃\n"); </p><p>

82、  printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━━╋━━━━━╋━━━━━╋━━━━━━┫\n");</p><p>  printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-8.2f┃%-10.11s┃%-10.10s┃%-12.12s┃\n",p->booknum,p-&g

83、t;bookname,p->author,p->publisher,p->pbtime,p->price,p->lendername,p->lendersex,p->lendernum);</p><p>  printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━━┻━━━━━┻━━━━━┻━━━━━━┛\n");</

84、p><p>  printf("\n");</p><p><b>  a++;</b></p><p><b>  }</b></p><p>  p=p->next;</p><p>  if(p==NULL&&a==0)</p

85、><p>  printf("\n查詢完畢,未找到所要查詢的信息!\n");</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  return;</b></p><p><b

86、>  }</b></p><p>  /*按照借書人姓名查詢*/</p><p>  void search_book4(struct books_list *head)</p><p><b>  {</b></p><p><b>  int a=0;</b></p>

87、;<p>  struct books_list * p;</p><p>  char temp[20];</p><p><b>  p=head;</b></p><p>  if(head==NULL)</p><p>  printf(" ━━━━ 圖書庫為空!━━━━

88、\n");</p><p><b>  else{</b></p><p>  printf("請輸入您要查找的圖書借書人姓名: ");</p><p>  getchar();</p><p>  scanf("%s",temp);</p><p&g

89、t;  while(p!= NULL){</p><p>  if(strcmp(p->lendername,temp)==0){</p><p>  printf("\n圖書已找到!\n");</p><p>  printf("\n");</p><p>  printf("┏━━━

90、┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━━┳━━━━━┳━━━━━┳━━━━━━┓\n"); </p><p>  printf("┃圖書號┃ 書 名 ┃ 作 者┃ 出版單位 ┃ 出版時間 ┃ 價格 ┃借書人姓名┃借書人性別┃ 借書人學號 ┃\n"); </p><p>  printf("┣━━━╋━━━━━

91、╋━━━━━╋━━━━━╋━━━━━━╋━━━━╋━━━━━╋━━━━━╋━━━━━━┫\n");</p><p>  printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-8.2f┃%-10.11s┃%-10.10s┃%-12.12s┃\n",p->booknum,p->bookname,p->author,p

92、->publisher,p->pbtime,p->price,p->lendername,p->lendersex,p->lendernum);</p><p>  printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━━┻━━━━━┻━━━━━┻━━━━━━┛\n");</p><p>  printf(

93、"\n");</p><p><b>  a++;</b></p><p><b>  }</b></p><p>  p=p->next;</p><p>  if(p==NULL&&a==0)</p><p>  printf(&

94、quot;\n查詢完畢,未找到所要查詢的信息!\n");</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p&g

95、t;<p>  /*按照借書人學號查詢*/</p><p>  void search_book5(struct books_list *head)</p><p><b>  {</b></p><p><b>  int a=0;</b></p><p>  struct book

96、s_list * p;</p><p>  char temp[20];</p><p><b>  p=head;</b></p><p>  if(head==NULL)</p><p>  printf(" ━━━━ 圖書庫為空!━━━━\n");</p><

97、;p><b>  else{</b></p><p>  printf("請輸入您要查找圖書的借書人學號: ");</p><p>  getchar();</p><p>  scanf("%s",temp);</p><p>  while(p!= NULL){</

98、p><p>  if(strcmp(p->lendernum,temp)==0){</p><p>  printf("\n圖書已找到!\n");</p><p>  printf("\n");</p><p>  printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳

99、━━━━┳━━━━━┳━━━━━┳━━━━━━┓\n"); </p><p>  printf("┃圖書號┃ 書 名 ┃ 作 者┃ 出版單位 ┃ 出版時間 ┃ 價格 ┃借書人姓名┃借書人性別┃ 借書人學號 ┃\n"); </p><p>  printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━━╋━

100、━━━━╋━━━━━╋━━━━━━┫\n");</p><p>  printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-8.2f┃%-10.11s┃%-10.10s┃%-12.12s┃\n",p->booknum,p->bookname,p->author,p->publisher,p->pbtim

101、e,p->price,p->lendername,p->lendersex,p->lendernum);</p><p>  printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━━┻━━━━━┻━━━━━┻━━━━━━┛\n");</p><p>  printf("\n");</p>

102、<p><b>  a++;</b></p><p><b>  }</b></p><p>  p=p->next;</p><p>  if(p==NULL&&a==0)</p><p>  printf("\n查詢完畢,未找到所要查詢的信息!\n&

103、quot;);</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  /*

104、刪除操作*/</b></p><p>  struct books_list * DeleteDoc(struct books_list * head)</p><p><b>  {</b></p><p>  struct books_list * ptr1,* ptr2;</p><p><b&g

105、t;  int a=0;</b></p><p><b>  char b;</b></p><p>  char temp[20];</p><p>  printf(" [請輸入您要刪除的圖書書名]:");</p><p>  scanf(&qu

106、ot;%s",temp);</p><p>  while(head!=NULL&&strcmp(head->bookname,temp)==0){</p><p>  ptr2=head;</p><p>  head=head->next;</p><p>  free(ptr2);</p>

107、;<p><b>  a=1;</b></p><p>  printf("已成功刪除!");</p><p><b>  }</b></p><p>  if(head==NULL){</p><p>  printf("\n鏈表為空,無法刪除!\n\n

108、");</p><p>  return NULL;</p><p><b>  }</b></p><p>  ptr1=head;</p><p>  ptr2=head->next;</p><p>  while(ptr2!=NULL){</p><p&

109、gt;  if(strcmp(ptr2->bookname,temp)==0){</p><p>  ptr1->next=ptr2->next;</p><p>  free(ptr2);</p><p><b>  a=1;</b></p><p>  printf("已成功刪除!&quo

110、t;);</p><p><b>  }</b></p><p><b>  else</b></p><p>  ptr1=ptr2;</p><p>  ptr2=ptr1->next;</p><p><b>  }</b></p>

111、;<p>  if(ptr2==NULL&&a==0){</p><p>  printf("\n未找到要刪除的數據!\n\n");</p><p>  goto here10;</p><p><b>  }</b></p><p>  printf("是否保

112、存刪除后的圖書信息?(Y/N)");</p><p>  getchar();</p><p>  scanf("%c",&b);</p><p>  if(b=='Y'||b=='y')</p><p>  save(head);</p><p>

113、<b>  else</b></p><p>  printf("\n未保存刪除后數據!\n\n");</p><p><b>  here10:</b></p><p>  return head;</p><p><b>  }</b></p>

114、;<p><b>  /*瀏覽*/</b></p><p>  void Print_Book_Doc(struct books_list * head)</p><p><b>  {</b></p><p>  struct books_list * p1;</p><p>  i

115、f(head==NULL){</p><p>  printf("\n鏈表為空,無法輸出!\n\n");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  printf("┏━━━┳━━━━━┳━━━━━┳━

116、━━━━┳━━━━━━┳━━━━┳━━━━━┳━━━━━┳━━━━━━┓\n"); </p><p>  printf("┃圖書號┃ 書 名 ┃ 作 者┃ 出版單位 ┃ 出版時間 ┃ 價格 ┃借書人姓名┃借書人性別┃ 借書人學號 ┃\n"); </p><p>  printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━

117、━━━━━╋━━━━╋━━━━━╋━━━━━╋━━━━━━┫\n");</p><p>  for(p1=head;p1;p1=p1->next)</p><p>  printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-8.2f┃%-10.11s┃%-10.10s┃%-12.12s┃\n",p1-&

118、gt;booknum,p1->bookname,p1->author,p1->publisher,p1->pbtime,p1->price,p1->lendername,p1->lendersex,p1->lendernum);</p><p>  printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━━┻━━━━━┻━━━━━

119、┻━━━━━━┛\n");</p><p>  printf("\n");</p><p><b>  }</b></p><p><b>  /*讀文件*/</b></p><p>  struct books_list * Read()</p><

120、;p><b>  {</b></p><p>  struct books_list *p1,*head=NULL,*tail;</p><p>  FILE * fp;</p><p>  if((fp=fopen("f1.txt","r"))==NULL){ </p><p&

121、gt;  printf("File open error!\n");</p><p>  printf("此時文件中無圖書信息,請管理員先輸入圖書信息并進行保存。\n\n");</p><p><b>  goto end;</b></p><p><b>  }</b></p

122、><p>  while(!feof(fp)){</p><p>  p1=(struct books_list *)malloc(sizeof(struct books_list));</p><p>  fscanf(fp,"%s%s%s%s%s%f%s%s%s",p1->booknum,p1->bookname,p1->aut

123、hor,p1->publisher,p1->pbtime,&p1->price,p1->lendername,p1->lendersex,p1->lendernum);</p><p>  if(head==NULL)</p><p><b>  head=p1;</b></p><p><b&

124、gt;  else</b></p><p>  tail->next=p1;</p><p><b>  tail=p1; </b></p><p><b>  }</b></p><p>  tail->next=NULL; </p><p>  f

125、close(fp);</p><p><b>  end:</b></p><p>  return head;</p><p><b>  }</b></p><p>  /*按照圖書價格排序*/</p><p>  struct books_list * Sorting_

126、order1(struct books_list * head)</p><p><b>  {</b></p><p>  struct books_list *p1,*p2,*p3,*p4,*p5,*p6,*p7;</p><p><b>  int x=1;</b></p><p><b

127、>  char b;</b></p><p>  for(p1=head;p1->next!=NULL;p4=p1,p1=p1->next){</p><p><b>  p3=p1;</b></p><p>  for(p2=p1->next,p5=p7=p2;p2!=NULL;p7=p2,p2=p2-&g

128、t;next){</p><p>  if(p1->price>=p2->price){</p><p><b>  p3=p2;</b></p><p><b>  p5=p7;</b></p><p><b>  }</b></p><

129、p><b>  }</b></p><p>  if(p3!=p1){ /*說明p1->price>=p2->price成立*/</p><p>  if(x&&p1==head){ /*對p1==head時排序的處理*/</p><p>  p6=p1->next

130、;</p><p>  p1->next=p3->next;</p><p>  p3->next=p6;</p><p>  p5->next=p1;</p><p><b>  head=p3;</b></p><p><b>  p1=p3;</b&g

131、t;</p><p><b>  x=0;</b></p><p><b>  }</b></p><p>  else{ /*對p1!=head時排序的處理*/</p><p>  p6=p1->next;</p><p>  

132、p1->next=p3->next;</p><p>  p3->next=p6;</p><p>  p4->next=p3;</p><p>  p5->next=p1;</p><p><b>  p1=p3;</b></p><p><b>  }&

133、lt;/b></p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("是否保存排序后的圖書信息?(Y/N)");</p><p>  getchar();</p><p>  scanf(&

134、quot;%c",&b);</p><p>  if(b=='Y'||b=='y')</p><p>  save(head);</p><p><b>  else</b></p><p>  printf("\n未保存排序后數據!\n\n");&l

135、t;/p><p>  return head;</p><p><b>  }</b></p><p>  /*按照書號排序*/</p><p>  struct books_list * Sorting_order2(struct books_list * head)</p><p><b&g

136、t;  {</b></p><p>  struct books_list *p1,*p2,*p3,*p4,*p5,*p6,*p7;</p><p><b>  int x=1;</b></p><p><b>  char b;</b></p><p>  for(p1=head;p1

137、->next!=NULL;p4=p1,p1=p1->next){</p><p><b>  p3=p1;</b></p><p>  for(p2=p1->next,p5=p7=p2;p2!=NULL;p7=p2,p2=p2->next){</p><p>  if(strcmp(p1->booknum,p2-&

138、gt;booknum )>0){</p><p><b>  p3=p2;</b></p><p><b>  p5=p7;</b></p><p><b>  }</b></p><p><b>  }</b></p><p&g

139、t;  if(p3!=p1){</p><p>  if(x&&p1==head){</p><p>  p6=p1->next;</p><p>  p1->next=p3->next;</p><p>  p3->next=p6;</p><p>  p5->ne

140、xt=p1;</p><p><b>  head=p3;</b></p><p><b>  p1=p3;</b></p><p><b>  x=0;</b></p><p><b>  }</b></p><p><b&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論