學生借閱系統(tǒng)課程設計_第1頁
已閱讀1頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  課程設計(大作業(yè))報告</p><p>  課程名稱:程序設計語言 </p><p>  設計題目: 學生借閱系統(tǒng) </p><p>  院 系: 自動化控制與機械工程學院 </p><p>  課程設計(大作業(yè))任務書</p><p>  課程設計題目:學生借閱系統(tǒng)&

2、lt;/p><p><b>  課程設計要求:</b></p><p>  設計一個學生借閱系統(tǒng),功能包括:學生管理子系統(tǒng),由管理員負責錄入信息(包括學號、姓名、學院名、圖書名等信息),刪除學生信息等功能;學生借閱子系統(tǒng)(保存用戶名、借閱書的編號、書名等信息),負責學生借閱、歸還、續(xù)借、超期罰款等功能;查詢子系統(tǒng),包括可以查詢學生庫中的借閱圖書、學生借閱情況等,信息保存到

3、文件中。</p><p><b>  工作計劃及安排:</b></p><p>  第十八周:問題分析,方案設計,軟件編碼和調試;</p><p>  第19周: 軟件測試,書寫課程實驗設計報告,答辯。</p><p>  指導教師簽字 </p><p>  2013年

4、7 月 9 日 </p><p>  課程設計(大作業(yè))報告</p><p><b>  題目分析</b></p><p>  設計一個學生借閱系統(tǒng),功能包括:學生管理子系統(tǒng),由管理員負責錄入信息(包括學號、姓名、學院名、圖書名等信息),刪除學生信息等功能;學生借閱子系統(tǒng)(保存用戶名、借閱書的編號、書名等信息),負責圖書的借閱、歸

5、還、續(xù)借、超期罰款等功能;查詢子系統(tǒng),包括可以查詢學生庫中的書、學生借閱情況等;信息保存到文件中。</p><p><b>  基本理論</b></p><p>  建立一個關于圖書的結構體,內含ISBN號,書名,作者,出版社和價格。</p><p>  InsertDoc函數(shù),負責新書信息的插入。</p><p>  

6、void sort_maopao函數(shù),用冒泡法將圖書的ISBN號以由小到大的順序進行排列。 </p><p>  void DeleteDoc函數(shù),將廢舊圖書信息進行刪除。</p><p>  void Print_Book_Doc函數(shù),輸出圖書的信息,方便讀者選書。</p><p>  void search_book函數(shù),進行圖書的查詢。<

7、/p><p>  void info_change函數(shù),將圖書信息進行修改。</p><p>  主函數(shù),用switch-case結構進行函數(shù)的調用。</p><p><b>  總體設計</b></p><p><b>  1、 軟件模塊設計</b></p><p><b

8、>  圖2-2-1</b></p><p><b>  2、軟件界面設計</b></p><p><b>  圖2-3-1</b></p><p><b>  實驗器材</b></p><p>  開發(fā)工具:Visual C++ 6.0, CodeBlock1

9、0.05,等</p><p>  環(huán)境:Windows 7操作系統(tǒng)。</p><p>  方法步驟(程序調試)</p><p><b>  1. 調試方案</b></p><p>  選擇1,輸入201204100203 遲寬廣 自機學院 《鋼鐵事怎樣煉成的》 001</p><p>

10、  201204100207 龔正雄 自機學院 《成功的男人》 002</p><p>  201204100228 譚小春 自機學院 《愛情三十六計》 003</p><p>  選擇2,輸出圖3-2-1</p><p>  選擇7,輸出圖3-2-2</p><p><b>  2. 調試結果&l

11、t;/b></p><p><b>  圖3-2-1</b></p><p><b>  圖3-2-2</b></p><p><b>  成效分析</b></p><p>  在編程實踐中,我才知道自己基礎知識的不足,通過一段時間的努力學習,我的基礎知識更加牢固,尤其是

