<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了C語言實現學生籍貫資訊記錄簿的具體程式碼,供大家參考,具體內容如下
進一步掌握和利用C語言進行課程設計的能力;
進一步理解和運用結構化程式設計的思想和方法;
初步掌握開發一個小型實用系統的基本方法;
1.建立資訊連結串列並以磁碟檔案儲存;
2.讀取磁碟檔案並顯示輸出所有學生的籍貫資訊;
3.按學號或姓名查詢其籍貫;
4.按籍貫查詢並輸出該籍貫的所有學生;
5.能新增、刪除和修改學生的籍貫資訊
#include "dos.h" #include "stdio.h" #include "stdlib.h" #include "conio.h" #include "math.h" #include "string.h" /**********************建立連結串列******************************/ struct hj { long number; char name[10],address[50]; struct hj *next; }; /********************檔案操作函數******************************/ FILE *fp; void openfile(char xx[20]) { fp=fopen(xx,"ab+"); if(fp==NULL) fp=fopen(xx,"wb"); } /**************錄入資訊函數***********************************/ void hjnew(void) { system("cls"); int n=0; long xnumber; char xname[10]; char xaddress[50]; struct hj *head; struct hj *x1,*x2; head=NULL; x2=NULL; printf("n ★★★★★歡迎使使用者籍管理系統★★★★★n"); printf("n ★★★錄入資訊★★★n"); printf("n 〓提示輸入0返回上級選單〓nnn"); printf("n 請輸入學號【15字內】:"); scanf("%ld",&xnumber); if(xnumber==0) goto haha; printf("n 請輸入姓名【10字內】:"); scanf("%s",xname); printf("n 請輸入籍貫【25字內】:"); scanf("%s",xaddress); while(xnumber!=0) { n++; x1=(struct hj *)malloc(sizeof(struct hj)); x1->number=xnumber; strcpy(x1->name,xname); strcpy(x1->address,xaddress); if(n==1) head=x1; else x2->next=x1; x2=x1; printf("n 請輸入學號【15字內】:"); scanf("%ld",&xnumber); if(xnumber==0) break; printf("n 請輸入姓名【10字內】:"); scanf("%s",xname); printf("n 請輸入籍貫【25字內】:"); scanf("%s",xaddress); } x2->next=NULL; x1=head; while(x1!=NULL) { openfile("hj.txt"); char d[5]="山西"; fwrite(x1,sizeof(struct hj),1,fp); fclose(fp); if(strstr(x1->address,d)!=NULL) { openfile("schj.txt"); fwrite(x1,sizeof(struct hj),1,fp); fclose(fp); } else { openfile("qthj.txt"); fwrite(x1,sizeof(struct hj),1,fp); fclose(fp); } x1=x1->next; } haha:; } /*****************************查詢函數*************************/ void hjxmselect(void) //按學號方式查詢函數 { ssmmx: int n=0; long hh; system("cls"); printf("n ★★★★★歡迎使使用者籍管理系統★★★★★n"); printf("n ★★★查詢編輯資訊★★★n"); printf("n 〓提示輸入0返回上級選單〓nnn"); printf(" 請您輸入學號:"); scanf("%ld",&hh); if(hh!=0) { struct hj *p; struct hj *q=NULL,*head=NULL; fp=fopen("hj.txt","rb"); if(fp==NULL) { printf("n沒有記錄,請輸入記錄然後再查詢!"); getch(); goto jjx; } while(!feof(fp)) { n++; p=(struct hj *)malloc(sizeof(struct hj)); fread(p,sizeof(struct hj),1,fp); if(n==1) head=p; else q->next=p; q=p; } q->next=NULL; p=head; while(p!=NULL) { if(p->number==hh) { int a; printf("n 結 果 → 學號=%ld 姓名=%s",p->number,p->name); printf("n 地址=%s",p->address); printf("nn 操 作 → ⑴更改資料 ⑵刪除資料 ⑶查詢其他資料 ⑷返回上頁 ⑸退出程式nn 請您選擇操作:"); ssmx: scanf("%d",&a); switch(a) { void hjedit(struct hj *headd,struct hj *pp); void hjdelete(struct hj *headdd,struct hj *ss); case 1: hjedit(head,p); goto ssmmx;break; case 2: hjdelete(head,p); goto ssmmx;break; case 3: goto ssmmx; case 4: goto jjx; case 5:exit(0); default:printf("n 錯誤的選擇,請重新選擇:"); goto ssmx; } } else p=p->next; } int iiii=0; printf("n 沒有此記錄 1.重新查詢 2.返回上一頁 3.退出程式!"); printf("n 請選擇:"); qqqq: scanf("%d",&iiii); switch(iiii) { case 1: goto ssmmx; case 2: goto jjx; case 3: exit(0); default: printf("n 錯誤的選擇,請重新選擇:"); goto qqqq; } goto jjx; } jjx:; } void hjxhselect(void)//按姓名方式查詢函數 { ssmm: int n=0; char hh[10]; system("cls"); printf("n ★★★★★歡迎使使用者籍管理系統★★★★★n"); printf("n ★★★查詢編輯資訊★★★n"); printf("n 〓提示輸入0返回上級選單〓nnn"); printf(" 請您輸入姓名:"); scanf("%s",hh); if(strcmp(hh,"0")!=0) { struct hj *p; struct hj *q=NULL,*head=NULL; fp=fopen("hj.txt","rb"); if(fp==NULL) { printf("n沒有記錄,請輸入記錄然後再查詢!"); getch(); goto jjj; } while(!feof(fp)) { n++; p=(struct hj *)malloc(sizeof(struct hj)); fread(p,sizeof(struct hj),1,fp); if(n==1) head=p; else q->next=p; q=p; } q->next=NULL; p=head; while(p!=NULL) { if(strcmp(p->name,hh)==0) { int a; printf("n 結 果 → 學號=%ld 姓名=%s ",p->number,p->name); printf("n 地址=%s",p->address); printf("nn 操 作 → ⑴更改資料 ⑵刪除資料 ⑶查詢其他資料 ⑷返回上頁 ⑸退出程式nn 請您選擇操作:"); ssm: scanf("%d",&a); switch(a) { void hjedit(struct hj *headd,struct hj *pp); void hjdelete(struct hj *headdd,struct hj *ss); case 1: hjedit(head,p); goto ssmm;break; case 2: hjdelete(head,p); goto ssmm;break; case 3: goto ssmm; case 4: goto jjj; case 5:exit(0); default:printf("n 錯誤的選擇,請重新選擇:"); goto ssm; } } else p=p->next; } int iii=0; printf("n 沒有此記錄 1.重新查詢 2.返回上一頁 3.退出程式!"); printf("n 請選擇:"); qqq: scanf("%d",&iii); switch(iii) { case 1: goto ssmm; case 2: goto jjj; case 3: exit(0); default: printf("n 錯誤的選擇,請重新選擇:"); goto qqq; } goto jjj; } jjj: ; } void hjjgselect(void)//按籍貫方式查詢 { yyy: int i; system("cls"); printf("n ★★★★★歡迎使使用者籍管理系統★★★★★n"); printf("n ★★★籍貫方式查詢資訊★★★nnn"); printf("n 一 顯示所有資訊n"); printf("n 二 顯示山西籍所有資訊n"); printf("n 三 顯示其它籍所有資訊n"); printf("n 四 自定義查詢資訊n"); printf("n 五 ←返回上級選單n"); printf("n 六 ↓退出程式n"); printf("nn 請選擇:"); scanf("%d",&i); switch(i) { void zdyselect(void); void allselect(char a[8]); case 1:allselect("hj.txt"); goto yyy;break; case 2: allselect("schj.txt"); goto yyy;break; case 3: allselect("qthj.txt"); goto yyy;break; case 4: zdyselect(); case 5: break; case 6: exit(0); } } void zdyselect(void) { ssmmz: int n=0,j=0; char hh[10]; system("cls"); printf("n ★★★★★歡迎使使用者籍管理系統★★★★★n"); printf("n ★★★自定義查詢資訊★★★nnn"); printf(" 請您輸入地址關鍵字:"); scanf("%s",hh); if(strcmp(hh,"0")!=0) { struct hj *p; struct hj *q=NULL,*head=NULL; fp=fopen("hj.txt","rb"); if(fp==NULL) { printf("n 沒有記錄,請輸入記錄然後再查詢!"); getch(); goto jjz; } while(!feof(fp)) { n++; p=(struct hj *)malloc(sizeof(struct hj)); fread(p,sizeof(struct hj),1,fp); if(n==1) head=p; else q->next=p; q=p; } q->next=NULL; p=head; while(p!=NULL) { if(strstr(p->address,hh)!=NULL) { int a; j++; printf("n 結 果 → 學號=%ld 姓名=%s ",p->number,p->name); printf("n 地址=%s",p->address); printf("nn 操 作 → ⑴更改資料 ⑵刪除資料 ⑶查詢下一條資料 ⑷返回上頁 ⑸退出程式nn 請您選擇操作:"); ssmz: scanf("%d",&a); switch(a) { void hjedit(struct hj *headd,struct hj *pp); void hjdelete(struct hj *headdd,struct hj *ss); case 1: hjedit(head,p); goto ssmmz;break; case 2: hjdelete(head,p); goto ssmmz;break; case 3: p=p->next;continue; case 4: goto jjz; case 5:exit(0); default:printf("n 錯誤的選擇,請重新選擇:"); goto ssmz; } p=p->next; } else p=p->next; } if(j==0) { printf("nnn沒有匹配的記錄 按任意鍵繼續!"); getch(); fclose(fp); goto ssmmz; } else { int xx; printf("nn查詢完畢! ⑴ 繼續查詢 ⑵ 返回上一級選單 ⑶ 退出程式"); printf("n請選擇:"); scanf("%d",&xx); if(xx==2) goto jjz; else if(xx==3) exit(0); } goto ssmmz; jjz: ; } } void allselect(char a[8])//全部查詢 { int n=0; int k=0; system("cls"); printf("n ★★★★★歡迎使使用者籍管理系統★★★★★n"); printf("n ★★★籍貫方式資訊★★★nnn"); struct hj *p; struct hj *q=NULL,*head=NULL; fp=fopen(a,"rb"); if(fp==NULL) { printf("n對不起,沒有記錄無法查詢!"); goto xxxx; } rewind(fp); while(!feof(fp)) { n++; p=(struct hj *)malloc(sizeof(struct hj)); fread(p,sizeof(struct hj),1,fp); if(n==1) head=p; else q->next=p; q=p; } q->next=NULL; struct hj *h1,*p2,*q3,*r4,*s5; h1=p2=(hj *)malloc(sizeof(struct hj)); p2->next=head; while(p2->next!=NULL) { q3=p2->next; r4=p2; while(q3->next!=NULL) { if(q3->next->number<p2->next->number) r4=q3; q3=q3->next; } if(r4!=p2) { s5=r4->next; r4->next=s5->next; s5->next=p2->next; p2->next=s5; } p2=p2->next; } head=h1->next->next; free(h1); p=head; while(p!=NULL&&n>0) { n--; printf("n學號=%ld 姓名=%s",p->number,p->name); printf("n地址=%s",p->address); p=p->next; } xxxx: printf("n→顯示完畢←n⑴ ↑返回上級選單 ⑵ ↓退出程式 n請 選 擇 :"); xxx: scanf("%d",&n); switch(n) { case 1:break; case 2:exit(0); default:printf("n錯誤的選擇,請重新選擇:"); goto xxx; } } void hjselect(void)//查詢編輯資訊函數 { cxbegin: int a; system("cls"); printf("n ★★★★★歡迎使使用者籍管理系統★★★★★n"); printf("n ★★★查詢編輯資訊★★★nnn"); printf("n 一 按學號方式查詢n"); printf("n 二 按姓名方式查詢n"); printf("n 三 按籍貫方式查詢n"); printf("n 四 →顯示全部資訊n"); printf("n 五 ←返回上級選單n"); printf("n 請 選 擇 查 詢 方 式:"); cxmm: scanf("%d",&a); switch(a) { case 1: hjxmselect();goto cxbegin;break; case 2: hjxhselect();goto cxbegin;break; case 3: hjjgselect();goto cxbegin;break; case 4: allselect("hj.txt");goto cxbegin;break; case 5: break; default:printf("n錯誤的選擇,請重新選擇:"); goto cxmm; } } void hjde(void)//刪除介面函數 { cxxbegin: int a; system("cls"); printf("n ★★★★★歡迎使使用者籍管理系統★★★★★n"); printf("n ★★★刪除資訊★★★nnn"); printf("n 一 按學號方式刪除n"); printf("n 二 按姓名方式刪除n"); printf("n 三 按籍貫方式刪除n"); printf("n 四 →刪除全部資訊n"); printf("n 五 ←返回上級選單n"); printf("n 請 選 擇 刪 除 方 式:"); cxxmm: scanf("%d",&a); int i=0; switch(a) { case 1: hjxmselect();goto cxxbegin;break; case 2: hjxhselect();goto cxxbegin;break; case 3: zdyselect();goto cxxbegin;break; case 4: fp=fopen("hj.txt","wb"); if(fp!=NULL) i++; fp=fopen("schj.txt","wb"); if(fp!=NULL) i++; fp=fopen("qthj.txt","wb"); if(fp!=NULL) i++; if(i==3) { printf("n 全部資料已經刪除!!!!!!敲任意鍵繼續"); getch(); } goto cxxbegin;break; case 5: break; default:printf("n錯誤的選擇,請重新選擇:"); goto cxxmm; } } //==============刪除函數介面=============== void hjdelete(struct hj *headdd,struct hj *ss) { struct hj *q; char d[5]="山西"; if(headdd==ss) { headdd=headdd->next; goto gogo; } q=headdd; while(q!=NULL) { if(q->next->number==ss->number) { break; } q=q->next; } q->next=ss->next; gogo: q=headdd; fp=fopen("hj.txt","wb"); while(q!=NULL) { fwrite(q,sizeof(struct hj),1,fp); q=q->next; } fclose(fp); q=headdd; fp=fopen("schj.txt","wb"); while(q!=NULL) { if(strstr(q->address,d)!=NULL) { fwrite(q,sizeof(struct hj),1,fp); } q=q->next; } fclose(fp); q=headdd; fp=fopen("qthj.txt","wb"); while(q!=NULL) { if(strstr(q->address,d)==NULL) { fwrite(q,sizeof(struct hj),1,fp); } q=q->next; } fclose(fp); } //===============編輯函數介面============== void hjedit(struct hj *headd,struct hj *pp) { int n=0; struct hj *p,*p1,*p2; char d[5]="江蘇"; printf("n 輸 入 → 學號="); scanf("%ld",&pp->number); printf("n 姓名="); scanf("%s",pp->name); printf("n 地址="); scanf("%s",pp->address); p=headd; fp=fopen("hj.txt","wb"); while(p!=NULL) { fwrite(p,sizeof(struct hj),1,fp); p=p->next; } fclose(fp); p1=headd; fp=fopen("schj.txt","wb"); while(p1!=NULL) { if(strstr(p1->address,d)!=NULL) { fwrite(p1,sizeof(struct hj),1,fp); } p1=p1->next; } fclose(fp); p2=headd; fp=fopen("qthj.txt","wb"); while(p2!=NULL) { if(strstr(p2->address,d)==NULL) { fwrite(p2,sizeof(struct hj),1,fp); } p2=p2->next; } fclose(fp); } /**************************主函數***********************/ int main(int argc, char* argv[]) { begin: int t; system("cls"); printf("n ★★★★★歡迎使使用者籍管理系統★★★★★nnnnn"); printf(" 一 錄入學生籍貫資訊nn"); printf(" 二 查編學生籍貫資訊nn"); printf(" 三 刪除學生籍貫資訊nn"); printf(" 四 退出程式nn"); printf(" 請您選擇:"); mm: scanf("%d",&t); switch(t) { case 1: hjnew();break; case 2: hjselect();break; case 3: hjde();break; case 4:exit(0); default:printf("n 錯誤的選擇,請重新選擇:"); goto mm; } goto begin; return 0; }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45