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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

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

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

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

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

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

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

7、/p><p>  void info_change函數(shù),將圖書信息進(jìn)行修改。</p><p>  主函數(shù),用switch-case結(jié)構(gòu)進(jìn)行函數(shù)的調(diào)用。</p><p><b>  總體設(shè)計(jì)</b></p><p><b>  1、 軟件模塊設(shè)計(jì)</b></p><p><b

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

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

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

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

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

13、p><p>  [2]c程序設(shè)計(jì)(第三版),譚浩強(qiáng)著,清華大學(xué)出版社.2005.7</p><p>  [3]面向?qū)ο蟪绦蛟O(shè)計(jì)(c++語言),李愛華,程磊著,清華大學(xué)出版社.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]; /*學(xué)院名*/</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é)點(diǎn)*/</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é)點(diǎn)空間*/</p><p>  head->next=NULL; /*頭節(jié)點(diǎn)指針域初始化,定為空*/</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," --------學(xué) 號-------姓 名---------------學(xué) 院

24、 名----------圖 書 名-----------借 閱 圖 書 編 號 \n"); </p><p>  /*指針從頭節(jié)點(diǎn)開始移動,遍歷至尾結(jié)點(diǎn),依次輸出學(xué)生借閱信息*/</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(" 已將學(xué)生數(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é)點(diǎn)</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>  /*定義結(jié)構(gòu)體指針變量 s指向開辟的新結(jié)點(diǎn)首地址 p為中間變量*/</p><p>  struct books_list *s, *p;</p><p>  c

33、har flag='Y'; /*定義flag,方便用戶選擇重復(fù)輸入*/</p><p><b>  p=head;</b></p><p>  /*遍歷到尾結(jié)點(diǎn),p指向尾結(jié)點(diǎn)*/</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ù),添加進(jìn)鏈表*/</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 請輸入學(xué)生學(xué)號:");</p><p>  fflush(stdin);</p><p>  scanf("%s",s->ISBN);</p><p>  printf("\n 請輸入學(xué)生姓名:");</p><

37、p>  fflush(stdin);</p><p>  scanf("%s",s->title);</p><p>  printf("\n 請輸入學(xué)生學(xué)院名:");</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é)點(diǎn)添加進(jìn)鏈表*/</p><p>  p=s; /*p指向尾節(jié)點(diǎn),向后移*/</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、 ━━━━ 學(xué)生庫為空!━━━━\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é)點(diǎn)開始移動,遍歷至尾結(jié)點(diǎn),查找學(xué)生借閱信息*/</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學(xué)生信息已找到!\n");</p><p&

49、gt;  printf("\n");</p><p>  printf("學(xué)號: %s\t\n",p->ISBN);</p><p>  printf("姓名: %s\t\n",p->writer);</p><p>  printf("學(xué)院名: %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 ━━━━ 沒有學(xué)生借閱記錄! ━━━━\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學(xué)號 姓名 學(xué)院名 圖書名 圖書編號 \n"); </p><p>  /*指針從頭節(jié)點(diǎn)開始移動,遍歷至尾結(jié)點(diǎn),依次輸出學(xué)生借閱信息*/</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; /*此變量用于判斷是否找到學(xué)生信息*/</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、 請輸入學(xué)生學(xué)號:");</p><p>  fflush(stdin);</p><p>  scanf("%d",p->ISBN);</p><p>  printf("\n 請輸入學(xué)生姓名:");</p><p>  fflush(s

62、tdin);</p><p>  scanf("%s",p->title);</p><p>  printf("\n 請輸入學(xué)生學(xué)院名:");</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、 ━━━━ 沒有學(xué)生借閱記錄! ━━━━\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; /*此變量用于判斷是否找到學(xué)生信息*/</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 ━━━━ 沒有該學(xué)生信息! ━━━━\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; /*此變量用于判斷是否找到了學(xué)生信息*/</p><p>  panduan=0;</p><p><b>  p=s=head;</b></p>

74、<p>  printf(" [請輸入您要刪除的姓名]:");</p><p>  scanf("%s",temp);</p><p>  /*遍歷到尾結(jié)點(diǎn)*/</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、/*找到所需刪除卡號結(jié)點(diǎn)的上一個結(jié)點(diǎn)*/</p><p><b>  {</b></p><p>  s=s->next;</p><p><b>  }</b></p><p>  s->next=p->next; /*將后一節(jié)點(diǎn)地址賦值給前一節(jié)點(diǎn)的指針域*/</p>

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

79、;<p><b>  {</b></p><p>  printf(" 您輸入的姓名不存在,請確認(rèn)后輸入!\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、----------- 學(xué)生借閱系統(tǒng)-------------------\n\n");</p><p>  printf(" [1]學(xué)生信息錄入 \n\n");</p><p>  printf("

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

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

85、 \n\n");</p><p>  printf(" [7]學(xué)生借閱 \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(" ━━━━━━━━ 感謝使用學(xué)生借閱系統(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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論