日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

【C语言】编写一个简单的学生成绩管理系统

發(fā)布時(shí)間:2025/3/15 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C语言】编写一个简单的学生成绩管理系统 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

版本:C99

IDE:CLion

編譯器:MinGW

#include <stdio.h> #include <stdlib.h> #include <string.h>#define MAXSIZE 100 //課程最多人數(shù) #define COURSENUM 6 //課程門數(shù)typedef struct student {int num; //學(xué)號(hào)char name[20]; //姓名float score[COURSENUM]; //各門課的成績float ave; //平均分 } StuType;typedef struct Students {StuType *elem; //學(xué)生數(shù)組空間起始地址int length; //學(xué)生實(shí)際個(gè)數(shù) } Students;void create(Students *sa, int n) {int i, j;char temp;float ave = 0, sum = 0;for (i = 0; i < n; i++) {printf("請(qǐng)輸入第%d個(gè)學(xué)生的信息:\n", i+1);printf("學(xué)號(hào):");scanf("%d%c", &sa->elem[i].num, &temp);//為了姓名讀入正確,需要去掉錄入學(xué)號(hào)信息時(shí)輸入的回車printf("姓名:");gets(sa->elem[i].name);printf("六門課的成績:英語、哲學(xué)、高等數(shù)學(xué)、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò):");for (j = 0; j < COURSENUM; j++) {scanf("%f", &sa->elem[i].score[j]);sum+=sa->elem[i].score[j];}sa->elem[i].ave = sum/COURSENUM;sa->length = n;sum = 0;} }void display(Students sa) {int i, j;printf("%d個(gè)學(xué)生的信息如下:\n", sa.length);printf("學(xué)號(hào)、姓名、英語、哲學(xué)、高等數(shù)學(xué)、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、平均分\n");for (i = 0; i < sa.length; i++) {printf("%d %s", sa.elem[i].num, sa.elem[i].name);for (j = 0; j < COURSENUM; j++) {printf("%8.1f", sa.elem[i].score[j]);}printf("%8.1f\n", sa.elem[i].ave);} }void searchByNum(Students sa, int num) {int i, j;for (i = 0; i < sa.length; i++) {if (sa.elem[i].num == num) {printf("學(xué)號(hào)、姓名、英語、哲學(xué)、高等數(shù)學(xué)、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、平均分\n");printf("%d %s", sa.elem[i].num, sa.elem[i].name);for (j = 0; j < COURSENUM; j++) {printf("%8.1f", sa.elem[i].score[j]);}printf("%8.1f\n", sa.elem[i].ave);break;}}if (i == sa.length){printf("查無此人!\n");} }void searchByName(Students sa, char *name) {int i, j, flag = 0;for (i = 0; i < sa.length; i++) {if (strcmp(sa.elem[i].name, name) == 0) {printf("學(xué)號(hào)、姓名、英語、哲學(xué)、高等數(shù)學(xué)、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、平均分\n");printf("%d %s", sa.elem[i].num, sa.elem[i].name);for (j = 0; j < COURSENUM; j++) {printf("%8.1f", sa.elem[i].score[j]);}printf("%8.1f\n", sa.elem[i].ave);flag = 1;break;}}if (!flag) {printf("查無此人!\n");} }void add(Students *sa) {int i;float sum = 0;char temp;printf("請(qǐng)輸入該學(xué)生的信息:\n");printf("學(xué)號(hào):");scanf("%d%c", &sa->elem[sa->length].num, &temp);//為了姓名讀入正確,需要去掉錄入學(xué)號(hào)信息時(shí)輸入的回車printf("姓名:");gets(sa->elem[sa->length].name);printf("六門課的成績:英語、哲學(xué)、高等數(shù)學(xué)、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò):");for (i = 0; i < COURSENUM; i++) {scanf("%f", &sa->elem[sa->length].score[i]);sum+=sa->elem[sa->length].score[i];}sa->elem[sa->length].ave = sum/COURSENUM;sa->length++; }void deleteByName(Students *sa, int num) {int i, j, flag = 0;for (i = 0; i < sa->length; i++) {if (sa->elem[i].num == num) {for (j = i; j < sa->length; j++) {sa->elem[j] = sa->elem[j+1];}sa->length--;flag = 1;break;}}if (!flag) {printf("查無此人!\n");} }void modifyByName(Students *sa, int num) {int selected;int i, flag = 0;char temp;for (int i = 0; i < sa->length; i++) {if (sa->elem[i].num == num) {for (;;) {printf("------請(qǐng)選擇要修改的項(xiàng)目:------\n");printf(" 1:姓名\n");printf(" 2:英語成績\n");printf(" 3:哲學(xué)成績\n");printf(" 4:高等數(shù)學(xué)成績\n");printf(" 5:數(shù)據(jù)結(jié)構(gòu)成績\n");printf(" 6:操作系統(tǒng)成績\n");printf(" 7:計(jì)算機(jī)網(wǎng)絡(luò)成績\n");printf(" 8:返回主菜單\n");scanf("%d", &selected);scanf("%c", &temp);switch (selected) {case 1:printf("請(qǐng)輸姓名:");gets(sa->elem[i].name);break;case 2:printf("請(qǐng)輸入英語成績:");scanf("%f", &sa->elem[i].score[0]);average(sa);break;case 3:printf("請(qǐng)輸入哲學(xué)成績:");scanf("%f", &sa->elem[i].score[1]);average(sa);break;case 4:printf("請(qǐng)輸入高等數(shù)學(xué)成績:");scanf("%f", &sa->elem[i].score[2]);average(sa);break;case 5:printf("請(qǐng)輸入數(shù)據(jù)結(jié)構(gòu)成績:");scanf("%f", &sa->elem[i].score[3]);average(sa);break;case 6:printf("請(qǐng)輸入操作系統(tǒng)成績:");scanf("%f", &sa->elem[i].score[4]);average(sa);break;case 7:printf("請(qǐng)輸入計(jì)算機(jī)網(wǎng)絡(luò)成績:");scanf("%f", &sa->elem[i].score[5]);average(sa);break;case 8:return;}}flag = 1;break;}}if (!flag) {printf("查無此人!\n");} }void average(Students *sa) {int i, j;float ave = 0, sum = 0;for (j = 0; j < COURSENUM; j++) {scanf("%f", &sa->elem[i].score[j]);sum+=sa->elem[i].score[j];}sa->elem[sa->length].ave = sum/COURSENUM; }void sortByCourse(Students *sa) {int selected;for (;;) {printf("------請(qǐng)選擇排序依據(jù)的科目:------\n");printf(" 1:英語\n");printf(" 2:哲學(xué)\n");printf(" 3:高等數(shù)學(xué)\n");printf(" 4:數(shù)據(jù)結(jié)構(gòu)\n");printf(" 5:操作系統(tǒng)\n");printf(" 6:計(jì)算機(jī)網(wǎng)絡(luò)\n");printf(" 7:返回主菜單\n");scanf("%d", &selected);switch (selected) {case 1:sortByCourse2(sa, 0);break;case 2:sortByCourse2(sa, 1);break;case 3:sortByCourse2(sa, 2);break;case 4:sortByCourse2(sa, 3);break;case 5:sortByCourse2(sa, 4);break;case 6:sortByCourse2(sa, 5);break;case 7:return;}} }void sortByCourse2(Students *sa, int course) {int i, j, max;StuType stu;for (i = 0; i < sa->length; i++) {max = i;for (j = i+1; j < sa->length; i++) {if (sa->elem[j].score[course] > sa->elem[max].score[course]) {max = j;}}if (max != i) {stu.num = sa->elem[i].num;strcpy(stu.name, sa->elem[i].name);for (j = 0; j < COURSENUM; j++) {stu.score[j] = sa->elem[i].score[j];}sa->elem[i].num = sa->elem[max].num;strcpy(sa->elem[i].name, sa->elem[max].name);for (j = 0; j < COURSENUM; j++) {sa->elem[i].score[j] = sa->elem[max].score[j];}sa->elem[max].num = stu.num;strcpy(sa->elem[max].name, stu.name);for (j = 0; j < COURSENUM; j++) {sa->elem[max].score[j] = stu.score[j];}}} }void level(Students sa) {int selected;for (;;) {printf("------請(qǐng)選擇統(tǒng)計(jì)分?jǐn)?shù)段的科目:------\n");printf(" 1:英語\n");printf(" 2:哲學(xué)\n");printf(" 3:高等數(shù)學(xué)\n");printf(" 4:數(shù)據(jù)結(jié)構(gòu)\n");printf(" 5:操作系統(tǒng)\n");printf(" 6:計(jì)算機(jī)網(wǎng)絡(luò)\n");printf(" 7:返回主菜單\n");scanf("%d", &selected);switch (selected) {case 1:levelByCourse(sa, 0);break;case 2:levelByCourse(sa, 1);break;case 3:levelByCourse(sa, 2);break;case 4:levelByCourse(sa, 3);break;case 5:levelByCourse(sa, 4);break;case 6:levelByCourse(sa, 5);break;case 7:return;}} }void levelByCourse(Students sa, int course) {int num[6] = {0}, i, j;for (int i = 0; i < sa.length; i++) {if (sa.elem[i].score[course] < 60) {num[0]++;} else if (sa.elem[i].score[course] < 70) {num[1]++;} else if (sa.elem[i].score[course] < 80) {num[2]++;} else if (sa.elem[i].score[course] < 90) {num[3]++;} else {num[4]++;}}switch (course) {case 0:printf("英語成績分?jǐn)?shù)段分布人數(shù):60分以下、60~69分、70~79分、80~89分、90分以上分別為:\n");break;case 1:printf("哲學(xué)成績分?jǐn)?shù)段分布人數(shù):60分以下、60~69分、70~79分、80~89分、90分以上分別為:\n");break;case 2:printf("高等數(shù)學(xué)成績分?jǐn)?shù)段分布人數(shù):60分以下、60~69分、70~79分、80~89分、90分以上分別為:\n");break;case 3:printf("數(shù)據(jù)結(jié)構(gòu)成績分?jǐn)?shù)段分布人數(shù):60分以下、60~69分、70~79分、80~89分、90分以上分別為:\n");break;case 4:printf("操作系統(tǒng)成績分?jǐn)?shù)段分布人數(shù):60分以下、60~69分、70~79分、80~89分、90分以上分別為:\n");break;case 5:printf("計(jì)算機(jī)網(wǎng)絡(luò)成績分?jǐn)?shù)段分布人數(shù):60分以下、60~69分、70~79分、80~89分、90分以上分別為:\n");break;}for (int i = 0; i < 5; i++) {printf("%6d", num[i]);}printf("\n"); }int main() {int selected = 10, count, num;Students sa;char name[20], temp;sa.elem = (StuType *)malloc(sizeof(StuType)*MAXSIZE);for (;;) {printf("------本程序?yàn)閷W(xué)生程序管理系統(tǒng),請(qǐng)選擇系統(tǒng)功能:------\n");printf(" 1:錄入全部學(xué)生信息\n");printf(" 2:按學(xué)號(hào)查詢學(xué)生信息\n");printf(" 3:按姓名查詢學(xué)生信息\n");printf(" 4:添加一個(gè)學(xué)生信息\n");printf(" 5:按學(xué)號(hào)刪除學(xué)生信息\n");printf(" 6:按學(xué)號(hào)修改學(xué)生信息\n");printf(" 7:顯示所有學(xué)生信息\n");printf(" 8:按課程成績從高到低顯示所有學(xué)生信息\n");printf(" 9:按分?jǐn)?shù)段統(tǒng)計(jì)學(xué)生信息\n");printf(" 0:退出程序\n");scanf("%d", &selected);switch (selected) {case 1:printf("請(qǐng)輸入學(xué)生個(gè)數(shù):");scanf("%d", &count);create(&sa, count);break;case 2:printf("請(qǐng)輸入要查詢的學(xué)生的學(xué)號(hào):");scanf("%d", &num);searchByNum(sa, num);break;case 3://將菜單選擇時(shí)鍵入的回車符刪掉scanf("%c", &temp);printf("請(qǐng)輸入要查詢的學(xué)生的姓名:");gets(name);searchByName(sa, name);break;case 4:add(&sa);break;case 5:printf("請(qǐng)輸入要?jiǎng)h除的學(xué)生的學(xué)號(hào):");scanf("%d", &num);deleteByName(&sa, num);break;case 6:printf("請(qǐng)輸入要修改信息的學(xué)生的學(xué)號(hào):");scanf("%d", &num);modifyByName(&sa, num);break;case 7:display(sa);break;case 8:sortByCourse(&sa);break;case 9:level(sa);break;case 0:return 0;}}return 0; }

總結(jié)

以上是生活随笔為你收集整理的【C语言】编写一个简单的学生成绩管理系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。