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

歡迎訪問 生活随笔!

生活随笔

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

windows

数据结构课程设计——学生成绩查询与分析系统(简单详细版,含讲解)

發布時間:2023/12/9 windows 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构课程设计——学生成绩查询与分析系统(简单详细版,含讲解) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在前面:歡迎來到「湫歌」的博客。我是秋秋,一名普通的在校大學生。在學習之余,用博客來記錄我學習過程中的點點滴滴,也希望我的博客能夠更給同樣熱愛學習熱愛技術的你們帶來收獲!希望大家多多關照,我們一起成長一起進步。也希望大家多多支持我鴨,喜歡我就給我一個關注吧!

課程題目:學生成績查詢與分析系統

1、學生信息包括:學號、姓名、性別、四門課成績

2、系統要求:分為兩個版本系統,老師版和學生版,老師版需要輸入密碼進入老師版系統,在老師版系統中可以刪除和修改學生成績。學生版系統不需要輸入密碼,但不可以修改和刪除學生成績。

3、功能要求:如果選擇“輸入學生信息”,則顯示“請輸入學生姓名、學號、成績”,并能輸入;選擇“學生姓名查找”,可以按照姓名查找該學生的各科成績和平均分;選擇“學生學號查找”,可以按照學號查找該學生的各科成績和平均分,選擇“按照姓名排序”,可以顯示按姓名排序結果;選擇“按照學號排序”,可以顯示按學號排序結果;選擇“按照總成績排序”,可以顯示按成績排序結果;選擇“按照學號查找學生信息”,可以按照學號輸出學生姓名,學號,成績;選擇“按照姓名查找學生信息”,可以按照姓名輸出學生姓名,學號,成績;選擇0,顯示“謝謝使用”;選擇其他則顯示“輸入錯誤,請重新輸入)。

4、基本要求:用C語言實現程序設計;
利用結構體數組、鏈表等實現學生信息表達、查詢等,充分體現數據結構的知識;
系統的各個功能模塊要求用函數的形式實現;
界面友好(良好的人機交互),程序要有注釋。
程序中所用到的排序查找方法需采用數據結構中所學方法實現,要求方法實用效率高。

一、結構體與鏈表

1、學生信息結構體

//學生信息結構體 typedef struct {int num;//學號char name[50];//姓名char sex[50];float chengji1, chengji2, chengji3, chengji4;float sum, average;int score; }student;

2、鏈表結構體

//鏈表的結構體 typedef struct LNode {student data;struct LNode* next; }LNode, * LinkList;

二、總體功能設計

1、菜單頁

系統主菜單?

//主菜單 void menu() {system("cls");printf("主菜單==============\n");printf("0.退出系統\n");printf("1.選擇教師版系統\n");printf("2.選擇學生版系統\n");printf("===================\n");printf("請選擇(0-2)\n");printf("\n"); }

?老師版系統菜單

//老師版菜單 void teachermenu() {system("cls");printf("老師版系統==========\n");printf("0.返回主菜單\n");printf("1.輸入學生信息\n");printf("2.按姓名查詢學生信息\n");printf("3.按學號查找學生信息\n");printf("4.修改學生信息\n");printf("5.刪除學生信息\n");printf("6.按姓名排序\n");printf("7.按學號排序\n");printf("8.按總成績排序\n");printf("9.打印學生信息\n");printf("===================\n");printf("請選擇(0-9)\n");printf("\n"); }

學生版系統菜單?

//學生版菜單 void studentmenu() {system("cls");printf("學生版系統==========\n");printf("0.返回主菜單\n");printf("1.按姓名查詢學生信息\n");printf("2.按學號查找學生信息\n");printf("3.按姓名排序\n");printf("4.按學號排序\n");printf("5.按總成績排序\n");printf("6.打印學生信息\n");printf("===================\n");printf("請選擇(0-6)\n");printf("\n"); }

2、主要功能

功能一——輸入學生信息

//輸入學生信息 void input(LinkList& L) {FILE* outfile;outfile = fopen("student.txt", "a+");float sum, average;printf("請輸入學生信息\n");LNode* p = new LNode;p = L;while (p->next != NULL) {p = p->next;}for (;;) {LNode* q = new LNode;q->next = NULL;printf("請輸入學生學號\n");cin >> q->data.num;printf("請輸入學生姓名\n");cin >> q->data.name;printf("請輸入學生性別\n");cin >> q->data.sex;printf("請依次輸入四門課程的成績(python,java,c++,數據結構)\n");cin >> q->data.chengji1 >> q->data.chengji2 >> q->data.chengji3 >> q->data.chengji4;q->data.sum = q->data.chengji1 + q->data.chengji2 + q->data.chengji3 + q->data.chengji4;q->data.average = q->data.sum / 4.0;if (outfile == NULL) {printf("不能打開文件\n");}else {fprintf(outfile, "%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",q->data.num, q->data.name, q->data.sex, q->data.chengji1, q->data.chengji2, q->data.chengji3, q->data.chengji4, q->data.sum, q->data.average);fclose(outfile);}p->next = q;p = q;L->data.score++;int j;printf("若繼續輸入學生信息則輸入1,返回主菜單則輸入0\n");scanf("%d", &j);//若用戶輸入1,則繼續輸入學生信息if (j == 1) {N++;continue;}//若用戶輸入0,則返回主菜單else{break;}}system("pause"); }

