[問題] 怎麼我寫的程式編譯不暸? 圖書管理系統
/*期末報告 - 圖書管理系統*/
#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
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章