溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

學習學生信息管理系統(tǒng)心得

發(fā)布時間:2020-06-19 19:02:20 來源:網(wǎng)絡 閱讀:1218 作者:大炮想飛 欄目:編程語言

C語言將計算機的輸入輸出設備都看作是文件。

那么,如果寫一個字符串到一個文件中,是什么方式呢?顯示到屏幕上是默認的輸出文件,如果是硬盤中的一個文件,首先要打開一個文件,然后才能往里寫,那么就要告訴程序這個文件在什么地方,按照什么樣的方式打開(讀、寫、讀和寫、添加、覆蓋等),然后打開后要給這個打開的文件一個符號(指針變量),表示后續(xù)的讀和寫都是針對這個文件的,而不是到屏幕的,這個指針變量以后就代表了文件自身了。


例如學生信息管理系統(tǒng)中,需要同時保存一個學生的姓名,性別,年齡等信息,那么設置變量保存很多同學的這些信息就有點不太方便。類似一個登記本,每一頁只能寫名字,如果你要登記其他的信息,又要添加一個登記本,只能寫性別,如果登記年齡,又要添加一個登記本,只能寫年齡,….,多么的不方便,還容易混亂。解決的方法你一定想,多么簡單,一個登記本一頁中,同時寫姓名,性別,年齡不就行了嗎?C語言也是這樣,如果定義一種形式,一個變量同時記錄很多的信息,這樣在管理系統(tǒng)中,就方便很多了。這就是結(jié)構(gòu)體。


結(jié)構(gòu)體首先要定義,因為每個程序用到的組合在一起的信息不一樣,例如學生信息管理系統(tǒng)中,可能要將學號、姓名、性別、年齡、班級組合到一起,所以 第一行用struct告訴程序,下面是一個結(jié)構(gòu)體,后面的stu是這個結(jié)構(gòu)體的類型,類似整數(shù)用int表示,這個stu是你自己起的名字。



如果沒有班級的話,咱們?nèi)W生在一個班里面,可以想象管理會多么混亂。咱們想了一個辦法,把同學按照專業(yè)分到不用的班級中,這樣管理起來就方便多了,系里發(fā)通知等,只發(fā)到班長就行了,由班長向下傳達,班級內(nèi)部更改活動內(nèi)容,也跟其他班級沒有關系,自己關起門來修改就可以了。所以程序也是這樣,如果是把所有的代碼都放到一起,那跟全校所有的同學都在一個班級一樣,互相之間相互聯(lián)系,程序代碼短還沒有什么問題,程序代碼量一多了,將非常難管理。所以按照功能,將不同的代碼放到一起,用大括號括起來,然后給這段代碼起個名字表示,類似咱們班級的名字,然后還要設置上參數(shù),一遍使用這個函數(shù)的時候向里傳遞實際的值,類似一個加法的函數(shù),完成兩個數(shù)的相加,我們可以寫成

myadd(int a, int b)

{

   intc;

  c=a+b;

  return c;

}

myadd就是我們給這個函數(shù)起的名字,以便使用,ab的作用接收調(diào)用者傳遞過來的數(shù),然后把接收的兩個數(shù)相加后返回,這個函數(shù)的值在調(diào)用后就是返回的值c,所以如果我們想算99+23等于多少,只要調(diào)用我們寫好的函數(shù)

myadd(99,23),這個時候函數(shù)的值就是99+23了,如果把結(jié)果保存在變量d中,可以寫成

d=myadd(99,23);

有了函數(shù),我們就可以把不同功能的代碼組織到一起,不僅自己方便,而且程序特別簡單明了,便于修改,其他人寫的函數(shù)我們還可以直接拿來用。

所以我們的這個學生信息管理系統(tǒng)形式就非常簡單了,一共用到了三個函數(shù)

int main()

  inti,sum;

 pagedis();

 check();

 menu();  

}

第一個是顯示歡迎頁面,第二個是驗證用戶名和口令,第三個是顯示菜單,并根據(jù)用戶的輸入選擇執(zhí)行相應的操作。

還有一些其他的函數(shù),分別是menu()菜單函數(shù)調(diào)用的子函數(shù)。

結(jié)構(gòu)話程序后大概的形式就是這樣

 

#include<stdio.h>

void pagedis();

void check();

void menu();

int main()

{

 pagedis();

 check();

 menu(); 

}

void pagedis(){

        printf("。。 \n");

}

void check(){

        printf("。。 \n");

}

void menu(){

        printf(" 。。\n");

}

 

這就是結(jié)構(gòu)化程序設計,把功能放到函數(shù)中,下一步就可以集中精力,完善函數(shù)中的內(nèi)容。



學生成績管理系統(tǒng):

#include<stdio.h>


#include<stdlib.h>


#include<string.h>


