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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2567|回復: 0
打印 上一主題 下一主題
收起左側

C語言學生成績管理系統設計Word格式報告文檔

[復制鏈接]
跳轉到指定樓層
樓主
ID:455727 發表于 2018-12-26 18:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  • 概要設計
  • 題目簡述
此程序為一個學生學籍管理系統,用戶可以在程序開始運行時選擇學生人數和課程人數,在輸入之后便可進行操作, 計算每科的總成績、平均成績,計算每個人的總成績、平均成績,按分數排序,按學號排序,通過學號搜索信息,通過姓名搜索信息,各科成績分析,列出所有人員信息 等功能。
2.功能模塊圖
  • . 選擇學生人數和課程人數
  • . 計算每科的總成績、平均成績
  • . 計算每個人的總成績、平均成績
  • . 按分數排序
  • .按學號排序
  • . 通過學號搜索信息
  • . 通過姓名搜索信息
  • . 各科成績分析
  • . 列出所有人員信息
2.詳細流程
     首先定義結構體存放學生的基本屬性
//結構體的定義,表示每個學生的信息
typedef struct                            //定義了一個名字叫做student的結構體
{
              int school_number;              //學號
              char name[128];                            //姓名
              float object[128];              //科目
              float total_sort;              //總成績
              float average_sort;              //平均成績
}student;
接著定義了四個全局變量
//定義了四個全局變量
int how_many_people;                            //多少人
int how_many_object;                            //多少科
student theClass[30],temp;              //結構體數組,表示多少個人,30可以換,temp交換用的一個結構體
char anything;                                                        //記錄任意鍵的變量名
接著定義十個函數分別完成各個的功能,每個參數引入的形式參數
void how_many_people_and_object();
//一共幾人幾科
void input_record_manually();            
//輸入信息依次輸入學生名字以及課程科目平均成績
void Calculate_total_and_average_score_of_every_course();              //計算每科的總成績平均成績 運用兩個for循環統計每個科目的每個人的信息相加求出總和,除以人數求出平均值
void Calculate_total_and_average_score_of_every_student();                            //計算每個人的總成績平均成績,由結構體直接讀出來
voidSort_in_descending_order_by_total_score_of_every_student();//按總成績排名
用冒泡排序 將第一個元素與之后的n個元素比較,如果有比第一個元素大的元素則將其置換,繼續比較,則一次比較完畢,最后一個元素是最大的,再將第二個元素與n-1個元素比較重復過程。
void Sort_in_ascending_order_by_number();              //按學號大小排名用冒泡排序 將第一個元素與之后的n個元素比較,如果有比第一個元素大的元素則將其置換,繼續比較,則一次比較完畢,最后一個元素是最大的,再將第二個元素與n-1個元素比較重復過程。
void Search_by_number();//通過學號來搜索
void Search_by_name();//通過姓名來搜索
void Statistic_analysis_for_every_course();//分析各科成績
void List_record();//列出信息
流程圖:
  • 程序代碼

  1. #include<stdio.h>                            //C語言的頭文件
  2. #include<windows.h>                            //windows的頭文件
  3. #include<conio.h>                            //控制臺輸入輸出頭文件
  4. #include<time.h>                            //時間的頭文件
  5. void how_many_people_and_object();                                                                                                                //一共幾人幾科
  6. void input_record_manually();                                                                                                                              //輸入信息
  7. void Calculate_total_and_average_score_of_every_course();                            //計算每科的總成績平均成績
  8. void Calculate_total_and_average_score_of_every_student();                            //計算每個人的總成績平均成績
  9. void Sort_in_descending_order_by_total_score_of_every_student();//按總成績排名
  10. void Sort_in_ascending_order_by_number();                                                                                    //按學號大小排名
  11. void Search_by_number();                                                                                                                                            //通過學號來搜索
  12. void Search_by_name();                                                                                                                                                          //通過姓名來搜索
  13. void Statistic_analysis_for_every_course();                                                                                    //分析各科成績
  14. void List_record();                                                                                                                                                                        //列出信息

  15. //結構體的定義,表示每個學生的信息
  16. typedef struct                            //定義了一個名字叫做student的結構體
  17. {
  18.               int school_number;              //學號
  19.               char name[128];                            //姓名
  20.               float object[128];              //科目
  21.               float total_sort;              //總成績
  22.               float average_sort;              //平均成績
  23. }student;

  24. //定義了四個全局變量
  25. int how_many_people;                            //多少人
  26. int how_many_object;                            //多少科
  27. student theClass[30],temp;              //結構體數組,表示多少個人,30可以換,temp交換用的一個結構體
  28. char anything;                                                        //記錄任意鍵的變量名

  29. //函數的定義
  30. void how_many_people_and_object()
  31. {
  32.               printf("請輸入學生人數:");
  33.               scanf("%d",&how_many_people);
  34.               printf("請輸入總科目:");
  35.               scanf("%d",&how_many_object);
  36. }
  37. void input_record_manually()
  38. {
  39.               char ch;
  40.               for(int i=0;i<how_many_people;i++)
  41.               {
  42.                             printf("請輸入第 %d 個人的姓名:",i+1);
  43.                             scanf("%s",&theClass[i].name);
  44.                            
  45.                             printf("請輸入第 %d 個人的學號:",i+1);
  46.                             scanf("%d",&theClass[i].school_number);

  47.                             float  sum=0;
  48.                             for(int j=0;j<how_many_object;j++)
  49.                             {
  50.                                           printf("請輸入第 %d 個人的第 %d 科成績:",i+1,j+1);
  51.                                           scanf("%f",&theClass[i].object[j]);

  52.                                           sum=sum+theClass[i].object[j];
  53.                                           theClass[i].total_sort=sum;
  54.                                           theClass[i].average_sort=theClass[i].total_sort/how_many_object;                           
  55.                             }
  56.                             printf("總成績:              %.2f\n",theClass[i].total_sort);
  57.                             printf("平均成績:              %.2f\n",theClass[i].average_sort);
  58.               }
  59.               printf("任意鍵返回主菜單");
  60.               ch=getche();
  61. }
  62. void Calculate_total_and_average_score_of_every_course()
  63. {
  64.               char ch;
  65.               float total_sum=0;
  66.               float average_sum=0;
  67.               for(int j=0;j<how_many_object;j++)
  68.               {
  69.                             for(int i=0;i<how_many_people;i++)
  70.                             {
  71.                                           total_sum = theClass[i].object[j] + total_sum;
  72.                                           average_sum = total_sum / how_many_people;
  73.                             }
  74.                             printf("第 %d 科的總成績:%.2f                            平均成績:%.2f\n",j+1,total_sum,average_sum);
  75.                             total_sum=0;
  76.                             average_sum=0;
  77.               }
  78.             
  79.               printf("任意鍵返回主菜單");
  80.               ch=getche();
  81. }
  82. void Calculate_total_and_average_score_of_every_student()
  83. {
  84.               char ch;
  85.               for(int i=0;i<how_many_people;i++)
  86.               {
  87.                             printf("%s              的總成績: %.2f              平均成績: %.2f\n",theClass[i].name,theClass[i].total_sort,theClass[i].average_sort);
  88.               }
  89.               printf("任意鍵返回主菜單");
  90.               ch=getche();
  91. }
  92. void Sort_in_descending_order_by_total_score_of_every_student()
  93. {
  94.               char ch;
  95.               for(int i=0;i<how_many_people;i++)                            //冒泡排序
  96.               {
  97.                             for(int j=i+1;j<how_many_people;j++)
  98.                             {
  99.                                           if(theClass[i].total_sort<theClass[j].total_sort)
  100.                                           {
  101.                                                         temp=theClass[i];
  102.                                                         theClass[i]=theClass[j];
  103.                                                         theClass[j]=temp;
  104.                                           }
  105.                             }
  106.               }
  107.               for(int ii=0;ii<how_many_people;ii++)
  108.               {
  109.                             printf("第%d名:%s--%.2f\n",ii+1,theClass[ii].name,theClass[ii].total_sort);
  110.               }
  111.               printf("任意鍵返回主菜單");
  112.               ch=getche();
  113. }
  114. void Sort_in_ascending_order_by_number()
  115. {
  116.               char ch;
  117.               for(int i=0;i<how_many_people;i++)
  118.               {
  119.                             for(int j=i+1;j<how_many_people;j++)
  120.                             {
  121.                                           if(theClass[i].school_number>theClass[j].school_number)
  122.                                           {
  123.                                                         temp=theClass[i];
  124.                                                         theClass[i]=theClass[j];
  125.                                                         theClass[j]=temp;
  126.                                           }
  127.                             }
  128.               }
  129.               for(int ii=0;ii<how_many_people;ii++)
  130.               {
  131.                             printf("%d--%s--%.2f\n",theClass[ii].school_number,theClass[ii].name,theClass[ii].total_sort);
  132.               }
  133.               printf("任意鍵返回主菜單");
  134.               ch=getche();
  135. }
  136. void Search_by_number()
  137. {
  138.               char ch;
  139.               int number;
  140.               printf("請輸入學號:");
  141.               scanf("%d",&number);
  142.               system("cls");
  143.               for(int i=0;i<how_many_people;i++)
  144.               {
  145.                             if(number - theClass[i].school_number == 0)
  146.                             {
  147.                                           printf("姓名:%s\n",theClass[i].name);
  148.                                           printf("學號:%d\n",theClass[i].school_number);
  149.                                           for(int j=0;j<how_many_object;j++)
  150.                                           {
  151.                                                         printf("第 %d 科成績:%.2f\n",j+1,theClass[i].object[j]);
  152.                                           }
  153.                                           printf("總成績:%.2f\n平均成績:%.2f\n\n",theClass[i].total_sort,theClass[i].average_sort);
  154.                             }
  155.               }
  156.               printf("任意鍵返回主菜單");
  157.               ch=getche();
  158. }
  159. void Search_by_name()
  160. {
  161.               char ch;
  162.               char n[128];
  163.               printf("請輸入姓名:");
  164.               scanf("%s",&n);
  165.               for(int i=0;i<how_many_people;i++)
  166.               {
  167.                             if(strcmp(n,theClass[i].name)==0)
  168.                             {
  169.                                           printf("姓名:%s\n",theClass[i].name);
  170.                                           printf("學號:%d\n",theClass[i].school_number);
  171.                                           for(int j=0;j<how_many_object;j++)
  172.                                           {
  173.                                                         printf("第 %d科成績:%.2f\n",j+1,theClass[i].object[j]);
  174.                                           }
  175.                                           printf("總成績:%.2f\n平均成績:%.2f\n",theClass[i].total_sort,theClass[i].average_sort);
  176.                             }
  177.               }
  178.               printf("任意鍵返回主菜單");
  179.               ch=getche();
  180. }
  181. void Statistic_analysis_for_every_course()
  182. {
  183.               char ch;
  184.               float a[6][6]={0};                            //第幾科的第幾類成績(優良中差及不及),最大為6課,可以改
  185.               for(int i=0;i<how_many_people;i++)
  186.               {
  187.                             for(int j=0;j<how_many_object;j++)
  188.                             {
  189.                                           if(theClass[i].object[j]>=90  &&  theClass[i].object[j]<=100)
  190.                                                         a[j][0]++;
  191.                                           else if(theClass[i].object[j]>=80  &&  theClass[i].object[j]<=89)
  192.                                                         a[j][1]++;
  193.                                           else if(theClass[i].object[j]>=70  &&  theClass[i].object[j]<=79)
  194.                                                         a[j][2]++;
  195.                                           else if(theClass[i].object[j]>=60  &&  theClass[i].object[j]<=69)
  196.                                                         a[j][3]++;
  197.                                           else
  198.                                                         a[j][4]++;
  199.                             }
  200.               }
  201.               for(int j=0;j<how_many_object;j++)
  202.               {
  203.                             printf("第 %d 科優秀的人數是:%.2f 所占百分比是:%.0f %%\n",j+1,a[j][0],a[j][0]/how_many_people*100);
  204.                             printf("第 %d 科良好的人數是:%.2f 所占百分比是:%.0f %%\n",j+1,a[j][1],a[j][1]/how_many_people*100);
  205.                             printf("第 %d 科中等的人數是:%.2f 所占百分比是:%.0f %%\n",j+1,a[j][2],a[j][2]/how_many_people*100);
  206.                             printf("第 %d 科及格的人數是:%.2f 所占百分比是:%.0f %%\n",j+1,a[j][3],a[j][3]/how_many_people*100);
  207.                             printf("第 %d 科不及的人數是:%.2f 所占百分比是:%.0f %%\n\n",j+1,a[j][4],a[j][4]/how_many_people*100);
  208.               }
  209.               printf("任意鍵返回主菜單");
  210.               ch=getche();
  211. }
  212. void List_record()
  213. {
  214.               char ch;
  215.               for(int i=0;i<how_many_people;i++)
  216.               {
  217.                             printf("%s\n",theClass[i].name);
  218.                             printf("%d號\n",theClass[i].school_number);

  219.                             for(int j=0;j<how_many_object;j++)
  220.                             {
  221.                                           printf("第 %d 科成績:%.2f\n",j+1,theClass[i].object[j]);
  222.                             }
  223.                             printf("總成績:%.2f\n平均成績:%.2f\n\n",theClass[i].total_sort,theClass[i].average_sort);
  224.               }
  225.               printf("任意鍵返回主菜單");
  226.               ch=getche();
  227. }

  228. //主函數
  229. int main()
  230. {
  231.               int choise;
  232.             
  233.             
  234.               printf("學生成績管理系統\n\n");
  235.               how_many_people_and_object();

  236.               part:
  237.               system("cls");
  238.               printf("1.Input record manually\n");
  239.               printf("2.Calculate total and average score of every course\n");
  240.               printf("3.Calculate total and average score of every student\n");
  241.               printf("4.Sort in descending order by total score of every student\n");
  242.               printf("5.Sort in ascending order by number\n");
  243.               printf("6.Search by number\n");
  244.               printf("7.Search by name\n");
  245.               printf("8.Statistic analysis for every course\n");
  246.               printf("9.List record\n");
  247.               printf("0.Exit\n");
  248.               printf("Please input your choice:");
  249.               scanf("%d",&choise);
  250.               if(choise==1)
  251.                             {
  252.                                           system("cls");
  253.                                           input_record_manually();
  254.                                           goto part;
  255.                             }
  256.               else if(choise==2)
  257.                             {
  258.                                           system("cls");
  259.                                           Calculate_total_and_average_score_of_every_course();
  260.                                           goto part;
  261.                             }
  262.               else if(choise==3)
  263.                             {
  264.                                           system("cls");
  265.                                           Calculate_total_and_average_score_of_every_student();
  266.                                           goto part;
  267.                             }
  268.               else if(choise==4)
  269.                             {
  270.                                           system("cls");
  271.                                           Sort_in_descending_order_by_total_score_of_every_student();
  272.                                           goto part;
  273.                             }
  274.               else if(choise==5)
  275.                             {
  276.                                           system("cls");
  277.                                           Sort_in_ascending_order_by_number();
  278.                                           goto part;
  279.                             }
  280.               else if(choise==6)
  281.                             {
  282.                                           system("cls");
  283.                                           Search_by_number();
  284.                                           goto part;
  285.                             }
  286.               else if(choise==7)
  287.                             {
  288.                                           system("cls");
  289.                                           Search_by_name();
  290.                                           goto part;
  291.                             }
  292.               else if(choise==8)
  293.                             {
  294.                                           system("cls");
  295.                                           Statistic_analysis_for_every_course();
  296.                                           goto part;
  297.                             }
  298.               else if(choise==9)
  299.                             {
  300.                                           system("cls");
  301.                                           List_record();
  302.                                           goto part;
  303.                             }
  304.               else if(choise==0)
  305.                             return 0;
  306.               else
  307.                             ;
  308. return 0;
  309. }
復制代碼

4.技術關鍵和設計心得
在這次課程設計中,我們首先對系統的整體功能進行了構思,然后用結構化分析方法進行分析,將整個系統清楚的劃分為幾個模塊,再根據每個模塊的功能編寫代碼。而且盡可能的將模塊細分,最后在進行函數的調用。我們在函數的編寫過程中,我們不僅用到了for循環、while循環和switch語句,還用到了函數之間的調用(包括遞歸調用)。由于我們是分工編寫代碼,最后需要將每個人的代碼放到一起進行調試。因為我們每個人寫的函數的思想不都一樣,所以在調試的過程中也遇到了困難,但經過我們耐心的修改,終于功夫不負有心人,我們成功了!

完整的Word格式文檔51黑下載地址:
學生學籍管理系統 - 副本.docx (56.68 KB, 下載次數: 9)


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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄色成人免费在线观看 | 国产精品久久久久久吹潮日韩动画 | 91精品国产综合久久香蕉922 | 日韩欧美久久精品 | 日韩av免费在线观看 | 亚州成人 | 久久精品国产99国产精品 | 最新日韩在线 | 一级毛片色一级 | 九九热这里只有精品在线观看 | 91久久国产综合久久91精品网站 | 毛片的网址 | 午夜伊人 | 国产小视频在线观看 | 中文字幕一区二区不卡 | 美女黄网 | 欧美99久久精品乱码影视 | 亚洲国产精品久久久久 | av在线电影网 | 最新国产精品精品视频 | 91中文字幕在线 | 国产精品久久亚洲 | 国产精品成人在线 | 91精品一区 | 欧美日韩精品一区二区三区蜜桃 | 精品综合 | 在线一级片 | 中文字幕 亚洲一区 | 国产jizz女人多喷水99 | 黄色一级电影在线观看 | 欧美精品一区二区三区蜜桃视频 | 日韩成人性视频 | 欧美精品一区二区在线观看 | 成人午夜电影网 | 久久精品国产一区二区电影 | www.xxxx欧美| 羞羞的视频免费观看 | 中文字幕日韩一区二区 | 久久新视频| 久久成人免费视频 | 精品久久不卡 |