久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5131|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

C語(yǔ)言程序設(shè)計(jì)-課程設(shè)計(jì)論文

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:76244 發(fā)表于 2015-4-7 01:05 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

 

 

 

中 國(guó) 地 質(zhì) 大 學(xué)

C語(yǔ)言程序設(shè)計(jì)

 

 

 

課程名稱(chēng) 計(jì)算機(jī)高級(jí)語(yǔ)言課程設(shè)計(jì)(C)

教師姓                  

本科生姓名                  

本科生學(xué)號(hào)   20121002504         

本科生專(zhuān)業(yè)   地球化學(xué)            

所在院   地球科學(xué)學(xué)院        

類(lèi)別:    .      本科生              

日期:          2015年1月23    

 

 

 

 

 

 

課程設(shè)計(jì)評(píng)語(yǔ)

對(duì)課程論文的評(píng)語(yǔ):

 

平時(shí)成績(jī):

課程論文成績(jī):

總 成 績(jī):

評(píng)閱人簽名:

 

注:1、無(wú)評(píng)閱人簽名成績(jī)無(wú)效;

2、必須用鋼筆或圓珠筆批閱,用鉛筆閱卷無(wú)效;

3、如有平時(shí)成績(jī),必須在上面評(píng)分表中標(biāo)出,并計(jì)算入總成績(jī)。

 

1.題目要求

題目:歌星大賽獎(jiǎng)

要求:

(1)在歌星大賽中,有十個(gè)評(píng)委為參賽的選手打分。分?jǐn)?shù)為1-100分。選手最后得分為:去掉一個(gè)最高分,去掉一個(gè)最低分其余8個(gè)分?jǐn)?shù)的平均值。試寫(xiě)一段程序?qū)崿F(xiàn)。

(2)同時(shí)對(duì)評(píng)委評(píng)分進(jìn)行判斷,即在10個(gè)評(píng)委中找出最公平(評(píng)分最接近平均分)的和最不公平的(即與平均分的差距最大)的評(píng)委。

2.需求分析

這個(gè)問(wèn)題的第一個(gè)算法要求簡(jiǎn)單,但是要注意在程序中判斷最大,最小的變量是如何賦值;第二個(gè)要求要考慮效率,要用到排序技術(shù)。注意,要用到文件儲(chǔ)存信息。

3.總體設(shè)計(jì)

評(píng)分系統(tǒng)需要錄入歌星的信息,輸入10個(gè)評(píng)委的評(píng)分,然后求出相應(yīng)的平均數(shù),再求出最公平的和最不公平的評(píng)委,保存再相應(yīng)的文件夾中。分為錄入,計(jì)算,瀏覽,修改,刪除,查詢(xún)模塊。


 



 

 數(shù)據(jù)結(jié)構(gòu)體設(shè)計(jì):定義結(jié)構(gòu)體變量struct people,進(jìn)行數(shù)據(jù)輸入,輸出,保存,修改等功能。

     其中定義M=50,指該數(shù)據(jù)庫(kù)最多能放50組數(shù)據(jù)。N為可變數(shù)據(jù)組數(shù),即當(dāng)前數(shù)據(jù)組數(shù)。

4.詳細(xì)設(shè)計(jì)

4.1主函數(shù)

main()

{

void re_file();            //讀文件

int sele;

sele=1;

while(sele)

{

system("cls");

printf("\n\n");               //顯示界面

printf("    ****************************************\n");

printf("    *                                      *\n");

printf("    *      1:瀏覽                  2:刪除  *\n");

printf("    *      3:增加                  4:修改  *\n");

printf("    *      5:退出                  6:計(jì)算  *\n");

printf("    *      7查詢(xún)                           *\n");

printf("    *                                      *\n");

printf("    ****************************************\n");

printf("\n\n    請(qǐng)輸入選擇功能序號(hào):");

scanf("%d",&sele);       //通過(guò)輸入按鍵來(lái)判斷執(zhí)行那個(gè)步驟

switch(sele)

{

case 1:display();break;

case 2:display();delete1();break;

case 3:apepend();display();break;

case 4:display();modify();break;

case 5:sele=0;break;

case 6:caculate();display();break;

case 7:query();break;

}

wr_file();    //寫(xiě)文件

printf("\n按任意鍵繼續(xù)\n");

getch();

}

}

4.2各功能模塊設(shè)計(jì)

4.2.1數(shù)據(jù)讀入模塊

  /*先定義一個(gè)結(jié)構(gòu)體struct  people,包含每位歌星的評(píng)分信息,在用可讀的方式打開(kāi)文件zhongmo.txt.*/

struct people

{

 char name[40];

 char xuhao;

 float pinjunfen;

 float pingfen[10];

 char xuanpingwei[2];

}ss[M]; 

