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

下載本文檔

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

文檔簡介

1、<p>  高級語言程序設計(1)課程設計</p><p><b>  1.程序設計說明書</b></p><p>  【設計題目】大學生超市商品信息管理系統(tǒng)</p><p><b>  【問題描述】</b></p><p>  大學生超市有N種商品,每種商品的信息用該軟件通過鍵盤敲入并以

2、文本文件方式存放在磁盤,內容為五列:商品編號、商品名稱、商品產地、商品數量、商品單價。編寫一個程序,管理超市物品信息情況。</p><p><b>  【軟件功能】</b></p><p>  1. 通過此軟件可以直接錄入每種商品的信息并將其自動保存到磁盤上;</p><p>  2. 可以對已錄入每種商品的信息進行修改,并且修改完成后會將更改

3、后的信息情況自動保存到原磁盤文件中;</p><p>  3. 可以進行商品信息查詢以及瀏覽。</p><p><b>  【算法思想】</b></p><p>  構造一個結構體類型,其成員包括五項:3個字符型數組,分別存放商品編號、商品名稱、商品產地;1個整型變量,存放商品數量;1個浮點型變量,存放商品單價。錄入各商品信息時,通過循環(huán)語句將

4、商品信息輸入到結構體中并寫入文本文件中,并存入磁盤。修改各物品信息時,先將文件讀出到結構體中,通過字符的比較查找所修改的商品所在處,如果沒有找到則輸出警告語句,找到后則通過輸入輸出函數進行修改,并將修改過后的各個商品信息寫入文本文件中,并存入磁盤。 商品信息瀏覽時,先將文件讀出到結構體中,如果文件不存在則輸出警告語句,否則通過循環(huán)語句和輸出函數將結果顯示在屏幕上。</p><p>  商品信息查詢時,先將文件讀出

5、到結構體中,如果文件不存在則輸出警告語句,否則通過輸入函數直接輸入商品貨號,通過條件語句找出該商品貨號信息并將輸出結果顯示在屏幕上。</p><p>  【模塊劃分及調用關系】</p><p>  main 函數分別調用: input(); //新購物品錄入</p><p>  correct(); //物品信息修改</p>

6、<p>  lookup(); //物品信息查詢</p><p>  scan(); //物品信息瀏覽</p><p>  quit(); //程序退出</p><p>  input 函數調用: save(); //數據存儲</p><p>  correct

7、 函數調用: save(); //數據存儲</p><p>  scan 函數調用: readfile(); //讀文件</p><p><b>  【模塊流程圖】</b></p><p><b>  main函數</b></p><p><b> 

8、 input函數</b></p><p><b>  correct函數</b></p><p><b>  lookup函數</b></p><p><b>  scan函數</b></p><p><b>  quit函數</b></

9、p><p><b>  【程序使用方法】</b></p><p> ?。?)執(zhí)行程序,按照界面提示進行選擇。輸入 “1”,進入商品添加。</p><p> ?。?)按照程序提示,分別輸入商品編號、商品名稱、商品產地、商品數量、商品價格。(注:這里默認為有3個物品,可以通過宏定義進行修改。)</p><p> ?。?)輸入成功

10、后,自動返回主界面。輸入“4”,進入商品信息瀏覽,程序自動將各商品信息情況輸出到屏幕上。</p><p>  (4)瀏覽成功后,自動返回主界面。輸入“2”,進入商品信息修改,按照提示進行輸入。</p><p> ?。?)輸入成功后,自動返回主界面。輸入“3”,進入商品物品信息查詢,按照提示進行輸入,程序將要查詢的商品信息情況輸出到屏幕上。</p><p>  (6)

11、查詢成功后,自動返回主界面。輸入“5”,進入程序退出,輸入“Y”退出程序,輸入“N”返回主界面。</p><p>  2.程序上機調試報告</p><p>  【語法錯誤及其排除】</p><p>  調用fscanf()函數時,忘記前面的文件指針;</p><p>  If(strcmp(s1,s2)),少了括號;</p>&

12、lt;p> ?。?)調用scanf()函數時,字符型變量應直接用數組名。</p><p>  【算法錯誤及其排除】</p><p> ?。?)在結束一次循環(huán)時使用了break語句,終止了循環(huán)導致錯誤,應該使用continue語句;</p><p> ?。?)商品信息查詢時,輸入商品編號id然后通過循環(huán)比較字符串是否相等,最后當m==N-1時,找不到對應的id,