12、后面指針,結構體,鏈表,文件的知識了解的更加深入。其次是知識的運用,以前學到的知識都是片面的了解,一到編程序時就無從下手,現(xiàn)在能熟練的應用各種知識,使知識得到應用。最后是編程的技巧,從整體構型到各個函數(shù)的應用都有了很大的進步。</p><p><b>  參考文獻</b></p><p>  [1]c語言程序設計,馬秀麗,李筠著。清華大學出版社.2008.1</

13、p><p>  [2]c程序設計(第三版),譚浩強著,清華大學出版社.2005.7</p><p>  [3]面向對象程序設計(c++語言),李愛華,程磊著,清華大學出版社.2010,2</p><p><b>  八、 源代碼</b></p><p>  #include<stdio.h></p>

14、<p>  #include<math.h></p><p>  #include<string.h></p><p>  #include<stdlib.h></p><p>  struct books_list</p><p><b>  {</b></p>

15、;<p>  char writer[20]; /*學院名*/</p><p>  char title[20]; </p><p>  char ISBN[20]; /*姓名*/ </p><p>  char publishinghouse[20];

16、 /*圖書名*/</p><p>  int price,borrowed; /*圖書編號*/</p><p>  struct books_list * next;</p><p>  /*鏈表的指針域*/</p><p><b>  };</b></p>

17、<p>  struct books_list * Create_Books_Doc(); /*新建鏈表*/</p><p>  void InsertDoc(struct books_list * head); /*插入*/</p><p>  void sort_maopao(struct books_list * hea

18、d ); // 排序</p><p>  void DeleteDoc(struct books_list * head , int num); /*刪除*/</p><p>  void Print_Book_Doc(struct books_list * head); /*瀏覽*/</p><p>  void search_

19、book(struct books_list * head); /*查詢*/</p><p>  void info_change(struct books_list * head); /*修改*/</p><p>  void save(struct books_list * head); /*保存數(shù)據(jù)至文件*/&

20、lt;/p><p>  /*新建鏈表頭節(jié)點*/</p><p>  struct books_list * Create_Books_Doc()</p><p><b>  {</b></p><p>  struct books_list * head;</p><p>  head=(struct

21、 books_list *)malloc(sizeof(struct books_list)); /*分配頭節(jié)點空間*/</p><p>  head->next=NULL; /*頭節(jié)點指針域初始化,定為空*/</p><p>  return head;</p><p><b>  }</b></p><p>

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

23、<p><b>  p=head;</b></p><p>  fp=fopen("data.txt","w+"); /*以寫方式新建并打開 data.txt文件*/</p><p>  fprintf(fp," --------學 號-------姓 名---------------學 院

24、 名----------圖 書 名-----------借 閱 圖 書 編 號 \n"); </p><p>  /*指針從頭節(jié)點開始移動,遍歷至尾結點,依次輸出學生借閱信息*/</p><p>  while(p->next!= NULL)</p><p><b>  {</b></p><p>

25、  p=p->next;</p><p>  fprintf(fp,"%-6.6s %-15.10s %-10.10s %-10.10s %-10.10d\n",p->ISBN,p->title,p->writer,p->publishinghouse,p->price);</p><p><b>  }</b>

26、</p><p>  fprintf(fp,"\n");</p><p>  fclose(fp);</p><p>  printf(" 已將學生數(shù)據(jù)保存到 data.txt 文件\n");</p><p><b>  }</b></p><p> 

27、 void sort_maopao(struct books_list * head )</p><p><b>  {</b></p><p>  struct books_list *tail,*p,*q,*p1,*t; //p1等于head t等于head q保存p的next節(jié)點</p><p>  p1=(struct books_li

28、st *)malloc(sizeof (struct books_list));</p><p>  for(t=head->next;t!=NULL;t=t->next)</p><p>  for(p=head->next,p1=head;p->next!=NULL;p=p->next,p1=p1->next)</p><p>

