C語言課程設(shè)計(jì)學(xué)生管理系統(tǒng)學(xué)生成績管理系統(tǒng)1_第1頁
C語言課程設(shè)計(jì)學(xué)生管理系統(tǒng)學(xué)生成績管理系統(tǒng)1_第2頁
C語言課程設(shè)計(jì)學(xué)生管理系統(tǒng)學(xué)生成績管理系統(tǒng)1_第3頁
C語言課程設(shè)計(jì)學(xué)生管理系統(tǒng)學(xué)生成績管理系統(tǒng)1_第4頁
C語言課程設(shè)計(jì)學(xué)生管理系統(tǒng)學(xué)生成績管理系統(tǒng)1_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、淮北師范大學(xué)程序設(shè)計(jì)課程設(shè)計(jì)學(xué) 生 管 理 系 統(tǒng) 學(xué)生成績管理系統(tǒng)學(xué) 院 計(jì)算機(jī)科學(xué)與技術(shù) 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù)(師范) 學(xué) 號 * 學(xué) 生 姓 名 * * * 指導(dǎo)教師姓名 * * * 2010年12月 28 日一、設(shè)計(jì)目的與內(nèi)容(1)實(shí)驗(yàn)?zāi)康膌 進(jìn)一步鞏固和復(fù)習(xí)C程序設(shè)計(jì)的基礎(chǔ)知識。l 培養(yǎng)學(xué)生結(jié)構(gòu)化程序、模塊化程序設(shè)計(jì)的方法和能力。l 提高學(xué)生調(diào)試程序的技巧和軟件設(shè)計(jì)的能力。l 提高學(xué)生分析問題、解決問題以及綜合利用C語言進(jìn)行程序設(shè)計(jì)的能力。l 了解軟件的編制過程。(2)實(shí)驗(yàn)內(nèi)容1) 實(shí)現(xiàn)對學(xué)生信息的查找、添加、刪除、修改、瀏覽、保存、從文件讀取功能。2) 使用結(jié)構(gòu)體對學(xué)生信息的存

2、儲(chǔ)。3) 使用鏈表實(shí)現(xiàn)對學(xué)生信息的查找、添加、刪除、修改、瀏覽等操作。4) 使用文件完成數(shù)據(jù)的存儲(chǔ)與讀取,要求每次運(yùn)行某個(gè)模塊時(shí)將數(shù)據(jù)讀入結(jié)構(gòu)體中,并 提供保存選項(xiàng),將結(jié)構(gòu)體中的數(shù)據(jù)保存在文件中。二、算法的基本思想(1)數(shù)據(jù)結(jié)構(gòu) 學(xué)生成績信息:typedef struct studentscore char name10; /定義姓名的字符數(shù)組 char num20; /定義學(xué)號的字符數(shù)組struct subjectchar subname20;/定義學(xué)科名的字符數(shù)組float score; /保存學(xué)生各科成績sub5; /共五門課 double sum; /總分struct students

3、core *next;STUCORE;(2)本系統(tǒng)涉及的知識點(diǎn)結(jié)構(gòu)體、數(shù)組、循環(huán)、函數(shù)、指針、鏈表、文件操作。(3)功能要求功能模塊1、建立學(xué)生信息,每個(gè)學(xué)生的信息包括:學(xué)號、姓名、性別、班級、學(xué)院2、用鏈表的形式對學(xué)生信息分別進(jìn)行查找、添加、刪除、修改3、結(jié)果保存在磁盤上(4)功能模塊學(xué)生管理系統(tǒng)1.文件操作2.學(xué)生基本信息管理3.學(xué)生成績信息管理4.退出文件操作1.從文件中讀取信息2.學(xué)生信息存入文件3.返回學(xué)生成績信息管理1. 查找成績信息2. 添加成績信息3. 刪除成績信息4. 修改成績信息5. 返回修改成績信息刪除成績信息添加成績信息查找成績信息1.按學(xué)號查找2.按姓名查找3.返回學(xué)