13、而不是m==N。</p><p><b>  3.程序測試結果</b></p><p><b>  【測試數據】</b></p><p>  001 山椒鳳爪 重慶 120 1.2</p><p>  002 脈動飲料 北京 52 3.5&l

14、t;/p><p>  003 阿爾卑斯 上海 260 10.5</p><p><b>  【輸出結果】</b></p><p><b>  【收獲及體會】</b></p><p>  通過這次的課程設計,一方面:在不斷的修改,編譯過程使我對c語言的一些語法規(guī)則更加深刻的理解與

15、認識,在這過程中也鍛煉了自己的邏輯思維,更是提高了自己做事的嚴謹性;另一方面:這次也是理論應用于實踐的一次踐行,真正做到學有所用,對于word文檔的制作也是次練習。也相信經過這次的課程設計,自己在以后的學習生活中對待問題會更加的嚴謹,也會更加注重理論應用實際。</p><p><b>  源程序代碼</b></p><p>  #include "stdio

16、.h" //預編譯命令</p><p>  #include "stdlib.h" //預編譯命令</p><p>  #include "string.h" //預編譯命令</p><p>  #define N 3</p><p>  struct information

17、 //定義商品信息的結構體</p><p><b>  {</b></p><p>  char id[20]; //商品編號</p><p>  char name[20]; //商品名稱</p><p>  char produce[20]; //商品產地</p>

18、;<p>  int num; //商品數量</p><p>  float price; //商品價格</p><p>  } goods[N];</p><p>  /*******************************************************************/&

19、lt;/p><p>  void save() //創(chuàng)建商品信息的文件 </p><p><b>  {</b></p><p><b>  int i;</b></p><p><b>  FILE *fp;</b></p><p>  i

20、f((fp=fopen("E:\\商品信息.txt","w"))==NULL)</p><p><b>  {</b></p><p>  printf("無法建立文件!請檢查是否E盤不存在!\n");</p><p>  exit(0); //如果建立失敗,輸出警告信息,并自動關

21、閉程序</p><p><b>  } </b></p><p>  for(i=0;i<N;i++)</p><p>  fprintf(fp,"%-10s\t%-10s\t%-10s\t%-6d\t\t%-6f\n",goods[i].id,goods[i].name,goods[i].produce,g

22、oods[i].num,goods[i].price);//寫入文件</p><p>  fclose(fp); //關閉文件,防止數據丟失</p><p><b>  }</b></p><p>  /***************************************************************/<

23、/p><p>  void input() //商品信息錄入</p><p><b>  {</b></p><p>  void main();//對主函數進行聲明</p><p><b>  int i;</b></p><p><b>  FILE *fp;

24、</b></p><p>  if((fp=fopen("E:\\商品信息.txt","w"))==NULL)</p><p><b>  {</b></p><p>  printf("無法建立文件!請檢查是否E盤不存在!\n");</p><p&g

25、t;<b>  exit(0); </b></p><p><b>  }</b></p><p>  /*如果建立文件成功,則提示輸入商品信息*/</p><p>  printf("============* 商品信息錄入 *==================\n");</p>

26、<p>  printf("請輸入:\n\t\t商品編號 商品名稱 商品產地 商品數量 商品價格\n");</p><p>  for(i=0;i<N;i++) scanf("%s%s%s%d%f",goods[i].id,goods[i].name,goods[i].produce,&goods[i].num,&goods[i]

27、.price); //輸入值到結構體中</p><p><b>  save();</b></p><p>  printf("\n文件保存成功!系統(tǒng)返回主菜單....\n\n");</p><p>  main();//返回主函數</p><p><b>  }</b&g

28、t;</p><p>  /*******************************************************************/</p><p>  void correct() //商品信息修改</p><p><b>  {</b></p><p>  void main()

29、; //對主函數進行聲明</p><p><b>  int i,k;</b></p><p>  char id[20]; //定義要修改的物品信息</p><p>  char name[20]; </p><p>  char produce[20]; </p><p>  i

30、nt num; </p><p>  float price; </p><p>  FILE *fp=fopen("E:\\商品信息.txt","r");</p><p>  if((fp=fopen("E:\\商品信息.txt","r"))==NULL)<

