[問題] 怎麼我寫的程式編譯不暸? 圖書管理系統

看板C_and_CPP (C/C++)作者 (ckm618)時間16年前 (2009/06/14 16:18), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
/*期末報告 - 圖書管理系統*/ #include <iostream.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <string.h> /*使用者登入 - 輸入4個字的密碼,正確即可登入,錯誤則程式關閉*/ int user() { bool ok=false; char pwd[4]={0}; const char*log="1234";/*密碼為1234*/ int i=0,t=0; printf("請輸入你的密碼:\n"); while(true) { pwd[i++]=getch();/*取得KeyCode*/ pwd[i]=0;/*結尾限制*/ if(pwd[i-1]==13) i--;/*限制一些不能暗的按鍵*/ else printf("*");/*打密碼時會顯示星號*/ if(i==4) { if(strcmp(log,pwd)==0) { if(ok) { printf("\n密碼正確,登入系統\n"); break; } else ok=true;/*第二次驗證密碼*/ } else if(t<2) { printf("\n密碼輸入錯誤,請重新輸入"),t++; } else { printf("密碼輸入3次錯誤,帳號已鎖\n"); break; } if(ok) printf("\n再次確認你的密碼:\n"); else printf("\n"); i=0; } } return 0; } struct book { char subject[10]; char title[20]; char author[30]; char publisher[20]; }; int read(struct book data[256]); void print(struct book data[256],int num); void add(struct book data[256]); void del(struct book data[256],int num); void search(struct book data[256],int num); int main() { user(); int ch=0,num; FILE *fp; FILE *cfptr; fp=fopen("bookdata.txt","r"); if((cfptr=fopen("bookdata.txt","r"))==NULL) { printf("檔案無法開啟\n"); } else { struct book data[256]; while (ch!=4) { /*選單 - 選擇你要使用哪種功能*/ printf("------選單------\n"); printf("1.新增圖書資料\n"); printf("2.刪除圖書資料\n"); printf("3.搜尋圖書資料\n"); printf("4.離開程式\n"); printf("----------------\n"); printf("請輸入您的選擇(1/2/3/4):\n"); scanf("%d",&ch); /*選擇性結構 - 每種case分別代表選單的功能1.2.3.4*/ switch (ch) { case 1: add(data); printf("\n"); break; case 2: read(data); printf("\n"); break; case 3: read(data); print(data,num); printf("\n"); break; case 4: read(data); search(data,num); printf("\n"); break; case 5: exit(0); printf("\n"); break; default: break; } } } return 0; } int read(struct book data[256]) { FILE *fp; int i=1,num; fp=fopen("bookdata.txt","r"); while(!feof(fp)) { fscanf(fp,"%5",data[i].subject); fscanf(fp,"%5",data[i].title); fscanf(fp,"%5",data[i].author); fscanf(fp,"%5",data[i].publisher); i++; }; num=i-1; fclose(fp); return num; } /*功能1 - 新增圖書資料*/ void print(struct book data[256],int num) { int p,count=0; printf("種類\t\t出版社\t\t\t作者\t\t\t\t書名\n\n"); for(p=0;p,num;p++) { printf("%-5s\t%-20s\t%-30s\t%-10s",data[p].subject,data[p].publisher,data[p].author,data[p].title); printf("\n"); count=count+1; } printf("共%d筆資料\n\n",count); } void add(struct book data[256]) { struct book addebook; FILE *fp; int i; printf("請輸入種類:"); scanf("%s",addebook.subject); printf("請輸入出版社:\n"); scanf("%s",addebook.publisher); printf("請輸入作者:\n"); scanf("%s",addebook.author); printf("請輸入書名:\n"); scanf("%s",addebook.title); fp=fopen("bookdata.txt","a"); fprintf(fp,"\n%s %s %s %s",addebook.subject,addebook.publisher,addebook.author,addebook.title); fclose(fp); printf("%s 這本書已經新增到你的資料庫中\n",addebook.title); } case 2 num=read(data); printf("\n"); break; case 3 num=read(data); print(data,num); printf("\n"); break; case 4 num=read(data); search(data,num); printf("\n"); break; /*功能2 - 刪除圖書資料*/ void del(struct book data[256],int num) { FILE *fp ; fp=fopen("bookdata.txt","r"); int k; char del[256]; printf("請輸入你想刪除的書名:\n"); gets(del); for (k=1;k<=num;k++) { if(strcmp(del,data[k].title)!=0) fprintf(fp,"%s%s%s%s",data[k].subject,data[k].publisher,data[k].author,data[k].title); if (k<num) printf("\n"); } } /*功能3 - 搜尋圖書資料*/ void search(struct book data[256],int num) { int j,count=0; char inchar[256]; printf("請輸入(種類/書名/作者/出版社):\n"); gets(inchar); printf("\n\n"); printf("\n\n"); printf("種類\t\t書名\t\t\t作者\t\t\t\t出版社\n\n"); for(j=0;j<num;j++) { printf("第%d筆資料\n",j); if(strcmp(inchar,data[j].subject)==0||strcmp(inchar,data[j].publisher)==0||strcmp(inchar,data[j].author)==0||strcmp(inchar,data[j].title)==0) { printf("%-5s\t%-20s\t%-10s\t%-10s\n\n",data[j].subject,data[j].publisher,data[j].author,data[j].title); count=count+1; } } printf("共有%d筆資料\n\n",count); } /*功能4 - 離開程式*/ return 0; } 好像是貼的有點多了= = 期末報告出步來啊~~ 請各位大大幫忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.140.101.175

06/15 01:32, , 1F
請善用置底的 張貼程式碼
06/15 01:32, 1F

06/15 01:32, , 2F
你貼這樣沒人會想幫你編譯找錯誤的拉
06/15 01:32, 2F

06/15 16:45, , 3F
說一下哪邊跑不出來?
06/15 16:45, 3F
文章代碼(AID): #1ADB9Ihh (C_and_CPP)
文章代碼(AID): #1ADB9Ihh (C_and_CPP)