題目和妳的壹樣!
# include & ltstdio.h & gt
# include & ltmath.h & gt
# include & ltstring.h & gt
# include & ltstdlib.h & gt
結構書籍_列表
{
char作者[20];/*作者姓名*/
char bookname[20];/*標題*/
char publisher[20];/*出版商*/
char Pb time[15];/*出版日期*/
char loginnum[10];/*登陸號碼*/
浮動價格;/*價格*/
char classfy[10];/*分類號*/
struct books _ list * next/*鏈表的指針字段*/
};
struct Books _ list * Create _ Books _ Doc();/*創建新的鏈接列表*/
void insert doc(struct books _ list * head);/*插入*/
void delete doc(struct books _ list * head,int num);/*刪除*/
void Print _ Book _ Doc(struct books _ list * head);/*瀏覽*/
void search _ book(struct books _ list * head);/*查詢*/
void info _ change(struct books _ list * head);/*修改*/
void save(struct books _ list * head);/*將數據保存到文件*/
/*創建新的鏈表頭節點*/
struct Books _ list * Create _ Books _ Doc()
{
結構books _ list * head
head =(struct books _ list *)malloc(size of(struct books _ list));/*分配頭節點空間*/
head->;next = NULL/*頭節點的指針字段被初始化並設置為空*/
回程頭;
}
/*將數據保存到文件*/
void save(struct books_list * head)
{
結構books _ list * p;
FILE * fp
p =頭部;
fp=fopen("data.txt "," w+");/*通過編寫*/創建並打開data.txt文件
fprintf(fp,"┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n”);/*將表格輸出到文件*/
Fprintf(fp,"┃登記號┃書名┃作者┃出版單位┃出版時間┃分類號┃價格\ n);
fprintf(fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n”);
/*指針從頭節點移動到尾節點,依次輸出圖書信息*/
while(p->;下壹個!=空)
{
p = p-& gt;接下來;
fprintf(fp,"┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f ┃\n",p->;loginnum,p-& gt;書名,p-& gt;作者,p-& gt;出版商,p-& gt;pbtime,p-& gt;classfy,p-& gt;價格);
}
fprintf(fp,"┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n”);
fclose(FP);
Printf("圖書數據已保存到data.txt文件\ n ");
}
/*插入*/
void insert doc(struct books _ list * head)
{
/*定義結構指針變量S指向打開的新節點的第壹個地址p作為中間變量*/
struct books_list *s,* p;
char flag = ' Y/*定義標誌,方便用戶選擇重復輸入*/
p =頭部;
/*遍歷到尾節點,p指向尾節點*/
while(p->;下壹個!=空)
{
p = p-& gt;接下來;
}
/*打開新空間,存儲數據並將其添加到鏈表中*/
while(flag=='Y'||flag=='y ')
{
s =(struct books _ list *)malloc(size of(struct books _ list));
printf(" \ n請輸入圖書登錄號:");
fflush(stdin);
scanf("%s ",s-& gt;loginnum);
printf(" \ n請輸入書名:");
fflush(stdin);
scanf("%s ",s-& gt;書名);
printf(" \ n請輸入圖書作者姓名:");
fflush(stdin);
scanf("%s ",s-& gt;作者);
printf(" \ n請輸入圖書出版商:");
fflush(stdin);
scanf("%s ",s-& gt;出版商);
printf(" \ n請輸入圖書出版時間:");
fflush(stdin);
scanf("%s ",s-& gt;Pb time);
printf(" \ n請輸入圖書分類號:");
fflush(stdin);
scanf("%s ",s-& gt;classfy);
printf(" \ n請輸入圖書價格:");
fflush(stdin);
scanf("%f ",& amps-& gt;價格);
printf(" \ n ");
p->;next = s;/*將新添加的節點添加到鏈表中*/
p = s;/*p指向尾節點並向後移動*/
s-& gt;next = NULL
Printf ("━ ━ ━添加成功!━━━━");
printf(" \ n繼續添加嗎?(Y/N):);
fflush(stdin);
scanf("%c ",& amp旗幟);
printf(" \ n ");
if(flag=='N'||flag=='n ')
{ break}
else if(flag=='Y'||flag=='y ')
{繼續;}
}
保存(頭);/*將數據保存到文件*/
返回;
}
/*查詢操作*/
void search _ book(struct books _ list * head)
{
結構books _ list * p;
充電溫度[20];
p =頭部;
if(head = = NULL | | head-& gt;Next==NULL) /*確定數據庫是否為空*/
{
Printf ("━ ━ ━庫是空的!━━━\ n ");
}
其他
{
Printf("請輸入妳要找的書的書名:");
fflush(stdin);
scanf("%s ",temp);
/*指針從頭節點移動到尾節點以查找書目信息*/
while(p->;下壹個!=空)
{
p = p-& gt;接下來;
if(strcmp(p-& gt;bookname,temp)==0)
{
printf(" \ n找到壹本書!\ n ");
printf(" \ n ");
Printf("登錄號:%s\t\n ",p-& gt;loginnum);
Printf ("Title: %s\t\n ",p-& gt;書名);
Printf("作者姓名:%s\t\n ",p-& gt;作者);
Printf ("Publisher: %s\t\n ",p-& gt;出版商);
Printf("發布日期:%s\t\n ",p-& gt;Pb time);
Printf("分類號:%s\t\n ",p-& gt;classfy);
Printf("價格:%.2f\t\n ",p-& gt;價格);
}
如果(p->;next==NULL)
{
printf(" \ n查詢完成!\ n ");
}
}
}
返回;
}
/*瀏覽操作*/
void Print _ Book _ Doc(struct books _ list * head)
{
結構books _ list * p;
if(head = = NULL | | head-& gt;Next==NULL) /*確定數據庫是否為空*/
{
Printf ("\ n ━ ━沒有圖書記錄!━━━\ n \ n ");
返回;
}
p =頭部;
printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n”);
Printf("┃登錄號┃書名┃作者┃出版單位┃出版時間┃分類號┃價格┃n”);
printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n”);
/*指針從頭節點移動到尾節點,依次輸出圖書信息*/
while(p->;下壹個!=空)
{
p = p-& gt;接下來;
printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f ┃\n",p->;loginnum,p-& gt;書名,p-& gt;作者,p-& gt;出版商,p-& gt;pbtime,p-& gt;classfy,p-& gt;價格);/*循環輸出表*/
}
printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n”);
printf(" \ n ");
}
/*修改操作*/
void info _ change(struct books _ list * head)
{
結構books _ list * p;
int pan Duan = 0;/*該變量用於判斷是否找到文獻目錄*/
充電溫度[20];
p =頭部;
Printf("請輸入要修改的書名:");
scanf("%s ",temp);
while(p->;下壹個!=空)
{
p = p-& gt;接下來;
if(strcmp(p-& gt;bookname,temp)==0)
{
printf(" \ n請輸入圖書登錄卡號:");
fflush(stdin);
scanf("%s ",p-& gt;loginnum);
printf(" \ n請輸入書名:");
fflush(stdin);
scanf("%s ",p-& gt;書名);
printf(" \ n請輸入圖書作者姓名:");
fflush(stdin);
scanf("%s ",p-& gt;作者);
printf(" \ n請輸入圖書出版商:");
fflush(stdin);
scanf("%s ",p-& gt;出版商);
printf(" \ n請輸入圖書出版時間:");
fflush(stdin);
scanf("%s ",p-& gt;Pb time);
printf(" \ n請輸入圖書分類號:");
fflush(stdin);
scanf("%s ",p-& gt;classfy);
printf(" \ n請輸入圖書價格:");
fflush(stdin);
scanf("%f ",& ampp->;價格);
printf(" \ n ");
panduan = 1;
}
}
if(panduan==0)
{
Printf ("\ n ━ ━沒有圖書記錄!━━━\ n \ n ");
}
返回;
}
/*刪除操作*/
void delete doc(struct books _ list * head)
{
struct books_list *s,* p;/*s是中間變量,p是指針*/
充電溫度[20];
int panduan/*該變量用於判斷文獻目錄是否已經找到*/
panduan = 0;
p = s =頭;
printf("[請輸入您要刪除的書名]:);
scanf("%s ",temp);
/*遍歷到尾節點*/
而(p!=空)
{
if(strcmp(p-& gt;bookname,temp)==0)
{
潘端++;
打破;
}
p = p-& gt;接下來;
}
if(panduan==1)
{
for(;s-& gt;下壹個!= p;)/*找到上壹個節點刪除卡號節點*/
{
s = s-& gt;接下來;
}
s-& gt;next = p-& gt;接下來;/*將後壹個節點的地址分配給前壹個節點的指針字段*/
免費(p);
Printf ("\ n ━ ━刪除成功!━━━\ n ");
}
Else /*沒有找到相應的書目*/
{
Printf("您輸入的書目不存在,請確認後輸入!\ n ");
}
返回;
}
int main(void)
{
結構books _ list * head
char選擇;
head = NULL
for(;;)/*實現重復輸入和選擇*/
{
printf(“┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n”);
printf(“┃┃\n socat圖書管理系統”)。
printf(“┃┗━━━━━━━━━━━━━━━━━━━┛┃\n”);
Printf(" ┃ ●[1]圖書信息錄入┃\n ");
printf(“┃┃\n”);
Printf(" ┃ ●[2]圖書信息瀏覽┃\n ");
printf(“┃┃\n”);
Printf(" ┃ ●[3]圖書信息查詢┃\n ");
printf(“┃┃\n”);
Printf(" ┃ ●[4]圖書信息修改┃\n ");
printf(“┃┃\n”);
Printf(" ┃ ●[5]刪除圖書信息┃\n ");
printf(“┃┃\n”);
Printf(" ┃ ●[6]退出系統┃\n ");
printf(“┗━━━━━━━━━━━━━━━━━━━━━━━┛\n”);
Printf("請選擇:");
fflush(stdin);
scanf("%c ",& amp選擇);
if(choice=='1 ')
{
if(head==NULL)
{
head = Create _ Books _ Doc();
}
insert doc(head);
}
else if(choice=='2 ')
{
Print_Book_Doc(表頭);
}
else if(choice=='3 ')
{
search_book(頭);
}
else if(choice=='4 ')
{
info_change(頭);
}
else if(choice=='5 ')
{
delete doc(head);
}
else if(choice=='6 ')
{
printf(" \ n ");
Printf ("━ ━ ━ ━ ━ ━ ━感謝使用圖書館管理系統━━n ");
打破;
}
其他
{
Printf ("━ ━ ━輸入錯誤,請重新輸入!━━━━");
打破;
}
}
返回0;
}