版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、#include #include #include #define PF printf#define LEN sizeof(struct student)/定義結(jié)構(gòu)體struct student char NO20; char name20; int age; char sex3; /*F表示性別男,M表示性別女*/ char birthday10; char address30; char phone20; char e_mail20; struct student *next; /下個(gè)結(jié)點(diǎn);typedef struct student STU;STU *head=NULL; /全局指針i
2、nt n,i=0; /全局變量/自定義函數(shù)void show_menu(); /顯示菜單void menu(); /執(zhí)行菜單void creat_stu(); /建立鏈表 void insert_stu(); /學(xué)生信息錄入void print_stu(); /學(xué)生信瀏覽void search_NO(); /以學(xué)號(hào)方式查詢信息void search_name(); /以姓名方式查詢信息void arrage_stu(); /排序void del_stu(); /刪除學(xué)生信息void revise_stu(); /修改學(xué)生信息void save(); /保存信息void main() syste
3、m(“color 3f”);creat_stu(); menu();/創(chuàng)建鏈表void creat_stu() FILE *fp; long size; STU *p1,*p2; head=(STU *)malloc(sizeof(STU); head-next=NULL; if(fp=fopen(fname.txt,r)=NULL) printf(這是新表n); return; fseek(fp,0L,2); size=ftell(fp); if(!size) printf(這是空表n); return; /開始創(chuàng)建鏈表 rewind(fp); /移動(dòng)到文件首 p2=head-next; /
4、找到但前位置 while(!feof(fp) p1=(STU *)malloc(sizeof(STU); fscanf(fp,%s %s %d %s %s %s %s %sn,p1-NO,p1-name,&p1-age, p1-sex,p1-birthday,p1-address,p1-phone,p1-e_mail); p1-next=NULL; /創(chuàng)建節(jié)點(diǎn)完 if(head-next=NULL) head-next=p1; else p2-next=p1; p2=p1; n+; p2-next=NULL; fclose(fp);/執(zhí)行菜單void menu() int c; show_me
5、nu(); while(1) scanf(%d,&c); switch(c) getchar(); case 1:insert_stu();break; case 2:print_stu();break; case 3:search_NO(); break; case 4:search_name(); break; case 5:del_stu(); break; case 6:revise_stu(); break; case 7:arrage_stu();break; case 0:exit(0); /執(zhí)行菜單選項(xiàng) show_menu(); /顯示菜單void show_menu() PF
6、(n); PF(n菜單n); PF(tt1.輸 入 學(xué) 生 信 息 n); PF(tt2.瀏 覽 學(xué) 生 信 息 n); PF(tt3.以學(xué)號(hào)方式查詢信息n); PF(tt4.以姓名方式查詢信息n); PF(tt5.刪 除 學(xué) 生 信 息 n); PF(tt6.修 改 學(xué) 生 信 息 n); PF(tt7 排 序 n); PF(tt0. 退 出 n); PF(n); PF(n請(qǐng)選擇n);/學(xué)生信息錄入void insert_stu() /學(xué)生信息錄入 n=0; STU *p1=NULL,*p2=NULL; p1=(STU *)malloc(sizeof(STU); PF(n錄入學(xué)生信息n);
7、/錄入學(xué)生信息 PF(tt輸入學(xué)生學(xué)號(hào):t); scanf(%s,p1-NO); /學(xué)號(hào) PF(tt輸入學(xué)生姓名:t); scanf(%s,p1-name); /姓名 PF(tt輸入學(xué)生年齡:t); scanf(%d,&p1-age); /年齡 PF(tt輸入學(xué)生性別:t); scanf(%s,p1-sex); /性別 PF(tt輸入學(xué)生出生年月:t); scanf(%s,p1-birthday); /出生年月 PF(tt輸入學(xué)生地址:t); scanf(%s,p1-address); /地址 PF(tt輸入學(xué)生電話:t); scanf(%s,p1-phone); /電話 PF(tt輸入學(xué)生E
8、-mail:t); scanf(%s,p1-e_mail); /E-mail n+; if(head-next=NULL) head=(STU *)malloc(LEN); head-next=p1; else for(p2=head;p2-next!=NULL;p2=p2-next); /*找到最后的結(jié)點(diǎn),然后 將增加的結(jié)點(diǎn)掛在它上面*/ p2-next=p1; p1-next=NULL; save();/保存到文件 /學(xué)生信瀏覽void print_stu() /學(xué)生信瀏覽 STU *p=NULL; if(head=NULL) /判斷鏈表是否為空 PF(文檔中無記錄!n); return;
9、 for(p=head-next;p!=NULL;p=p-next) /讀出信息 PF(學(xué)生信瀏覽n); PF(tt學(xué)生學(xué)號(hào):t%sn,p-NO); PF(tt學(xué)生姓名:t%sn,p-name); PF(tt學(xué)生年齡:t%dn,p-age); PF(tt學(xué)生性別:t%sn,p-sex); PF(tt學(xué)生出生年月:t%sn,p-birthday); PF(tt學(xué)生地址:t%sn,p-address); PF(tt學(xué)生電話:t%sn,p-phone); PF(tt學(xué)生E-mail:t%sn,p-e_mail); PF(n); /輸出信息 /學(xué)生姓名信息查找void search_name() /學(xué)
10、生姓名信息查找 STU *p=NULL; char name20; if(head=NULL) /判斷鏈表是否為空 PF(文檔中無記錄!n); return; PF(輸入學(xué)生姓名:); scanf(%s,name); for(p=head-next;p!=NULL;p=p-next) /讀出信息 if(!strcmp(p-name,name) PF(您查找的學(xué)生是n); PF(tt學(xué)生學(xué)號(hào):t%sn,p-NO); PF(tt學(xué)生姓名:t%sn,p-name); PF(tt學(xué)生年齡:t%dn,p-age); PF(tt學(xué)生性別:t%sn,p-sex); PF(tt學(xué)生出生年月:t%sn,p-bi
11、rthday); PF(tt學(xué)生地址:t%sn,p-address); PF(tt學(xué)生電話:t%sn,p-phone); PF(tt學(xué)生E-mail:t%sn,p-e_mail); PF(n); i=1; /輸出信息 if(!i) PF(無該生信息!請(qǐng)查證:); /沒找到信息時(shí)的處理 /學(xué)生學(xué)號(hào)信息查找void search_NO() /學(xué)生學(xué)號(hào)信息查找 STU *p=NULL; char NO20; if(head=NULL) /判斷鏈表是否為空 PF(文檔中無記錄!n); return; PF(請(qǐng)輸入學(xué)生學(xué)號(hào):); scanf(%s,NO); for(p=head-next;p!=NULL
12、;p=p-next) /讀出信息 if(!strcmp(p-NO,NO) PF(您查找的學(xué)生是n); PF(tt學(xué)生學(xué)號(hào):t%sn,p-NO); PF(tt學(xué)生姓名:t%sn,p-name); PF(tt學(xué)生年齡:t%dn,p-age); PF(tt學(xué)生性別:t%sn,p-sex); PF(tt學(xué)生出生年月:t%sn,p-birthday); PF(tt學(xué)生地址:t%sn,p-address); PF(tt學(xué)生電話:t%sn,p-phone); PF(tt學(xué)生E-mail:t%sn,p-e_mail); PF(n); i=1; /輸出信息 if(!i) PF(無該生信息!請(qǐng)查證:); /沒找到
13、信息時(shí)的處理 /修改學(xué)生信息void revise_stu() STU *p=NULL; if(head=NULL) /判斷鏈表是否為空 PF(文檔中無記錄!n); return; char NO20; PF(請(qǐng)輸入學(xué)生的學(xué)號(hào):t); scanf(%s,NO); for(p=head-next;p!=NULL;p=p-next) if(!strcmp(p-NO,NO) /驗(yàn)證信息是否正確 PF(你要修改的學(xué)生是n); PF(tt學(xué)生學(xué)號(hào):t%sn,p-NO); PF(tt學(xué)生姓名:t%sn,p-name); PF(tt學(xué)生年齡:t%dn,p-age); PF(tt學(xué)生性別:t%sn,p-sex
14、); PF(tt學(xué)生出生年月:t%sn,p-birthday); PF(tt學(xué)生地址:t%sn,p-address); PF(tt學(xué)生電話:t%sn,p-phone); PF(tt學(xué)生E-mail:t%sn,p-e_mail); PF(n); /輸出要修改信息 i=1; PF(修改學(xué)號(hào)為%s的學(xué)生n,NO); strcpy(p-NO,NO); PF(tt輸入修改學(xué)生姓名:t); scanf(%s,p-name); PF(tt輸入修改學(xué)生年齡:t); scanf(%d,&p-age); PF(tt輸入修改學(xué)生性別:t); scanf(%s,p-sex); PF(tt輸入修改學(xué)生出生年月:t);
15、scanf(%s,p-birthday); PF(tt輸入修改學(xué)生地址:t); scanf(%s,p-address); PF(tt輸入修改學(xué)生電話:t); scanf(%s,p-phone); PF(tt輸入修改學(xué)生E-mail:t); scanf(%s,p-e_mail); PF(n); /輸入修改信息 save(); if(!i) PF(無該生信息!請(qǐng)查證:); /*沒找到信息時(shí)的處理*/ /刪除學(xué)生信息void del_stu() STU *p=NULL; if(head=NULL) /判斷鏈表是否為空 PF(文檔中無記錄!n); return; else char NO20; PF(
16、請(qǐng)輸入學(xué)生的學(xué)號(hào):t); scanf(%s,NO); for(p=head;p!=NULL;p=p-next) if(!strcmp(p-next-NO,NO) /驗(yàn)證信息是否正確 PF(你要?jiǎng)h除的學(xué)生是n); PF(tt學(xué)生學(xué)號(hào):t%sn,p-next-NO); PF(tt學(xué)生姓名:t%sn,p-next-name); PF(tt學(xué)生年齡:t%dn,p-next-age); PF(tt學(xué)生性別:t%sn,p-next-sex); PF(tt學(xué)生出生年月:t%sn,p-next-birthday); PF(tt學(xué)生地址:t%sn,p-next-address); PF(tt學(xué)生電話:t%sn,
17、p-next-phone); PF(tt學(xué)生E-mail:t%sn,p-next-e_mail); PF(n); /輸出要?jiǎng)h除的信息 i=1; if(p-next-next) printf(第一個(gè)n); p-next=p-next-next; else p-next=NULL; n-; save(); return; if(!i) PF(無該生信息!請(qǐng)查證:); /沒找到信息時(shí)的處理 return; /按學(xué)號(hào)排序void arrage_stu() STU *p1,*p2; int in=0,j; if(head-next=NULL) /首先判斷 printf(你還沒有記錄,無法排序n); re
18、turn ; printf(n=%d,n); p1=head-next; for(in=0;innext;jnext,j+) if(j=0)/第一次比較第一個(gè)和第二個(gè)節(jié)點(diǎn)信息 if(strcmp(p1-NO,p1-next-NO)/比較p1本身和p1下一個(gè)節(jié)點(diǎn) p2=p1-next; p1-next=p1-next-next; p2-next=p1; head-next=p2; p1=head-next;/從新給CUR賦值 /* p1=head-next; p1=p2; 錯(cuò)誤:如果一個(gè)變量=他前一個(gè)節(jié)點(diǎn)的NEXT 那么不可以說把另外一個(gè)變量賦給它就可以改變它 前一個(gè)節(jié)點(diǎn)的NEXT 他只能操作后節(jié)點(diǎn)! */ if(strcmp(p1-next-NO,p1-next-next-NO)/比較p1下一個(gè)和p1下兩個(gè)節(jié)點(diǎn) p2=p1-next; p1-next=p1-ne
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個(gè)人小型制造企業(yè)股權(quán)轉(zhuǎn)讓合同3篇
- 2025年物流公司提供一站式國際快遞服務(wù)長期合同2篇
- 文化旅游基礎(chǔ)設(shè)施與運(yùn)營行業(yè)2024年信用回顧與2025年展望 -新世紀(jì)
- 二零二五年度人工智能算法技術(shù)服務(wù)采購合同4篇
- 2025年銷售渠道拓展勞動(dòng)合同補(bǔ)充協(xié)議書3篇
- 餐飲業(yè)商模創(chuàng)新路演模板
- 二零二五版3海上貨物運(yùn)輸合同-海上貨物運(yùn)輸風(fēng)險(xiǎn)評(píng)估與控制協(xié)議2篇
- 二零二五年度金融衍生品質(zhì)押典當(dāng)交易協(xié)議4篇
- 充電樁工程建設(shè)資金籌集與使用合同3篇
- 2025年度古建筑修復(fù)與裝修工程合同樣本4篇
- 不同茶葉的沖泡方法
- 《阻燃材料與技術(shù)》課件 第8講 阻燃木質(zhì)材料
- 低空經(jīng)濟(jì)的社會(huì)接受度與倫理問題分析
- GB/T 4732.1-2024壓力容器分析設(shè)計(jì)第1部分:通用要求
- 河北省保定市競秀區(qū)2023-2024學(xué)年七年級(jí)下學(xué)期期末生物學(xué)試題(解析版)
- 《中電聯(lián)團(tuán)體標(biāo)準(zhǔn)-220kV變電站并聯(lián)直流電源系統(tǒng)技術(shù)規(guī)范》
- 年夜飯營養(yǎng)分析報(bào)告
- 食管癌的早期癥狀和手術(shù)治療
- 垃圾分類和回收利用課件
- 北侖區(qū)建筑工程質(zhì)量監(jiān)督站監(jiān)督告知書
- 法考客觀題歷年真題及答案解析卷一(第1套)
評(píng)論
0/150
提交評(píng)論