C語(yǔ)言基礎(chǔ)—結(jié)構(gòu)體數(shù)據(jù)類(lèi)型課件_第1頁(yè)
C語(yǔ)言基礎(chǔ)—結(jié)構(gòu)體數(shù)據(jù)類(lèi)型課件_第2頁(yè)
C語(yǔ)言基礎(chǔ)—結(jié)構(gòu)體數(shù)據(jù)類(lèi)型課件_第3頁(yè)
C語(yǔ)言基礎(chǔ)—結(jié)構(gòu)體數(shù)據(jù)類(lèi)型課件_第4頁(yè)
C語(yǔ)言基礎(chǔ)—結(jié)構(gòu)體數(shù)據(jù)類(lèi)型課件_第5頁(yè)
已閱讀5頁(yè),還剩68頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C語(yǔ)言程序設(shè)計(jì)清華大學(xué)出版社項(xiàng)目7 學(xué)生成績(jī)管理系統(tǒng)4.X本章學(xué)習(xí)目標(biāo)掌握結(jié)構(gòu)體數(shù)據(jù)類(lèi)型的定義掌握結(jié)構(gòu)體類(lèi)型變量的定義、引用及初始化掌握結(jié)構(gòu)體類(lèi)型數(shù)組的定義、引用及初始化理解并掌握結(jié)構(gòu)體數(shù)組編程項(xiàng)目7:學(xué)生成績(jī)管理系統(tǒng)4.X學(xué)生成績(jī)管理系統(tǒng)V4.X功能描述學(xué)生成績(jī)管理系統(tǒng)V4.X : 學(xué)生成績(jī)管理系統(tǒng)V4.X,采用結(jié)構(gòu)體數(shù)據(jù)類(lèi)型,存儲(chǔ)、管理學(xué)生學(xué)號(hào)、姓名、成績(jī)等相關(guān)信息,利用函數(shù)實(shí)現(xiàn)學(xué)生信息的輸入、計(jì)算總成績(jī)和平均成績(jī)、輸出、修改、查詢(xún)、排序功能。 7.1學(xué)生成績(jī)管理系統(tǒng)V4.07.1.1 定義結(jié)構(gòu)體類(lèi)型結(jié)構(gòu)體是派生類(lèi)型的一種自定義類(lèi)型,遵循先定義后使用的規(guī)則。定義結(jié)構(gòu)體類(lèi)型的格式:struc

2、t 結(jié)構(gòu)體名 數(shù)據(jù)類(lèi)型1 成員1; 數(shù)據(jù)類(lèi)型2 成員2; . 數(shù)據(jù)類(lèi)型n 成員n; 7.1學(xué)生成績(jī)管理系統(tǒng)V4.07.1.1 定義結(jié)構(gòu)體類(lèi)型說(shuō)明:(1) struct 是定義結(jié)構(gòu)體的關(guān)鍵字,結(jié)構(gòu)體名遵循標(biāo)識(shí)符命名規(guī)則。(2) 結(jié)構(gòu)體有若干數(shù)據(jù)成員,用 括起來(lái)。數(shù)據(jù)成員格式:數(shù)據(jù)類(lèi)型 成員名;。數(shù)據(jù)成員可以是基本類(lèi)型,也可以是派生類(lèi)型,比如數(shù)組、結(jié)構(gòu)體。(3) 定義結(jié)構(gòu)體類(lèi)型,就是定義了一種數(shù)據(jù)類(lèi)型,與先前所學(xué)的int、float一樣,只是結(jié)構(gòu)體類(lèi)型是一種復(fù)雜的數(shù)據(jù)類(lèi)型,是基本數(shù)據(jù)類(lèi)型的組合。 7.1學(xué)生成績(jī)管理系統(tǒng)V4.0 7.1.2定義結(jié)構(gòu)體類(lèi)型變量1. 先定義結(jié)構(gòu)體類(lèi)型,再定義變量例如:s

3、truct student /*定義結(jié)構(gòu)體類(lèi)型struct student*/ int num; char name20; int age; float score; char addr40; ; 分號(hào)不能少!struct student student1,student2 ; 7.1學(xué)生成績(jī)管理系統(tǒng)V4.0 7.1.2定義結(jié)構(gòu)體類(lèi)型變量2. 定義結(jié)構(gòu)體類(lèi)型的同時(shí)定義結(jié)構(gòu)體變量例如:struct student int num; char name20; int age; float score; char addr30; student1,student2; 說(shuō)明:定義struct stud