29、;<b>  {</b></p><p>  if(strcmp(p->ISBN,p->next->ISBN)>0)</p><p><b>  { </b></p><p>  q=p->next->next;</p><p>  tail=p->ne

30、xt;</p><p>  tail->next=NULL;</p><p>  p->next=q;</p><p>  p1->next=tail;</p><p>  tail->next=p;</p><p><b>  p=p1;</b></p>&

31、lt;p><b>  } </b></p><p><b>  }</b></p><p>  save(head); //保存文件</p><p><b>  }</b></p><p><b>  /*插入*/</b></p>&

32、lt;p>  void InsertDoc(struct books_list *head)</p><p><b>  {</b></p><p>  /*定義結構體指針變量 s指向開辟的新結點首地址 p為中間變量*/</p><p>  struct books_list *s, *p;</p><p>  c

33、har flag='Y'; /*定義flag,方便用戶選擇重復輸入*/</p><p><b>  p=head;</b></p><p>  /*遍歷到尾結點,p指向尾結點*/</p><p>  while(p->next!= NULL)</p><p><b>  {</b&g

34、t;</p><p>  p=p->next;</p><p><b>  } </b></p><p>  /*開辟新空間,存入數(shù)據(jù),添加進鏈表*/</p><p>  while(flag=='Y'||flag=='y')</p><p><b&

35、gt;  {</b></p><p>  system("cls");</p><p>  p->borrowed=0;</p><p>  s=(struct books_list *)malloc(sizeof(struct books_list));</p><p>  printf("\

36、n 請輸入學生學號:");</p><p>  fflush(stdin);</p><p>  scanf("%s",s->ISBN);</p><p>  printf("\n 請輸入學生姓名:");</p><

37、p>  fflush(stdin);</p><p>  scanf("%s",s->title);</p><p>  printf("\n 請輸入學生學院名:");</p><p>  fflush(stdin);</p><p>  scanf(&

38、quot;%s",s->writer);</p><p>  printf("\n 請輸入借閱圖書名:");</p><p>  fflush(stdin);</p><p>  scanf("%s",s->publishinghouse);</p>&

39、lt;p>  printf("\n 請輸入借閱圖書編號:");</p><p>  fflush(stdin);</p><p>  scanf("%d",&s->price);</p><p>  printf("\n");</p>

40、<p>  p->next=s; /*將新增加的節(jié)點添加進鏈表*/</p><p>  p=s; /*p指向尾節(jié)點,向后移*/</p><p>  s->next=NULL;</p><p>  printf(" ━━━━ 添加成功!━━━━");</p><p&g

41、t;  printf("\n 繼續(xù)添加?(Y/N):");</p><p>  fflush(stdin);</p><p>  scanf("%c",&flag);</p><p>  printf("\n");</p><p

42、>  if(flag=='N'||flag=='n')</p><p><b>  {break;}</b></p><p>  else if(flag=='Y'||flag=='y')</p><p>  {continue;}</p><p>&

43、lt;b>  }</b></p><p>  save(head); /*保存數(shù)據(jù)至文件*/</p><p>  system("cls");</p><p><b>  return;</b></p><p><b>  }</b></p>&

44、lt;p><b>  /*查詢操作*/</b></p><p>  void search_book(struct books_list *head)</p><p><b>  {</b></p><p>  struct books_list * p;</p><p>  char tem

45、p[20];</p><p><b>  p=head;</b></p><p>  if(head==NULL || head->next==NULL) /*判斷數(shù)據(jù)庫是否為空*/</p><p><b>  {</b></p><p>  printf("

46、 ━━━━ 學生庫為空!━━━━\n");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("請輸入您要查找的書名: "

47、;);</p><p>  fflush(stdin);</p><p>  scanf("%s",temp);</p><p>  /*指針從頭節(jié)點開始移動,遍歷至尾結點,查找學生借閱信息*/</p><p>  while(p->next!= NULL)</p><p><b>

48、  {</b></p><p>  p=p->next;</p><p>  if(strcmp(p->title,temp)==0)</p><p><b>  {</b></p><p>  printf("\n學生信息已找到!\n");</p><p&

49、gt;  printf("\n");</p><p>  printf("學號: %s\t\n",p->ISBN);</p><p>  printf("姓名: %s\t\n",p->writer);</p><p>  printf("學院名: %s\t\n",p->

50、writer);</p><p>  printf("圖書名: %s\t\n",p->publishinghouse);</p><p>  printf("圖書編號: %.2d\t\n",p->price);</p><p><b>  }</b></p><p> 

51、 if(p->next==NULL)</p><p><b>  {</b></p><p>  printf("\n查詢完畢!\n");</p><p><b>  }</b></p><p><b>  } </b></p><

52、p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  /*瀏覽操作*/</b></p><p>  void Print_Book_Doc(struct b

53、ooks_list * head)</p><p><b>  {</b></p><p>  struct books_list * p;</p><p>  if(head==NULL || head->next==NULL) /*判斷數(shù)據(jù)庫是否為空*/</p><p><b>  {</b&

54、gt;</p><p>  printf("\n ━━━━ 沒有學生借閱記錄! ━━━━\n\n");</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  

55、p=head;</b></p><p>  printf("\n\n\n\t\t學號 姓名 學院名 圖書名 圖書編號 \n"); </p><p>  /*指針從頭節(jié)點開始移動,遍歷至尾結點,依次輸出學生借閱信息*/</p><p>  while(p->next!=

56、 NULL)</p><p><b>  {</b></p><p>  p=p->next;</p><p>  printf("\t\t%-7.6s %-13.10s %-10.10s %-10.10s %d \n",p->ISBN,p->title,p->writer,p->publish

57、inghouse,p->price); </p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b></p><p><b>  /*修改操作*/</b></p><

58、;p>  void info_change(struct books_list * head)</p><p><b>  {</b></p><p>  struct books_list * p;</p><p>  int panduan=0; /*此變量用于判斷是否找到學生信息*/</p><p>  ch

59、ar temp[20];</p><p><b>  p=head;</b></p><p>  printf("請輸入要修改的姓名:");</p><p>  scanf("%s",temp);</p><p>  while(p->next!= NULL)</p&g

60、t;<p><b>  {</b></p><p>  p=p->next;</p><p>  if(strcmp(p->title,temp)==0)</p><p><b>  {</b></p><p>  printf("\n

61、 請輸入學生學號:");</p><p>  fflush(stdin);</p><p>  scanf("%d",p->ISBN);</p><p>  printf("\n 請輸入學生姓名:");</p><p>  fflush(s

62、tdin);</p><p>  scanf("%s",p->title);</p><p>  printf("\n 請輸入學生學院名:");</p><p>  fflush(stdin);</p><p>  scanf("%s",p

63、->writer);</p><p>  printf("\n 請輸入圖書名:");</p><p>  fflush(stdin);</p><p>  scanf("%s",p->publishinghouse);</p><p>  printf(

64、"\n 請輸入借閱圖書編號:");</p><p>  fflush(stdin);</p><p>  scanf("%d",&p->price);</p><p>  printf("\n");</p><p>  pandua

65、n=1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(panduan==0)</p><p><b>  {</b></p><p>  printf("\n

66、 ━━━━ 沒有學生借閱記錄! ━━━━\n\n");</p><p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  void book_borrow(st

67、ruct books_list * head)</p><p><b>  {</b></p><p>  struct books_list * p;</p><p>  int panduan=0; /*此變量用于判斷是否找到學生信息*/</p><p>  char temp[20];</p><

68、;p><b>  p=head;</b></p><p>  printf("請輸入姓名:");</p><p>  scanf("%s",temp);</p><p>  while(p->next!= NULL)</p><p><b>  {</b

69、></p><p>  p=p->next;</p><p>  if((strcmp(p->title,temp)==0)&&(p->borrowed==0))</p><p><b>  {</b></p><p>  p->borrowed=1;</p>

70、<p>  panduan=1;</p><p>  printf("借閱成功 \n");</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(panduan==0)</p><p><

71、b>  {</b></p><p>  printf("\n ━━━━ 沒有該學生信息! ━━━━\n\n");</p><p><b>  }</b></p><p><b>  return;</b></p><p&

72、gt;<b>  }</b></p><p><b>  /*刪除操作*/</b></p><p>  void DeleteDoc(struct books_list * head)</p><p><b>  {</b></p><p>  struct books_lis

73、t *s,*p; /*s為中間變量,p為遍歷時使用的指針*/</p><p>  char temp[20];</p><p>  int panduan; /*此變量用于判斷是否找到了學生信息*/</p><p>  panduan=0;</p><p><b>  p=s=head;</b></p>

74、<p>  printf(" [請輸入您要刪除的姓名]:");</p><p>  scanf("%s",temp);</p><p>  /*遍歷到尾結點*/</p><p>  while(p!= NULL)</p><p><b> 

75、 {</b></p><p>  if(strcmp(p->title,temp)==0)</p><p><b>  {</b></p><p>  panduan++;</p><p><b>  break;</b></p><p><b>

76、  }</b></p><p>  p=p->next;</p><p><b>  } </b></p><p>  if(panduan==1)</p><p><b>  {</b></p><p>  for(;s->next!=p;)

77、/*找到所需刪除卡號結點的上一個結點*/</p><p><b>  {</b></p><p>  s=s->next;</p><p><b>  }</b></p><p>  s->next=p->next; /*將后一節(jié)點地址賦值給前一節(jié)點的指針域*/</p>

78、<p><b>  free(p);</b></p><p>  printf("\n ━━━━ 刪除成功! ━━━━\n");</p><p><b>  }</b></p><p>  else /*未找到相應學生姓名*/</p>

79、;<p><b>  {</b></p><p>  printf(" 您輸入的姓名不存在,請確認后輸入!\n");</p><p><b>  }</b></p><p><b>  return;</b></p>

80、<p><b>  }</b></p><p>  int main(void)</p><p><b>  { </b></p><p>  struct books_list * head;</p><p>  int choice;</p><p>  h

81、ead=NULL;</p><p><b>  do{</b></p><p>  printf(" \n"); </p><p>  printf(" ---------

82、----------- 學生借閱系統(tǒng)-------------------\n\n");</p><p>  printf(" [1]學生信息錄入 \n\n");</p><p>  printf("

83、[2]學生信息瀏覽 \n\n");</p><p>  printf(" [3]學生信息查詢 \n\n");</p><p>  printf(" [4]學生信息修改

84、 \n\n");</p><p>  printf(" [5]學生信息刪除 \n\n");</p><p>  printf(" [6]學生排序

85、 \n\n");</p><p>  printf(" [7]學生借閱 \n\n");</p><p>  printf(" [0]退出系統(tǒng) \n\n

86、");</p><p>  printf(" 請選擇:");</p><p>  fflush(stdin);</p><p>  scanf("%d",&choice);</p><p>  switch(choice)&l

87、t;/p><p><b>  {</b></p><p>  case 1: if(head==NULL)</p><p><b>  {</b></p><p>  head=Create_Books_Doc();</p><p><b>  }</b>

88、</p><p>  InsertDoc(head);</p><p><b>  break;</b></p><p>  case 2: Print_Book_Doc(head);</p><p><b>  break;</b></p><p>  case 3:

89、search_book(head);</p><p><b>  break;</b></p><p>  case 4 : info_change(head);</p><p><b>  break; </b></p><p>  case 5: DeleteDoc(head);</p

90、><p><b>  break;</b></p><p>  case 6: sort_maopao(head); </p><p><b>  break;</b></p><p>  case 7: book_borrow(head);</p><p><b>

91、  break;</b></p><p>  case 0 : printf("\n");</p><p>  printf(" ━━━━━━━━ 感謝使用學生借閱系統(tǒng) ━━━━━━━━\n");</p><p><b>  break;</b></p>

92、<p>  default : printf(" ━━━━ 輸入錯誤,請重新輸入!━━━━");</p><p><b>  }</b></p><p>  }while(choice!=0);</p><p>  return 0; </p><

溫馨提示

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

評論

0/150

提交評論