31、;/p><p><b>  {</b></p><p>  printf("無法打開文件!請檢查文件是否存在!\n\n");</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p&g

32、t;  for(i=0;i<N;i++) fscanf(fp,"%s%s%s%d%f",goods[i].id,goods[i].name,goods[i].produce,&goods[i].num,&goods[i].price);</p><p>  printf("==============* 商品信息修改 *==============\

33、n");</p><p>  printf("請輸入所修改的商品編號:");</p><p>  scanf("%s",id);</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p>

34、<b>  k=i;</b></p><p>  /*使用strcmp函數將輸入的編號與已錄入的編號比較*/</p><p>  if(strcmp(goods[i].id,id)==0) </p><p><b>  {</b></p><p>  printf("請輸入更改后

35、的信息:\n\t\t商品名稱 商品產地 商品數量 商品價格\n");</p><p>  scanf("%s%s%d%f",name,produce,&num,&price);</p><p>  strcpy(goods[i].name,name); //用修改后的信息覆蓋錯誤信息</p><p>  strcpy(

36、goods[i].produce,produce);</p><p>  goods[i].num=num;</p><p>  goods[i].price=price;</p><p>  save(); //調用save函數</p><p>  printf("\n修改成功!系統(tǒng)自動返回主菜單....\n\n&q

37、uot;);</p><p>  break; //如果修改成功則中斷循環(huán),并輸出警告信息</p><p><b>  }</b></p><p>  else if(k==N-1)</p><p>  printf("信息不存在或輸入有誤!系統(tǒng)返回主菜單....\n\n"); <

38、;/p><p>  else continue;//如果在一次循環(huán)中沒找到信息,則中斷此次循環(huán)</p><p><b>  }</b></p><p>  fclose(fp); //關閉文件,防止數據丟失</p><p>  main(); //返回主函數&l

39、t;/p><p><b>  }</b></p><p>  /*******************************************************************/</p><p>  int M; //定義全局變量</p><p>  void readfile() //讀文件&

40、lt;/p><p><b>  {</b></p><p>  struct information product; //定義結構體變量</p><p><b>  FILE *fp;</b></p><p><b>  M=0;</b></p><p&

41、gt;  if((fp=fopen("E:\\商品信息.txt","r"))==NULL)</p><p><b>  {</b></p><p>  printf("無法打開文件!請檢查文件是否存在!\n\n");</p><p><b>  exit(0);</b&

42、gt;</p><p><b>  } </b></p><p>  while(!feof(fp)) //當未到文件末尾時進行循環(huán)</p><p><b>  {</b></p><p>  fscanf(fp,"%s%s%s%d%f",product.id,product

43、.name,product.produce,&product.num,&product.price);</p><p><b>  M++;</b></p><p><b>  } </b></p><p><b>  }</b></p><p>  /****

44、***************************************************************/</p><p>  void lookup() //商品信息查詢</p><p><b>  {</b></p><p>  void main();</p><p><b> 

45、 int i,m;</b></p><p>  char id[20];</p><p>  FILE *fp=fopen("E:\\商品信息.txt","r");</p><p>  if((fp=fopen("E:\\商品信息.txt","r"))==NULL)<