4、ent結(jié)構(gòu)體類(lèi)型變量student1,student2,與上面方法等價(jià)。結(jié)構(gòu)體變量所占的存儲(chǔ)空間是其各個(gè)成員所占存儲(chǔ)空間的總和。7.1學(xué)生成績(jī)管理系統(tǒng)V4.07.1.3結(jié)構(gòu)體變量的引用在定義結(jié)構(gòu)體變量以后,不能直接引用變量,而是引用該變量的成員,格式如下:結(jié)構(gòu)體變量名.成員名 說(shuō)明:(1) “.” 稱(chēng)為成員運(yùn)算符,在所有運(yùn)算符中優(yōu)先級(jí)最高,與圓括號(hào)( )是一個(gè)級(jí)別。(2) 不允許將結(jié)構(gòu)體變量整體輸入和輸出,只能對(duì)結(jié)構(gòu)體變量中的各個(gè)成員分別進(jìn)行輸入、輸出和運(yùn)算。例如:scanf(%d%s,&student1.num,); printf(%d,%s,student1.nu

5、m,); student1.num =11303; student1.age+; (3) 同一種類(lèi)型的結(jié)構(gòu)體變量之間可以直接賦值。例如:student2=student1; 7.1學(xué)生成績(jī)管理系統(tǒng)V4.07.1.14結(jié)構(gòu)體變量的賦值1結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量的初始化是指在定義結(jié)構(gòu)體變量時(shí)即賦初值。例如:struct student int num; char name20; char sex; int age; float score; char addr30; student1=20050201,zhangqiang,M,18,456,Jining guangh

6、e 13; 7.1學(xué)生成績(jī)管理系統(tǒng)V4.07.1.14結(jié)構(gòu)體變量的賦值1結(jié)構(gòu)體變量的初始化說(shuō)明:變量后面的一組數(shù)據(jù)用 括起來(lái),其順序要與結(jié)構(gòu)體中的數(shù)據(jù)成員類(lèi)型、順序保持一致。初始化后,student1.num的值是20050201,student1.age的值是18。 7.1學(xué)生成績(jī)管理系統(tǒng)V4.07.1.14結(jié)構(gòu)體變量的賦值2用scanf( )函數(shù)給結(jié)構(gòu)體變量的成員賦值。例如:scanf(%d%s%d%f%s, &student1.num, , &student1.age,&student1.score,student1.addr); 7.1學(xué)生成績(jī)管理系統(tǒng)V4.0

7、7.1.14結(jié)構(gòu)體變量的賦值【示例7-1】使用結(jié)構(gòu)體類(lèi)型變量存儲(chǔ)學(xué)生學(xué)號(hào)、姓名、入學(xué)成績(jī),并輸出。#include int main() struct student int num; char name20; float score; char addr30; student1=20130101,張琳,356, 山東;/*初始化*/printf(=n);printf(學(xué)號(hào)tt姓名t入學(xué)總成績(jī)t地址n);printf(n%dt%st%.1ftt%sn,student1.num,,student1.score,student1.addr);printf(=n);retu

8、rn 0; 7.1學(xué)生成績(jī)管理系統(tǒng)V4.07.1.14結(jié)構(gòu)體變量的賦值【示例7-1】使用結(jié)構(gòu)體類(lèi)型變量存儲(chǔ)學(xué)生學(xué)號(hào)、姓名、入學(xué)成績(jī),并輸出。#include int main() struct student int num; char name20; float score; char addr30; student1=20130101,張琳,356, 山東;/*初始化*/printf(=n);printf(學(xué)號(hào)tt姓名t入學(xué)總成績(jī)t地址n);printf(n%dt%st%.1ftt%sn,student1.num,,student1.score,student1.

9、addr);printf(=n);return 0; 7.1學(xué)生成績(jī)管理系統(tǒng)V4.07.1.14結(jié)構(gòu)體變量的賦值運(yùn)行結(jié)果:7.1學(xué)生成績(jī)管理系統(tǒng)V4.07.1.5學(xué)生成績(jī)管理系統(tǒng)V4.0設(shè)計(jì)1. 明確功能學(xué)生成績(jī)管理系統(tǒng)V4.0功能:使用結(jié)構(gòu)體類(lèi)型及變量,實(shí)現(xiàn)學(xué)生學(xué)號(hào)、姓名和入學(xué)總成績(jī)等信息的輸入和輸出(以2個(gè)學(xué)生為例)。2. 分析問(wèn)題定義struct student結(jié)構(gòu)體類(lèi)型,包括學(xué)號(hào)、姓名、成績(jī)?nèi)齻€(gè)數(shù)據(jù)成員。結(jié)構(gòu)體定義如下:struct student int num; char name20; float score; 7.1學(xué)生成績(jī)管理系統(tǒng)V4.07.1.5學(xué)生成績(jī)管理系統(tǒng)V4.0設(shè)計(jì)