/*M為最多的明星個(gè)數(shù),程序中采用宏定義的方式,可以隨時(shí)改變?cè)闯绦蛑卸x的修改值。本程序中宏定義:#define M 50。*/

//數(shù)據(jù)讀入模塊

void re_file()

{

  char i;

  FILE *fp;

  fp=fopen("zhangmo.txt","r");

  while(fscanf(fp,"%s%s%d%d%d",ss[i].name,&ss[i].xuhao,&ss[i].pinjunfen,

         ss[i].xuanpingwei[0],ss[i].xuanpingwei[1]

         )!=EOF)  i++;

  fclose(fp);

}

/*本程序?yàn)榱撕?jiǎn)化計(jì)算結(jié)果,分?jǐn)?shù)采用100進(jìn)制整數(shù)形式,如果需要修改,可以定義為float類(lèi)型。*/

4.2.2計(jì)算模塊

本程序的目的是為了計(jì)算出每位明星的平均分和最佳或者最差評(píng)分員。采用冒泡法來(lái)計(jì)算最小值和最大值,從而判斷平均值。在判斷最好和最差評(píng)分員。

void caculate()

{char fenshu[10],zhongjinazhi;

 int zhonggong=0;

 int i,j,k;

 int zuixiaozhi,zuidazhi;

 for(k=0;k<N;k++)

{

 for(i=0;i<10;i++)

 fenshu[i]=ss[k].pingfen[i];

 

 for(i=0;i<9;i++)

 for(j=i;j<9;j++)

 { 

     if(fenshu[i]>fenshu[j+1])

       {

              zhongjinazhi=fenshu[i];

         fenshu[i]=fenshu[j+1];

         fenshu[j+1] =zhongjinazhi;      

       }

 }

for(i=1;i<9;i++)

zhonggong=zhonggong+fenshu[i];

zhonggong=zhonggong/8;

ss[k].pinjunfen=zhonggong;

zuidazhi=abs(zhonggong-ss[k].pingfen[0])

for(i=1;i<10;i++)

{

 if(abs(zhonggong-ss[k].pingfen[i])>zuidazhi)

       j=i;

}

ss[k].xuanpingwei[0]=j;//最差評(píng)委

zuixiaozhi=abs(zhonggong-ss[k].pingfen[0]);

for(i=1;i<10;i++)

{

  if(zuixiaozhi>abs(zhonggong-ss[k].pingfen[i]))

  {

    zuixiaozhi=abs(zhonggong-ss[k].pingfen[i]);

       j=i;

  }

}

ss[k].xuanpingwei[1]=j;//最好評(píng)委

 }

}

4.2.3增加模塊

從鍵盤(pán)添加新的明星信息和評(píng)分

void apepend()

{

  int n,i,j;

  printf("\n增加歌星人數(shù)");

  scanf("%d",&n);  N=N+n;      //新增人數(shù)疊加,不影響原來(lái)的明星

  printf("\n現(xiàn)在,輸入相關(guān)信息:\n");

  for(i=1;i<n+1;i++)

  {

       printf("歌星:");

    scanf("%s",&ss[N-n-1+i].name);

       printf("序號(hào):"); 

       scanf("%s",&ss[N-n-1+i].xuhao);

       printf("評(píng)委打分:");

       for(j=0;j<10;j++)

       { 

              printf("評(píng)委%d:",j+1);

           scanf("%d",&ss[N-n-1+i].pingfen[j]);

       }

  }

}

4.2.4修改模塊

該程序的功能是根據(jù)姓名或者序號(hào)修改明星的評(píng)分,序號(hào),或者姓名。

void modify()

{

 int i,j=-1,t;

 char m[40],d[10];

 printf("\n\n\n");

 printf("    *******************************************\n");

 printf("    *                                         *\n");

 printf("    *  1:姓名         2:序號(hào)                  *\n");

 printf("    *                                         *\n");

 printf("    *******************************************\n");

 printf("請(qǐng)輸入修改選項(xiàng):");

 scanf("%d",&i);

 if(i==1)

 {

   printf("請(qǐng)輸入歌星:");

   scanf("%s",&m);

   for(i=0;i<N;i++)

   if(strcmp(m,ss[i].name)==0)

          j=i;

 }

else if(i==2)

{

  printf("請(qǐng)輸入序號(hào):");

  scanf("%s",&d);

  for(i=0;i<N;i++)

       if(strcmp(d,ss[i].xuhao)==0)

                j=i;

}

if(j==-1)

printf("沒(méi)有找到!\n");

else {

   printf("序號(hào)  歌星    評(píng)委1   2   3   4   5   6   7   8   9  10  平均分最差評(píng)委最好評(píng)委\n");

       printf("%3s%6s%8d%5d%5d%4d%4d%4d%4d%4d%4d%4d%8d%8d%6d\n",ss[j].xuhao,ss[j].name,

              ss[j].pingfen[0],ss[j].pingfen[1],ss[j].pingfen[2],ss[j].pingfen[3],

              ss[j].pingfen[4],ss[j].pingfen[5],ss[j].pingfen[6],ss[j].pingfen[7],

              ss[j].pingfen[8],ss[j].pingfen[9],ss[j].pinjunfen,ss[j].xuanpingwei[0],

              ss[j].xuanpingwei[1]);

}

printf("\n\n");

printf("     ********************************************************************\n");

printf("     *                                                                  *\n");

printf("     *        1:序號(hào)           2:歌星名                 3:評(píng)分        *\n");

printf("     *                                                                  *\n");

printf("     ********************************************************************\n");

scanf("%d",&t);

switch(t)

{

    case 1:printf("序號(hào)改為:");scanf("%s",&ss[j].xuhao);break;

       case 2:printf("姓名改為:");scanf("%s",ss[j].name);break;

       case 3:printf("評(píng)分改為:");

                 {

                  for(i=0;i<10;i++)

                     {

                        printf("評(píng)委%d",i+1);

                       scanf("%f",&ss[i].pingfen[i]);

                     }

                 }

              break;

}

}