4、生信息存入文件1保存學(xué)生基本信息2保存學(xué)生成績信息從文件中讀取信息1讀取學(xué)生基本信息2讀取學(xué)生成績信息(4)算法功能描述總體功能說明:本系統(tǒng)可以做到對1.學(xué)生信息:學(xué)號、姓名、性別、學(xué)院、班級。2.學(xué)生成績信息:學(xué)號、姓名、一名學(xué)生五門不同學(xué)科的學(xué)科名及該科成績。分別進(jìn)行添加、修改、查找、刪除、保存、載入功能。學(xué)生成績信息管理功能說明:可以添加學(xué)生學(xué)號、姓名、及對一名學(xué)生五門不同學(xué)科的學(xué)科名及該科成績。并可以通過對輸入的學(xué)生成績信息進(jìn)行修改、刪除、保存、載入功能并通過學(xué)號和姓名兩種方式查找,并且對同名的學(xué)生也可以進(jìn)行區(qū)分。并且會(huì)保持學(xué)好的一致性,保證任意兩名學(xué)生不會(huì)出現(xiàn)學(xué)號相重復(fù)的情況。三、主

5、要功能模塊流程圖(按姓名查找信息的流程圖)StartScanf(“%s”,no) if(strcmp(p-name,no)=0) while(p!=NULL) 0 1Printf(“查無此人”) Printf(“所有信息”) END 按姓名查找流程圖四、 系統(tǒng)測試1.主程序界面首先進(jìn)入1.文件管理操作。建立單鏈表。2.文件管理操作選擇讀取的文件(第一次運(yùn)行時(shí)因文件未建立只有在讀取文件后才能執(zhí)行保存文件)讀入文件后就可選擇進(jìn)入的系統(tǒng)。選擇2進(jìn)入學(xué)生基本信息管理系統(tǒng);選擇3進(jìn)入學(xué)生成績信息管理系統(tǒng)。3.學(xué)生成績信息管理選擇1:查詢成績信息。選擇2:添加成績信息。選擇3:刪除成績信息。選擇4:修改成

6、績信息。選擇5:返回。A. 查詢成績信息選擇1:按學(xué)號查詢成績信息。選擇2:按姓名查詢成績信息??梢圆檎业酵麑W(xué)生的信息。B. 添加成績信息如圖添加學(xué)生成績信息。繼續(xù)添加輸入y否則輸入n。添加完成后請去往文件管理保存!C. 刪除成績信息如圖刪除學(xué)生基本信息。繼續(xù)刪除其它學(xué)生輸入y否則輸入n。刪除完成后請去往文件管理保存!D. 修改成績信息如圖修改學(xué)生基本信息。繼續(xù)修改其它學(xué)生輸入y否則輸入n。修改完成后請去往文件管理保存!五、 結(jié)論通過這次課程設(shè)計(jì),我感覺到要真正做出一個(gè)程序并不很容易,但只要用心去做,總會(huì)有收獲,特別是當(dāng)我遇到 一個(gè)問題,想辦法去解決,最后終于找到方法時(shí),心里的那份喜悅之情真

7、是難以形容。編寫程序中遇到問題再所難免,應(yīng)耐心探究其中的原因,從出現(xiàn)問題的地方起,并聯(lián)系前后程序,仔細(xì)推敲,逐個(gè)排查。直到最終搞清為止。我對于鏈表也有了更深層次的理解,尤其是采用動(dòng)態(tài)內(nèi)存分配malloc函數(shù)的使用。但我的程序仍讓不夠完美,因?yàn)槲倚薷男畔r(shí)還不能對學(xué)號進(jìn)行判斷,就是說如果修改時(shí)使兩個(gè)學(xué)生學(xué)號相同就一并保存下來。在查詢中可以一并查詢出來,但刪除修改操作需要按錄入順序捉個(gè)操作。這是該程序的不足。而且,在姓名查找中必不能實(shí)現(xiàn)模糊查找功能。也就是說,不能對某同學(xué)姓名中的一部分進(jìn)行判斷進(jìn)而進(jìn)行查找。這次課程設(shè)計(jì)能夠順利完成要首先感謝韓玲老師對我的悉心教導(dǎo),她在我整個(gè)編程中給予了我很大幫助。

8、還感謝王保華老師為我解釋了查詢中鏈表的循環(huán),陳美榮老師為我講解了動(dòng)態(tài)內(nèi)存分配malloc函數(shù)。在此我要感謝所有為我的課程設(shè)計(jì)付出心血的老師們!參考文獻(xiàn):譚浩強(qiáng),C程序設(shè)計(jì)(第二版),清華大學(xué)出版社。嚴(yán)蔚敏,吳偉民,數(shù)據(jù)結(jié)構(gòu)(C語言版),清華大學(xué)出版社。六、 源程序及系統(tǒng)文件使用說明學(xué)生成績信息管理中各模塊的功能說明程序代碼設(shè)計(jì)一:結(jié)構(gòu)體:typedef struct studentscore char name10; char num20;struct subjectchar subname20;float score; sub5; /保存學(xué)生各科成績double sum; /總分struct

