<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      第一周實驗

      簡介:我在博客園中找到了前人制作的一份小程序,學生成績管理系統。
      (1)來源http://www.rzrgm.cn/esperanza/p/8056952.html

      (2)運行環境:DEV C++
      源代碼如下:

      點擊查看代碼 #include #include #include using namespace std;

      int num; //總學生人數

      class student {
      friend class studentMessage;
      private:
      string ID;
      string name;
      double score[5]; //1-4代表math、English、OPP和總成績 ,0號單元空出
      student * next;
      public:
      student();
      string getName(){return name;}
      string getID(){return ID;}
      double getMath(){return score[1];}
      double getEnglesh(){return score[2];}
      double getOPP(){return score[3];}
      double gettotol(){return score[4];}
      student* getNext(){return next;}

      static void analyse(int ,student * ); //分析成績
      void display();                          //打印成績
      void swap();                          //交換對象和對象->next的信息
      

      };

      student::student()
      {
      cout<<"請輸入學生學號 : ";cin>>ID;
      cout<<"請輸入學生姓名 : ";cin>>name;
      cout<<"請輸入學生的數學、英語和OPP成績 : "<<endl;
      int a,b,c;
      cin>>a;
      while(a<0||a>100)
      {
      cout<<"輸入成績有誤,請重新輸入: "<<endl;
      cin>>a;
      }
      cin>>b;
      while(b<0||b>100)
      {
      cout<<"輸入成績有誤,請重新輸入: "<<endl;
      cin>>b;
      }
      cin>>c;
      while(c<0||c>100)
      {
      cout<<"輸入成績有誤,請重新輸入: "<<endl;
      cin>>c;
      }
      score[1]=a;
      score[2]=b;
      score[3]=c;
      score[4]=a+b+c;
      next=NULL;
      }

      void student::analyse(int a,student * first)
      {
      int you=0,liang=0,zhong=0,jige=0,bujige=0;
      student * t=first;
      double average=0; //平均分
      while(t)
      {
      int b = int(t->score[a]/10);
      switch(b)
      {
      case 10:
      case 9:you++;break;
      case 8:liang++;break;
      case 7:zhong++;break;
      case 6:jige++;break;
      default:bujige++;
      }
      average+=t->score[a];
      t=t->next;
      }
      average=average/num;
      cout<<" 考生總人數 : "<<num<<" 平均分 : "<<average<<endl;
      cout<<"\n 優 良 中 及格 不及格 "<<endl;
      cout<<" "<<you<<" \t"<<liang<<" \t"<<zhong<<"\t"<<jige<<"\t"<<bujige<<endl;
      }

      void student::display()
      {
      cout<<" "<<setw(3)<<ID<<" "<<setw(3)<<name<<" ";
      for (int i=1;i<=4;i++)
      {
      cout<<setw(3)<<score[i]<<" ";
      }
      cout<<endl;
      }

      void student::swap()
      {
      int j;
      string na,id;
      double sco[5];
      na=name;name=next->name;next->name=na;
      id=ID;ID=next->ID;next->ID=id;
      for(j=1;j<=4;j++)
      {
      sco[j]=score[j];
      score[j]=next->score[j];
      next->score[j]=sco[j];
      }
      }

      class studentMessage{
      private:
      student * first;
      student * last;
      public:
      studentMessage();
      student* getFirst(){return first;}
      student* getLast(){return last;}
      int getNum(){return num;}
      void add(); //向表中增加學生成績記錄
      void search(); //在表中查找學生成績記錄
      void del(); //在表中刪除學生成績記錄
      void showOne(); //分析一門課的成績
      void showAll(); //輸出所有同學所有科目的成績
      void sort(); //按一門課成績或總成績排序
      void clear(); //清空所有信息并退出系統

      };

      studentMessage::studentMessage()
      {
      first=NULL;
      last=NULL;
      num=0;
      }

      void studentMessage::add()
      {
      student * t =new student;
      student *p = first;
      while(p){
      if(p->IDt->ID)
      {
      cout<<"\n學號輸入錯誤或該學生成績已經存在!(如需修改,請先刪除再重新錄入)"<<endl;
      return;
      }
      p=p->next;
      }
      num++;
      if(first
      NULL)
      {
      first=last=t;

      }
      else
      {
          last->next=t;
          last=last->next;
      }
      

      }

      void studentMessage::search()
      {
      string a;
      cout<<"\n請輸入要查找的學生的學號:";cin>>a;
      student *t = first;
      while(t){
      if(t->ID==a)
      break;
      t=t->next;
      }
      if(!t)
      {
      cout<<"\n未找到要查找學生!"<<endl;
      return;
      }
      cout<<"\n查找成功!"<<endl;
      cout << " 學號 姓名 數學 英語 OPP 總成績" << endl;
      t->display();
      }

      void studentMessage::del()
      {
      string a;
      cout<<"\n請輸入要刪除的學生的學號: ";cin>>a;
      student *t = first;
      student *p=NULL;
      while(t){
      if(t->ID==a)
      break;
      p=t;
      t=t->next;
      }
      if(!t)
      {
      cout<<"\n未找到要刪除學生!"<<endl;
      return;
      }
      if(!p)
      {
      first=first->next;
      cout<<"\n成功刪除學生"<<a<<endl;
      delete t;
      }
      else
      {
      p->next=t->next;
      cout<<"成功刪除學生"<<a<<endl;
      delete t;
      }

      num--;
      

      }

      void studentMessage::showOne()
      {
      int a;
      while(1)
      {
      cout<<"\n想要分析哪一門成績?請輸入相應序號(1:math 2:English 3:OPP): ";cin>>a;
      if(a!=1&&a!=2&&a!=3)
      cout<<"\n輸入序號有誤,請重新輸入!"<<endl;
      else
      break;
      }
      cout<<"\n\t成績分析如下: \n"<<endl;
      student::analyse(a,first);
      }

      void studentMessage::showAll()
      {
      cout << "---------------------成績列表----------------------"<< endl;
      cout << " 學號 姓名 數學 英語 OPP 總成績" << endl;
      student *t = first;
      while(t){
      t->display();
      t=t->next;
      }
      }

      void studentMessage::sort()
      {
      int a,n=0; //n--排名
      cout<<"想要按照什么成績排序?請輸入相應序號(1.數學 2.英語 3.OPP 4.總成績): ";
      while(1)
      {
      cin>>a;
      if (a!=1&&a!=2&&a!=3&&a!=4)
      cout<<"\n輸入序號有誤,請重新輸入 : ";
      else
      break;
      }
      student *t=first;
      student *p=t;
      while(p->next)
      {
      t=first;
      while(t->next)
      {
      if(t->next->score[a]>=t->score[a])
      {
      t->swap();
      }
      t=t->next;
      }
      p=p->next;
      }
      t = first;
      cout<<"\n\t 成績表如下: "<<endl;
      cout<<"學號 姓名 成績 排名"<<endl;
      while(t){
      n++;
      cout<<" "<getID()<<" \t"<getName()<<" \t";
      switch(a)
      {
      case 1 :cout<getMath()<<" \t"<<n<<endl;break;
      case 2 :cout<getEnglesh()<<" \t"<<n<<endl;break;
      case 3 :cout<getOPP()<<" \t"<<n<<endl;break;
      case 4 :cout<gettotol()<<" \t"<<n<<endl;break;
      }
      t=t->next;
      }
      }

      void studentMessage::clear()
      {
      int x;
      cout<<"確認要清空所有信息?請輸入1或2 (1:確認 2:取消) : ";cin>>x;
      if (x==2)
      {
      cout<<"\n取消清空\n"<<endl;
      return;
      }
      student *t = first;
      student *p;
      while(t){
      p=t;
      t=t->next;
      delete p;
      }
      cout<<"\n清空成功!\n";
      cout<<"退出成功!\n";
      }

      void showMenu()
      {
      cout << " \n";
      cout << "=\n";
      cout << " 學生成績管理系統\n\n";
      cout << " 1.顯示所有學生成績\n";
      cout << " 2.添加信息\n";
      cout << " 3.查詢信息\n";
      cout << " 4.刪除信息\n";
      cout << " 5.成績排序\n";
      cout << " 6.單科成績分析\n";
      cout << " 7.清空所有信息并退出系統\n";
      cout << " 0.退出系統\n";
      cout << "
      =\n";
      cout << " \n";
      }

      int main()
      {
      int h;
      studentMessage stuM=studentMessage();
      while(1)
      {
      showMenu();
      cout << "請輸入操作對應的序號 : ";
      cin >>h;
      cout<<endl;
      switch(h)
      {
      case 1: stuM.showAll(); break;
      case 2: stuM.add(); break;
      case 3: stuM.search(); break;
      case 4: stuM.del(); break;
      case 5: stuM.sort(); break;
      case 6: stuM.showOne(); break;
      case 7: stuM.clear(); return 0;
      case 0: cout<<"\n退出成功!";return 0;
      default:cout<<"\n輸入序號有誤!請輸入正確的序號。"<<endl;
      }
      }
      }

      運行截圖:

      (3)主要問題
      1:沒有清屏和暫停功能,窗口太繁雜

      2:部分函數比較麻煩,效率不高,且注釋不清楚

      3:該系統沒有文件讀寫功能,每次打開系統都要重新錄入數據

      (4)新代碼如下
      問題1:

      點擊查看代碼
       system("pause");
          system("cls");
      

      問題2:

      點擊查看代碼

      void student::analyse(int a, student *first) {
      int you = 0, liang = 0, zhong = 0, jige = 0, bujige = 0;
      double totalScore = 0.0; // 總分
      student *t = first;

      while (t) {
          int b = t->score[a] / 10;
      
          switch (b) {
              case 10:
              case 9:
                  you++;
                  break;
              case 8:
                  liang++;
                  break;
              case 7:
                  zhong++;
                  break;
              case 6:
                  jige++;
                  break;
              default:
                  bujige++;
          }
      
          totalScore += t->score[a];
          t = t->next;
      }
      
      double average = totalScore / num;
      cout << " 考生總人數 : " << num << "        平均分 : " << average << endl;
      cout << "\n 優     良      中     及格    不及格  " << endl;
      cout << " " << you << " \t" << liang << " \t" << zhong << "\t" << jige << "\t" << bujige << endl;
      

      }

      修改部分中,將變量 average 的計算放在循環外部,避免每次循環都重新計算。 將 totalScore 用于計算平均分,避免多次循環中的重復累加。 對代碼進行了一些格式化和注釋,以提高可讀性。

      問題3:

      點擊查看代碼
       // 寫入文件
          ofstream outfile("student_data.txt", ios::app); // 打開文件
          if (outfile.is_open()) {
              outfile << t->ID << " ";
              for (int i = 0; i < 10; ++i) {
                  outfile << t->score[i] << " ";
              }
              outfile << endl;
              outfile.close(); // 關閉文件
          } else {
              cout << "無法打開文件!" << endl;
          }
      
          system("pause");
          system("cls");
      }
      

      (5)修改后程序運行截圖

      (6)總結
      相對來說,這是一個小項目,存在著或多或少的問題,代碼比較簡潔,我盡力在源代碼中尋找可以修改精進的部分,比較麻煩的地方是在文件讀寫部分中,文件讀寫是在大一時學習的,對部分知識有些遺忘,不過這次實驗,可以讓我回顧關于這方面的知識,對文件讀寫部分掌握更深了。在我看來,在開發軟件時,一定要進行軟件工程方面的思考,做好需求分析,明確軟件的具體目標,定制計劃,不能盲目的去進行軟件的開發,以免對之后的繁瑣修改。

      posted @ 2024-03-07 10:20  樂0304  閱讀(37)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 婷婷五月综合丁香在线| 亚洲av成人三区国产精品 | 午夜精品区| 欧美人与禽2o2o性论交| 少妇被粗大的猛烈进出动视频 | 中文成人无字幕乱码精品区| 国产精品午夜无码AV天美传媒| 国产成人午夜精品福利| 天干天干天啪啪夜爽爽99| 日韩中文字幕av有码| 深夜福利成人免费在线观看| 最新的精品亚洲一区二区| 久久91精品牛牛| 亚洲 欧美 综合 另类 中字| 亚洲综合av男人的天堂| 成人免费无码大片a毛片| 重口SM一区二区三区视频| 又爽又黄无遮挡高潮视频网站| 亚洲精品香蕉一区二区| 精品素人AV无码不卡在线观看| 国产精品免费视频不卡| 伊人久久大香线蕉av色婷婷色| 男人狂桶女人出白浆免费视频 | 精品 日韩 国产 欧美 视频| 色窝窝免费播放视频在线 | 国产视频最新| 国产在线无码视频一区二区三区 | h无码精品3d动漫在线观看| 日日摸夜夜添夜夜添国产三级| 久久被窝亚洲精品爽爽爽| 日韩免费无码人妻波多野| 亚洲sm另类一区二区三区| 国产精品男女爽免费视频| 国产午夜亚洲精品国产成人| 中文字幕乱码亚洲无线三区| 亚洲精品国产免费av| 国产免费久久精品44| 在线天堂最新版资源| 安宁市| 国产精品一码二码三码| 无码专区 人妻系列 在线|