天天看點

C語言學生成績管理系統制作學生成績管理系統,可以實作以下功能:

制作學生成績管理系統,可以實作以下功能:

  1. 每條記錄包括:學号、姓名、專業和5門課程的成績;
  2. 能夠實作添加、删除、修改功能;
  3. 能夠計算某學生的總分和平均分;
  4. 能按照總分排序輸出;

利用C語言的基本文法、結構化程式設計、數組、函數、結構體、指針、連結清單、排序算法、檔案存儲等,制作一個具有添加、删除、修改等功能的學生成績管理系統,包含學号、姓名、專業和5門課程的成績這個四個大方面的内容,流程圖如圖1所示。

C語言學生成績管理系統制作學生成績管理系統,可以實作以下功能:
  1. 詳細設計及實作

學生成績管理系統有幫助,重新整理,查詢,增加,删除,顯示,儲存,退出,清屏這些功能,要實作這些功能,需要用到很多函數,結構體,檔案操作,連結清單,指針等,在這裡會詳細介紹各類函數以及其他知識點所對應的用法,

一 頭檔案

#include <stdio.h>  

#include <malloc.h>

#include <string.h>

#include <stdlib.h>
           

做這個學生成績管理系統需要用到這四個頭檔案:

①#include <stdlib.h>:

常用的函數如malloc()、calloc()、realloc()、free()、system()、atoi()...用清屏功能以及删除連結清單釋放記憶體時要用到system("cls");free(p),如圖2所示。

C語言學生成績管理系統制作學生成績管理系統,可以實作以下功能:

圖2 free函數使用的代碼圖

②#include <malloc.h>

動态存儲配置設定函數頭檔案,當對記憶體區進行操作時,調用相關函數.

在使用連結清單時,建立新的指針時用到malloc(sizeof(LinkList)函數

如圖三所示。

C語言學生成績管理系統制作學生成績管理系統,可以實作以下功能:

圖3 malloc函數使用的代碼圖

③#include <string.h>

用系統的添加,修改功能時将字元串數組指派給另一個字元串數組,需要字元串連結函數;strcpy()字元串複制函數,就需要使用#include <string.h> 這個頭檔案。

typedef struct score

{

    int score_c;      //C語言成績

    int score_math;      //高等數學

    int score_english; //大學英語成績

    int score_zhengzhi;//政治成績

    int score_tiyu;//體育成績 

}Score;

學生個體的資訊,包括姓名,學号,專業,成績

typedef struct Student 

{ 

   char name[100];       //姓名 

   char num[100];        //學号 

   char zhuanye[100];       //專業

   Score score;          //成績 

}stu; 
           

對連結清單的使用創立的個體包含兩個對象,一個是data,還有個指針next

typedef struct LNode 

{ 

    stu data; 

    struct LNode *next; 

}LinkList;
           

三 連結清單的使用

創立一個連結清單,首先要對它初始化:指針L相當于是頭指針

void InitList(LinkList *&L)//初始化連結清單 

{ 

    L=(LinkList *)malloc(sizeof(LinkList));  //指針L相當于是頭指針head

    L->next=NULL; 

}


添加新的連結清單:

void ListInsert(LinkList *&L,LinkList *p)//插入新的節點 

{ 

    LinkList *q=NULL; 

    q=L; 

p->next=q->next;  //

q->next=p;  
           

創立的第一個節點的時候q->的next就為NULL,再創一個節點的話相當于把它插入到兩節點之間, 重新指向p,連接配接上新的節點(p)

後面的添加學生,修改資訊,删除,排序都是在上面的基礎上進行的,待會函數的時候在分别介紹。

四 選擇控制結構,函數調用

在一開始時,使用系統需要我們選擇使用哪個功能,輸入0~9之間的整數就可以使用不同的功能,這裡需要用到選擇控制結構:  

while(1)  //無限循環,當使用者使用完某一項功能後,界面就會彈出選擇表

    { 

       printf("\n");

        menu();     //功能菜單

       printf("請輸入您的選擇:\n");

        scanf("%d",&choose); 

        switch(choose) 

        { 

        case 0://系統幫助及說明

           help();

           break;

        case 1://重新整理資訊(按學号排序)

           sort(L);

           break;

       case 2: //查詢學生資訊             

            findstu(L); 

            break;                          

        case 3://修改學生資訊 

           changestu(L);

            break;

       case 4://增加學生資訊 

            addstu(L);

            break;

       case 5://删除學生資訊 

            deletestu(L); 

            break; 

        case 6://輸出所有學生的資訊 

            display(L); 

            break;

        case 7://儲存學生資訊到檔案  

            saveStuDentFile(L); 

            break;

       case 8://退出 

             printf("謝謝使用!"); 

            exit(0);

       case 9: //清屏
           

繼續閱讀