c语言课程设计图书管理系统
生活随笔
收集整理的這篇文章主要介紹了
c语言课程设计图书管理系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據結構c語言課程設計 圖書管理系統
我做的是百度文庫的第28題,目前沒有報錯,正常運行,但是還有一點小bug。代碼很多地方寫的不是很好,請多多包涵。
賬號1,密碼1,為管理員賬號;其他賬號2,3,4,5,密碼2,3,4,5,為普通用戶
退出后數據會保留到當前文件夾的csv文件中,可用excel編輯,下次打開時會再次進行讀取數據。
下面是最新的運行不會出錯的,剩下的我放到了gitee上了,點這
#include <stdio.h> #include <stdlib.h> //清屏函數需要的頭文件 #include <string.h> //字符復制,比較,連接函數需要的頭文件 #include <time.h> //獲取時間的函數需要的頭文件 #include <conio.h> //輸入不實時打印函數需要的頭文件 #include <ctype.h> //判斷是否能打印函數需要的頭文件 #include <windows.h> //改變字體顏色需要的頭文件#define MAXSIZE 100struct INF //用戶基本信息結構體 {int tes;char name[MAXSIZE];char id[MAXSIZE];char passwd[MAXSIZE];char booknum[MAXSIZE][MAXSIZE]; //記錄書號int bookn; //變量,用來存儲書的標記號int booknu[MAXSIZE]; //記入每種書借了多少本int y[MAXSIZE];int m[MAXSIZE];int d[MAXSIZE]; }; typedef struct Node //存儲書籍基本信息的結構體 {char num[MAXSIZE];char name[MAXSIZE];char author[MAXSIZE];int bookflag;int now;int all;struct Node *next; } Node, *LinkList;INF inf[MAXSIZE]; int logout = 0; int fl = 0;int main(); int login(int); //登錄系統int init(LinkList &); //書籍信息初始化 void initinf(); //添加5個用戶 管理員賬戶為1,密碼為1;普通賬戶2,3,4,5,密碼分別為2,3,4,5。int in(LinkList &); //錄入書籍信息void switchl(LinkList &, int); //選擇借閱書籍方式 int lend(LinkList &, char *, int, int); //通過書號借閱書籍 int lend1(LinkList &, char *, int, int); //通過書名借出書籍void switchr(LinkList &, int); //選擇歸還書籍方式 int returnb(LinkList &, char *, int, int); //通過書號歸還書籍 int returnb1(LinkList &, char *, int, int); //通過書名歸還書籍int show(LinkList &); //顯示圖書館中所有書籍 int own(LinkList &, int); //查看自己借的書籍以及歸還時間int bookdataw(LinkList &); //存儲圖書館中所有書籍數據 int bookdatar(LinkList &); //讀取存儲圖書館中所有書籍的數據 int userdataw(LinkList &, int); //存儲用戶借閱所有書籍數據 int userdatar(int); //讀取用戶借閱所有書籍數據void color(short); //改變字體顏色 void getpwd(char *, int); //密碼轉星號int main() {int flag0 = 0;printf("\t\t\t\t\t\t歡迎來到海南大學圖書管理系統\n");do{char tell[MAXSIZE], pas[MAXSIZE];int r = 0, r1, r2 = 0;int flag1 = 0, flag2 = 0; //循環標志inf[0].tes = 0;initinf();do{printf("\t\t請輸入你的賬號:");scanf("%s", tell);fflush(stdin);if (inf[0].tes == 0){color(4);printf("沒有錄入學生!\n");color(16);flag0 = 1;}if (!strcmp(tell, "\r"))flag1 = 1;while (strcmp(inf[r].id, tell) && strcmp(tell, "\r")){if (r >= MAXSIZE){color(4);printf("不存在此用戶!!\n");color(16);flag1 = 1;break;}else{flag1 = 0;flag0 = 0;}r++;}r1 = r;if (!strcmp(inf[r].id, tell)){flag0 = 0;flag1 = 0;}r = 0;} while (flag1);if (flag0 == 1)break;do //用戶輸入密碼{printf("\t\t請輸入你的密碼:");r2++;getpwd(pas, MAXSIZE + 1);fflush(stdin);if (r2 > 2){system("cls");color(4);printf("密碼輸入錯誤超過3次,請檢查你的賬號是否正確!!\n");color(16);flag0 = 1;break;}if (strcmp(inf[r1].passwd, pas)){color(4);printf("密碼錯誤,請重新輸入!\n");color(16);flag2 = 1;}else //賬戶密碼正確,登錄系統{system("cls"); //使用system("cls")出現bug,啟用手動清屏flag2 = 0;flag0 = 0;login(r1);}} while (flag2);} while (flag0); }int login(int r2) //登錄系統 {int a, flag = 0;LinkList Ctr;bookdatar(Ctr);userdatar(r2);if (logout == 1)init(Ctr);logout = 0;while (!flag){if (r2 == 0){if (fl == 0){printf("\t\t\t\t\t%s,歡迎來到海南大學圖書管理系統\n", inf[r2].name);fl++;}else{printf("\t\t\t\t\t\t請選擇:\n");}printf("\t\t\t\t\t\t1.采編入庫\n""\t\t\t\t\t\t2.借閱\n""\t\t\t\t\t\t3.歸還\n""\t\t\t\t\t\t4.查看圖書館書籍\n""\t\t\t\t\t\t5.查看已借閱書籍\n""\t\t\t\t\t\t6.注銷\n""\t\t\t\t\t\t7.退出\n");printf("\t\t\t\t\t請選擇你的操作:");scanf("%d", &a);fflush(stdin);switch (a){case 1:in(Ctr);bookdataw(Ctr);break;case 2:if (Ctr->next == NULL){color(4);printf("\t\t\t圖書館還未采購書籍,請采購\n");color(16);break;}else{switchl(Ctr, r2);userdataw(Ctr, r2);bookdataw(Ctr);break;}case 3:if (Ctr->next == NULL){color(4);printf("\t\t\t\t\t\t圖書館還未采購書籍,請采購!\n");color(16);break;}else{switchr(Ctr, r2);userdataw(Ctr, r2);bookdataw(Ctr);break;}case 4:if (Ctr->next == NULL){color(4);printf("\t\t\t\t\t\t圖書館還未采購書籍,請采購!\n");color(16);break;}else{show(Ctr);break;}case 5:own(Ctr, r2);break;case 6:system("cls");main();logout = 1;break;case 7:printf("\t\t\t\t按任意鍵退出...");getch();flag = 1;break;default:system("cls");color(4);printf("\t\t\t\t\t\t不存在此操作,請重新選擇!!!\n");color(16);break;}}else{bookdataw(Ctr);if (fl == 0){printf("\t\t\t\t\t%s,歡迎來到海南大學圖書管理系統\n", inf[r2].name);fl++;}else{printf("\t\t\t\t\t\t請選擇:\n");}printf("\t\t\t\t\t\t1.借閱\n""\t\t\t\t\t\t2.歸還\n""\t\t\t\t\t\t3.查看書籍\n""\t\t\t\t\t\t4.查看已借閱書籍\n""\t\t\t\t\t\t5.注銷\n""\t\t\t\t\t\t6.退出\n");printf("\t\t\t\t\t請選擇你的操作:");scanf("%d", &a);fflush(stdin);switch (a){case 1:if (Ctr->next == NULL){color(4);printf("\t\t\t圖書館還未采購書籍,請等待幾天再試!\n");color(16);break;}else{switchl(Ctr, r2);userdataw(Ctr, r2);break;}case 2:if (Ctr->next == NULL){color(4);printf("\t\t\t圖書館還未采購書籍,請等待幾天再嘗試!\n");color(16);break;}else{switchr(Ctr, r2);userdataw(Ctr, r2);break;}case 3:if (Ctr->next == NULL){color(4);printf("\t\t\t圖書館還未采購書籍,請等待幾天再嘗試!\n");color(16);break;}else{show(Ctr);break;}case 4:own(Ctr, r2);break;case 5:system("cls");main();break;case 6:printf("\t\t\t\t按任意鍵退出...");getch();flag = 1;break;default:system("cls");color(4);printf("\t\t\t\t\t\t不存在此操作,請重新選擇!!!\n");color(16);break;}}}return 1; } int init(LinkList &L) //書籍信息初始化 {LinkList L0;L = (LinkList)malloc(sizeof(Node));L0 = (LinkList)malloc(sizeof(Node));L0->bookflag = 0;L->next = NULL;L0->next = L->next;L->next = L0;return 1; } void initinf() //添加5個用戶 {strcpy(inf[0].id, "1"); //張三為超級管理員,可以添加書籍strcpy(inf[0].name, "張三");strcpy(inf[0].passwd, "1");strcpy(inf[1].id, "2");strcpy(inf[1].name, "李四");strcpy(inf[1].passwd, "2");strcpy(inf[2].id, "3");strcpy(inf[2].name, "王五");strcpy(inf[2].passwd, "3");strcpy(inf[3].id, "4");strcpy(inf[3].name, "趙六");strcpy(inf[3].passwd, "4");strcpy(inf[4].id, "5");strcpy(inf[4].name, "孫七");strcpy(inf[4].passwd, "5");inf[0].tes = 1; //查看是否有用戶inf[0].bookn = 0;inf[1].bookn = 0;inf[2].bookn = 0;inf[3].bookn = 0;inf[4].bookn = 0;for (int s = 0; s < MAXSIZE; s++){inf[0].booknu[s] = 0;inf[1].booknu[s] = 0;inf[2].booknu[s] = 0;inf[3].booknu[s] = 0;inf[4].booknu[s] = 0;} } int in(LinkList &L) //錄入書籍信息 {system("cls");printf("\t\t\t開始錄入書籍\n");LinkList s, pre;int c3;int flag = 1;while (flag){s = (LinkList)malloc(sizeof(Node));fflush(stdin);printf("\t\t\t請輸入書籍書號:");scanf("%s", &s->num);fflush(stdin);s->bookflag = atoi(s->num) % MAXSIZE;pre = L;while (pre->next != NULL && strcmp(pre->num, s->num)){pre = pre->next;}if (!strcmp(pre->num, s->num)){printf("\t\t\t已存在此書,請直接輸入數量:");scanf("%d", &s->now);fflush(stdin);pre->now += s->now;pre->all = pre->now;printf("是否繼續錄入書籍,若繼續錄入書籍請回車,否則輸入任意字符回車:");if (getchar() != '\n'){fflush(stdin);flag = 0;}else{flag = 1;}continue;}printf("\t\t\t請輸入書籍書名:");scanf("%s", &s->name);fflush(stdin);printf("\t\t\t請輸入書籍作者:");scanf("%s", &s->author);fflush(stdin);printf("\t\t\t請輸入數量:");scanf("%d", &s->now);fflush(stdin);printf("是否繼續錄入書籍,若繼續錄入書籍請回車,否則輸入任意字符回車:");s->all = s->now;s->next = L->next;L->next = s;if (getchar() != '\n'){fflush(stdin);flag = 0;}}system("cls");return 1; } void switchl(LinkList &M, int r3) //選擇借閱書籍方式 {system("cls");int flag = 0;do{printf("\n\t\t\t\t\t\t借閱方式\n""\t\t\t\t\t\t 1.書號\n""\t\t\t\t\t\t 2.書名\n");int x, i;char b[MAXSIZE];printf("\t\t\t請選擇借閱方式:");scanf("%d", &x);fflush(stdin);switch (x){case 1:printf("\t\t\t請輸入借閱書籍書號:");gets(b);fflush(stdin);printf("\t\t\t請輸入借閱數量:");scanf("%d", &i);fflush(stdin);lend(M, b, i, r3);flag = 0;break;case 2:printf("\t\t\t請輸入借閱書籍書名:");gets(b);fflush(stdin);printf("\t\t\t請輸入借閱數量:");scanf("%d", &i);fflush(stdin);lend1(M, b, i, r3);flag = 0;break;default:system("cls");color(4);printf("\t\t\t\t\t\t不存在此操作,請重新選擇!!!\n\n");color(16);flag = 1;printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");break;}} while (flag); } int lend(LinkList &L, char nu[MAXSIZE], int i, int r4) //通過書號借閱書籍 {time_t timep;struct tm *p;time(&timep);timep = time(NULL) + 31 * 24 * 60 * 60;p = gmtime(&timep);LinkList pre;int k;pre = L;k = 0;while (pre->next != NULL && strcmp(pre->num, nu)){pre = pre->next;}if (strcmp(pre->num, nu)){color(4);printf("\t\t\t不存在此書!\n\n");color(16);printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 0;}if (pre->now == 0){system("cls");printf("\t\t\t書號\t書名\t作者\t剩余量\t庫存量\n");printf("\t\t\t%s\t%s\t%s\t%d\t%d\n", pre->num, pre->name, pre->author, pre->now, pre->all);color(4);printf("\t\t\t\t此書已被借完!\n\n");color(16);printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 0;}if (pre->now < i){system("cls");printf("\t\t\t書號\t書名\t作者\t剩余量\t庫存量\n");printf("%s\t%s\t%s\t%d\t%d\n", pre->num, pre->name, pre->author, pre->now, pre->all);color(4);printf("\t\t\t此書庫存不足%d本!\n\n", i);color(16);printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 0;}inf[r4].bookn = pre->bookflag;if (inf[r4].booknu[inf[r4].bookn] + i > 2){printf("你以前關于本書的借閱信息如下\n");printf("\t\t\t書號\t書名\t作者\t借閱量\n");printf("\t\t\t%s\t%s\t%s\t", pre->num, pre->name, pre->author);color(4);printf("%d\t", inf[r4].booknu[inf[r4].bookn]);color(16);color(4);printf("\t\t\t一本書最多只能借2本!!\n");color(16);printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 0;}pre->now -= i;system("cls");printf("\t\t\t借閱的書籍信息如下:\n");printf("\t\t\t書號\t書名\t作者\t借閱數量\t剩余量\t歸還時間\n");printf("\t\t\t %s\t %s\t %s\t %d\t\t%d\t%d年%d月%d日\n", pre->num, pre->name, pre->author, i, pre->now, 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday);printf("\t\t\t成功借出此書!\n\n");inf[r4].bookn = pre->bookflag;inf[r4].y[inf[r4].bookn] = 1900 + p->tm_year;inf[r4].m[inf[r4].bookn] = 1 + p->tm_mon;inf[r4].d[inf[r4].bookn] = p->tm_mday;strcpy(inf[r4].booknum[inf[r4].bookn], pre->num);inf[r4].booknu[inf[r4].bookn] += i;printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 1; } int lend1(LinkList &L, char nam[MAXSIZE], int i, int r4) //通過書名借出書籍 {time_t timep;struct tm *p;time(&timep);timep = time(NULL) + 31 * 24 * 60 * 60;p = gmtime(&timep);LinkList pre;int k;pre = L;k = 0;while (pre->next != NULL && strcmp(pre->name, nam)){pre = pre->next;}if (strcmp(pre->num, nam)){color(4);printf("\t\t\t不存在此書!\n\n");color(16);printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 0;}if (pre->now == 0){printf("\t\t\t書號\t書名\t作者\t剩余量\t庫存量\n");printf("\t\t\t%s\t%s\t%s\t%d\t%d\n", pre->num, pre->name, pre->author, pre->now, pre->all);color(4);printf("\t\t\t此書已被借完!\n\n");color(16);printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 0;}if (pre->now < i){printf("\t\t\t書號\t書名\t作者\t剩余量\t庫存量\n");printf("\t\t\t%s\t%s\t%s\t%d\t%d\n", pre->num, pre->name, pre->author, pre->now, pre->all);color(4);printf("\t\t\t此書庫存不足%d本!\n\n", i);color(16);printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 0;}inf[r4].bookn = pre->bookflag;if (inf[r4].booknu[inf[r4].bookn] + i > 2){printf("你以前關于本書的借閱信息如下\n");printf("\t\t\t書號\t書名\t作者\t借閱量\n");printf("\t\t\t%s\t%s\t%s\t", pre->num, pre->name, pre->author);color(4);printf("%d\t", inf[r4].booknu[inf[r4].bookn]);color(16);color(4);printf("\t\t\t一本書最多只能借2本!!\n");color(16);printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 0;}pre->now -= i;system("cls");printf("\t\t\t借閱的書籍信息如下:\n");printf("\t\t\t書號\t書名\t作者\t借閱數量\t剩余量\t歸還時間\n");printf("\t\t\t %s\t %s\t %s\t %d\t\t%d\t%d年%d月%d日\n", pre->num, pre->name, pre->author, i, pre->now, 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday);printf("\t\t\t成功借出此書!\n\n");inf[r4].bookn = pre->bookflag;inf[r4].y[inf[r4].bookn] = 1900 + p->tm_year;inf[r4].m[inf[r4].bookn] = 1 + p->tm_mon;inf[r4].d[inf[r4].bookn] = p->tm_mday;strcpy(inf[r4].booknum[inf[r4].bookn], pre->num);inf[r4].booknu[inf[r4].bookn] += i;printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 1; } void switchr(LinkList &M, int r3) //選擇歸還書籍方式 {int flag = 0;system("cls");do{printf("\n\t\t\t\t\t\t還書方式\n""\t\t\t\t\t\t 1.書號\n""\t\t\t\t\t\t 2.書名\n");int x, i;char b[MAXSIZE];printf("\t\t\t請選擇還書方式:");scanf("%d", &x);fflush(stdin);switch (x){case 1:printf("\t\t\t請輸入歸還書籍書號:");gets(b);fflush(stdin);printf("\t\t\t請輸入歸還數量:");scanf("%d", &i);fflush(stdin);returnb(M, b, i, r3);flag = 0;break;case 2:printf("\t\t\t請輸入歸還書籍書名:");gets(b);fflush(stdin);printf("\t\t\t請輸入歸還數量:");scanf("%d", &i);fflush(stdin);returnb1(M, b, i, r3);flag = 0;break;default:system("cls");color(4);printf("\t\t\t\t\t\t不存在此操作,請重新選擇!!!\n\n");color(16);flag = 1;printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");break;}} while (flag); }int returnb(LinkList &L, char nu[MAXSIZE], int i, int r4) //通過書號歸還書籍 {LinkList pre;int k;pre = L;k = 0;while (pre->next != NULL && strcmp(pre->num, nu)){pre = pre->next;}if (strcmp(pre->num, nu)){color(4);printf("\t\t\t不存在此書!\n\n");color(16);printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 0;}inf[r4].bookn = pre->bookflag;if (inf[r4].booknu[inf[r4].bookn] < i){printf("\t\t\t書號\t書名\t作者\t借閱量\t庫存量\n");printf("\t\t\t%s\t%s\t%s\t", pre->num, pre->name, pre->author);color(4);printf("%d\t", inf[r4].booknu[inf[r4].bookn]);color(16);printf("%d\n", pre->all);color(4);printf("\t\t\t歸還的數量超出應有的借閱量,請檢查是否確認無誤!\n\n");color(16);printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 0;}pre->now += i;system("cls");printf("\t\t\t歸還的書籍信息如下:\n");printf("\t\t\t書號\t書名\t作者\t歸還數量\t剩余量\n");printf("\t\t\t %s\t %s\t %s\t %d\t\t%d\n", pre->num, pre->name, pre->author, i, pre->now);printf("\t\t\t成功歸還此書!\n\n");inf[r4].bookn = pre->bookflag;strcpy(inf[r4].booknum[inf[r4].bookn], "");inf[r4].booknu[inf[r4].bookn] -= i;printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 1; } int returnb1(LinkList &L, char nam[MAXSIZE], int i, int r4) //通過書名歸還書籍 {LinkList pre;int k;pre = L;k = 0;while (pre->next != NULL && strcmp(pre->name, nam)){pre = pre->next;}if (strcmp(pre->num, nam)){color(4);printf("\t\t\t不存在此書!\n\n");color(16);printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 0;}if (inf[r4].booknu[inf[r4].bookn] < i){printf("\t\t\t書號\t書名\t作者\t借閱量\t庫存量\n");printf("\t\t\t%s\t%s\t%s\t", pre->num, pre->name, pre->author);color(4);printf("%d\t", inf[r4].booknu[inf[r4].bookn]);color(16);printf("%d\n", pre->all);color(4);printf("\t\t\t歸還的數量超出應有的借閱量,請檢查是否確認無誤!\n\n");color(16);printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 0;}pre->now += i;system("cls");printf("\t\t\t歸還的書籍信息如下:\n");printf("\t\t\t書號\t書名\t作者\t歸還數量\t剩余量\n");printf("\t\t\t%s\t%s\t%s\t%d\t%d\n", pre->num, pre->name, pre->author, i, pre->now);printf("\t\t\t成功歸還此書!\n\n");inf[r4].bookn = pre->bookflag;strcpy(inf[r4].booknum[inf[r4].bookn], "");inf[r4].booknu[inf[r4].bookn] -= i;printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 1; } int show(LinkList &L) //顯示圖書館中所有書籍 {system("cls");LinkList pre;int k = 0, j = 0;pre = L;while (pre->next != NULL){pre = pre->next;if (j == 0 && pre->next != NULL){printf("\n\t\t\t\t\t現有的的書籍信息如下:\n");printf("\t\t\t\t\t書號\t\t書名\t\t 作者\t剩余量\t庫存量\n");j++;}if (pre->next)printf("%43s%17s%20s%10d%10d\n", pre->num, pre->name, pre->author, pre->now, pre->all);k++;}if (k == 1){color(4);printf("\t\t\t\t\t圖書館里沒有書,請采編書籍入庫\n");color(16);printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 0;}printf("\n");printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 1; } int own(LinkList &L, int r3) //查看自己借的書籍以及歸還時間 {system("cls");LinkList pre;int k, l = 0, j = 0;pre = L;k = 0;pre = pre->next;while (pre != NULL){inf[r3].bookn = pre->bookflag;while (pre->next != NULL && strcmp(pre->num, inf[r3].booknum[inf[r3].bookn])){pre = pre->next;inf[r3].bookn = pre->bookflag;}if (!strcmp(pre->num, inf[r3].booknum[inf[r3].bookn]) && l == 0){printf("\n你借閱的書籍信息如下\n");printf("\t\t\t序號\t書號\t\t書名\t\t作者\t借閱數量\t圖書館剩余量\t歸還日期\n\n");l++;}if (!strcmp(pre->num, inf[r3].booknum[inf[r3].bookn])){++k;printf("%27d%9s%16s%16s%9d%19d\t%d年%d月%d日\n", k, pre->num, pre->name, pre->author, inf[r3].booknu[inf[r3].bookn], pre->now, inf[r3].y[inf[r3].bookn], inf[r3].m[inf[r3].bookn], inf[r3].d[inf[r3].bookn]);j++;}if (j == 0){color(4);printf("\n\t\t\t\t\t\t你還沒有借書!\n\n");color(16);printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 0;}pre = pre->next;}printf("\n");printf("\t\t\t\t按任意鍵繼續...");getchar();fflush(stdin);system("cls");return 1; } int bookdataw(LinkList &L) //存儲圖書館中所有書籍數據,數據存儲在當前目錄下bookdata.csv,可用excel編輯 {LinkList pre;int flag3 = 0;pre = L;remove("bookdata.csv");FILE *fp;fp = fopen("bookdata.csv", "w");while (pre->next->next != NULL){if (flag3 != 0){fprintf(fp, "\n");}elsefprintf(fp, "書標記號,書號,書名,作者,現存量,總量\n");pre = pre->next;fprintf(fp, "%d,%s,%s,%s,%d,%d", pre->bookflag, pre->num, pre->name, pre->author, pre->now, pre->all);flag3++;}fclose(fp);return 1; } int bookdatar(LinkList &L) //讀取存儲圖書館中所有書籍的數據 {int i = 0;LinkList s, pre;pre = L;init(L);FILE *fp;char data[1024] = {};char *line, *record, *title;fp = fopen("bookdata.csv", "r");if (fp == NULL){return 0;}rewind(fp);while (!feof(fp)){if (i == 0){title = fgets(data, 1024, fp);i++;}else{s = (LinkList)malloc(sizeof(Node));line = fgets(data, 1024, fp);if (line != NULL){record = strtok(data, ",");s->bookflag = atoi(record);record = strtok(NULL, ",");strcpy(s->num, record);record = strtok(NULL, ",");strcpy(s->name, record);record = strtok(NULL, ",");strcpy(s->author, record);record = strtok(NULL, ",");s->now = atoi(record);record = strtok(NULL, ",");s->all = atoi(record);s->next = L->next;L->next = s;}}}fclose(fp);return 1; } int userdataw(LinkList &L, int r3) //存儲用戶借閱書籍數據,數據存儲在當前目錄下user.csv,可用excel編輯 {LinkList pre;pre = L;int flag3 = 0;FILE *fp;char fileName[MAXSIZE];char str[MAXSIZE];itoa(r3, str, 10);strcpy(fileName, "user");strcat(fileName, str);strcat(fileName, ".csv");remove(fileName);fp = fopen(fileName, "w");pre = pre->next;while (pre != NULL){inf[r3].bookn = pre->bookflag;while (pre->next != NULL && strcmp(pre->num, inf[r3].booknum[inf[r3].bookn])){pre = pre->next;inf[r3].bookn = pre->bookflag;}if (!strcmp(pre->num, inf[r3].booknum[inf[r3].bookn])){if (flag3 != 0){fprintf(fp, "\n");}elsefprintf(fp, "書標記號,書號,數量,歸還年,歸還月,歸還日\n");fprintf(fp, "%d,%s,%d,%d,%d,%d", inf[r3].bookn, inf[r3].booknum[inf[r3].bookn], inf[r3].booknu[inf[r3].bookn], inf[r3].y[inf[r3].bookn], inf[r3].m[inf[r3].bookn], inf[r3].d[inf[r3].bookn]);flag3++;}pre = pre->next;}fclose(fp);return 1; } int userdatar(int r3) //讀取用戶借閱所有書籍數據 {FILE *fp;char fileName[MAXSIZE];char str[MAXSIZE];itoa(r3, str, 10);strcpy(fileName, "user");strcat(fileName, str);strcat(fileName, ".csv");fp = fopen(fileName, "r");char data[1024] = {};char *line, *record, *title;int i = 0;if (fp == NULL){return 0;}while (!feof(fp)){if (i == 0){title = fgets(data, 1024, fp);i++;}else{line = fgets(data, 1024, fp);if (line != NULL){record = strtok(data, ",");inf[r3].bookn = atoi(record);record = strtok(NULL, ",");strcpy(inf[r3].booknum[inf[r3].bookn], record);record = strtok(NULL, ",");inf[r3].booknu[inf[r3].bookn] = atoi(record);record = strtok(NULL, ",");inf[r3].y[inf[r3].bookn] = atoi(record);record = strtok(NULL, ",");inf[r3].m[inf[r3].bookn] = atoi(record);record = strtok(NULL, ",");inf[r3].d[inf[r3].bookn] = atoi(record);}}}fclose(fp);return 1; } void color(short x) //改變字體顏色 {if (x >= 0 && x <= 15)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);elseSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); } void getpwd(char *pwd, int pwdlen) //密碼轉星號 {char ch = 0;int i = 0;while (i < pwdlen){ch = getch();if (ch == '\r'){printf("\n");break;}if (ch == '\b' && i > 0){i--;printf("\b \b");}else if (isprint(ch)){pwd[i] = ch;printf("*");i++;}}pwd[i] = 0; }總結
以上是生活随笔為你收集整理的c语言课程设计图书管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021牛客寒假算法基础集训营1
- 下一篇: WL-test (GIN)