10、3. 邏輯設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)4.0偽代碼:開(kāi)始:main函數(shù) 定義struct student 結(jié)構(gòu)體類(lèi)型 定義2個(gè)struct student類(lèi)型變量 輸入兩個(gè)學(xué)生信息 輸出兩個(gè)學(xué)生信息結(jié)束7.1學(xué)生成績(jī)管理系統(tǒng)V4.07.1.5學(xué)生成績(jī)管理系統(tǒng)V4.0設(shè)計(jì)1.編寫(xiě)代碼#include struct student int num; char name20; float score; student1,student2; int main() printf(請(qǐng)輸入2個(gè)學(xué)生的學(xué)號(hào)、姓名、入學(xué)總成績(jī):n); scanf(%d%s%f,&student1.num,,&s

11、tudent1.score); scanf(%d%s%f,&student2.num,,&student2.score); printf(=n); printf(學(xué)號(hào) 姓名 入學(xué)總成績(jī):n); printf(n%d%6s%12.1fn,student1.num,,student1.score); printf(n%d%6s%12.1fn,student2.num,,student2.score);printf(=n);return 0;7.1學(xué)生成績(jī)管理系統(tǒng)V4.07.1.5學(xué)生成績(jī)管理系統(tǒng)V4.0設(shè)計(jì)5. 輸入、保

12、存程序程序輸入,要保存后,再運(yùn)行。6. 運(yùn)行、調(diào)試程序運(yùn)行程序,如果出錯(cuò),檢查程序,修改錯(cuò)誤,并重新運(yùn)行。運(yùn)行結(jié)果:7.2學(xué)生成績(jī)管理系統(tǒng)V結(jié)構(gòu)體數(shù)組 結(jié)構(gòu)體數(shù)組是指數(shù)組的類(lèi)型為結(jié)構(gòu)體類(lèi)型,即數(shù)組的每個(gè)元素都是該結(jié)構(gòu)體類(lèi)型的變量。 定義結(jié)構(gòu)體數(shù)組和定義結(jié)構(gòu)體變量的方法相同。結(jié)構(gòu)體數(shù)組的初始化和結(jié)構(gòu)體變量的初始化方法相同,只是每個(gè)結(jié)構(gòu)體數(shù)組元素的初始化值 “”括起來(lái)。7.2學(xué)生成績(jī)管理系統(tǒng)V結(jié)構(gòu)體數(shù)組 1先定義結(jié)構(gòu)體,再定義數(shù)組。例如:利用結(jié)構(gòu)體數(shù)組來(lái)保存3個(gè)學(xué)生的信息。struct student int num; char name20; int age; f

13、loat score; char addr30; ;struct student stu3= 20050201,“zhangqiang”,18,56, “Jining”,20050202, “l(fā)iling”, 19,86, “qufu”,20050203, “wanglei ”,18,73, “Jining ”;定義了結(jié)構(gòu)體數(shù)組后,可以采用“數(shù)組元素.成員名”引用結(jié)構(gòu)體數(shù)組某個(gè)元素的成員。7.2學(xué)生成績(jī)管理系統(tǒng)V結(jié)構(gòu)體數(shù)組 2定義結(jié)構(gòu)體的同時(shí)定義數(shù)組例如:利用結(jié)構(gòu)體數(shù)組來(lái)保存3個(gè)學(xué)生的信息。 struct student int num; char name20; int ag

14、e; float score; char addr30; stu3= 20050201,zhangqiang,18,456, Jining,20050202, liling,19,406, qufu,20050203, wanglei ,18,503, Jining ; 18,73, “Jining ”;7.2學(xué)生成績(jī)管理系統(tǒng)V結(jié)構(gòu)體數(shù)組 【示例7-2】候選人得票統(tǒng)計(jì)程序。每次輸入一個(gè)得票的候選人的名字,票數(shù)加1。要求最后輸出各人的得票數(shù)(以3個(gè)候選人為例)。#include #include Struct candi char name20; int count; /*得票數(shù)

15、用count來(lái)計(jì)數(shù)*/leader3=wang,0,liu,0,song,0;int main() int i,j; char name20; 7.2學(xué)生成績(jī)管理系統(tǒng)V結(jié)構(gòu)體數(shù)組 for(i=0;i10;i+) /*假設(shè)總共十人投票*/ scanf(%s,name);/*輸入姓名*/ for(j=0;j3;j+) if(strcmp(name,)=0)leaderj.count+; printf(n姓名 票數(shù)n); for(j=0;j3;j+) printf(%-5s%5dn,,leaderj.count);/%-5s表示輸出le

16、計(jì)票姓名時(shí),按字符串格式輸出/寬度占5列,- 控制姓名字符串左對(duì)齊,右補(bǔ)空格return 0; 7.2學(xué)生成績(jī)管理系統(tǒng)V結(jié)構(gòu)體數(shù)組【示例7-3】使用結(jié)構(gòu)體數(shù)組,存儲(chǔ)學(xué)生學(xué)號(hào)、姓名和三門(mén)課程成績(jī)信息,利用函數(shù)實(shí)現(xiàn)學(xué)生信息的輸入、輸出(以3個(gè)學(xué)生為例)。#include #include #define N 3void input();void display();struct student int num; char name20; float score3;/*分別存放三門(mén)課程的成績(jī)*/;struct student stuN;7.2學(xué)生成績(jī)管理系統(tǒng)V4.

