學(xué)生信息管理系統(tǒng)(C語言、含代碼解釋)_第1頁
學(xué)生信息管理系統(tǒng)(C語言、含代碼解釋)_第2頁
學(xué)生信息管理系統(tǒng)(C語言、含代碼解釋)_第3頁
學(xué)生信息管理系統(tǒng)(C語言、含代碼解釋)_第4頁
學(xué)生信息管理系統(tǒng)(C語言、含代碼解釋)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、#include #include 頭文件struct student( long num;char name12;char age;char sex;定義結(jié)構(gòu)體char addr3O;struct student *next;#defineNULLO#define LEN sizeof(struct student)定義 NULL=0確定結(jié)構(gòu)體的長度struct student *pHead;指針定義(為內(nèi)存中建立鏈表做準(zhǔn)備)void load();void save();void insert();void modify();void delet();void disp();各函數(shù)的聲明i

2、nt main(int argc, char* argv)char c;while(l)死循環(huán)printf(tlnput selection:ntH); printf(nl: Load Data ;ntH); printf(H2: Insert Record ;nt); printf(3: Modify Record ;ntH); printf(H4: Delete record ;ntH); printf(H5: Display All record ;ntH); printf(6: Save data ;ntH); printffO: Exit.nt);顯示提示信息flushall();c

