数据结构课程设计——学生成绩管理系统
生活随笔
收集整理的這篇文章主要介紹了
数据结构课程设计——学生成绩管理系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本程序是對學生的成績管理做一個簡單的模擬,用菜單選擇方式完成下列功能:?? 登記學生成績;查詢學生成績;插入學生成績;刪除學生成績。把問題看作對線性表的操作來完成。
?
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> #define MAXSIZE 100 int renshu; int true=1; int error=0;typedef struct Student{ //存放學生姓名的表char name[20]; //姓名int num; //學號int math;int chinese;int sum; //總成績 }Student;typedef struct{Student elem[MAXSIZE]; //線性表占用的數組空間int last; //最后一個元素的下標 }SeqList;//順序表的輸入 void InList(SeqList *L,int i){ //逐個輸入學生信息int x;printf("請輸入學生數量:");scanf("%d",&x);renshu=x;for(i=1;i<=x;i++){printf("第%d位學生信息\n",i);printf("———————————————\n");printf("姓名:");scanf("%s",&L->elem[i].name);printf("———————————————\n");printf("學號:");scanf("%d",&L->elem[i].num);printf("———————————————\n");printf("數學成績:");scanf("%d",&L->elem[i].math);printf("———————————————\n");printf("語文成績:");scanf("%d",&L->elem[i].chinese);printf("———————————————\n");L->elem[i].sum=L->elem[i].chinese+L->elem[i].math; //計算總成績}L->last=x;printf("\n"); }//輸出順序表 void OutList(SeqList *L,int i){ //輸出總成績for(i=1;i<=L->last;i++){printf("姓名:%s 學號:%d 語文:%d 數學:%d 總分:%d\n",L->elem[i].name,L->elem[i].num,L->elem[i].chinese,L->elem[i].math,L->elem[i].sum);}printf("\n"); }//順序表的查詢 void Find(SeqList *L){ //順序表的查詢,按照學號查詢該學生成績int i=1;int n;if(L->last<1){ //判斷是否為空表 printf("沒有成績表\n");return;}printf("輸入要查找學生的學號\n");scanf("%d",&n);while(i<=L->last && L->elem[i].num!=n){ //循環查找對應學號的下標 i++;}if(i<=L->last){printf("該學生姓名為:%s 學號為:%d 語文成績為:%d 數學成績為:%d 總分為:%d\n",L->elem[i].name,L->elem[i].num,L->elem[i].chinese,L->elem[i].math,L->elem[i].sum);return;}if(i>L->last){printf("學號錯誤,未查詢到該學生\n");return;} }//順序表的刪除 int Delete(SeqList *L, int i){ //從L中刪除指定位序i的元素,該元素數組下標為iint j;int k;printf("請輸入要刪除的學生學號:");scanf("%d",&i);if(L->last<1){ //檢查是否為空表printf("空表!");return error;}for(k=1;k<=L->last;k++){if(L->elem[k].num==i)break;}if(k>L->last){printf("未找到該學生!\n");return error;} else{for(j=k;j<=L->last;j++)L->elem[j]=L->elem[j+1]; //將位序j+1及以后的元素前移L->last--; //last仍指向最后元素return true;} }//順序表的插入 int Insert(SeqList *L,int i,Student e){ //在L的指定位序i中插入一個新元素e;位序i元素的數組位置下表是iint j;if(L->last==MAXSIZE){ //表空間已滿,不能插入printf("表滿\n");return 0;}if(i<1 || i>L->last+2){ //檢查插入位序的合法性:是否在1~n。n為當前元素個數,即lastprintf("位序不合法\n");return 0;}for(j=L->last;j>=i-1;j--) //last指向序列最后元素L->elem[j+1]=L->elem[j];L->elem[i]=e;L->last++;return 1; }int main(){int N=1,i,j;SeqList L;Student e,g;int renshu,a;printf("**********************\n");printf("*------選擇操作------*\n");printf("*------1 登記--------*\n");printf("*------2 輸出--------*\n");printf("*------3 查詢--------*\n");printf("*------4 刪除--------*\n");printf("*------5 插入--------*\n");printf("*------0 退出--------*\n");printf("**********************\n");while(N){printf("請選擇操作\n");scanf("%d",&N);if(N==1){ //登記成績InList(&L,i);}else if(N==2){ //輸出成績OutList(&L,i);}else if(N==3){ //查詢Find(&L);}else if(N==4){ //刪除if(Delete(&L,j)){renshu--;printf("刪除成功\n");}else {printf("刪除失敗\n");}}else if(N==5){ //插入printf("請輸入要插入的位置:");scanf("%d",&a);printf("請輸入學生姓名:");scanf("%s",&g.name);printf("請輸入學生學號:");scanf("%d",&g.num);printf("請輸入學生數學成績:");scanf("%d",&g.math);printf("請輸入學生語文成績:");scanf("%d",&g.chinese);g.sum=g.math+g.chinese;if(Insert(&L,a,g)){renshu++;printf("插入成功\n");}else {printf("插入失敗\n");}}else if(N==0){printf("退出成功,按任意鍵結束\n");exit(0);}}return 0; }?
總結
以上是生活随笔為你收集整理的数据结构课程设计——学生成绩管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数值分析第八章知识点总结——常微分方程数
- 下一篇: 前端学习(2712):重读vue电商网站