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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

班级成绩管理系统(C语言)

發布時間:2024/1/18 windows 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 班级成绩管理系统(C语言) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、設計任務與目標
  • 二、實現功能
  • 三、程序源碼
  • 四、效果展示



一、設計任務與目標

對一個有N個學生的班級,每個學生有M門課程。該系統實現對班級成績的錄入、顯示、修改、排序、保存等操作的管理。

二、實現功能

(1)本系統采用一個結構體數組,每個數據的結構應當包括:學號、姓名、M門課程名稱。
(2)本系統顯示這樣的菜單:
請選擇系統功能項:
a、成績錄入
b、成績顯示
c、成績保存
d、成績排序
e、成績修改(要求先輸入密碼)
f、成績統計
1)顯示每門課程成績最高的學生的基本信息
2)顯示每門課程的平均成績
3)顯示超過某門課程平均成績的學生人數
g、退出系統
(3)執行一個具體的功能之后,程序將重新顯示菜單。
(4)將學生成績保存到文件中。

三、程序源碼

菜單

void menu() //菜單 {printf("========================================\n");printf("| 歡迎來到班級成績管理系統! \n");printf("| a:成績錄入\n");printf("| b:成績顯示\n");printf("| c:成績保存\n");printf("| d:成績排序\n");printf("| e:成績修改\n");printf("| f:成績統計\n");printf("| g:退出系統\n");printf("========================================\n");printf("請輸入你的選擇: "); }

錄入學生成績

void inputScores() //成績錄入 {if (courseCount == 0){printf("請輸入課程數量:");scanf("%d", &courseCount); //輸入課程數量 for (int i = 0; i < courseCount; i++) //輸入課程名字 {Course course;printf("請輸入第 %d 門課程名字:", i+1);scanf("%s", course.name);courses[i] = course;}}Student stu;printf("請輸入學生學號:");scanf("%s", stu.id); //輸入學生學號 printf("請輸入學生名字:");scanf("%s", stu.name); //輸入學生姓名 for (int j = 0; j < courseCount; j++) //輸入課程成績 {printf("請輸入 %s 課程成績:", courses[j].name);scanf("%d", &stu.scores[j]);}students[studentCount++] = stu; }

顯示所錄入的學生成績

void displayScores() //成績顯示 {if (studentCount == 0){printf("No student\n");return;}printf(" 學號 姓名 ");for (int i = 0; i < courseCount; i++) //輸出課程名字 {printf(" %s", courses[i].name);}printf("\n");for (int i = 0; i < studentCount; i++) //輸出學生信息 {printf("%s %s", students[i].id, students[i].name); //輸出學生學號,姓名 for (int j = 0; j < courseCount; j++) //輸出學生成績 {printf(" %d", students[i].scores[j]);}printf("\n");} }

保存錄入的學生成績

void saveScores() //成績保存 {FILE* fp;fp = fopen("scores.txt", "w"); //打開文件 if (fp == NULL){printf("open scores.txt failed!\n");return;}fprintf(fp, "%d\n", courseCount); //輸出文件信息 for (int i = 0; i < courseCount; i++) //輸出課程名字 {fprintf(fp, "%s\n", courses[i].name);}fprintf(fp, "%d\n", studentCount); //輸出學生信息 for (int i = 0; i < studentCount; i++) {fprintf(fp, "%s\n%s\n", students[i].id, students[i].name); //輸出學生學號,姓名 for (int j = 0; j < courseCount; j++) //輸出學生成績 {fprintf(fp, "%d ", students[i].scores[j]);}fprintf(fp, "\n");}fclose(fp); //關閉文件 }

對錄入的課程成績進行排序

void sort(int l,int r, int pos) //對課程的成績進行排序 {if (r <= l) return;int i = l, j = r;int key = students[l].scores[pos];while (i <= j){while (students[i].scores[pos] > key) i++;while (students[j].scores[pos] < key) j--;if (i <= j){Student temp = students[i];students[i] = students[j];students[j] = temp;i++;j--;}}sort(l, j, pos);sort(i, r, pos); }

比較學生成績

int compare(char a[], char b[]) //比較學生的成績 {int la = strlen(a);int lb = strlen(b);if (la < lb) return -1;if (la > lb) return 1;int len = 0;while (len < la){if (a[len] < b[len]) return -1;if (a[len] > b[len]) return 1;len++;}return 0; }

對程序進行排序

void orderScores() //成績排序 {printf("Enter course name:"); //輸入需要進行成績排序的課程名字 char name[PROFILE_LENGTH];scanf("%s", name);int i = courseCount;for (i = 0; i < courseCount; i++){if (compare(courses[i].name, name) == 0)break;}if (i == courseCount){printf("No course %s\n", name);return;}sort(0, studentCount - 1, i); }

修改已經錄入但錄入出錯的學生成績

void changeScores() //成績修改 {printf("Enter password:"); //輸入密碼 char pwd[PROFILE_LENGTH];scanf("%s", pwd); //輸入密碼 if (compare(password, pwd) != 0){printf("密碼錯誤!\n");return;}printf("Enter student id:"); char id[PROFILE_LENGTH];scanf("%s", id); //輸入學生學號 int i = studentCount;for (i = 0; i < studentCount; i++){if (compare(students[i].id, id) == 0)break;}if (i == studentCount){printf("No student %s\n", id);return;}printf("Courses: ");for (int j = 0; j < courseCount; j++) //輸出課程名字 {printf(" %s", courses[j].name);}printf("\nEnter the scores:"); for (int j = 0; j < courseCount; j++) //輸入更改后的成績 {scanf("%d", &students[i].scores[j]);} }

統計已經錄入的學生成績

void statisticScores() //成績統計 {for (int j = 0; j < courseCount; j++){printf("%s:\n", courses[j].name);int max = 0;int pos = studentCount;double aver = 0.0;for (int i = 0; i < studentCount; i++) //比較學生成績,找出成績最高的學生 {aver = aver + students[i].scores[j];if (students[i].scores[j] > max){max = students[i].scores[j];pos = i;}}aver /= studentCount; //計算平均成績 int count = 0;for (int i = 0; i < studentCount; i++) //計算超過平均成績的人數 {if (students[i].scores[j] > aver){count ++;}}if (pos == studentCount){printf("No student\n");break;}else{printf("成績最高學生:");printf(" %s %s %d\n", students[pos].id, students[pos].name, max);printf("平均成績:");printf(" %.2lf\n", aver);printf("超過平均成績的人數:");printf(" %d\n", count);}} }

四、效果展示

菜單

錄入學生成績(這里錄入了6位學生的成績,錄入完畢后進行保存)



顯示已經錄入的學生成績

保存已經錄入的成績,保存后的成績存放在“scores.txt”文件中


按照課程將錄入的成績進行排序(分數從高到低)


修改已經錄入的學生成績


找出每個課程成績最高的學生,統計出平均成績和超過平均成績的人數

總結

以上是生活随笔為你收集整理的班级成绩管理系统(C语言)的全部內容,希望文章能夠幫你解決所遇到的問題。

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