17、17.2.1結(jié)構(gòu)體數(shù)組void input() /*輸入函數(shù)*/ int i,j; printf(請(qǐng)輸入學(xué)生學(xué)號(hào)、姓名、英語(yǔ)成績(jī)、數(shù)學(xué)成績(jī)、C語(yǔ)言成績(jī):n); for(i=0;iN;i+) scanf(%d%s%,&stui.num,); for(j=0;j3;j+) scanf(%f,&stui.scorej); void display()/*輸出函數(shù)*/ int i; printf( 學(xué)號(hào) 姓名 英語(yǔ) 數(shù)學(xué) C語(yǔ)言n); for(i=0;iN;i+) printf( %d%7s%7.1f%7.1f%7.1f%n,stui.num, ,stui.scor

18、e0,stui.score1,stui.score2); 7.2學(xué)生成績(jī)管理系統(tǒng)V結(jié)構(gòu)體數(shù)組int main() input(); display(); return 0;7.2學(xué)生成績(jī)管理系統(tǒng)V結(jié)構(gòu)體數(shù)組【示例7-4】使用結(jié)構(gòu)體數(shù)組,利用函數(shù)實(shí)現(xiàn)按學(xué)生學(xué)號(hào)和姓名的查詢(xún)操作。#include #include #define N 3void input();void display();void locatedata();struct student int num; char name20; float score3;/*分別存放三門(mén)課程的成績(jī)*/;7.2學(xué)生

19、成績(jī)管理系統(tǒng)V結(jié)構(gòu)體數(shù)組struct student stuN;void input() /*輸入函數(shù)*/ int i,j; printf(請(qǐng)輸入學(xué)生學(xué)號(hào)、姓名、英語(yǔ)成績(jī)、數(shù)學(xué)成績(jī)、C語(yǔ)言成績(jī):n); for(i=0;iN;i+) scanf(%d%s%,&stui.num,); for(j=0;j3;j+) scanf(%f,&stui.scorej); void display()/*輸出函數(shù)*/ int i; printf( 學(xué)號(hào) 姓名 英語(yǔ) 數(shù)學(xué) C語(yǔ)言n); for(i=0;iN;i+) printf( %d%7s%7.1f%7.1f%7.1f%n,

20、stui.num, ,stui.score0,stui.score1,stui.score2); 7.2學(xué)生成績(jī)管理系統(tǒng)V結(jié)構(gòu)體數(shù)組void locatedata() int i,select; int number; char name20; printf(1:按學(xué)號(hào)查詢(xún) 2:按姓名查詢(xún):n); printf(請(qǐng)選擇1或者2:n); scanf(%d,&select); if(select=1) printf(請(qǐng)輸入要查找學(xué)生的學(xué)號(hào):); scanf(%d,&number); for(i=0;i3;i+) if(number=stui.num) break;

21、 7.2學(xué)生成績(jī)管理系統(tǒng)V結(jié)構(gòu)體數(shù)組else if (select=2) printf(請(qǐng)輸入要查找學(xué)生的姓名:); scanf(%s,name); for(i=0;i=0&iN) printf(第%d條記錄:n,i+1); printf(學(xué)號(hào) 姓名 英語(yǔ) 數(shù)學(xué) C語(yǔ)言n); printf(%d%7s%7.1f%7.1f%7.1fn, stui.num, ,stui.score0,stui.score1, stui.score2); else printf(該學(xué)生信息不存在n);7.2學(xué)生成績(jī)管理系統(tǒng)V結(jié)構(gòu)體數(shù)組int main() input

22、(); display(); locatedata(); return 0;7.2學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.1設(shè)計(jì)1. 明確功能學(xué)生成績(jī)管理系統(tǒng)V4.1版使用結(jié)構(gòu)體數(shù)組,存儲(chǔ)學(xué)生學(xué)號(hào)、姓名、三門(mén)課程成績(jī)信息,利用函數(shù)實(shí)現(xiàn)學(xué)生信息的輸入、輸出、求總成績(jī)和平均成績(jī)以及按學(xué)生學(xué)號(hào)、姓名查詢(xún)功能。2. 分析問(wèn)題學(xué)生成績(jī)管理系統(tǒng)V4.1利用結(jié)構(gòu)體數(shù)組來(lái)實(shí)現(xiàn),有4個(gè)操作選擇:輸入、輸出、統(tǒng)計(jì)總成績(jī)、平均成績(jī)和查詢(xún)。(1)輸入模塊:由輸入函數(shù)input ()實(shí)現(xiàn),輸入若干同學(xué)的學(xué)號(hào)、姓名、三門(mén)課程成績(jī)信息。(2)輸出模塊:由輸出函數(shù)display()實(shí)現(xiàn),輸出若干學(xué)生的學(xué)號(hào)、

23、姓名、成績(jī)信息。(3)統(tǒng)計(jì)模塊:由函數(shù)sum()實(shí)現(xiàn),計(jì)算每位同學(xué)各科成績(jī)的總成績(jī)和平均成績(jī)。(4)查詢(xún)模塊:由函數(shù)locatedata()實(shí)現(xiàn),根據(jù)學(xué)生學(xué)號(hào)或姓名查詢(xún)學(xué)生信息。7.2學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.1設(shè)計(jì) 3. 邏輯設(shè)計(jì)開(kāi)始:main函數(shù) 調(diào)用manager()函數(shù) 調(diào)用operate()函數(shù),輸出操作菜單 根據(jù)用戶(hù)輸入值1、2、3、4、0,依次 調(diào)用input函數(shù)輸入學(xué)生信息 調(diào)用display函數(shù)輸出學(xué)生信息 調(diào)用sum函數(shù)求總成績(jī)和平均成績(jī) 調(diào)用locatedata函數(shù)查詢(xún)符合條件的學(xué)生信息 輸出“謝謝使用,再見(jiàn)”信息 輸入值1或0,選擇是否繼

24、續(xù)使用學(xué)生成績(jī)管理系統(tǒng)V4.1 輸入1,繼續(xù)使用學(xué)生成績(jī)管理系統(tǒng)V4.1 輸入0,退出使用學(xué)生成績(jī)管理系統(tǒng)V4.1結(jié)束7.2學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.1設(shè)計(jì) 4. 編寫(xiě)代碼#include #include #include #include #define N 3void input();void display();void sum();void locatedata();void operate();void manage();struct student int num; char name20; float score5;/*分別存放三門(mén)課程的成績(jī)、總

25、成績(jī)和平均成績(jī)*/;struct student stuN;7.2學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.1設(shè)計(jì)void input() /*輸入函數(shù)*/ int i,j;printf(請(qǐng)輸入學(xué)生學(xué)號(hào)、姓名、英語(yǔ)成績(jī)、數(shù)學(xué)成績(jī)、C語(yǔ)言成績(jī):n);for(i=0;iN;i+) scanf(%d%s%,&stui.num,); for(j=0;j3;j+) scanf(%f,&stui.scorej); void display()/*輸出函數(shù)*/ int i; printf( 學(xué)號(hào) 姓名 英語(yǔ) 數(shù)學(xué) C語(yǔ)言 總成績(jī) 平均成績(jī)n); for(i=0;iN;i+)

26、 printf( %d%7s%7.1f%7.1f%7.1f%8.1f%9.1fn,stui.num,,stui.score0,stui.score1,stui.score2,stui.score3,stui.score4); 7.2學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.1設(shè)計(jì)/*求每一位學(xué)生總成績(jī)及求平均成績(jī)函數(shù)*/void sum() int i,j;for(i=0;iN;i+) stui.score3=0;for(j=0;j3;j+) stui.score3+=stui.scorej; stui.score4=stui.score3/3; /*根據(jù)學(xué)號(hào)

27、或姓名查詢(xún)學(xué)生信息函數(shù)*/void locatedata() int i,select; int number; char name20; printf(1:按學(xué)號(hào)查詢(xún) 2:按姓名查詢(xún):n); printf(請(qǐng)選擇1或者2:n); scanf(%d,&select); 7.2學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.1設(shè)計(jì)if(select=1) printf(請(qǐng)輸入要查找學(xué)生的學(xué)號(hào):); scanf(%d,&number); for(i=0;i3;i+) if(number=stui.num) break; else if (select=2) printf(請(qǐng)輸入要查找學(xué)生

28、的姓名:); scanf(%s,name); for(i=0;i=0&iN) printf(第%d條記錄:n,i+1); printf(學(xué)號(hào) 姓名 英語(yǔ) 數(shù)學(xué) C語(yǔ)言 總成績(jī) 平均成績(jī)n);printf(%d%7s%7.1f%7.1f%7.1f%8.1f%9.1fn, stui.num, ,stui.score0,stui.score1, stui.score2,stui.score3,stui.score4); else printf(該學(xué)生信息不存在n); 7.2學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.1設(shè)計(jì)void operate() printf(t

29、 歡迎進(jìn)入學(xué)生成績(jī)管理系統(tǒng)V4.1n); printf(=n); printf(tt請(qǐng)你選擇操作類(lèi)型:n); printf(tt1輸入學(xué)生信息n); printf(tt2顯示學(xué)生信息n); printf(tt3統(tǒng)計(jì)總成績(jī)、平均成績(jī)n); printf(tt4查詢(xún)學(xué)生信息 n); printf(tt0返回n); printf(=n); 7.2學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.1設(shè)計(jì)void manage() int choicemanage; int choice=1; system(cls); while(choice) operate(); printf(請(qǐng)選擇:);

30、 scanf(%d,&choicemanage); switch(choicemanage) case 1:input();break; case 2:display();break; case 3:sum();display();break; case 4:locatedata();break; case 0:printf(謝謝使用 再見(jiàn)n);return; default:printf(輸入有誤,請(qǐng)重新輸入!n); 7.2學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.1設(shè)計(jì)printf(是否繼續(xù)管理?(0/1); scanf(%d,&choice); system(cls);

31、if(!choice) /輸入0時(shí) printf(操作完畢,按任意鍵返回n); getch(); return; 7.2學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.1設(shè)計(jì)printf(是否繼續(xù)管理?(0/1); scanf(%d,&choice); system(cls); if(!choice) /輸入0時(shí) printf(操作完畢,按任意鍵返回n); getch(); return; int main() manage(); return 0; 7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì)1. 明確功能學(xué)生成績(jī)管理系統(tǒng)V4.2:使用結(jié)構(gòu)體數(shù)組,利用函數(shù)

32、實(shí)現(xiàn)學(xué)生信息的輸入、輸出、求總成績(jī)和平均成績(jī)、查詢(xún)、修改、刪除、排序、統(tǒng)計(jì)功能。2. 分析問(wèn)題學(xué)生成績(jī)管理系統(tǒng)V4.2登錄主界面操作選擇界面輸入輸出查詢(xún)統(tǒng)計(jì)修改排序刪除7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)V4.2的操作步驟如下:(1) 按三次有效次數(shù)輸入系統(tǒng)登錄密碼,登錄“學(xué)生成績(jī)管理系統(tǒng)V4.2”。(2) 進(jìn)入系統(tǒng)主界面,按提示選擇需要的操作:進(jìn)入系統(tǒng)、退出系統(tǒng)。(3) 進(jìn)入系統(tǒng)操作功能界面,具體實(shí)現(xiàn)以下操作: 輸入模塊:輸入學(xué)生的記錄,包括學(xué)號(hào)、姓名和三門(mén)課程成績(jī)。 輸出模塊:輸出學(xué)生的記錄,包括學(xué)號(hào)、姓名和三門(mén)課程成績(jī)(此時(shí)還沒(méi)有調(diào)用su

33、m函數(shù),因此總成績(jī)和平均成績(jī)均顯示為0)。 統(tǒng)計(jì)模塊:計(jì)算并輸出每個(gè)學(xué)生學(xué)號(hào)、姓名、課程成績(jī)及總成績(jī)、平均成績(jī)。 查詢(xún)模塊:按學(xué)號(hào)、姓名查詢(xún)學(xué)生信息并輸出。 修改模塊:根據(jù)課程代碼,修改學(xué)生指定課程成績(jī)。 刪除模塊:先調(diào)用查詢(xún)函數(shù)查找到符合條件的學(xué)生,然后刪除。 排序模塊:按平均成績(jī)排序,輸出排序后的學(xué)生信息。 返回退出。(4) 輸入操作類(lèi)型,分別調(diào)用相應(yīng)函數(shù)模塊實(shí)現(xiàn)成績(jī)管理功能。7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì)3. 邏輯設(shè)計(jì) 學(xué)生成績(jī)管理系統(tǒng)V4.2偽代碼開(kāi)始:main函數(shù) 輸入密碼登陸到主用戶(hù)界面 選擇使用使用或是退出系統(tǒng) 當(dāng)使用系統(tǒng)時(shí) 根據(jù)輸入值來(lái)選

34、擇 調(diào)用input函數(shù)輸入學(xué)生信息 調(diào)用display函數(shù)輸出學(xué)生信息 調(diào)用sum函數(shù)求總成績(jī)和平均成績(jī) 調(diào)用locatedata查詢(xún)符合條件的信息 調(diào)用update函數(shù)修改學(xué)生信息 調(diào)用deletedata函數(shù)刪除學(xué)生信息 調(diào)用sort函數(shù)按平均成績(jī)升序排序結(jié)束7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì)4. 編寫(xiě)代碼#include #include #include #include #define N 3int LEN;void inland();void manage();void input();void display();void update();v

35、oid sum();int locatedata();void sort();void deletedata();char password10=jsjteach; 7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì)4. 編寫(xiě)代碼struct student int num; char name20; float score5;struct student stuN;int main() char s12; int choice;int flag=0;int n=3;do printf(請(qǐng)輸入密碼:n);scanf(%s,s); 7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)

36、生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì)if(!strcmp(s,password)/*若密碼正確*/ printf(恭喜您 登陸成功!nn);flag=1;break; printf(輸入有誤,請(qǐng)重新輸入n);n-;while(n0);if(flag)do printf(按任意鍵繼續(xù)n);getch();system(cls);/*包含在頭文件stdlib.h中*/inland();scanf(%d,&choice); 7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì)switch(choice)case 1:manage();break;case 0:printf(謝謝使用 再見(jiàn)!n

37、);if(choice=0)break;while(1);else printf(對(duì)不起,您的輸入次數(shù)已到!再見(jiàn)n);return 0; 7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì)void inland() printf(n);printf(t 歡迎使用學(xué)生成績(jī)管理系統(tǒng)V4.2n);printf(n);printf(tt 請(qǐng)您選擇操作類(lèi)型:n);printf(=n);printf(tt 1進(jìn)入管理系統(tǒng)n);printf(tt 0退出管理系統(tǒng)n);printf(=n); 7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì)void operate()

38、 printf(t 歡迎進(jìn)入學(xué)生成績(jī)管理系統(tǒng)V4.2n);printf(=n);printf(tt請(qǐng)你選擇操作類(lèi)型:n);printf(tt1輸入學(xué)生信息n);printf(tt2顯示學(xué)生信息n);printf(tt3統(tǒng)計(jì)總成績(jī)、平均成績(jī)n);printf(tt4查詢(xún)學(xué)生信息 n);printf(tt5修改學(xué)生成績(jī)n);printf(tt6刪除學(xué)生n);printf(tt7平均成績(jī)升序排序n);printf(tt0返回n);printf(=n); 7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì)void manage() int choicemanage;int choi

39、ce=1;system(cls);while(choice) operate();printf(請(qǐng)選擇:);scanf(%d,&choicemanage);switch(choicemanage) case 1:input();break;case 2:display();break;case 3:sum();display();break;case 4:locatedata();break;case 5:update();break;/*修改完要更新總成績(jī)及平均成績(jī)*/case 6:deletedata();break;case 7:sort();break;case 0:printf(謝謝

40、使用 再見(jiàn)n);return; 7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì)default:printf(輸入有誤,請(qǐng)重新輸入!n);printf(是否繼續(xù)管理?(0/1);scanf(%d,&choice);system(cls);if(!choice) printf(操作完畢,任意鍵返回n);getch();return; 7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì)void input() int i,j;printf(請(qǐng)輸入學(xué)生學(xué)號(hào)、姓名、英語(yǔ)成績(jī)、數(shù)學(xué)成績(jī)、C語(yǔ)言成績(jī):n);for(i=0;iN;i+) scanf(%d%s%,&s

41、tui.num,); for(j=0;j3;j+) scanf(%f,&stui.scorej); 7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì)void display() int i; printf( 學(xué)號(hào) 姓名 英語(yǔ) 數(shù)學(xué) C語(yǔ)言 總成績(jī) 平均成績(jī)n); for(i=0;iN;i+) printf( %d%7s%7.1f%7.1f%7.1f%8.1f%9.1fn,stui.num,,stui.score0,stui.score1,stui.score2,stui.score3,stui.score4); 7.3學(xué)生成績(jī)管理系統(tǒng)V

42、 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì)void update() int i,j; i=locatedata(); if(i=N) printf(查無(wú)此人);else printf(請(qǐng)選擇要修改成績(jī)代碼:n); printf(1英語(yǔ)成績(jī) 2數(shù)學(xué)成績(jī) 3C語(yǔ)言成績(jī),請(qǐng)選擇數(shù)字1-3n); scanf(%d,&j); switch(j) case 1:printf(請(qǐng)輸入英語(yǔ)成績(jī):);scanf(%f,&stui.score0);break; case 2:printf(請(qǐng)輸入數(shù)學(xué)成績(jī):);scanf(%f,&stui.score1);break; case 3:printf(請(qǐng)輸入C語(yǔ)言

43、成績(jī):);scanf(%f,&stui.score2);break; default:printf(請(qǐng)輸入1到3之間的數(shù)據(jù)n); sum();printf(修改成功!n);display(); int locatedata()/*在修改及刪除函數(shù)內(nèi)需要定位記錄,因此需要有函數(shù)返回值*/ int i,select; int number; char name20; printf(1:按學(xué)號(hào)查詢(xún) 2:按姓名查詢(xún):n); printf(請(qǐng)選擇1或者2:n); scanf(%d,&select); if(select=1) printf(請(qǐng)輸入要查找學(xué)生的學(xué)號(hào):); scanf(%d,&number)

44、; for(i=0;i3;i+) if(number=stui.num) break; 7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì)sum();printf(修改成功!n);display();void sum() int i,j; for(i=0;iN;i+) stui.score3=0;for(j=0;j3;j+) stui.score3+=stui.scorej; stui.score4=stui.score3/3; 7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì)int locatedata()/*在修改及刪除函數(shù)內(nèi)需要定位記錄,因此需要

45、有函數(shù)返回值*/ int i,select; int number; char name20; printf(1:按學(xué)號(hào)查詢(xún) 2:按姓名查詢(xún):n); printf(請(qǐng)選擇1或者2:n); scanf(%d,&select); if(select=1) printf(請(qǐng)輸入要查找學(xué)生的學(xué)號(hào):); scanf(%d,&number); for(i=0;i3;i+) if(number=stui.num) break; 7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì) else if (select=2) printf(請(qǐng)輸入要查找學(xué)生的姓名:); scanf(%s,name)

46、; for(i=0;i=0&iN) printf(第%d條記錄:n,i+1); printf(學(xué)號(hào) 姓名 英語(yǔ) 數(shù)學(xué) C語(yǔ)言 總成績(jī) 平均成績(jī)n); 7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì) void deletedata() /*刪除學(xué)生信息函數(shù)。先調(diào)用查找函數(shù)找到學(xué)生信息,然后刪除。*/ int i,j,m;LEN=N; i=locatedata(); for(j=i;jN-1;j+) stuj= stuj+1; LEN-;printf(刪除成功!剩余學(xué)生信息:n);printf(學(xué)號(hào) 姓名 英語(yǔ) 數(shù)學(xué) C語(yǔ)言 總成績(jī) 平均成績(jī)n);for(i=0;iLEN;

47、i+) printf(%d%7s%7.1f%7.1f%7.1f%8.1f%9.1fn,stui.num, ,stui.score0,stui.score1,stui.score2,stui.score3,stui.score4); 7.3學(xué)生成績(jī)管理系統(tǒng)V 學(xué)生成績(jī)管理系統(tǒng)V4.2設(shè)計(jì) void sort()/*按平均成績(jī)排序*/ int i,j;struct student t;for(j=0; jN-1; j+) /*起泡法排序n個(gè)數(shù)進(jìn)行n-1輪*/ for (i=0; istui+1.score4 ) /*比較平均成績(jī) */ t=stui; stui=s

48、tui+1; stui+1=t; /*交換記錄*/printf(排序成功!n);display(); /*輸出排序后的學(xué)生成績(jī)*/7.4 自學(xué)園地7.4.1 枚 舉 類(lèi) 型枚舉類(lèi)型是指將變量的值一一列舉出來(lái),變量的值只限于列舉出來(lái)的值的范圍內(nèi)。1. 聲明枚舉類(lèi)型的格式enum 枚舉類(lèi)型名 枚舉常量1,枚舉常量2,枚舉常量n ;2. 定義枚舉類(lèi)型變量定義枚舉類(lèi)型的同時(shí)定義變量:enum 枚舉類(lèi)型名枚舉常量1,枚舉變量名;先定義類(lèi)型后定義變量:enum 枚舉類(lèi)型名 枚舉變量名;7.4 自學(xué)園地7.4.1 枚 舉 類(lèi) 型說(shuō)明:(1) enum是標(biāo)識(shí)枚舉類(lèi)型的關(guān)鍵詞,定義枚舉類(lèi)型時(shí)用enum開(kāi)頭。(2

49、) 枚舉常量是符號(hào),由程序設(shè)計(jì)者自己指定,命名規(guī)則同標(biāo)識(shí)符。使用枚舉常量,可以提高程序的可讀性。枚舉類(lèi)型在可視化編程時(shí)常使用。(3) 枚舉元素在編譯時(shí),按定義時(shí)的排列順序取值0,1,2,(類(lèi)似整型常數(shù))在定義枚舉類(lèi)型時(shí),可以給這些枚舉常量指定整型常數(shù)值(未指定值的枚舉常量的值是前一個(gè)枚舉常量的值加1)。7.4 自學(xué)園地7.4.1 枚 舉 類(lèi) 型說(shuō)明:(4) 枚舉元素是常量,不是變量,可以將枚舉元素賦值給枚舉變量,但是不能給枚舉常量賦值。(5) 枚舉常量不是字符串。(6) 枚舉變量、常量一般可以參與整數(shù)可以參與的運(yùn)算,如算術(shù)/關(guān)系/賦值等運(yùn)算。7.4 自學(xué)園地7.4.1 枚 舉 類(lèi) 型【示例7-

50、5】編寫(xiě)一款軟件,輸入今天是星期幾,計(jì)算并輸出指定n天后是星期幾。#includeint FindDayOf(enum WEEKDAY,int n); /*聲明FindDayOf函數(shù)*/enum WEEKDAYSun,Mon,Tue,Wed,Thu,Fri,Sat; /*定義枚舉類(lèi)型WEEKDAY*/int main()enum WEEKDAY today; /*定義枚舉變量today*/int findday , n ;printf(n Please input today(06):);scanf(%d,&today);printf(n Please input day number:);7.4 自學(xué)園地7.4.1 枚 舉 類(lèi) 型fi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論