9、 studentscore *next;STUCORE;二:添加學(xué)生成績信息函數(shù):(void add_score())1)函數(shù)原形:void add_score()2)功 能:采用動(dòng)態(tài)內(nèi)存分配malloc函數(shù)和鏈表結(jié)構(gòu)。利用do while、while循環(huán)結(jié)構(gòu)strcpy函數(shù)依次輸入學(xué)生學(xué)號、姓名、及對一名學(xué)生五門不同學(xué)科的學(xué)科名及該科成績。將信息保存在內(nèi)存中建立的鏈表里。3)變量及類型: STUCORE *stu,*p; 定義結(jié)構(gòu)體指針 char k; 用來接收輸入的(y/n)以便通過do while判斷是否繼續(xù)添加信息int flag; 定義一個(gè)整型變量來判斷所添加的學(xué)生學(xué)號是否已經(jīng)存在文

10、件中,保證學(xué)號唯一性 p=head_2; 將結(jié)構(gòu)體下定義的頭指針head_2賦給p4)說明:執(zhí)行完輸入函數(shù)后,會(huì)在鍵盤緩沖區(qū)中保存回車鍵,后面再對字符型變量賦值時(shí),會(huì)將緩沖區(qū)中的回車鍵當(dāng)成數(shù)據(jù)存入變量中,所以要在某些輸入語句后面加getchar()函數(shù)。并在函數(shù)調(diào)用結(jié)束時(shí)利用system(cls)執(zhí)行清屏操作。添加完成后需要去往文件操作保存。void add_score()/添加學(xué)生成績信息STUCORE *stu,*p;char k;p=head_2; int flag=0; dostu=( STUCORE *) malloc(sizeof(STUCORE);printf(輸入學(xué)生的成績信息

11、:n);while(flag=0)printf(請輸入學(xué)生學(xué)號:);scanf(%s,no);flag=Judge(no);strcpy(stu-num,no);printf(請輸入學(xué)生姓名:);scanf(%s,stu-name); printf(請輸入第一門課學(xué)科名:);scanf(%s,stu-sub0.subname);printf(請輸入該課成績:);scanf(%f,&stu-sub0.score);printf(請輸入第二門課學(xué)科名:);scanf(%s,stu-sub1.subname);printf(請輸入該課成績:);scanf(%f,&stu-sub1.score);pr

12、intf(請輸入第三門課學(xué)科名:);scanf(%s,stu-sub2.subname);printf(請輸入該課成績:);scanf(%f,&stu-sub2.score);printf(請輸入第四門課學(xué)科名:);scanf(%s,stu-sub3.subname);printf(請輸入該課成績:);scanf(%f,&stu-sub3.score);printf(請輸入第五門課學(xué)科名:);scanf(%s,stu-sub4.subname);printf(請輸入該課成績:);scanf(%f,&stu-sub4.score);stu-sum=stu-sub1.score+stu-sub2.

13、score+stu-sub3.score+stu-sub4.score+stu-sub0.score;getchar();printf(tt輸入學(xué)生信息完成。n);while(p-next!=NULL)p=p-next;p-next=stu;p=stu;p-next=NULL;printf(n添加完成后請去往文件管理保存!nn是否繼續(xù)添加學(xué)生信息?(y/n):n); while(k=getchar()=y);getchar(); system(cls);三:刪除學(xué)生成績信息函數(shù)(void del_score())1)函數(shù)原形:void del_score()2)功 能:利用strcmp函數(shù)、d

14、o while、while循環(huán)結(jié)構(gòu)通過學(xué)號找到要?jiǎng)h除的學(xué)生并利用鏈表執(zhí)行刪除操作。將信息保存在內(nèi)存中建立的鏈表里。3)變量及類型: STUCORE *p,*q; 定義結(jié)構(gòu)體指針 char no10; 定義輸入的待比較變量 char k,ch; 用來接收輸入的(y/n)以便通過do while判斷是否刪除信息p=head_2; 將結(jié)構(gòu)體下定義的頭指針head_2賦給p4)說明:執(zhí)行完刪除函數(shù)后,會(huì)在鍵盤緩沖區(qū)中保存回車鍵,后面再對字符型變量賦值時(shí),會(huì)將緩沖區(qū)中的回車鍵當(dāng)成數(shù)據(jù)存入變量中,所以要在某些輸入語句后面加getchar()函數(shù)。并在函數(shù)調(diào)用結(jié)束時(shí)利用system(cls)執(zhí)行清屏操作。刪

