您好,登錄后才能下訂單哦!
第二節(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ù)起的名字,以便使用,a和b的作用接收調(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)
免責(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)容。