ESOE-91 板


LINE

我寫的 寫到後來都在亂寫 似乎有很多資源垃圾 看看巴 我寫了將近2hr 超姬芭的 =========================================================================== #include <stdio.h> #include <stdlib.h> #include <string.h> struct score { int id; char name[20]; char sexy[5]; char birthplace[20]; int age; }; int count_data(FILE*); struct score* savedata(); void my_print(struct score); void my_write(struct score,FILE*); void cmd_1_list(struct score*); void cmd_2_add(FILE*); void cmd_3_del(struct score*); void cmd_4_search(struct score*); void cmd_5_change(struct score*); char table[]=" +-------+--------+-------+----------+-------+"; char title[]=" | 編 號 | 姓 名 | 性 別 | 出 生 地 | 年 齡 |"; int main() { struct score *sc; FILE *file; char cmd; char start[]="歡迎使用阿海的個人資料管理系統\n" "請選擇您要的功能或按[q]離開程式\n" "1.列出\n" "2.新增\n" "3.刪除\n" "4.查詢\n" "5.修改\n"; char over[]="謝謝您的使用\n"; do{ sc=savedata(); puts(start); printf("請輸入指令... "); scanf("%c",&cmd); switch(cmd) { case '1': cmd_1_list(sc); getchar(); break; case '2': cmd_2_add(file=fopen("data.txt","a")); getchar(); break; case '3': cmd_3_del(sc); getchar(); break; case '4': cmd_4_search(sc); getchar(); break; case '5': cmd_5_change(sc); getchar(); break; } }while(cmd!='q'); printf("掰掰 ^____^\n\n"); free(sc); return 0; } // 數數看有幾筆資料 count_data() int count_data(FILE* file) { int no_data; char buffer[20]; file=fopen("data.txt","r"); for(no_data=0;;no_data++) { if((fscanf(file,"%s",buffer))==EOF) { no_data/=5; break; } } fclose(file); return no_data; } // 將資料存入記憶體中 savedata() struct score* savedata() { struct score *sc; FILE *file; int i,no_data; no_data=count_data(file=fopen("data.txt","r")); sc=(struct score*)calloc(no_data,sizeof(struct score)); file=fopen("data.txt","r"); for(i=0;i<no_data;i++) fscanf(file,"%d %s %s %s %d", &sc[i].id,sc[i].name,sc[i].sexy,sc[i].birthplace,&sc[i].age); fclose(file); return sc; } // 印出一筆資料 my_print() void my_print(struct score sc) { printf(" | %5d | %-6s | %2s | %-8s | %2d |\n", sc.id,sc.name,sc.sexy,sc.birthplace,sc.age); } // 寫上一筆資料 my_write() void my_write(struct score sc,FILE* file) { fprintf(file,"%d\t%s\t%s\t%s\t%d\n", sc.id,sc.name,sc.sexy,sc.birthplace,sc.age); } // 功能一:列出全部資料 cmd_1_list() void cmd_1_list(struct score *sc) { FILE *file; int i,no_data; file=fopen("data.txt","r"); no_data=count_data(file); puts(table); puts(title); puts(table); for(i=0;i<no_data;i++) my_print(sc[i]); puts(table); } // 功能二:增加一筆資料 cmd_2_add() void cmd_2_add(FILE *file) { struct score add_sc; int no_data; no_data=count_data(file); add_sc.id=++no_data; printf("請輸入姓名: "); scanf("%s",add_sc.name); printf("請輸入性別: "); scanf("%s",add_sc.sexy); printf("請輸入出生地: "); scanf("%s",add_sc.birthplace); printf("請輸入年齡: "); scanf("%d",&add_sc.age); my_write(add_sc,file); printf("增加完成...\n\n"); fclose(file); } // 功能三:刪除一筆資料 cmd_3_del() void cmd_3_del(struct score *sc) { FILE *file; int del,i,no_data; file=fopen("data.txt","r"); no_data=count_data(file); file=fopen("data.txt","w"); printf("請問您要刪除第幾筆資料: "); scanf("%d",&del); for(i=1;i<=no_data;i++) { if(i==del) continue; if(i>del) --sc[i-1].id; my_write(sc[i-1],file); } printf("刪除完成...\n\n"); fclose(file); } // 功能四:查詢 cmd_4_search() void cmd_4_search(struct score* sc) { FILE *file; int cmd,i,no_data,key_id,check=0; char key_word[20]; no_data=count_data(file=fopen("data.txt","r")); printf("1.輸入編號搜尋\n" "2.輸入姓名搜尋\n" "請輸入您的選項: "); scanf("%d",&cmd); switch(cmd) { case 1: printf("請輸入您要搜尋的編號: "); scanf("%d",&key_id); for(i=0;i<no_data;i++) { if(sc[i].id==key_id) { check=1; puts(table); puts(title); puts(table); my_print(sc[i]); puts(table); break; } } break; case 2: printf("請輸入您要搜尋的姓名: "); scanf("%s",key_word); for(i=0;i<no_data;i++) { if(strcmp(sc[i].name,key_word)==0) { check=1; puts(table); puts(title); puts(table); my_print(sc[i]); puts(table); break; } } break; } if(check==0) printf("查無此人...\n"); printf("搜尋完成...\n\n"); } // 功能五:修改 void cmd_5_change(struct score *sc) { FILE *file; int change_id,i,cmd,no_data; cmd_1_list(sc); no_data=count_data(file=fopen("data.txt","r")); printf("請輸入編號: "); scanf("%d",&change_id); i=change_id-1; printf("請輸入您要修改的項目\n" "1.姓名\n" "2.性別\n" "3.出生地\n" "4.年齡\n" "請輸入... "); scanf("%d",&cmd); printf("您要將其修改成: "); switch(cmd){ case 1: scanf("%s",sc[i].name); break; case 2: scanf("%s",sc[i].sexy); break; case 3: scanf("%s",sc[i].birthplace); break; case 4: scanf("%d",&sc[i].age); break; } file=fopen("data.txt","w"); for(i=0;i<no_data;i++) my_write(sc[i],file); printf("修改完成...\n\n"); fclose(file); } ========================================================================== --



※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw)
◆ From: 140.112.240.76 ※ 編輯: shmm 來自: 140.112.240.76 (06/11 17:22)







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燈, 水草

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

TOP