4.2.5刪除模塊

該程序的功能是根據(jù)序號(hào)或者明星姓名刪除某位明星的評(píng)分?jǐn)?shù)據(jù)。

void delete1()

{

int i,j=-1;

char m[40],d[10];

printf("刪除模塊:");

printf("\n\n");

printf("     ******************************************************************\n");

printf("     *                                                                *\n");

printf("     *        1:歌星名          2:序號(hào)                                *\n");

printf("     *                                                                *\n");

printf("     ******************************************************************\n");

printf("輸入刪除選項(xiàng):\n");

scanf("%d",&i);

if(i==1)

{

 printf("輸入歌星名:");

 scanf("%s",m);

 for(i=0;i<N;i++)

       if(strcmp(m,ss[i].name)==0)

              j=i;

}

if(i==2)

{

 printf("輸入序號(hào):");

 scanf("%s",d);

 for(i=0;i<N;i++)

       if(strcmp(d,ss[i].xuhao)==0)

              j=i;

}

 

if(j!=-1)

{

  N=N-1;

  for(i=j;i<=N&&j!=-1;i++)

         ss[i]=ss[i+1];

}

else if(j==-1)

printf("沒(méi)有找到!\n");

}

4.2.6瀏覽模塊

該模塊的功能是顯示所有的明星評(píng)分?jǐn)?shù)據(jù)。

void display()

{

int i,j;

system("cls");

  printf("序號(hào)  歌星    評(píng)委1   2   3   4   5   6   7   8   9  10  平均分最差評(píng)委最好評(píng)委\n");

for(j=0,i=1;j<N;i++,j++)

{                                                                                        printf("%3s%6s%8d%5d%5d%4d%4d%4d%4d%4d%4d%4d%8d%8d%6d\n",ss[j].     xuhao,ss[j].name,

              ss[j].pingfen[0],ss[j].pingfen[1],ss[j].pingfen[2],ss[j].pingfen[3],

              ss[j].pingfen[4],ss[j].pingfen[5],ss[j].pingfen[6],ss[j].pingfen[7],

              ss[j].pingfen[8],ss[j].pingfen[9],ss[j].pinjunfen,ss[j].xuanpingwei[0],

              ss[j].xuanpingwei[1]);

   if(i%10==0)

   {

          printf("按任意鍵繼續(xù)....");

          getch();

          puts("\n");

  printf("序號(hào)  歌星    評(píng)委1   2   3   4   5   6   7   8   9  10  平均分最差評(píng)委最好評(píng)委\n");

   }

}

}

4.2.7查詢(xún)模塊

通過(guò)輸入序號(hào)或者歌星名,調(diào)取歌星的信息

void query()

{

int i,j[20]={-1},d,k,t=0;

char m[20];

printf("查詢(xún)模塊:");

printf("\n\n");

printf("   ********************************************************************\n");

printf("   *                                                                  *\n");

printf("   *        1:歌星名                     2:序號(hào)                      *\n");

printf("   *                                                                  *\n");

printf("   ********************************************************************\n");

printf("輸入查詢(xún)選項(xiàng):\n");

scanf("%d",&k);

if(k==1)

{

  printf("請(qǐng)輸入姓名:");

  scanf("%s",&m);

  for(i=0;i<N;i++)

         if(strcmp(m,ss[i].name)==0)

         {

           j[t]=i;t=t+1;

         }

         else if(k==2)

     {

       printf("請(qǐng)輸入序號(hào)");

       scanf("%d",&d);

        for(i=0;i<N;i++)

       if(d==ss[i].xuhao)

          {

           j[t]=i;t++;

          }

      if(j[0]==-1&&t==0)

       printf("沒(méi)有找到!\n");

      if(j[0]!=-1&&t!=0)

         {

       printf("序號(hào)  歌星    評(píng)委1   2   3   4   5   6   7   8   9  10  平均分最差               評(píng)委最好評(píng)委\n");

 for(i=0;i<t;i++)   printf("%3s%6s%8d%5d%5d%4d%4d%4d%4d%4d%4d%4d%8d%8d%6d\n",ss[i].xuhao,ss[i].name,

              ss[i].pingfen[0],ss[i].pingfen[1],ss[i].pingfen[2],ss[i].pingfen[3],

              ss[i].pingfen[4],ss[i].pingfen[5],ss[i].pingfen[6],ss[i].pingfen[7],

              ss[i].pingfen[8],ss[i].pingfen[9],ss[i].pinjunfen,ss[i].xuanpingwei[0],

              ss[i].xuanpingwei[1]);

         }

   }

}

}

