ESOE-91 板


LINE

上一次作的 連我自己都看不懂 吸收消化了一下 又做了一次 果然快多了 而且也是用阿哲說的 一次輸入 一次輸出的方法 又比較單純 應該很容易看的懂 只要這篇看的懂 應該期末就沒有問題 又為方便閱讀 給個網址 http://homepage.ntu.edu.tw/~b91505032/program_14.txt 以下 =================================================================== #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> struct score { int id; char name[30]; char sexy[5]; char birthplace[30]; int age; struct score *next; }; struct score *start, *nowsc, *newsc; FILE *file; int total; char idstr[5]; char agestr[5]; void readfile(); void writefile(); void cmd_1_list(); void cmd_2_add(); void cmd_3_del(); void cmd_4_search(); void cmd_5_modify(); void main() { char cmd; readfile(); do { printf("\n" "歡迎使用阿海的個人資料管理系統\n" "本系統提供以下功能:\n" "1.列出清單\n" "2.新增資料\n" "3.刪除資料\n" "4.查詢資料\n" "5.修改資料\n" "請輸入 ... "); cmd = getchar(); getchar(); switch (cmd) { case '1': cmd_1_list(); break; case '2': cmd_2_add(); break; case '3': cmd_3_del(); break; case '4': cmd_4_search(); break; case '5': cmd_5_modify(); break; } printf("\n" "是否繼續使用? 是(y) 否(n): "); cmd=getchar(); getchar(); }while(cmd!='n'); printf("\n謝謝使用!!!\n"); writefile(); free(start); } void readfile() { file = fopen("data.txt","r"); do { newsc = (struct score *)malloc(sizeof(struct score)); if (start==0) start = nowsc = newsc; else { nowsc = start; while(nowsc->next != (struct score *)NULL) nowsc = nowsc->next; nowsc->next = newsc; nowsc = newsc; } fscanf(file,"%s%s%s%s%s",idstr,nowsc->name,nowsc->sexy, \ nowsc->birthplace,agestr); total = nowsc->id = atoi(idstr); nowsc->age = atoi(agestr); nowsc->next = (struct score *)NULL; }while(!feof(file)); fclose(file); } void writefile() { file = fopen("data.txt","w"); nowsc = start; while(nowsc != (struct score *)NULL) { fprintf(file,"%d %s %s %s %d\n",nowsc->id,nowsc->name, \ nowsc->sexy,nowsc->birthplace,nowsc->age); nowsc = nowsc->next; } fclose(file); } void cmd_1_list() { nowsc = start; while(nowsc != (struct score *)NULL) { printf("%d\t%s\t%s\t%s\t%d\n",nowsc->id,nowsc->name \ ,nowsc->sexy,nowsc->birthplace,nowsc->age); nowsc = nowsc->next; } } void cmd_2_add() { newsc = (struct score *)malloc(sizeof(struct score)); if(start==0) start = nowsc = newsc; else { nowsc = start; while(nowsc->next != (struct score *)NULL) nowsc = nowsc->next; nowsc->next = newsc; nowsc = newsc; } nowsc->id = ++total; printf("請輸入姓名: "); gets(nowsc->name); printf("請輸入性別: "); gets(nowsc->sexy); printf("請輸入出生地: "); gets(nowsc->birthplace); printf("請輸入年齡: "); gets(agestr); nowsc->age = atoi(agestr); nowsc->next = (struct score *)NULL; } void cmd_3_del() { int delid; struct score *link; cmd_1_list(); printf("要刪除第幾筆資料: "); scanf("%d",&delid); getchar(); if(delid==1) start = start->next; else { link = nowsc = start; while(nowsc->next != (struct score *)NULL) { nowsc = nowsc->next; link->next = (struct score *)NULL; if(nowsc->id != delid) { link->next = nowsc; link = nowsc; } } } nowsc = start; while(nowsc != (struct score *)NULL) { if(nowsc->id>delid) nowsc->id--; nowsc = nowsc->next; } total--; } void cmd_4_search() { int keyid; char keyword[30]; char cmd; printf("輸入 (1)標號(2)姓名 搜尋: "); cmd=getchar(); getchar(); switch(cmd) { case '1': printf("請輸入標號: "); scanf("%d",&keyid); getchar(); nowsc = start; while(nowsc != (struct score *)NULL) { if(nowsc->id == keyid) printf("%d\t%s\t%s\t%s\t%d\n",nowsc->id, \ nowsc->name,nowsc->sexy,nowsc->birthplace,\ nowsc->age); nowsc = nowsc->next; } break; case '2': printf("請輸入姓名: "); gets(keyword); nowsc = start; while(nowsc != (struct score *)NULL) { if(strcmp(nowsc->name,keyword)==0) printf("%d\t%s\t%s\t%s\t%d\n",nowsc->id, \ nowsc->name,nowsc->sexy,nowsc->birthplace,\ nowsc->age); nowsc = nowsc->next; } break; } } void cmd_5_modify() { int modid; cmd_1_list(); printf("修改第幾筆: "); scanf("%d",&modid); getchar(); nowsc = start; while(nowsc != (struct score *)NULL) { if(nowsc->id == modid) break; nowsc = nowsc->next; } printf("請重新輸入姓名(原值為[%s]): ",nowsc->name); gets(nowsc->name); printf("請重新輸入性別(原值為[%s]): ",nowsc->sexy); gets(nowsc->sexy); printf("請重新輸入出生地(原值為[%s]): ",nowsc->birthplace); gets(nowsc->birthplace); printf("請重新輸入年齡(原值為[%d]): ",nowsc->age); gets(agestr); nowsc->age = atoi(agestr); } --



※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw)
◆ From: 140.112.240.76







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP