課程設(shè)計(jì)--大學(xué)生超市商品信息管理系統(tǒng)_第1頁
已閱讀1頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

8、 input函數(shù)</b></p><p><b>  correct函數(shù)</b></p><p><b>  lookup函數(shù)</b></p><p><b>  scan函數(shù)</b></p><p><b>  quit函數(shù)</b></

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

10、后,自動(dòng)返回主界面。輸入“4”,進(jìn)入商品信息瀏覽,程序自動(dòng)將各商品信息情況輸出到屏幕上。</p><p> ?。?)瀏覽成功后,自動(dòng)返回主界面。輸入“2”,進(jìn)入商品信息修改,按照提示進(jìn)行輸入。</p><p>  (5)輸入成功后,自動(dòng)返回主界面。輸入“3”,進(jìn)入商品物品信息查詢,按照提示進(jìn)行輸入,程序?qū)⒁樵兊纳唐沸畔⑶闆r輸出到屏幕上。</p><p> ?。?)

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

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

13、而不是m==N。</p><p><b>  3.程序測(cè)試結(jié)果</b></p><p><b>  【測(cè)試數(shù)據(jù)】</b></p><p>  001 山椒鳳爪 重慶 120 1.2</p><p>  002 脈動(dòng)飲料 北京 52 3.5&l

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

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

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

17、 //定義商品信息的結(jié)構(gòu)體</p><p><b>  {</b></p><p>  char id[20]; //商品編號(hào)</p><p>  char name[20]; //商品名稱</p><p>  char produce[20]; //商品產(chǎn)地</p>

18、;<p>  int num; //商品數(shù)量</p><p>  float price; //商品價(jià)格</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("無法建立文件!請(qǐng)檢查是否E盤不存在!\n");</p><p>  exit(0); //如果建立失敗,輸出警告信息,并自動(dòng)關(guān)

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); //關(guān)閉文件,防止數(shù)據(jù)丟失</p><p><b>  }</b></p><p>  /***************************************************************/<

23、/p><p>  void input() //商品信息錄入</p><p><b>  {</b></p><p>  void main();//對(duì)主函數(shù)進(jìn)行聲明</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("無法建立文件!請(qǐng)檢查是否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("請(qǐng)輸入:\n\t\t商品編號(hào) 商品名稱 商品產(chǎn)地 商品數(shù)量 商品價(jià)格\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); //輸入值到結(jié)構(gòu)體中</p><p><b>  save();</b></p><p>  printf("\n文件保存成功!系統(tǒng)返回主菜單....\n\n");</p><p>  main();//返回主函數(shù)</p><p><b>  }</b&g

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

29、; //對(duì)主函數(shù)進(jìn)行聲明</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("無法打開文件!請(qǐng)檢查文件是否存在!\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("請(qǐng)輸入所修改的商品編號(hào):");</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函數(shù)將輸入的編號(hào)與已錄入的編號(hào)比較*/</p><p>  if(strcmp(goods[i].id,id)==0) </p><p><b>  {</b></p><p>  printf("請(qǐng)輸入更改后

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

36、goods[i].produce,produce);</p><p>  goods[i].num=num;</p><p>  goods[i].price=price;</p><p>  save(); //調(diào)用save函數(shù)</p><p>  printf("\n修改成功!系統(tǒng)自動(dò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); //關(guān)閉文件,防止數(shù)據(jù)丟失</p><p>  main(); //返回主函數(shù)&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; //定義結(jié)構(gòu)體變量</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("無法打開文件!請(qǐng)檢查文件是否存在!\n\n");</p><p><b>  exit(0);</b&

42、gt;</p><p><b>  } </b></p><p>  while(!feof(fp)) //當(dāng)未到文件末尾時(shí)進(jìn)行循環(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("無法打開文件!請(qǐng)檢查文件是否存在!\n\n");</p><p>  exit(0); //如果打開失敗,輸出警告信息,并自動(dòng)關(guān)閉程序</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("請(qǐng)輸入所查詢的商品編號(hào):");</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函數(shù)進(jìn)行字符串的比較</p><p><b>  {</b></p><p>  printf("\n\n商品編號(hào)\t商品名稱\t商品產(chǎn)地\t商品數(shù)量\t商品價(jià)

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)自動(dò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); //關(guān)閉文件,防止數(shù)據(jù)丟失</p><p>  main(); //返回主函數(shù)</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("無法打開文件!請(qǐng)檢查文件是否存在!\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商品產(chǎn)地\t商品數(shù)量\t商品價(jià)格\n");</p><p>  for(i=0;i<M-1;i++)//讀出文件內(nèi)容,并輸出內(nè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); //關(guān)閉文件,防止數(shù)據(jù)丟失</p><p>  main(); //返回主函數(shù)</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: //語句標(biāo)號(hào)</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();//返回主函數(shù)</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("輸入無效,請(qǐng)重新輸入您的選擇!\n"); main();}</p><p><b>  }</b></p><p>&l

溫馨提示

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

評(píng)論

0/150

提交評(píng)論