功能二——按姓名查詢學生信息

//姓名查找 int xingmingchazhao(LinkList& L) {char ch[50];bool flag = true;printf("請輸入查詢學生的姓名:");cin >> ch;LNode* p = new LNode;p = L;int m;while (p->next != NULL) {if (strcmp(p->data.name, ch) == 0) {printf("請輸入要查詢的學生成績的學科\n");printf("0、返回上一頁面 1、Python 2、Java 3、C++ 4、數據結構 5、總成績 6、平均分 7、所有數據信息\n");scanf("%d", &m);if (m == 0 || m == 1 || m == 2 || m == 3 || m == 4 || m == 5 || m == 6 || m == 7) {switch (m){case 0:return 0;case 1: {printf("Python分數:%.2f\n", p->data.chengji1);break;}case 2: {printf("Java分數:%.2f\n", p->data.chengji2);break;}case 3: {printf("C++分數:%.2f\n", p->data.chengji3);break;}case 4: {printf("數據結構分數:%.2f\n", p->data.chengji4);break;}case 5: {printf("總成績:%.2f\n", p->data.sum);break;}case 6: {printf("平均分:%.2f\n", p->data.average);break;}case 7: {printf("學號\t姓名\t性別\tPython\tJava\tC++\t數據結構\t總成績\t平均分\n");printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t\t%.2f\t%.2f\t%.2f\n",p->data.num, p->data.name, p->data.sex, p->data.chengji1, p->data.chengji2,p->data.chengji3, p->data.chengji4, p->data.sum, p->data.average);break;}}}else {printf("輸入錯誤請重新輸入\n");system("pause");}flag = false;}p = p->next;}if (flag) {printf("系統沒有該學生信息!");system("pause");}system("pause"); }

功能三——按學號查找學生信息

//學號查找 int xuehaochazhao(LinkList& L) {int ch;int m;bool flag = true;printf("請輸入查詢學生的學號:");cin >> ch;LNode* p = new LNode;p = L;while (p->next != NULL) {if (ch==p->data.num) {printf("請輸入要查詢的學生成績的學科\n");printf("0、返回上一頁面 1、Python 2、Java 3、C++ 4、數據結構 5、總成績 6、平均分 7、所有數據信息\n");scanf("%d", &m);if (m == 0 || m == 1 || m == 2 || m == 3 || m == 4 || m == 5 || m == 6||m==7) {switch (m){case 0:return 0;case 1: {printf("Python分數:%.2f\n", p->data.chengji1);break;}case 2: {printf("Java分數:%.2f\n", p->data.chengji2);break;}case 3: {printf("C++分數:%.2f\n", p->data.chengji3);break;}case 4: {printf("數據結構分數:%.2f\n", p->data.chengji4);break;}case 5: {printf("總成績:%.2f\n", p->data.sum);break;}case 6: {printf("平均分:%.2f\n", p->data.average);break;}case 7: {printf("學號\t姓名\t性別\tPython\tJava\tC++\t數據結構\t總成績\t平均分\n");printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t\t%.2f\t%.2f\t%.2f\n",p->data.num, p->data.name, p->data.sex, p->data.chengji1, p->data.chengji2,p->data.chengji3, p->data.chengji4, p->data.sum, p->data.average);}}}else {printf("輸入錯誤請重新輸入\n");system("pause");}flag = false;}p = p->next;}if (flag) {printf("系統沒有該學生信息!");system("pause");}system("pause"); }

功能四——刪除學生信息

//刪除信息 void cut(LinkList& L) {printf("請輸入要刪除的學生學號:");int n;bool flag = true;cin >> n;LNode* p = new LNode;p = L;while (p->next != NULL){if (n == p->next->data.num){p->next = p->next->next;p = L; //又從頭開始遍歷,避免忽略掉連續數據相同的情況flag = false;continue;}p = p->next;}if (flag) {printf("系統沒有該學生信息!\n");}else {printf("刪除成功!\n");}system("pause"); }

功能五——修改學生信息

//修改成績 void change(LinkList& L) {printf("請輸入要修改的學生學號:");int n;bool flag = true;cin >> n;LNode* p = new LNode;p = L;while (p != NULL){if (n == p->data.num) {printf("請輸入修改的成績:\n");printf("該學生姓名為:%s\n", p->data.name);printf("Python成績: %.2f,新成績為:", p->data.chengji1);cin >> p->data.chengji1;printf("Java成績: %.2f,新成績為:", p->data.chengji2);cin >> p->data.chengji2;printf("C++成績: %.2f,新成績為:", p->data.chengji3);cin >> p->data.chengji3;printf("數據結構成績: %.2f,新成績為:", p->data.chengji4);cin >> p->data.chengji4;printf("修改成功!\n");system("pause");flag = false;}p = p->next;}if (flag) {printf("系統沒有該學生信息!");}system("pause"); }

