溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C語(yǔ)言程序設(shè)計(jì)(二)

發(fā)布時(shí)間:2020-07-10 21:54:27 來(lái)源:網(wǎng)絡(luò) 閱讀:547 作者:lzq150206321 欄目:編程語(yǔ)言

第二節(jié)課我們知道的是,C語(yǔ)言將計(jì)算機(jī)的輸入輸出設(shè)備都可以看作是文件。

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


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


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



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

myadd(int a, int b)

{

   intc;

  c=a+b;

  return c;

}

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

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

d=myadd(99,23);

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

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

int main()

  inti,sum;

 pagedis();

 check();

 menu();  

}

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

還有一些其他的函數(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èi)容還要再完善! \n");

}

void check(){

        printf("我是驗(yàn)證用戶合法性的模塊,具體內(nèi)容還要再完善! \n");

}

void menu(){

        printf("我是引導(dǎo)用戶執(zhí)行各個(gè)功能的模塊,具體內(nèi)容還要再完善! \n");

}

 

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



學(xué)生成績(jī)管理系統(tǒng):

#include<stdio.h>


#include<stdlib.h>


#include<string.h>


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


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


{


    int number; /*學(xué)號(hào)*/


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


    char xueyuan[20];/*學(xué)院*/


    int cla;/*班級(jí)*/


    int score[3];/*分?jǐn)?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);/*保存一個(gè)學(xué)生信息*/


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


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


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


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


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


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


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


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


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


void SearchNumber(int n);/*按學(xué)號(hào)查詢學(xué)生信息*/


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


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


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


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


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


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


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


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


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


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


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


 


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


void main()


{


    int n=SIZE;


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


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


    printf("*                                                                             *\n");


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


    printf("*                                                                             *\n");


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


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


    while (1)


    {


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


         printf("請(qǐng)選擇:");


         scanf("%d", &choice);


         if ( choice==0 )


         {


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


              break;


          }


       switch(choice) /*多重選擇實(shí)現(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按鍵錯(cuò)誤!請(qǐng)重新選擇!\n");


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


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


}


 

部分程序清單


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


void menu()


{


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


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


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


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


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


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


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


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


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


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


}


 


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


void write()


{


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


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


    {


        printf("學(xué)號(hào):");


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


        printf("姓名:");


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


        printf("學(xué)院:");


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


        printf("班級(jí):");


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


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


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


        printf("英語(yǔ):");


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


        printf("C語(yǔ)言:");


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


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


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


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


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


    }


}

150206321


通過(guò)學(xué)習(xí)學(xué)生信息管理系統(tǒng)軟件,C程序中,如何設(shè)計(jì)和編寫一個(gè)應(yīng)用系統(tǒng)


向AI問(wèn)一下細(xì)節(jié)

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

AI