15、除完成后需要去往文件操作保存。void del_score()/刪除學(xué)生成績信息 STUCORE *p,*q;char no10;char k,ch; Do p=head_2;printf(tt刪除學(xué)生的詳細(xì)資料 nnn); printf(請輸入要?jiǎng)h除學(xué)生的學(xué)號:);scanf(%s,no); while(strcmp(p-num,no)!=0&p-next!=NULL) q=p; p=p-next; if(strcmp(p-num),no)=0)printf(要?jiǎng)h除的學(xué)生成績信息:);printf(學(xué)號:%sn,p-num);printf(姓名:%sn,p-name);printf(%s 成

16、績: %fn,p-sub0.subname,p-sub0.score);printf(%s 成績: %fn,p-sub1.subname,p-sub1.score);printf(%s 成績: %fn,p-sub2.subname,p-sub2.score);printf(%s 成績: %fn,p-sub3.subname,p-sub3.score);printf(%s 成績: %fn,p-sub4.subname,p-sub4.score);printf(總分:%lfn,p-sum);getchar();printf(n確定刪除嗎?y/n?nn);ch=getchar();if(ch=y)q

17、-next=p-next;printf(nttt已刪除該學(xué)生nn);else printf(nttt沒有該學(xué)生nn);getchar(); printf(n刪除完成后請去往文件管理保存!nn是否繼續(xù)刪除其它學(xué)生信息?(y/n?):n);k=getchar();while(k=y);getchar();system(cls);四:修改學(xué)生成績信息函數(shù)(void modify_score())1)函數(shù)原形:void modify_score()2)功 能:利用strcmp函數(shù)、do while、while循環(huán)結(jié)構(gòu)通過學(xué)號找到要修改的學(xué)生并利用鏈表執(zhí)行修改操作。并將修改后的信息保存在內(nèi)存中建立的鏈表

18、里。3)變量及類型: STUCORE *p; 定義結(jié)構(gòu)體指針 char no10; 定義輸入的待比較變量 char k; 用來接收輸入的(y/n)以便通過do while判斷是否繼續(xù)修改信息p=head_2; 將結(jié)構(gòu)體下定義的頭指針head_2賦給p4)說明:執(zhí)行完修改函數(shù)后,會(huì)在鍵盤緩沖區(qū)中保存回車鍵,后面再對字符型變量賦值時(shí),會(huì)將緩沖區(qū)中的回車鍵當(dāng)成數(shù)據(jù)存入變量中,所以要在某些輸入語句后面加getchar()函數(shù)。并在函數(shù)調(diào)用結(jié)束時(shí)利用system(cls)執(zhí)行清屏操作。修改完成后需要去往文件操作保存。void modify_score()/修改學(xué)生成績信息system(cls);STUC

19、ORE *p;char no30;char k;dop=head_2;printf(tt修改學(xué)生的詳細(xì)資料n);printf(輸入學(xué)生學(xué)號:);scanf(%s,no);while(strcmp(p-num,no)!=0&p-next!=NULL) p=p-next;if(strcmp(p-num),no)=0)printf(要修改的學(xué)生的詳細(xì)資料:n);printf(學(xué)號:%sn,p-num);printf(姓名:%sn,p-name);printf(%s 成績: %fn,p-sub0.subname,p-sub0.score);printf(%s 成績: %fn,p-sub1.subnam

20、e,p-sub1.score);printf(%s 成績: %fn,p-sub2.subname,p-sub2.score);printf(%s 成績: %fn,p-sub3.subname,p-sub3.score);printf(%s 成績: %fn,p-sub4.subname,p-sub4.score);printf(總分:%lfn,p-sum);printf(ntt*根據(jù)提示輸入修改后的信息*nn); printf(輸入新的學(xué)生的成績信息:n);printf(請輸入新的學(xué)生學(xué)號:);scanf(%s,p-num);printf(請輸入新的學(xué)生姓名:);scanf(%s,p-name)

21、;printf(請輸入第一門課學(xué)科名:);scanf(%s,stu-sub0.subname);printf(請輸入該課成績:);scanf(%f,&stu-sub0.score);printf(請輸入第二門課學(xué)科名:);scanf(%s,stu-sub1.subname);printf(請輸入該課成績:);scanf(%f,&stu-sub1.score);printf(請輸入第三門課學(xué)科名:);scanf(%s,stu-sub2.subname);printf(請輸入該課成績:);scanf(%f,&stu-sub2.score);printf(請輸入第四門課學(xué)科名:);scanf(%s,

22、stu-sub3.subname);printf(請輸入該課成績:);scanf(%f,&stu-sub3.score);printf(請輸入第五門課學(xué)科名:);scanf(%s,stu-sub4.subname);printf(請輸入該課成績:);scanf(%f,&stu-sub4.score);stu-sum=stu-sub1.score+stu-sub2.score+stu-sub3.score+stu-sub4.score+stu-sub0.score;else printf(tt沒有此學(xué)生信息!nn);getchar();printf(n修改完成后請去往文件管理保存!nn是否繼修改

23、學(xué)生信息?(y/n):n);k=getchar();while(k=y);getchar();system(cls);五:按學(xué)號查找學(xué)生成績信息函數(shù)(void search_num())1)函數(shù)原形:void search_num()2)功 能:利用strcmp函數(shù)、do while、while循環(huán)結(jié)構(gòu)通過學(xué)號找到要查找的學(xué)生并將該學(xué)生成績信息顯示出來。3)變量及類型: STUCORE *p; 定義結(jié)構(gòu)體指針 char no10; 定義輸入的待比較變量 char k;用來接收輸入的(y/n)以便通過do while判斷是否繼續(xù)利用學(xué)號查詢信息int flag; 定義一個(gè)整型變量來判斷所查找的學(xué)

24、生是否存在文件中p=head_2; 將結(jié)構(gòu)體下定義的頭指針head_2賦給p4)說明:執(zhí)行完查詢函數(shù)后,會(huì)在鍵盤緩沖區(qū)中保存回車鍵,后面再對字符型變量賦值時(shí),會(huì)將緩沖區(qū)中的回車鍵當(dāng)成數(shù)據(jù)存入變量中,所以要在某些輸入語句后面加getchar()函數(shù)。并在函數(shù)調(diào)用結(jié)束時(shí)利用system(cls)執(zhí)行清屏操作。void search_num()/按學(xué)號查找學(xué)生成績信息STUCORE *p;char no10;char k;int flag;dop=head_2;flag=0;printf(請輸入要查找學(xué)生的學(xué)號:);scanf(%s,no);while(p!=NULL)if (strcmp(p-nu

25、m,no)=0)printf(要查詢的學(xué)生詳細(xì)資料:n);printf(學(xué)號:%sn,p-num);printf(姓名:%sn,p-name);printf(%s 成績: %fn,p-sub0.subname,p-sub0.score);printf(%s 成績: %fn,p-sub1.subname,p-sub1.score);printf(%s 成績: %fn,p-sub2.subname,p-sub2.score);printf(%s 成績: %fn,p-sub3.subname,p-sub3.score);printf(%s 成績: %fn,p-sub4.subname,p-sub4.

26、score);printf(總分:%lfn,p-sum);p=p-next;flag=1;else p=p-next;if(flag=0) printf(nttt沒有該學(xué)生nn);getchar();printf(n是否繼續(xù)查找其它學(xué)生信息?y/n?n);k=getchar();while(k=y);getchar();printf(ntt查看完畢!按任意鍵返回);getchar();system(cls);六:按姓名查找學(xué)生成績函數(shù)(void search_name ())1)函數(shù)原形:void search_name()2)功 能:利用strcmp函數(shù)、do while、while循環(huán)結(jié)構(gòu)

27、通過姓名找到要查找的學(xué)生并將該學(xué)生成績信息顯示出來。(包括同名的學(xué)生)3)變量及類型: STUCORE *p; 定義結(jié)構(gòu)體指針 char no10; 定義輸入的待比較變量 char k;用來接收輸入的(y/n)以便通過do while判斷是否繼續(xù)利用姓名查詢信息int flag; 定義一個(gè)整型變量來判斷所查找的學(xué)生是否存在文件中p=head_2; 將結(jié)構(gòu)體下定義的頭指針head_2賦給p4)說明:執(zhí)行完查詢函數(shù)后,會(huì)在鍵盤緩沖區(qū)中保存回車鍵,后面再對字符型變量賦值時(shí),會(huì)將緩沖區(qū)中的回車鍵當(dāng)成數(shù)據(jù)存入變量中,所以要在某些輸入語句后面加getchar()函數(shù)。并在函數(shù)調(diào)用結(jié)束時(shí)利用system(c

28、ls)執(zhí)行清屏操作。void search_name()/按姓名查找學(xué)生成績STUCORE *p;char no10;char k;int flag;dop=head_2;flag=0;printf(請輸入要查找學(xué)生的姓名:);scanf(%s,no);while(p!=NULL)if (strcmp(p-name,no)=0)printf(要查詢的學(xué)生詳細(xì)資料:n);printf(學(xué)號:%sn,p-num);printf(姓名:%sn,p-name);printf(%s 成績: %fn,p-sub0.subname,p-sub0.score);printf(%s 成績: %fn,p-sub1

29、.subname,p-sub1.score);printf(%s 成績: %fn,p-sub2.subname,p-sub2.score);printf(%s 成績: %fn,p-sub3.subname,p-sub3.score);printf(%s 成績: %fn,p-sub4.subname,p-sub4.score);printf(總分:%lfn,p-sum);p=p-next;flag=1;else p=p-next;if(flag=0) printf(nttt沒有該學(xué)生nn);getchar();printf(n是否繼續(xù)查找其它學(xué)生信息?y/n?n);k=getchar();whi

30、le(k=y);getchar();printf(ntt查看完畢!按任意鍵返回);getchar();system(cls);七:查找學(xué)生成績信息函數(shù)void search_score()/查找學(xué)生成績信息system(cls);int a;printf(tt*n);printf(tt*n);printf(ttt1:按學(xué)號查找。n);printf(ttt2:按姓名查找。n);printf(ttt3:退出。n);printf(tt*n);printf(tt*n);printf(ntt輸入一個(gè)有效的數(shù)字,選擇你要做的操作:n);scanf(%d,&a);switch(a)case 1:search

31、_num();break;case 2:search_name();break;case 3:score();break;default:printf(ttt錯(cuò)誤的菜單選項(xiàng)nn);break;八:學(xué)生成績管理函數(shù)void score()/學(xué)生成績管理system(cls);int a;printf(tt*學(xué)生管理系統(tǒng)*n);printf(tt*n);printf(ttt1:查找成績信息。n);printf(ttt2:添加成績信息。n);printf(ttt3:刪除成績信息。n);printf(ttt4:修改成績信息。n);printf(ttt5:返回。n);printf(tt*n);print

32、f(tt*n);printf(ntt輸入一個(gè)有效的數(shù)字,選擇你要做的操作:n);scanf(%d,&a);switch(a)case 1:search_score();break;case 2:add_score();break;case 3:del_score();break;case 4:modify_score();break;case 5:main();break;default:printf(ttt錯(cuò)誤的菜單選項(xiàng)nn);break;九:文件載入函數(shù)(void file3(void))1)函數(shù)原形:void file3(void)2)功 能:采用動(dòng)態(tài)內(nèi)存分配malloc函數(shù)和鏈表結(jié)構(gòu)。

33、建立打開“student.dat”文件保存數(shù)據(jù)。并建立頭指針為head_2的單鏈表。3)變量及類型:STUCORE *stu,*p; 定義結(jié)構(gòu)體指針FILE *fp; 定義文件指針4)說明:執(zhí)行操作前一定要先執(zhí)行void file3(void) 以通過動(dòng)態(tài)內(nèi)存分配建立打開“student.dat”文件保存數(shù)據(jù)。并建立頭指針為head_2的單鏈表。void file3(void)/文件載入 STUCORE *stu,*p;FILE *fp;stu=( STUCORE *) malloc(sizeof(STUCORE);if(fp=fopen(student.dat,rb)=NULL) print

34、f(ttt暫無學(xué)生信息,請?zhí)砑?nn);head_2=stu;head_2-next=NULL;else head_2=p=stu;doif(fread(stu,sizeof(STUCORE),1,fp)=1) p-next=stu;p=p-next;stu=( STUCORE *) malloc(sizeof(STUCORE);while(!feof(fp);p-next=NULL;十:文件保存寫入函數(shù)(void file4(void))1)函數(shù)原形:void file4(void)2)功 能:將鏈表內(nèi)存中的數(shù)據(jù)保存寫入到“student.dat”文件中。3)變量及類型:STUCORE *stu,*p; 定義結(jié)構(gòu)體指針FILE *fp; 定義文件指針4)說明:執(zhí)行添加,刪除,修改操作后一定要執(zhí)行void file4(void) 以將鏈表內(nèi)存中的數(shù)據(jù)保存寫入到“student.dat”文件中。void file4(void) /文件保存寫入STUCORE *p;FILE *fp;if(fp=fopen(student.dat,wb+)=NULL) printf(ttt文件無法正常打開!nn);else p=head_2;dofwrite(p,sizeof(S

溫馨提示

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

評論

0/150

提交評論