最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C/C++實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)

2023-07-06 22:36 作者:猜你會默念  | 我要投稿

學(xué)校c++課設(shè)任務(wù) 有錄入打印查找刪除排序功能,發(fā)出來希望對你有幫助,多多三連支持,不喜勿噴謝謝

#include #include #include #include typedef struct _Student//定義一個學(xué)生 { char name[20];//姓名 int num;//學(xué)號 int chinese;//成績1 int math; //成績2 int english; //成績3 float average;//平均分 int score;//總分 }Student; typedef struct _Node//定義一個節(jié)點(diǎn) { Student student; struct _Node* next; }Node; void menu(); void inputStudent(Node* head); void printStudent(Node* head); void findStudent(Node* head); void saveStudent(Node* head); void countstudent(Node* head); void loadStudent(Node* head); void deleteStudent(Node* head); void sortStudent(Node* head); //以上是頭文件內(nèi)容,頭文件名student或者將下一行刪除 #include"student.h" #pragma warning(disable:4996) int main()? { Node* head = (Node*)malloc(sizeof(Node));//創(chuàng)建頭結(jié)點(diǎn) head->next = NULL; loadStudent(head);????//讀取文件學(xué)生信息 while (1)? { menu(); char c = getch(); switch (c) { case '1':?//錄入學(xué)生信息 inputStudent(head); break; case '2':?//打印學(xué)生信息 deleteStudent(head); break; case '3':? printStudent(head); break; case '4':?//查找學(xué)生信息 findStudent(head); break; case '5':?//計算所有學(xué)生總分和均分 countstudent(head); break; case '6':?//按成績排序 sortStudent(head); break; case '7':?//退出系統(tǒng) system("cls"); printf("Bye Bye!\n"); exit(0); break; default: printf("數(shù)字錯誤請重新輸入\n"); system("pause");//暫停程序 system("cls");//清空控制臺 break; } } return 0; } void menu() //菜單函數(shù) { system("title 學(xué)生成績管理系統(tǒng)"); printf("*********************************\n"); printf("*\t學(xué)生成績管理系統(tǒng)\t*\n"); printf("*********************************\n"); printf("*\t請選擇功能列表\t\t*\n"); printf("*********************************\n"); printf("*\t1.錄入學(xué)生信息\t\t*\n"); printf("*\t2.刪除學(xué)生信息\t\t*\n"); printf("*\t3.打印學(xué)生信息\t\t*\n"); printf("*\t4.查找學(xué)生信息\t\t*\n"); printf("*\t5.計算所有學(xué)生總分和均分*\n"); printf("*\t6.按成績排序\t\t*\n"); printf("*\t7.退出系統(tǒng)\t\t*\n"); printf("*********************************\n"); }//無問題 void inputStudent(Node* head)//錄入學(xué)生信息 { Node* fresh = (Node*)malloc(sizeof(Node));//創(chuàng)建頭結(jié)點(diǎn) fresh->next = NULL;? printf("請輸入學(xué)生姓名\n"); scanf_s("%s", fresh->student.name,20); printf("請輸入學(xué)生學(xué)號\n"); scanf_s("%d", &fresh->student.num); printf("請輸入學(xué)生語文成績\n"); //name前沒有&符是因為數(shù)組代表地址所以不用&符? scanf_s("%d", &fresh->student.chinese); printf("請輸入學(xué)生數(shù)學(xué)成績\n"); scanf_s("%d", &fresh->student.math); printf("請輸入學(xué)生英語成績\n"); scanf_s("%d", &fresh->student.english); printf("學(xué)生成績錄入完成\n"); Node* move = head;//尾插法 while (move->next != NULL) //當(dāng)move當(dāng)前指向的節(jié)點(diǎn)的下一個節(jié)點(diǎn)不為空時,move指向下一個節(jié)點(diǎn) { move = move->next; } move->next = fresh;//當(dāng)move當(dāng)前指向的節(jié)點(diǎn)的下一個節(jié)點(diǎn)為空時,將學(xué)生節(jié)點(diǎn)插入到尾部 saveStudent(head);? system("pause");//暫停程序 system("cls");//清空控制臺 }//無問題 void printStudent(Node* head)//輸出學(xué)生信息 { Node* move = head->next; while (move != NULL) { printf("姓名%s學(xué)號%d成績1:%d成績2:%d成績3:%d\n", move->student.name, move->student.num, move->student.chinese, move->student.math, move->student.english); move = move->next; } system("pause");//暫停程序 system("cls");//清空控制臺 }//無問題 void findStudent(Node* head) //查找學(xué)生信息 { printf("請輸入要查找的學(xué)生的學(xué)號:\n "); int num; scanf_s("%d", &num); Node* move = head->next;//從首元節(jié)點(diǎn)開始 while (move != NULL)? { if (num == move->student.num) { printf("姓名%s,學(xué)號%d,成績1:%d,成績2:%d,成績3:%d\n", move->student.name, move->student.num, move->student.chinese, move->student.math, move->student.english); system("pause");//暫停 system("cls");//清屏 return; } move = move->next; } printf("未找到學(xué)生信息\n"); system("pause");//暫停 system("cls");//清屏 } void saveStudent(Node* head) //保存學(xué)生信息 { FILE* file = fopen("./stu.info", "w");//(在當(dāng)前文件夾打開stu.info,寫入)發(fā)回一個文件指針 Node* move = head->next; while (move != NULL) { if (fwrite(&move->student, sizeof(Student), 1, file) != 1) //(寫哪個結(jié)構(gòu)體,大小,寫入次數(shù),判斷) { printf("寫入失敗\n"); return; } move = move->next; } fclose(file);//關(guān)閉文件 } void loadStudent(Node* head) //讀取文件 { FILE* file = fopen("./stu.info", "r");//(在當(dāng)前文件夾找stu.info,讀取) if (!file)//沒有生成文件指針 { printf("沒有學(xué)生文件,跳過讀取\n"); return; } Node* fresh = (Node*)malloc(sizeof(Node)); fresh->next = NULL; Node* move = head; while (fread(&fresh->student, sizeof(Student), 1, file) == 1)//(讀取的結(jié)構(gòu)體,讀取大小,讀取次數(shù),讀取成功) { move->next = fresh; move = fresh; fresh = (Node*)malloc(sizeof(Student)); fresh->next = NULL; } free(fresh); fclose(file);//關(guān)閉文件 printf("讀取成功\n"); }//無問題 void deleteStudent(Node* head) //刪除學(xué)生信息 { printf("請輸入要刪除的學(xué)生學(xué)號 :"); int num; scanf_s("%d", &num); Node* move = head;? while (move->next != NULL)//遍歷鏈表找 { if (move->next ->student.num == num)//找到相同學(xué)號 { Node* tmp = move->next;//該指針為釋放空間以目的定義 move->next = move->next->next;//跳過move->next free(tmp);//釋放tmp/move->nect指向節(jié)點(diǎn)所占空間 tmp = NULL;//tmp指向為空,防止后期成為野指針 saveStudent(head);//保存 printf("刪除成功\n"); system("pause");//暫停 system("cls");//清屏 return; } move = move->next; } printf("未找到學(xué)生信息\n"); system("pause");//暫停 system("cls");//清屏 }//無問題 void countstudent(Node* head)//各學(xué)生成績總分和平均值 { Node* move = head->next; while(move != NULL)//遍歷鏈表求各學(xué)生成績平均值,成績平均值可以反映總評好壞 { move->student.average = float((move->student.chinese + move->student.math + move->student.english) / 3); move->student.score = move->student.chinese + move->student.math + move->student.english; printf("姓名%s,平均分%f,總分%d\n",move->student.name, move->student.average,move->student.score); move = move->next; } system("pause");//暫停 system("cls");//清屏 }//無問題 void sortStudent(Node* head)//排序 { Node* sort = head->next; while (sort != NULL)//遍歷鏈表求各學(xué)生成績平均值,成績平均值可以反映總評好壞 { sort->student.average = float((sort->student.chinese + sort->student.math + sort->student.english) / 3); sort->student.score = sort->student.chinese + sort->student.math + sort->student.english; sort = sort->next; } Node* move = NULL; for (Node* turn = head->next; turn->next != NULL; turn = turn->next)//雙循環(huán)冒泡排序,turn控制比較輪數(shù) { for (Node*move = head->next; move->next != NULL; move = move->next) //move控制比較次數(shù) { if (move->student.score > move->next->student.score) { Student temp = move->student; move->student = move->next->student;//交換節(jié)點(diǎn)里的學(xué)生數(shù)據(jù) move->next->student = temp; } } } printf("總分從低到高\(yùn)n"); printStudent(head); }//無問題

C/C++實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)的評論 (共 條)

分享到微博請遵守國家法律
迭部县| 华亭县| 新蔡县| 昆山市| 大关县| 浮山县| 岱山县| 常熟市| 板桥市| 油尖旺区| 广安市| 贵港市| 榕江县| 梓潼县| 常宁市| 九江市| 武夷山市| 武平县| 寿阳县| 霍城县| 枣阳市| 章丘市| 蒲江县| 齐齐哈尔市| 汶川县| 且末县| 平潭县| 玛曲县| 三门县| 宣城市| 武平县| 伊川县| 萨迦县| 太仓市| 阿鲁科尔沁旗| 军事| 拜泉县| 株洲市| 南木林县| 积石山| 柏乡县|