5上機(jī)操作

5.1主界面顯示:

圖5-1主界面

5.2瀏覽模塊:按1進(jìn)入

圖5-2瀏覽模塊

5-3增加模塊:按3

圖5-3增加模塊

 

5-4刪除模塊:刪除歌星1的數(shù)據(jù)

圖5-4刪除模塊

5.5修改模塊:按2修改。已將序號(hào)2變成了序號(hào)33.

圖5-5修改模塊

5.6刪除模塊:已將序號(hào)為33的學(xué)員信息刪除。

圖5-6刪除模塊

 

5.7計(jì)算模塊:計(jì)算當(dāng)前輸入信息,判斷平均分,最好評(píng)委,最差評(píng)委。

圖5-7計(jì)算模塊

5.8查詢(xún)模塊,可通過(guò)序號(hào)或者歌星名查詢(xún)信息。

圖5-8-1查詢(xún)模塊

顯示相應(yīng)的值:

5-8-2查詢(xún)模塊

5.9退出程序:

圖5-9退出程序

5-10保存的文件夾

6.總結(jié)

通過(guò)對(duì)本程序的寫(xiě)入,運(yùn)行,調(diào)試,我知道如何將分離的模塊函數(shù)綜合起來(lái),將C語(yǔ)言課程中學(xué)到的理論知識(shí)運(yùn)用到實(shí)際中,編寫(xiě)一個(gè)小小的明星評(píng)分系統(tǒng),很有些成就感。

在運(yùn)行程序中,我有幾次忘了改文件的輸出格式,導(dǎo)致輸出結(jié)構(gòu)體亂碼,文件的寫(xiě)入方式不對(duì),也導(dǎo)致文件不能打開(kāi)。明星評(píng)分系統(tǒng)寫(xiě)的函數(shù)不對(duì),也導(dǎo)致輸出的結(jié)果不對(duì),最后改對(duì)了。

7.致謝

     感謝學(xué)校能給我們這次機(jī)會(huì)實(shí)習(xí),有幸接觸到計(jì)算機(jī)編程,雖然和專(zhuān)業(yè)不大關(guān)系,但我們學(xué)習(xí)到了編程的奧秘和樂(lè)趣。

參考文獻(xiàn)

[1] 譚浩強(qiáng). C程序設(shè)計(jì)(第三版)[M]. 北京: 清華大學(xué)出版社, 2005.

[2] 張冬梅, 劉遠(yuǎn)興, 陳晶, 等. 基于PBL的C語(yǔ)言課程設(shè)計(jì)及學(xué)習(xí)指導(dǎo)[M]. 北京: 清華大學(xué)出版社, 2011.

[3] 網(wǎng)絡(luò)資源……

 

 
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 黄色一级片在线播放 | 久久黄色网 | av中文网| 国产精品国产三级国产aⅴ浪潮 | 久久99网 | 久久亚洲一区二区 | 日韩aⅴ在线观看 | 在线免费观看成年人视频 | 日韩成人一区 | 中文字幕第一页在线 | 亚洲欧美日本国产 | 日韩色视频| 日韩成人久久 | 中日韩欧美一级片 | 国产一级在线 | 久久久久久免费观看 | 九九九国产| 国产日产久久高清欧美一区 | 亚洲国产一区二区三区在线观看 | 日韩一区二区三区视频 | 岛国在线免费观看 | 日本激情视频在线播放 | 精品一级 | 性欧美精品一区二区三区在线播放 | av网址在线| 一区二区中文字幕 | 中文字幕乱码一区二区三区 | 亚洲免费一区 | 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 中文字幕不卡视频在线观看 | 国产精品福利视频 | 欧美在线a | 四虎影院在线播放 | 男女视频在线免费观看 | www.亚洲一区二区三区 | 国产一区高清 | 视频一区二区在线观看 | 男人天堂av网站 | 久久久91精品国产一区二区三区 | 色姑娘av| 亚洲一区二区三区视频 |