<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了C語言實現圖書管理系統的具體程式碼,供大家參考,具體內容如下
設計圖書管理系統
要求如下:
1.對書名,作者,編號,出版單位,出版日期,類別,存放位置進行新增、刪除、修改
2.查詢相關資訊
3.儲存所有資訊
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> typedef struct book /*定義結構體*/ { char bookname[100] ; /*書名*/ char writer[100]; /*作者*/ char classnumber[100]; /*編號*/ char publisher[100]; /*出版單位*/ char time[100]; /*出版日期*/ char type[100]; /*類別*/ char place[100]; /*存放位置*/ struct book *next; }Book; int mima() { int i=0; char user[10]="aa"; char Code[10]="123456"; char getuser[10]; char Getskey[10]; while(1) { printf("ttt請輸入賬號:"); scanf("%s",getuser); printf("ttt請輸入密碼:"); while(1) { Getskey[i]=getch(); if(Getskey[i]=='r') break; else if(Getskey[i]=='b') { if(i==0) continue; printf("b"); printf(" "); printf("b"); i--; } else { printf("*"); i++; } } Getskey[6]=' '; if(strcmp(user, getuser)==0&&strcmp(Code, Getskey)==0) return 1; else { printf("nnttt賬號不存在或密碼輸入錯誤,請重新輸入n"); i = 0; } } } void showmenu1() /*顯示管理員選單*/ { system("cls"); printf("nnnnn"); printf("t n"); printf("t 歡迎來到圖書資訊管理系統 n"); printf("t n"); printf("t n"); printf("t 主選單 n"); printf("t n"); printf("t 1.錄入圖書資訊 n"); printf("t n"); printf("t 2.刪除圖書資訊 n"); printf("t n"); printf("t 3.修改圖書資訊 n"); printf("t n"); printf("t 4.查詢圖書資訊 n"); printf("t n"); printf("t 5.顯示所有圖書資訊 n"); printf("t n"); printf("t 6.返回登入介面 n"); printf("t n"); printf("t 7.儲存資料並退出系統 n"); printf("t n"); } void showmenu2() /*顯示遊客選單*/ { system("cls"); printf("nnnnn"); printf("t n"); printf("t 歡迎來到圖書資訊管理系統 n"); printf("t n"); printf("t n"); printf("t 主選單 n"); printf("t n"); printf("t 1.查詢圖書資訊 n"); printf("t n"); printf("t 2.顯示所有圖書資訊 n"); printf("t n"); printf("t 3.返回登入介面 n"); printf("t n"); printf("t 4.退出系統 n"); printf("t n"); } int savebookdata(Book *head) /*將資料儲存到檔案中*/ { Book *p; FILE*fp; fp=fopen("D:\java\zuoye.txt","w"); p=head->next; do { fprintf(fp,"%st",p->bookname); /* 把這個結點的資料全部寫入至檔案內由於next指標不需要寫入至檔案,*/ fprintf(fp,"%st",p->writer); /*因此,資料大小就是sizeof(book)-sizeof(book*)總資料大小減去指標的大小 */ fprintf(fp,"%st",p->classnumber); fprintf(fp,"%st",p->publisher); fprintf(fp,"%st",p->time); fprintf(fp,"%st",p->type); fprintf(fp,"%stn",p->place); fprintf(fp,"n"); p=p->next; /*轉換到下一個結點*/ }while(p!=NULL); fclose(fp); return 0; } void addnewbook(Book **head) /*錄入圖書資訊*/ { int i; Book *p,*s; system("cls"); if(*head == NULL) { /* 如果表頭為空,先為它分配記憶體 */ *head = (Book *)calloc(1, sizeof(Book)); p = *head; } else { /* 否則,就說明有內容,直接切換到尾結點 */ p = *head; while(p->next) p = p->next; } printf("nnn"); printf("t※※※※※※※※※※※※※※※※※※※※※※※※※※※※n"); printf("ttt請問新增幾本書:"); scanf("%d",&i); printf("t--------------------------------------------------------n"); while(i) { s = (Book *)calloc(1, sizeof(Book)); /*為這個結點分配記憶體 */ printf("ttt請輸入書名:"); scanf("%s",s->bookname); printf("t--------------------------------------------------------n"); printf("ttt請輸入作者:"); scanf("%s",s->writer); printf("t--------------------------------------------------------n"); printf("ttt請輸入編號:"); scanf("%s",s->classnumber); printf("t--------------------------------------------------------n"); printf("ttt請輸入出版單位:"); scanf("%s",s->publisher); printf("t--------------------------------------------------------n"); printf("ttt請輸入出版日期:"); scanf("%s",s->time); printf("t--------------------------------------------------------n"); printf("ttt請輸入類別:"); scanf("%s",s->type); printf("t--------------------------------------------------------n"); printf("ttt請輸入存放位置:"); scanf("%s",s->place); printf("t--------------------------------------------------------n"); printf("n"); printf("t--------------------------------------------------------n"); i--; p->next=s; /*儲存輸進去的這個結點*/ p=p->next; /*切換到下一個結點*/ p->next=NULL; /*最後一個結點為NULL*/ } printf("ttt圖書新增成功!!!n"); system("pause"); } int readbookdata(Book **head) /*將資料從檔案中讀取*/ { int n; Book *s, *p; FILE *fp; fp=fopen("d:\java\zuoye.txt","r"); /* 如果檔案開啟失敗,就返回-1 */ if(NULL == fp) { *head = NULL; return -1; } *head = (Book *)calloc(1, sizeof(Book)); p = *head; while (!feof(fp)) { s = (Book *)calloc(1, sizeof(Book)); /* 為下個結點分配記憶體空間 */ fscanf(fp,"%s",s->bookname); fscanf(fp,"%s",s->writer); fscanf(fp,"%s",s->classnumber); fscanf(fp,"%s",s->publisher); fscanf(fp,"%s",s->time); fscanf(fp,"%s",p->type); fscanf(fp,"%sn",p->place); p->next=s; /*儲存該結點*/ p=p->next; /*切換到下一個結點*/ p->next=NULL; /*保證最後一個結點為NULL*/ } fclose(fp);/* 關閉檔案 */ return 0; } void deletebook(Book *head) /*刪除圖書資訊*/ { system("cls"); int flag=0; char name[100],ch[10]; Book *p,*t; /* 如果表頭為空 */ if(head == NULL || head->next == NULL) { printf("沒有記錄圖書資訊!n"); system("pause"); return; } p=head; printf("nnn"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※n"); printf("請輸入要刪除的書名;"); scanf("%s",&name); printf("----------------------------------------------------------------------n"); printf("書名tt作者名tt編號t出版單位t出版時間t類別t存放位置n"); printf("----------------------------------------------------------------------n"); while(p->next) { t=p; p=p->next; /*轉換到下一個結點*/ if(strcmp(name,p->bookname)==0) { flag=1; printf("%st%st%st%st%st%st%sn",p->bookname,p->writer,p->classnumber,p->publisher,p->time,p->type,p->place); break; } } if(flag==1) { printf("是否刪除該本圖書資訊(y/n)"); scanf("%s",ch); printf("----------------------------------------------------------------------n"); if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) { t->next=p->next; printf("該書已刪除!n"); } else return; } else if(flag==0) printf("沒找到那本書!n"); system("pause"); } void modifybook(Book *head) /*修改圖書資訊*/ { system("cls"); int flag=0; char name[100],ch[10]; Book *p,*t; /* 如果表頭為空 */ if(head == NULL || head->next == NULL) { printf("沒有記錄圖書資訊!n"); system("pause"); return ; } p=head; printf("nnn"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※n"); printf("請輸入要修改的書名:"); scanf("%s",name); printf("--------------------------------------------------------------------n"); while(p->next) { p=p->next; /*切換到下一個結點*/ if(strcmp(name,p->bookname)==0) { flag=1; t=p; printf("書名tt作者名tt編號t出版單位t出版時間t類別t存放位置n"); printf("--------------------------------------------------------------------n"); printf("%st%st%st%st%st%st%snn",p->bookname,p->writer,p->classnumber,p->publisher,p->time,p->type,p->place); } } if(flag==1) { printf("--------------------------------------------------------------------n"); printf("tt是否修改該本圖書資訊(y/n):"); scanf("%s",ch); printf("t--------------------------------------------------------------------n"); if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) { int c; printf("tt【1】書名n"); printf("--------------------------------------------------------------------n"); printf("tt【2】作者n"); printf("--------------------------------------------------------------------n"); printf("tt【3】編號n"); printf("--------------------------------------------------------------------n"); printf("tt【4】出版單位n"); printf("--------------------------------------------------------------------n"); printf("tt【5】出版日期n"); printf("--------------------------------------------------------------------n"); printf("tt【6】類別n"); printf("--------------------------------------------------------------------n"); printf("tt【7】存放位置n"); printf("--------------------------------------------------------------------n"); printf("t請輸入你要修改的內容;"); scanf("%d",&c); printf("--------------------------------------------------------------------n"); p=t; switch(c) { case 1: printf("t請輸入書名:"); scanf("%s",p->bookname); break; case 2: printf("t請輸入作者:"); scanf("%s",p->writer); break; case 3: printf("t請輸入編號:"); scanf("%s",p->classnumber); break; case 4: printf("t請輸入出版單位:"); scanf("%s",p->publisher); break; case 5: printf("t請輸入出版日期:"); scanf("%s",p->time); break; case 6: printf("t請輸入類別:"); scanf("%s",p->type); break; case 7: printf("t請輸入存放位置:"); scanf("%s",p->place); break; } printf("--------------------------------------------------------------------n"); printf("t恭喜大佬修改成功!!!n"); } } else if(flag==0) printf("對不起,該書庫沒有該書n"); system("pause"); } void searchbook(Book *head) /*查詢圖書資訊*/ { system("cls"); int choose,flag=0; Book *p; char b[100]; /* 如果表頭為空 */ if(head == NULL || head->next == NULL) { printf("沒有記錄圖書資訊!n"); system("pause"); return ; } do { system("cls"); printf("nnn"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※n"); printf("tt1.按書名查詢n"); printf("----------------------------------------------------------------------n"); printf("tt2.按作者名查詢n"); printf("----------------------------------------------------------------------n"); printf("tt3.按編號查詢n"); printf("----------------------------------------------------------------------n"); printf("tt4.按出版單位查詢n"); printf("----------------------------------------------------------------------n"); printf("tt返回主選單(其他數位)n"); printf("----------------------------------------------------------------------n"); printf("tt請輸入您的選擇:"); scanf("%d",&choose); printf("----------------------------------------------------------------------n"); p=head; if(choose==1) { printf("輸入所查書名:"); scanf("%s",b); printf("----------------------------------------------------------------------nn"); while(p->next) { p=p->next; /*轉換到下一個結點*/ if(strcmp(b,p->bookname)==0) /*判斷是否找到並輸出*/ { flag=1; printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※n"); printf("書名t作者名t編號t出版單位t出版時間t類別t存放位置n"); printf("----------------------------------------------------------------------n"); printf("%st%st%st%st%st%st%sn",p->bookname,p->writer,p->classnumber,p->publisher,p->time,p->type,p->place); } } if(flag==0) printf("不存在該資訊n"); } else if(choose==2) { printf("輸入所查作者名:"); scanf("%s",b); printf("----------------------------------------------------------------------nn"); while(p->next) { p=p->next; /*轉換到下一個結點*/ if(strcmp(b,p->writer)==0) /*判斷是否找到並輸出*/ { flag=1; printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※n"); printf("書名t作者名t編號t出版單位t出版時間t類別t存放位置n"); printf("----------------------------------------------------------------------n"); printf("%st%st%st%st%st%st%sn",p->bookname,p->writer,p->classnumber,p->publisher,p->time,p->type,p->place); } } if(flag==0) printf("不存在該資訊n"); } else if(choose==3) { printf("輸入所查編號:"); scanf("%s",b); printf("----------------------------------------------------------------------nn"); while(p->next) { p=p->next; /*轉換到下一個結點*/ if(strcmp(b,p->classnumber)==0) /*判斷是否找到並輸出*/ { flag=1; printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※n"); printf("書名t作者名t編號t出版單位t出版時間t類別t存放位置n"); printf("----------------------------------------------------------------------n"); printf("%st%st%st%st%st%st%sn",p->bookname,p->writer,p->classnumber,p->publisher,p->time,p->type,p->place); } } if(flag==0) printf("不存在該資訊n"); } else if(choose==4) { printf("輸入所查出版單位:"); scanf("%s",b); printf("----------------------------------------------------------------------nn"); while(p->next) { p=p->next; /*轉換到下一個結點*/ if(strcmp(b,p->publisher)==0) /*判斷是否找到並輸出*/ { flag=1; printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※n"); printf("書名t作者名t編號t出版單位t出版時間t類別t存放位置n"); printf("----------------------------------------------------------------------n"); printf("%st%st%st%st%s%st%sn",p->bookname,p->writer,p->classnumber,p->publisher,p->time,p->type,p->place); } } if(flag==0) printf("不存在該資訊n"); } else return; system("pause"); }while(1); } int printfbook(Book *head) /*顯示所有圖書資訊*/ { Book *p; system("cls"); /* 如果表頭為空 */ if(head == NULL || head->next == NULL) { printf("沒有記錄圖書資訊!n"); system("pause"); return 0; } p=head->next; printf("nnn"); printf("**********************************************************************************n"); printf(" 圖書列表 n"); printf("----------------------------------------------------------------------------------n"); printf("書名t作者t編號t出版單位t出版時間t類別t存放位置n"); printf("----------------------------------------------------------------------------------n"); do { printf("%st%st%st%st%st%st%snn",p->bookname,p->writer,p->classnumber,p->publisher,p->time,p->type,p->place); p=p->next; /*轉換到下一個結點*/ }while(p!=NULL); system("pause"); } int main(void) { system("cls"); Book *head=NULL; readbookdata(&head); int choice,z,c; printf("nnn"); printf("t※※※※※※※※※※※※※※※※※※※※※※※※※※※※n"); printf("ttt歡迎光臨圖書資訊管理系統n"); printf("t--------------------------------------------------------n"); printf("ttt【1】遊客n"); printf("ttt【2】管理員n"); printf("ttt【3】退出系統n"); printf("t--------------------------------------------------------n"); while(printf("ttt請選擇身份:")&&scanf("%d",&c)!=EOF) { if(c==1) { showmenu2(); while (printf("t請輸入選擇項(1-3):")&&scanf("%d",&choice)!=EOF) { switch (choice) { case 1: /*查詢圖書資訊*/ searchbook(head); break; case 2: /*顯示所有圖書資訊*/ printfbook(head); break; case 3: /*返回登入介面*/ main(); break; case 4: exit(0); default: printf("t輸入錯誤!!!n"); system("pause"); break; } showmenu2(); } } else if(c==2) { z=mima(); showmenu1(); while (printf("t請輸入選擇項(1-6):")&&z==1&&scanf("%d",&choice)!=EOF) { switch (choice) { case 1: /*錄入圖書資訊*/ addnewbook(&head); break; case 2: /*刪除圖書資訊*/ deletebook(head); break; case 3: /*修改圖書資訊*/ modifybook(head); break; case 4: /*查詢圖書資訊*/ searchbook(head); break; case 5: /*顯示所有圖書資訊*/ printfbook(head); break; case 6: /*返回登入介面*/ main(); break; case 7: /*儲存資料並退出系統*/ savebookdata(head); exit(0); default: printf("t輸入錯誤!!!n"); system("pause"); break; } showmenu1(); } } else if(c==3) exit(0); else { printf("ttt輸入錯誤!!!nn"); } } return 0; }
這裡提供的是管理員身份
這裡提供遊客身份(供選擇的功能相對管理員少)
後面大家就可以自行輸入對應功能前的序號,實現此係統的功能
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45