3、 = getchar();c = c0 x30;switch(c)清空緩存提取指令數(shù)字字符轉(zhuǎn)化為數(shù)字執(zhí)行相應(yīng)的指令case 0:exit(O);break;case 1:load();break;case 2:insert();break;case 3:modify();break;case 4:delet();break;case 5:disp();break;case 6:save();(return 0;/*死循環(huán)條件不同) void load()FILE *fp;struct student *pl=NULL/*p2=NULL;/*p2=0,p2 #定指向 0000if(fp=fope

4、n(,studentData,;lrb,)=NULL) 打開文件若失敗就退出printf(Hcan not open filenH); exit(O);fgetc(fp);while(!feof(fp)從fp所指定的文件中(開頭)取得下一個字符到緩存判斷從文件中取的字符是否為結(jié)束符fseek(fp,l,l);/(向前一個字符位)將fp所指定的文件的位置指針以(0:開頭,1:當(dāng)前位置2結(jié)尾)為起點(diǎn)的移動多少個單位 if(pl=(struct student *)malloc(LEN)=NULL)申請一個結(jié)構(gòu)體的空間不成功就退出 return;退回到主函數(shù)if(p2=NULL) pHead=pl;

5、(條件只在鏈表頭建立是成立)建立動態(tài)鏈表開頭申請下一個(從第二個空間開始)結(jié)else p2-next = pl;構(gòu)體空間與上一個的鏈接p2 = pl;的指針指向自己本身fread(pl, sizeof(struct student),l,fp);位)的數(shù)據(jù)存到pl所指的內(nèi)存區(qū)fgetc(fp);fclose(fp);void save()(FILE *fp;struct student *pl=pHead;if(fp=fopen(,studentData,/,wb,)=NULL)(printf(ncan not open filenH);exit(O);while( pl!=NULL)fwri

6、te(pl, sizeof(struct student),fp);所指向的文件pl = pl-next;fclose(fp);)指針后移*最后的結(jié)構(gòu)體中從指定文件中讀取指定的長度(1各單從文件中取一下一個字符關(guān)閉文件定義pl指向Pheadf地址)打開出錯,退出程序不到鏈表結(jié)尾不停止循環(huán)把pl所指向的一個結(jié)構(gòu)體的數(shù)據(jù)輸出到fppl在鏈表中后移關(guān)閉文件void insert()(struct student *pO/pl/p2;定義指針if(pO=(struct student *)malloc(LEN)=NULL)/申請內(nèi)存空間,不成功就退出return;printf(tlnput num:t

7、”);提示輸入相應(yīng)信息(數(shù)據(jù)),數(shù)組不用取地址scanf(,%d,&pO-num);flushallf);printf(Htlnput name:tH);gets(pO-name);flushallf);printf(tlnput age:tM);scanf(,%d,&pO-age);flushallf);printf(tlnput sex:tH);scanf(c,&pO-sex);flushall();printf(,tlnputaddr:tH);gets(pO-addr);printfCXn);pl=pHead;if(pHead=NULL)pHead=pO;flushall();/pl和P

8、Head 一樣沒初始化,都為0的地址(不可寫) /PHead沒初始化時指OopO-next=NULL;開始組建鏈表else(畫圖(鏈表示意圖)好理解while(pO-numpl-num) & (pl-next!=NULL) 找到 pO 在頭之后的位置(p2后,pl前)*排序:學(xué)號從小到大(先于頭比).(當(dāng)輸入了兩個結(jié)構(gòu)體以后有效) void modify()p2=pl;pl=pl-next;)if(pO-numnum)號小if(pHead=pl) pHead=pO;有一個現(xiàn)成的結(jié)構(gòu)體)中學(xué)號還小,使po為頭 else p2-next=pO;pO-next=pl;(else按從小到大排pl-ne

9、xt=pO;pO-next=NULL;)return;)新建的結(jié)構(gòu)體中學(xué)號比pl里的學(xué)新建的結(jié)構(gòu)體中學(xué)號比.頭.(為僅新建的結(jié)構(gòu)體接在p2、pl之間新建的結(jié)構(gòu)體中學(xué)號比pl里的學(xué)號大,返回到主函數(shù)中的死循環(huán)中int i;char c;struct student *pl;pl=pHead;printf(HtPlease input the number of the stu. you want to modify:n); scanf(d,&i);while(l)if(pl-num=i)提示信息printf(Mtlnput selection to modify the information

10、of the student.:nt”);printf(nl: modify number;ntM);printf(n2: modify name;ntH);printf(3: modify age;nt);printf(H4: modify sex;ntH);printf(H5: modify address;ntH);printf(H6: modify all information.ntH);flushallf);c = getchar();提取指令c = c-0 x30;數(shù)字字符轉(zhuǎn)化為數(shù)字switch(c)執(zhí)行相應(yīng)的指令case 1:printf(tlnput num:tH);flus

11、hall();scanf(%d,&pl-num);return;case 2:printf(Htlnput name:tM);flushall();gets(pl-name);flushall();return;case 3:printf(Htlnput age:tu);flushall();scanf(%d,&pl-age);return;case 4:printf(Htlnput sex:tn);flushall();scanf(%c”,&plsex);return;case 5:printf(Htlnput addr:tH);flushall();gets(pl-addr);return

12、;case 6:flushall();printf(Htlnput num:tM);scanf(,%d,&pl-num);flushall();printf(Htlnput name:tH);gets(pl-name);flushall();printf(Htlnput age:tM);scanf(,%d,&pl-age);flushall();printf(Htlnput sex:tH);scanf(%c,&plsex);flushall();printf(Htlnput addr:tH);gets(pl-addr);flushall();return;if (pl-next=NULL)pr

13、intf(Htthere isnt that student.nnn);return;if(pl-num!=i)pl = pl-next;void delet()(int i;struct student *pl,*p2;pl=pHead;printf(HtPlease input the number of the stu. you want to delete:ntH);scanf(%d“,&i);while(l)循環(huán)尋找指定的結(jié)構(gòu)體if(pl-num=i)if(pl=pHead)刪除鏈表開頭pHead = pHead-next;elsep2-next = pl-next;刪除非鏈表開頭free(pl);釋放空間break;跳出循環(huán)if (pl-next=NULL)printf(Htthere isnt that student.nnH);return;if(pl-num!=i)p2 = pl;pl = pl-next;)void disp()(struct student *pl=pHead;定義結(jié)構(gòu)體指針printf(tnum t

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論