46、;/p><p><b>  {</b></p><p>  printf("無法打開文件!請檢查文件是否存在!\n\n");</p><p>  exit(0); //如果打開失敗,輸出警告信息,并自動關閉程序</p><p><b>  }</b></p>

47、<p>  for(i=0;i<N;i++) fscanf(fp,"%s%s%s%d%f",goods[i].id,goods[i].name,goods[i].produce,&goods[i].num,&goods[i].price);</p><p>  printf("==============* 商品信息查詢 *===========

48、========\n");</p><p>  printf("請輸入所查詢的商品編號:");</p><p>  scanf("%s",id);</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p>

49、<p><b>  m=i;</b></p><p>  if(strcmp(goods[i].id,id)==0)//使用strcmp函數進行字符串的比較</p><p><b>  {</b></p><p>  printf("\n\n商品編號\t商品名稱\t商品產地\t商品數量\t商品價

50、格\n"); printf("%-10s\t%-10s\t%-10s\t%-6d\t\t%-6f\n",goods[i].id,goods[i].name,goods[i].produce,goods[i].num,goods[i].price);</p><p>  printf("\n查詢成功!系統(tǒng)自動返回主菜單....\n\n");</p>&

51、lt;p><b>  break; </b></p><p><b>  }</b></p><p><b>  else </b></p><p>  if(m==N-1)</p><p>  printf("信息不存在或輸入有誤!系統(tǒng)返回主菜單....\n\

52、n");</p><p>  else continue;</p><p><b>  }</b></p><p>  fclose(fp); //關閉文件,防止數據丟失</p><p>  main(); //返回主函數</p><p><b>  }</b

53、></p><p>  /******************************************************************/</p><p>  void scan() //商品信息瀏覽</p><p><b>  {</b></p><p>  void main();&l

54、t;/p><p><b>  int i;</b></p><p>  FILE *fp=fopen("E:\\商品信息.txt","r");</p><p>  if((fp=fopen("E:\\商品信息.txt","r"))==NULL)</p>

55、<p><b>  {</b></p><p>  printf("無法打開文件!請檢查文件是否存在!\n\n");</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p><b>

56、  else</b></p><p><b>  {</b></p><p>  readfile();</p><p>  printf("==========* 商品信息瀏覽 *==============\n");</p><p>  printf("\n\n商品編碼\t商

57、品名稱\t商品產地\t商品數量\t商品價格\n");</p><p>  for(i=0;i<M-1;i++)//讀出文件內容,并輸出內容到屏幕上</p><p><b>  { </b></p><p>  fscanf(fp,"%s%s%s%d%f",goods[i].id,goods[i].n

58、ame,goods[i].produce,&goods[i].num,&goods[i].price); printf("%-10s\t%-10s\t%-10s\t%-6d\t\t%-6f\n",goods[i].id,goods[i].name,goods[i].produce,goods[i].num,goods[i].price);</p><p><

59、;b>  }</b></p><p><b>  }</b></p><p>  fclose(fp); //關閉文件,防止數據丟失</p><p>  main(); //返回主函數</p><p><b>  }</b></p><p>  

60、/******************************************************************/</p><p>  void quit() //退出程序</p><p><b>  {</b></p><p>  void main();</p><p><b>  

61、char ch;</b></p><p>  printf("\t\t您確定要退出系統(tǒng)嗎?\n");</p><p>  printf("\t\tY->退出程序 N->返回主菜單");</p><p>  Cycle: //語句標號</p><p>  ch=getcha

62、r();</p><p>  if(ch=='Y'||ch=='y')</p><p><b>  {</b></p><p>  printf("系統(tǒng)退出,歡迎再次使用!\n\n"); //退出程序</p><p><b>  return;</b&g

63、t;</p><p><b>  }</b></p><p><b>  else </b></p><p>  if(ch=='N'||ch=='n') </p><p>  main();//返回主函數</p><p><

64、b>  else</b></p><p>  goto Cycle;</p><p><b>  }</b></p><p>  /*******************************************************************/</p><p>  void

65、 main() //功能與操作的界面提示</p><p><b>  { </b></p><p>  int choice;</p><p>  printf("\t\t\t++++++++++++++++++++++++++++++++++++++++++++\n");</p><p>

66、  printf("\t\t\t| |\n");</p><p>  printf("\t\t\t| Wlecome to Product Information System|\n");</p><p>  printf("\t\t\t|

67、 |\n");</p><p>  printf("\t\t\t++++++++++++++++++++++++++++++++++++++++++++\n");</p><p>  printf("\t\t\t| 1.信息錄入

68、 |\n");</p><p>  printf("\t\t\t| 2.信息修改 |\n");</p><p>  printf("\t\t\t| 3.信息查詢 |\n");</p><p>

69、  printf("\t\t\t| 4.信息瀏覽 |\n");</p><p>  printf("\t\t\t| 5.退出系統(tǒng) |\n");</p><p>  printf("\t\t\t+++++++++++++++

70、+++++++++++++++++++++++++++++\n");</p><p>  printf(" Please Input Your choose:");</p><p>  scanf("%d",&choice);</p><p>  switch(choice)</p>&l

71、t;p><b>  {</b></p><p>  case 1:input(); break;</p><p>  case 2:correct(); break;</p><p>  case 3:lookup(); reak;</p><p>  case 4:scan();

72、 break;</p><p>  case 5:quit(); break;</p><p>  default :{ printf("輸入無效,請重新輸入您的選擇!\n"); main();}</p><p><b>  }</b></p><p>&l

溫馨提示

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

評論

0/150

提交評論