#define SIZE 3 /*定義常量SIZE便于以后的修改*/


struct student /*定義一個結(jié)構(gòu)體數(shù)組存放學生的信息*/


{


    int number; /*學號*/


    char name[20];/*名字*/


    char xueyuan[20];/*學院*/


    int cla;/*班級*/


    int score[3];/*分數(shù)*/


    int sum;/*總分*/


    int average;/*平均分*/


}stu[SIZE];


 


void menu();/*調(diào)用菜單函數(shù)*/


void write();/*讀入信息*/


void save(int x);/*保存stud.dat文件函數(shù)*/


void SaveOneStudent(int i);/*保存一個學生信息*/


void SaveAllStudent(int n);/*保存全部學生信息*/


void inturn (struct student c[]);/*用于對學生的信息按學號排序的函數(shù)*/


void save2();/*將排序后的信息存入student.dat文件中*/


int AddStudent(int n);/*增加學生信息*/


void InputOnestudent(int i);/*輸入一個同學信息*/


int DelStudent(int n);/*刪除學生信息*/


void ModifyStudent(int n);/*修改學生信息*/


void OutputOneStudent(int i);/*查詢一個學生信息*/


void SearchMenu(int n);/*查詢學生信息操作*/


void SearchNumber(int n);/*按學號查詢學生信息*/


void SearchName(int n);/*按姓名查詢學生信息*/


void SearchXueyuan(int n);/*按所在學院查詢學生信息*/


void SearchCla(int n);/*按所在班級查詢學生信息*/


void tongji();/*學生信息統(tǒng)計操作*/


void tongji2();/*統(tǒng)計不及格率操作*/


void zfsc();/*總分排序操作*/


void avecz();/*按平均分統(tǒng)計人數(shù)操作*/


void avecz();/*按平均分統(tǒng)計人數(shù)操作*/


void search();/*查找最高成績操作*/


void tongji2();/*統(tǒng)計不及格率操作*/


void read();/*讀取student.dat文件文件中學生的信息*/


 


/*主函數(shù)************************************************************************************/


void main()


{


    int n=SIZE;


    int choice;/*用戶選擇變量*/


    printf("*******************************************************************************\n");


    printf("*                                                                             *\n");


    printf("*          Hwadee            &學生成績文件管理&          Hwadee               *\n");


    printf("*                                                                             *\n");


    printf("*******************************************************************************\n\n\n");


    printf("******************************●●歡迎使用●●*********************************");


    while (1)


    {


         menu();/*調(diào)用菜單函數(shù)形成操作界面*/


         printf("請選擇:");


         scanf("%d", &choice);


         if ( choice==0 )


         {


              printf("\t\t\t\t謝謝使用!!!");


              break;


          }


       switch(choice) /*多重選擇實現(xiàn)功能不同的功能*/


       {  


            case 1:


                write();


              inturn(stu);


              save(SIZE);


                break;


            case 2:


              AddStudent(n);


                break;


           case 3:


              DelStudent(n);


              break;


           case 4:


                ModifyStudent(n);


              break;


           case 5:


              SearchMenu(n);


              break;


           case 6:


              tongji();


              break;


           case 0:


              printf("\n謝謝使用!再見!\n");


           default:


              printf("\n按鍵錯誤!請重新選擇!\n");


       }/*結(jié)束switch*/


    }/*結(jié)束while*/


}


 

部分程序清單


/*菜單函數(shù)*************************************************************************************/


void menu()


{


    printf("************請輸入所需操作***********\n");/*選擇功能菜單*/


    printf("*************************************\n");


    printf("1.學生成績寫入及排序\n");


    printf("2.增加學生信息\n");


    printf("3.刪除學生信息\n");


    printf("4.修改學生信息\n");                             


    printf("5.查詢學生信息\n");


    printf("6.學生成績統(tǒng)計操作\n");


    printf("0.退出系統(tǒng)\n");


    printf("**************************************\n");


}


 


/*寫入函數(shù)*************************************************************************************/


void write()


{


    int i;/*計數(shù)變量*/


    for(i=0;i<SIZE;i++)


    {


        printf("學號:");


        scanf("%d",&stu[i].number);


        printf("姓名:");


        scanf("%s",&stu[i].number);


        printf("學院:");


        scanf("%s",&stu[i].xueyuan);


        printf("班級:");


        scanf("%d",&stu[i].cla);


        printf("高數(shù):");


        scanf("%d",&stu[i].score[0]);


        printf("英語:");


        scanf("%d",&stu[i].score[1]);


        printf("C語言:");


        scanf("%d",&stu[i].score[2]);


        stu[i].sum=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2]);/*計算總成績*/


        printf("總成績:%d",stu[i].sum);


        stu[i].average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;/*計算平均成績*/


        printf("平均成績:%d\n",stu[i].average);


    }


}


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI