版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
程序設(shè)計(jì)7(結(jié)構(gòu)體3)課件2023-2026ONEKEEPVIEWREPORTINGWENKUDESIGNWENKUDESIGNWENKUDESIGNWENKUDESIGNWENKU目錄CATALOGUE結(jié)構(gòu)體概述結(jié)構(gòu)體與指針結(jié)構(gòu)體嵌套與遞歸文件操作與結(jié)構(gòu)體案例分析:學(xué)生信息管理系統(tǒng)設(shè)計(jì)課程總結(jié)與拓展延伸結(jié)構(gòu)體概述PART01使用`struct`關(guān)鍵字定義結(jié)構(gòu)體類型,指定結(jié)構(gòu)體名稱和成員列表。結(jié)構(gòu)體類型定義由多個(gè)成員組成,每個(gè)成員可以是基本數(shù)據(jù)類型或其他結(jié)構(gòu)體類型。成員列表結(jié)構(gòu)體的大小等于其所有成員大小之和,同時(shí)要考慮內(nèi)存對齊規(guī)則。結(jié)構(gòu)體大小結(jié)構(gòu)體定義
結(jié)構(gòu)體變量結(jié)構(gòu)體變量的聲明聲明結(jié)構(gòu)體變量時(shí)需要指定結(jié)構(gòu)體類型名稱。結(jié)構(gòu)體變量的初始化可以在聲明時(shí)或后續(xù)代碼中為結(jié)構(gòu)體變量的成員賦值。結(jié)構(gòu)體變量的訪問使用`.`運(yùn)算符訪問結(jié)構(gòu)體變量的成員。結(jié)構(gòu)體數(shù)組的初始化可以在定義時(shí)或后續(xù)代碼中為結(jié)構(gòu)體數(shù)組的每個(gè)元素賦值。結(jié)構(gòu)體數(shù)組的訪問使用數(shù)組下標(biāo)訪問結(jié)構(gòu)體數(shù)組中的元素,再使用`.`運(yùn)算符訪問元素的成員。結(jié)構(gòu)體數(shù)組的定義定義結(jié)構(gòu)體數(shù)組時(shí)需要指定數(shù)組大小和結(jié)構(gòu)體類型。結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體與指針PART02通過定義指向結(jié)構(gòu)體的指針變量,可以存儲結(jié)構(gòu)體變量的地址。定義指向結(jié)構(gòu)體的指針使用箭頭運(yùn)算符(->)可以通過指向結(jié)構(gòu)體的指針訪問結(jié)構(gòu)體的成員。訪問結(jié)構(gòu)體成員可以對指向結(jié)構(gòu)體的指針進(jìn)行加、減等運(yùn)算,以訪問結(jié)構(gòu)體數(shù)組中的元素。指針的運(yùn)算指向結(jié)構(gòu)體的指針03提高效率使用指針傳遞結(jié)構(gòu)體可以避免整個(gè)結(jié)構(gòu)體的復(fù)制,提高程序的運(yùn)行效率。01函數(shù)參數(shù)傳遞方式可以將指向結(jié)構(gòu)體的指針作為函數(shù)的參數(shù),實(shí)現(xiàn)函數(shù)對結(jié)構(gòu)體的操作。02函數(shù)內(nèi)部對結(jié)構(gòu)體的修改在函數(shù)內(nèi)部,可以通過傳遞的指針修改結(jié)構(gòu)體的成員,實(shí)現(xiàn)對結(jié)構(gòu)體的改變。結(jié)構(gòu)體指針作為函數(shù)參數(shù)指針成員的定義可以在結(jié)構(gòu)體中定義指針類型的成員,用于存儲指向其他數(shù)據(jù)類型的指針。動態(tài)內(nèi)存分配可以使用指針成員在結(jié)構(gòu)體中動態(tài)分配內(nèi)存,以存儲可變大小的數(shù)據(jù)。指針成員的操作可以通過結(jié)構(gòu)體中的指針成員訪問和操作所指向的數(shù)據(jù),實(shí)現(xiàn)靈活的數(shù)據(jù)處理。結(jié)構(gòu)體中指針成員的使用結(jié)構(gòu)體嵌套與遞歸PART03結(jié)構(gòu)體嵌套定義01在一個(gè)結(jié)構(gòu)體的定義中,可以包含另一個(gè)結(jié)構(gòu)體作為成員,這種包含關(guān)系稱為結(jié)構(gòu)體嵌套。被包含的結(jié)構(gòu)體稱為子結(jié)構(gòu)體,包含子結(jié)構(gòu)體的結(jié)構(gòu)體稱為父結(jié)構(gòu)體。嵌套結(jié)構(gòu)體的聲明02在聲明嵌套結(jié)構(gòu)體時(shí),需要先聲明子結(jié)構(gòu)體,然后在父結(jié)構(gòu)體中聲明子結(jié)構(gòu)體的成員。嵌套結(jié)構(gòu)體的訪問03訪問嵌套結(jié)構(gòu)體的成員時(shí),需要使用“.”運(yùn)算符逐級訪問。結(jié)構(gòu)體嵌套定義123一個(gè)結(jié)構(gòu)體可以包含指向自身類型的指針或引用作為成員,這種定義方式稱為結(jié)構(gòu)體遞歸定義。結(jié)構(gòu)體遞歸定義在聲明遞歸結(jié)構(gòu)體時(shí),需要在結(jié)構(gòu)體內(nèi)部聲明一個(gè)指向自身類型的指針或引用成員。遞歸結(jié)構(gòu)體的聲明遞歸結(jié)構(gòu)體通常用于實(shí)現(xiàn)鏈表、樹等數(shù)據(jù)結(jié)構(gòu),可以通過指針或引用來實(shí)現(xiàn)數(shù)據(jù)的動態(tài)分配和訪問。遞歸結(jié)構(gòu)體的使用結(jié)構(gòu)體遞歸定義鏈表鏈表是一種常見的數(shù)據(jù)結(jié)構(gòu),可以使用結(jié)構(gòu)體遞歸定義來實(shí)現(xiàn)。鏈表的每個(gè)節(jié)點(diǎn)包含一個(gè)數(shù)據(jù)域和一個(gè)指向下一個(gè)節(jié)點(diǎn)的指針域,通過指針的鏈接可以形成一個(gè)線性的數(shù)據(jù)結(jié)構(gòu)。二叉樹二叉樹是一種樹形數(shù)據(jù)結(jié)構(gòu),可以使用結(jié)構(gòu)體嵌套定義來實(shí)現(xiàn)。二叉樹的每個(gè)節(jié)點(diǎn)包含一個(gè)數(shù)據(jù)域和兩個(gè)分別指向左子樹和右子樹的指針域,通過指針的鏈接可以形成一個(gè)層次分明的數(shù)據(jù)結(jié)構(gòu)。圖圖是一種復(fù)雜的數(shù)據(jù)結(jié)構(gòu),可以使用結(jié)構(gòu)體嵌套和遞歸定義來實(shí)現(xiàn)。圖的每個(gè)節(jié)點(diǎn)可以包含一個(gè)數(shù)據(jù)域和一個(gè)指向相鄰節(jié)點(diǎn)的指針域或數(shù)組,通過指針或數(shù)組的鏈接可以形成一個(gè)網(wǎng)狀的數(shù)據(jù)結(jié)構(gòu)。結(jié)構(gòu)體嵌套與遞歸應(yīng)用舉例文件操作與結(jié)構(gòu)體PART04文件打開與關(guān)閉使用fscanf()、fprintf()、fgets()、fputs()等函數(shù)進(jìn)行文件讀寫操作。文件讀寫函數(shù)文件定位使用fseek()、ftell()、rewind()等函數(shù)進(jìn)行文件定位操作。使用fopen()函數(shù)打開文件,fclose()函數(shù)關(guān)閉文件。文件讀寫操作回顧定義結(jié)構(gòu)體打開文件寫入數(shù)據(jù)關(guān)閉文件將結(jié)構(gòu)體數(shù)據(jù)寫入文件根據(jù)需要定義結(jié)構(gòu)體類型,包含所需的數(shù)據(jù)成員。使用fprintf()函數(shù)將結(jié)構(gòu)體數(shù)據(jù)按照格式寫入文件。使用fopen()函數(shù)以寫入方式打開文件。使用fclose()函數(shù)關(guān)閉文件。使用fopen()函數(shù)以讀取方式打開文件。打開文件使用fscanf()函數(shù)從文件中讀取數(shù)據(jù),并按照結(jié)構(gòu)體的格式進(jìn)行解析。讀取數(shù)據(jù)將讀取的數(shù)據(jù)賦值給相應(yīng)的結(jié)構(gòu)體變量,并進(jìn)行后續(xù)處理。處理數(shù)據(jù)使用fclose()函數(shù)關(guān)閉文件。關(guān)閉文件從文件中讀取結(jié)構(gòu)體數(shù)據(jù)案例分析:學(xué)生信息管理系統(tǒng)設(shè)計(jì)PART05系統(tǒng)需求分析與設(shè)計(jì)思路系統(tǒng)需求學(xué)生信息管理系統(tǒng)需要實(shí)現(xiàn)對學(xué)生信息的錄入、查詢、修改和刪除等功能,同時(shí)要保證數(shù)據(jù)的準(zhǔn)確性和安全性。設(shè)計(jì)思路采用結(jié)構(gòu)體來存儲學(xué)生信息,包括學(xué)號、姓名、性別、年齡、成績等字段;使用文件操作來實(shí)現(xiàn)數(shù)據(jù)的持久化存儲;通過菜單選擇的方式來實(shí)現(xiàn)不同功能的選擇和操作。結(jié)構(gòu)體定義structStudent{```c關(guān)鍵代碼實(shí)現(xiàn)及講解03chargender;01intid;02charname[20];關(guān)鍵代碼實(shí)現(xiàn)及講解intage;floatscore;關(guān)鍵代碼實(shí)現(xiàn)及講解};```文件操作函數(shù)關(guān)鍵代碼實(shí)現(xiàn)及講解```cvoidsave_students(structStudentstudents[],intcount){關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解if(fp==NULL){printf("Failedtoopenfile!n");return;關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解}for(inti=0;i<count;i){fprintf(fp,"%d%s%c%d%.2fn",students[i].id,students[i].name,students[i].gender,students[i].age,students[i].score);}fclose(fp);關(guān)鍵代碼實(shí)現(xiàn)及講解VS}voidload_students(structStudentstudents[],int*count){關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解FILE*fp=fopen("students.txt","r");if(fp==NULL){printf("Failedtoopenfile!n");關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解return;關(guān)鍵代碼實(shí)現(xiàn)及講解010203while(!feof(fp)){structStudentstudent;}關(guān)鍵代碼實(shí)現(xiàn)及講解students[*count]=student;關(guān)鍵代碼實(shí)現(xiàn)及講解(*count);關(guān)鍵代碼實(shí)現(xiàn)及講解}fclose(fp);關(guān)鍵代碼實(shí)現(xiàn)及講解123}```主函數(shù)實(shí)現(xiàn)關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解01```c02intmain(){structStudentstudents[100];03intcount=0;intchoice;關(guān)鍵代碼實(shí)現(xiàn)及講解010203do{printf("nMenu:n");printf("1.Addstudentn");關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解01printf("2.Querystudentn");02printf("3.Modifystudentn");03printf("4.Deletestudentn");printf("5.Exitn");printf("Pleaseinputyourchoice:");關(guān)鍵代碼實(shí)現(xiàn)及講解01scanf("%d",&choice);02switch(choice){03case1://addstudent關(guān)鍵代碼實(shí)現(xiàn)及講解add_student(students,&count);關(guān)鍵代碼實(shí)現(xiàn)及講解break;case2://querystudentquery_student(students,count);關(guān)鍵代碼實(shí)現(xiàn)及講解case3://modifystudentmodify_student(students,count);break;關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解break;02case4://deletestudent03delete_student(students,&count);01case5://exitprintf("Goodbye!n");break;關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解030201break;default://invalidchoiceprintf("Invalidchoice,pleasetryagain.n");break;關(guān)鍵代碼實(shí)現(xiàn)及講解}}while(choice!=5);關(guān)鍵代碼實(shí)現(xiàn)及講解return0;關(guān)鍵代碼實(shí)現(xiàn)及講解}```關(guān)鍵代碼實(shí)現(xiàn)及講解系統(tǒng)測試與運(yùn)行結(jié)果展示添加3個(gè)學(xué)生信息,然后進(jìn)行查詢、修改和刪除操作。測試數(shù)據(jù)程序能夠正確執(zhí)行各項(xiàng)操作,并顯示相應(yīng)的結(jié)果。例如,查詢操作可以顯示指定學(xué)號的學(xué)生信息;修改操作可以修改指定學(xué)號的學(xué)生信息;刪除操作可以刪除指定學(xué)號的學(xué)生信息。運(yùn)行結(jié)果課程總結(jié)與拓展延伸PART06結(jié)構(gòu)體指針講解了結(jié)構(gòu)體指針的概念和使用方法,包括如何定義結(jié)構(gòu)體指針、如何進(jìn)行指針的初始化和賦值操作,以及如何通過指針訪問結(jié)構(gòu)體的成員。結(jié)構(gòu)體定義與初始化介紹了如何在程序中定義結(jié)構(gòu)體類型,以及如何進(jìn)行結(jié)構(gòu)體的初始化操作。結(jié)構(gòu)體成員訪問詳細(xì)講解了如何訪問結(jié)構(gòu)體的成員,包括使用點(diǎn)運(yùn)算符和箭頭運(yùn)算符進(jìn)行訪問的方法。結(jié)構(gòu)體數(shù)組介紹了如何定義結(jié)構(gòu)體數(shù)組,以及如何進(jìn)行結(jié)構(gòu)體數(shù)組的初始化和訪問操作。課程重點(diǎn)內(nèi)容回顧010203編寫一個(gè)學(xué)生信息管理系統(tǒng)建議學(xué)生使用結(jié)構(gòu)體來表示學(xué)生信息,包括學(xué)號、姓名、性別、年齡等字段,并使用數(shù)組或鏈表來存儲多個(gè)學(xué)生的信息。通過編寫函數(shù)來實(shí)現(xiàn)對學(xué)生信息的添加、刪除、修改和查詢等操作。編寫一個(gè)圖書管理系統(tǒng)建議學(xué)生使用結(jié)構(gòu)體來表示圖書信息,包括書號、書名、作者、出版社等字段,并使用文件來存儲圖書信息。通過編寫函數(shù)來實(shí)現(xiàn)對圖書信息的添加、刪除、修改和查詢等操作,并實(shí)現(xiàn)借書、還書等圖書借閱管理功能。編寫一個(gè)員工工資管理系統(tǒng)建議學(xué)生使用結(jié)構(gòu)體來表示員工信息,包括員工號、姓名、基本工資、獎金等字段,并使用數(shù)組或鏈表來存儲多個(gè)員工的信息。通過編寫函數(shù)來實(shí)現(xiàn)對員工信息的添加、刪除、修改和查詢等操作,并實(shí)現(xiàn)工資的計(jì)算和統(tǒng)計(jì)功能。編程實(shí)踐建議與指導(dǎo)建議學(xué)生參考《C語言程序設(shè)計(jì)》、《數(shù)據(jù)結(jié)構(gòu)與算法》等相關(guān)教材,以及網(wǎng)上豐富的C語言學(xué)習(xí)資源,如博客、在線課程等。建議學(xué)生按照以下步驟進(jìn)行學(xué)習(xí)和實(shí)踐推薦資源
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45180-2024健身器材適老化通用要求
- 2024年磚廠供應(yīng)合作合同樣本版B版
- 廣東省珠海市語文中考模擬試卷六套【附參考答案】
- 專項(xiàng)項(xiàng)目轉(zhuǎn)讓居間服務(wù)協(xié)議2024版B版
- 2024游艇俱樂部會員權(quán)益購買合同63篇
- 專利技術(shù)獨(dú)家轉(zhuǎn)讓合同 2024年版版B版
- 6 摸一摸 說課稿-2024-2025學(xué)年科學(xué)一年級上冊青島版
- 2024流行休閑副食零售購銷協(xié)議樣本一
- 2024版石材產(chǎn)品購銷協(xié)議樣本版B版
- 2 學(xué)會寬容 第一課時(shí) 說課稿-2023-2024學(xué)年道德與法治六年級下冊統(tǒng)編版
- 2023-2024學(xué)年浙江省杭州市城區(qū)數(shù)學(xué)四年級第一學(xué)期期末學(xué)業(yè)水平測試試題含答案
- 五星級酒店市場調(diào)研報(bào)告
- 車輛剮蹭私下解決協(xié)議書(3篇)
- 網(wǎng)球技術(shù)與戰(zhàn)術(shù)-華東師范大學(xué)中國大學(xué)mooc課后章節(jié)答案期末考試題庫2023年
- 2022-2023學(xué)年衡水市深州市小升初數(shù)學(xué)高頻考點(diǎn)檢測卷含答案
- 現(xiàn)代科學(xué)技術(shù)概論知到章節(jié)答案智慧樹2023年成都師范學(xué)院
- 2020年上海市高考英語二模試卷(a卷)
- HLB值的實(shí)驗(yàn)測定方法
- 2023年《病歷書寫基本規(guī)范》年度版
- 代理記賬機(jī)構(gòu)代理記賬業(yè)務(wù)規(guī)范
- 創(chuàng)業(yè)計(jì)劃書(成人用品店)
評論
0/150
提交評論