功能六——按姓名排序

//按姓名排序 void xingmingpaixu(LinkList& L) {LNode* Q = new LNode;Q->next = NULL;paixubeifen(L);duqubeifen(Q);LNode* p = new LNode;p = Q;LNode* max = new LNode;max=Q;if (Q->next == NULL) {printf("學號\t姓名\t性別\tPython\tJava\tC++\t數據結構\t總成績\t平均分\n");printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",Q->data.num, Q->data.name, Q->data.sex, Q->data.chengji1, Q->data.chengji2,Q->data.chengji3, Q->data.chengji4, Q->data.sum, Q->data.average);}else {printf("學號\t姓名\t性別\t成績1\t成績2\t成績3\t成績4\t總成績\t平均分\n");for (;p != NULL;p = p->next) {for (max = p->next;max != NULL;max = max->next) {if (strcmp(p->data.name,max->data.name)<0) {student tmp = p->data;p->data = max->data;max->data = tmp;}}}while (Q->next != NULL) {Q = Q->next;printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",Q->data.num, Q->data.name, Q->data.sex, Q->data.chengji1, Q->data.chengji2,Q->data.chengji3, Q->data.chengji4, Q->data.sum, Q->data.average);}}system("pause"); }

功能七——按學號排序

//按學號排序 void xuehaopaixu(LinkList& L) {LNode* Q = new LNode;Q->next = NULL;paixubeifen(L);duqubeifen(Q);LNode* p = new LNode;p = Q;LNode* max = new LNode;if (Q->next == NULL) {printf("學號\t姓名\t性別\tPython\tJava\tC++\t數據結構\t總成績\t平均分\n");printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",Q->data.num, Q->data.name, Q->data.sex, Q->data.chengji1, Q->data.chengji2,Q->data.chengji3, Q->data.chengji4, Q->data.sum, Q->data.average);}else {printf("學號\t姓名\t性別\t成績1\t成績2\t成績3\t成績4\t總成績\t平均分\n");for (;p != NULL;p = p->next) {for (max = p->next;max != NULL;max = max->next) {if (max->data.num < p->data.num) {student tmp = p->data;p->data = max->data;max->data = tmp;}}}while (Q->next != NULL) {Q = Q->next;printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",Q->data.num, Q->data.name, Q->data.sex, Q->data.chengji1, Q->data.chengji2,Q->data.chengji3, Q->data.chengji4, Q->data.sum, Q->data.average);}}system("pause"); }

功能八——按總成績排序

//按總成績排序 void zongchengjipaixu(LinkList& L) {LNode* Q = new LNode;Q->next = NULL;paixubeifen(L);duqubeifen(Q);LNode* p = new LNode;p = Q;LNode* max = new LNode;if (Q->next == NULL) {printf("學號\t姓名\t性別\tPython\tJava\tC++\t數據結構\t總成績\t平均分\n");printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",Q->data.num, Q->data.name, Q->data.sex, Q->data.chengji1, Q->data.chengji2,Q->data.chengji3, Q->data.chengji4, Q->data.sum, Q->data.average);}else {printf("學號\t姓名\t性別\tPython\tJava\tC++\t數據結構\t總成績\t平均分\n");for (;p != NULL;p = p->next) {for (max = p->next;max != NULL;max = max->next) {if (max->data.sum > p->data.sum) {student tmp = p->data;p->data = max->data;max->data = tmp;}}}while (Q->next != NULL) { printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",Q->data.num, Q->data.name, Q->data.sex, Q->data.chengji1, Q->data.chengji2,Q->data.chengji3, Q->data.chengji4, Q->data.sum, Q->data.average);Q = Q->next;}}system("pause"); }

功能九——打印學生信息

//打印學生信息 void dayingxueshengxinxi(LinkList& L) {if (L->data.score == 0) {printf("該系統暫時沒有學生信息\n");}else {LNode* q = new LNode;q = L;printf("學號\t姓名\t性別\tPython\tJava\tC++\t數據結構\t總成績\t平均分\n");while (q->next != NULL) {q = q->next;printf("%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",q->data.num, q->data.name, q->data.sex, q->data.chengji1, q->data.chengji2,q->data.chengji3, q->data.chengji4, q->data.sum, q->data.average);}}system("pause"); }//存入文件 void save(LinkList& L) {FILE* outfile;outfile = fopen("student.txt", "w+");LNode* q = new LNode;q = L;if (outfile == NULL) {printf("不能打開該文件\n");_getch();}else {while (q->next != NULL) {q = q->next;fprintf(outfile,"%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",q->data.num, q->data.name, q->data.sex, q->data.chengji1, q->data.chengji2,q->data.chengji3, q->data.chengji4, q->data.sum, q->data.average);}}fclose(outfile); }

相關資源及源代碼:(1條消息) 數據結構課程設計c語言學生管理系統(簡單詳細版)-C/C++文檔類資源-CSDN文庫

總結

以上是生活随笔為你收集整理的数据结构课程设计——学生成绩查询与分析系统(简单详细版,含讲解)的全部內容,希望文章能夠幫你解決所遇到的問題。

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