日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

用c++模拟实现一个学生成绩管理系统

發布時間:2023/11/30 c/c++ 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用c++模拟实现一个学生成绩管理系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://blog.csdn.net/yanxiaolx/article/details/53393437

題目:用c++模擬實現一個學生成績的信息管理系統,要求能添加、刪除、修改、查看和保存學生的信息等功能

源代碼如下:

[cpp]?view plaincopy
  • #define??_CRT_SECURE_NO_WARNINGS??
  • ??
  • #include<iostream>??
  • using?namespace?std;??
  • #include<string.h>??
  • #include<fstream>??
  • ??
  • class?student??
  • {??
  • private:??
  • ????student*?next;??
  • public:??
  • ????char?stu_num[15];??????????????????//學號??
  • ????char?stu_name[30];????????????????//姓名??
  • ????float?stu_score;??????????????????????//成績??
  • ??
  • ????void?afterInsert(student?*p);//在該節點后插入一個節點??
  • ????void?afterDelete();//在該節點后刪除一個節點??
  • ??????
  • ????student?*getNext()//獲得下一個節點的指針??
  • ????{???
  • ????????return?next;???
  • ????}??
  • ??
  • ????/***********查詢學生信息************/??
  • ????void?getMage();??
  • ??
  • ????/******學生信息修改******/??
  • ????void?changeMage(int?n,?char?*ptr);??
  • ????void?changegrade(float?p);??
  • ??
  • ????/******構造*****/??
  • ????student(char?*num,?char?*name,?float?score);??
  • ????student();??
  • };??
  • ??
  • void?student::changegrade(float?p)??
  • {??
  • ????stu_score?=?p;??
  • }??
  • ??
  • student::student()???????????//構造??
  • {??
  • ????strcpy(stu_num,?"\0");??
  • ????strcpy(stu_name,?"\0");??
  • ????stu_score?=?0;??
  • ????next?=?'\0';??
  • }??
  • ??
  • student::student(char?*num,?char?*name,?float?score)??
  • {??
  • ????strcpy(stu_num,?num);??
  • ????strcpy(stu_name,?name);??
  • ????stu_score?=?score;??
  • ????next?=?'\0';??
  • }??
  • ??
  • void?student::afterInsert(student?*p)//插入節點??
  • {??
  • ????p->next?=?next;??
  • ????next?=?p;??
  • }??
  • ??
  • void?student::afterDelete()????????//刪除節點??
  • {??
  • ????student?*p?=?next;??
  • ????next?=?p->next;??
  • ????delete?p;??
  • }??
  • ??
  • void?student::getMage()?????????????//獲得信息??
  • {??
  • ????cout?<<?"學號:"?<<?stu_num?<<?"??????姓名:"?<<?stu_name;??
  • ????cout?<<?"??????c++成績:"?<<?stu_score?<<?endl;??
  • }??
  • ??
  • void?student::changeMage(int?n,?char?*ptr)??
  • {??
  • ????switch?(n)??
  • ????{??
  • ????case?1:?strcpy(stu_num,?ptr);???
  • ????????break;??
  • ????case?2:?strcpy(stu_name,?ptr);??
  • ????}??
  • }??
  • ??
  • //建立鏈表函數??
  • void??construct_list(student?*tail)??
  • {??
  • ????student?*p?=?new?student;??
  • ????char?very[20];??
  • ????float?achieve;??
  • ????cout?<<?"請輸入學號:"?<<?endl;??
  • ????cin?>>?very;??
  • ????p->changeMage(1,?very);??
  • ????cout?<<?"請輸入姓名:"?<<?endl;??
  • ????cin?>>?very;??
  • ????p->changeMage(2,?very);??
  • ????cout?<<?"請輸入c++成績:"?<<?endl;??
  • ????cin?>>?achieve;??
  • ????p->changegrade(achieve);??
  • ????system("cls");??
  • ????cout?<<?"信息輸入完畢"?<<?endl;??
  • ??
  • ????for?(;?tail->getNext()?!=?'\0';)??
  • ????{??
  • ????????tail?=?tail->getNext();??
  • ????}??
  • ??
  • ????tail->afterInsert(p);??
  • }??
  • ??
  • /*********查詢信息*********/??
  • student?*findmege(student?*head)??
  • {??
  • loop:??
  • ????cout?<<?"1--按姓名查詢???????????2--按學號查詢??????????????q--返回上一級菜單"?<<?endl;??
  • ????char?p[5],?ptr[20];??
  • ????student?*mid?=?head;??
  • ????cin?>>?p;??
  • ??
  • ????if?(p[0]?!=?'1'&&p[0]?!=?'2'&&p[0]?!=?'q'?||?strlen(p)>1)??
  • ????{??
  • ????????system("cls");??
  • ????????cout?<<?"對不起,你的輸入有誤,請重新輸入!"?<<?endl;??
  • ????????goto?loop;??
  • ????}??
  • ??
  • ????switch?(p[0])??
  • ????{??
  • ????case?'1':??
  • ????{??
  • ????????system("cls");??
  • ????????cout?<<?"請輸入要查找的姓名:"?<<?endl;??
  • ????????cin?>>?ptr;??
  • ??
  • ????????for?(;?strcmp(ptr,?mid->stu_name)?!=?0;?mid?=?mid->getNext())??
  • ????????{??
  • ????????????if?(mid->getNext()?==?'\0')??
  • ????????????{??
  • ????????????????cout?<<?"對不起,你要查找的人不存在,請確認你的輸入是否正確!"?<<?endl;??
  • ????????????????goto?loop;??
  • ????????????}??
  • ????????}??
  • ????????return?mid;??
  • ????}??
  • ????case?'2':??
  • ????{??
  • ????????system("cls");??
  • ????????cout?<<?"請輸入您要查找的學號:"?<<?endl;??
  • ????????cin?>>?ptr;??
  • ????????for?(;?strcmp(ptr,?mid->stu_num)?!=?0;?mid?=?mid->getNext())??
  • ????????{??
  • ????????????if?(mid->getNext()?==?'\0')??
  • ????????????{??
  • ????????????????cout?<<?"對不起,您要查找的內容不存在,請確認您的輸入是否正確!"?<<?endl;??
  • ????????????????goto?loop;??
  • ????????????}??
  • ????????}??
  • ????????return?mid;??
  • ????}??
  • ????case?'q':???
  • ????{??
  • ????????return?'\0';??
  • ????}??
  • ????default:??
  • ????{??
  • ????????system("cls");??
  • ????????cout?<<?"對不起,您的輸入有誤,請重新輸入!"?<<?endl;??
  • ????????goto?loop;??
  • ????}??
  • ????}??
  • }??
  • ??
  • /******************刪除鏈表?節點***********************/??
  • void?delete_list(student?*head)??
  • {??
  • ????student?*p?=?'\0';??
  • ????char?selet[4];??
  • ????system("cls");??
  • ????cout?<<?"在刪除前,系統會根據您的提示找到您要刪除的學生信息!"?<<?endl;??
  • ????p?=?findmege(head);??
  • ????if?(p?!=?'\0')??
  • ????{??
  • ????????cout?<<?"確認要刪除嗎(yes/任意鍵返回)"?<<?endl;??
  • ????????cin?>>?selet;??
  • ??
  • ????????if?(strcmp(selet,?"yes")?==?0)??
  • ????????{??
  • ????????????for?(;?head->getNext()?!=?p;?head?=?head->getNext());??
  • ????????????head->afterDelete();??
  • ????????????system("cls");??
  • ????????????cout?<<?"該信息刪除成功!"?<<?endl;??
  • ????????}??
  • ????}??
  • }??
  • ??
  • /*******************修改節點信息********************/??
  • void?change_info(student?*head)??
  • {??
  • ????system("cls");??
  • ????cout?<<?"在您修改前,系統會根據您提供的信息找的您要修改的信息:"?<<?endl;??
  • ????student?*p?=?'\0';??
  • ??
  • ????float?achieve;??
  • ????p?=?findmege(head);??
  • ????if?(p?!=?'\0')??
  • ????{??
  • ????????cout?<<?"請輸入c++成績:"?<<?endl;??
  • ????????cin?>>?achieve;??
  • ????????p->changegrade(achieve);??
  • ????????system("cls");??
  • ????????cout?<<?"修改成功!"?<<?endl;??
  • ????}??
  • ??
  • }??
  • ??
  • /**************輸出學生成績信息**************/??
  • void?output(student?*head)??
  • {??
  • ????system("cls");??
  • ????cout?<<?"1-查看指定學生信息;2-查看所有學生信息;3-分段輸出學生信息"?<<?endl;??
  • ????char?ch;??
  • ????int?n?=?0;??
  • ????head?=?head->getNext();??
  • ????cin?>>?ch;??
  • ????switch?(ch)??
  • ????{??
  • ????case?'1':???
  • ????????head?=?findmege(head);??
  • ????????if?(head?==?'\0')??
  • ????????{??
  • ????????????break;??
  • ????????}??
  • ????????head->getMage();??
  • ????????break;??
  • ????case?'2':???
  • ????while?(head)??
  • ????{??
  • ????????head->getMage();??
  • ????????head?=?head->getNext();??
  • ????}??
  • ????break;??
  • ????case?'3':???
  • ????????cout?<<?"a-60分以下;b-60~70分之間;c-70~80分之間;d-80~90分之間;e-90~100分之間:"?<<?endl;??
  • ????????cin?>>?ch;??
  • ????????switch?(ch)??
  • ????????{??
  • ????????case?'a':??
  • ????????while?(head)??
  • ????????{??
  • ????????????if?(head->stu_score?<=?60)??
  • ????????????{??
  • ????????????????head->getMage();??
  • ????????????????n++;??
  • ????????????}??
  • ????????????head?=?head->getNext();??
  • ????????}??
  • ?????????break;??
  • ????????case?'b':???
  • ????????while?(head)??
  • ????????{??
  • ????????????if?(head->stu_score>60?&&?head->stu_score?<=?70)???
  • ????????????{???
  • ????????????????head->getMage();??
  • ????????????????n++;???
  • ????????????}??
  • ????????????head?=?head->getNext();??
  • ????????}??
  • ????????break;??
  • ????????case?'c':???
  • ????????while?(head)??
  • ????????{??
  • ????????????if?(head->stu_score>70?&&?head->stu_score?<=?80)??
  • ????????????{???
  • ????????????????head->getMage();???
  • ????????????????n++;???
  • ????????????}??
  • ????????????head?=?head->getNext();??
  • ????????}??
  • ????????break;??
  • ????????case?'d':???
  • ????????while?(head)??
  • ????????{??
  • ????????????if?(head->stu_score>80?&&?head->stu_score?<=?90)??
  • ????????????{??
  • ????????????????head->getMage();??
  • ????????????????n++;??
  • ????????????}??
  • ????????????head?=?head->getNext();??
  • ????????}??
  • ????????break;??
  • ????????case?'e':???
  • ????????while?(head)??
  • ????????{??
  • ????????????if?(head->stu_score>90?&&?head->stu_score?<=?100)??
  • ????????????{???
  • ????????????????head->getMage();??
  • ????????????????n++;??
  • ????????????}??
  • ????????????head?=?head->getNext();??
  • ????????}??
  • ????????}??
  • ????????if?(n?==?0)??
  • ????????{??
  • ????????????cout?<<?"該分段內沒有您要找的學生信息"?<<?endl;??
  • ????????}??
  • ????}??
  • }??
  • ??
  • /*****************主菜單************************/??
  • void?mainmenu(student?*head)??
  • {??
  • ????char?selet[10];??
  • ????int?n?=?1;??
  • ????ofstream?outfile;??
  • ????ifstream?infile;??
  • ????student?*p,?*ptr;??
  • ????student?*test?=?head,?*mid;??
  • ????cout?<<?"*************************歡迎進入學生信息管理系統*************************"?<<?endl;??
  • ????do?{??
  • ????????cout?<<?"**************************************************************************"?<<?endl;??
  • ????????cout?<<?"1.插入信息;???2.刪除信息;??3.修改信息;?4.查看信息;?5.保存??"?<<?endl;??
  • ????????cout?<<?"按'q'鍵退出??????"?<<?endl;??
  • ????????cout?<<?"**************************************************************************"?<<?endl;??
  • ????????cin?>>?selet;??
  • ????????if?(((selet[0]<'1'?||?selet[0]>'6')?&&?selet[0]?!=?'q')?||?strlen(selet)>1)??
  • ????????{??
  • ????????????system("cls");??
  • ????????????cout?<<?"您的輸入有誤,請重新輸入!"?<<?endl;??
  • ????????????break;??
  • ????????}??
  • ????????switch?(selet[0])??
  • ????????{??
  • ??
  • ????????case?'1':??
  • ????????????construct_list(head);??
  • ????????????break;???
  • ????????case?'2':???
  • ????????????delete_list(head);???
  • ????????????break;??
  • ????????case?'3':???
  • ????????????change_info(head);??
  • ????????????break;??
  • ????????case?'4':???
  • ????????????output(head);??
  • ????????????break;??
  • ????????case?'5':????
  • ????????????outfile.open("students.txt",?ios::out?|?ios::app);??
  • ????????????for?(p?=?head->getNext();?p?!=?'\0';?p?=?p->getNext())??
  • ????????????{??
  • ????????????????outfile?<<?p->stu_name?<<?'?';??
  • ????????????????outfile?<<?p->stu_num?<<?'?';??
  • ????????????????outfile?<<?p->stu_score?<<?'?';??
  • ????????????????outfile?<<?endl;??
  • ????????????}??
  • ????????????outfile.close();??
  • ????????????system("cls");??
  • ????????????cout?<<?"保存成功!"?<<?endl;??
  • ????????????break;??
  • ????????case?'q':???
  • ????????????break;??
  • ????????}??
  • ????}?while?(selet[0]?!=?'q');??
  • }??
  • ??
  • void?main()??
  • {??
  • ????student?head;??
  • ????mainmenu(&head);??
  • }??
  • 運行結果部分截圖:



    總結

    以上是生活随笔為你收集整理的用c++模拟实现一个学生成绩管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。