溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C語言如何實現(xiàn)圖書管理系統(tǒng)

發(fā)布時間:2022-01-24 09:08:51 來源:億速云 閱讀:145 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細講解有關(guān)C語言如何實現(xiàn)圖書管理系統(tǒng),小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

主要內(nèi)容

        開發(fā)一個圖書信息管理系統(tǒng),圖書信息包括:圖書編號、書名、作者、出版社、類別、出版時間、價格等基本信息(也可以根據(jù)自己情況進行擴充,比如是否借出、庫存量等)。使之能提供以下基本功能:

(1)圖書信息錄入功能(圖書信息用文件保存)--輸入

(2)圖書信息瀏覽功能--輸出

(3)查詢功能(至少一種查詢方式)、排序功能(至少一種排序方式):

            ①按書名查詢

            ②按作者名查詢 按照價錢排序 按出版時間排序等等

(4)圖書信息的刪除與修改

          擴展功能:可以按照自己的程度進行擴展。比如

                          (1)簡單的權(quán)限處理

                          (2)報表打印功能

                          (3)甚至根據(jù)自己情況,可以加上學(xué)生信息,并擴充為圖書借閱系統(tǒng)。

                          (4)模糊查詢

                          (5)綜合查詢

                          (6)統(tǒng)計功能 比如統(tǒng)計處某一類別的圖書信息 或 篩選出小于指定數(shù)量庫存的圖書信息等等。

概要設(shè)計

1 圖書錄入可以錄入圖書名,作者,出版社,出版日期,價格!錄入圖書編號時函數(shù)就會判斷此        編 號是否存在,若存在不能成功錄入!

2 圖書瀏覽可以瀏覽全部圖書!

3 圖書查詢提供按圖書編號模糊查詢,按圖書名關(guān)鍵字查詢,按圖書編號精確查詢,按圖書名精確      查詢!模糊查詢和關(guān)鍵字查詢事通過比價字符串的相似度而實現(xiàn)的!

4 修改刪除圖書可以通過圖書查詢來查詢操作的圖書編號,通過編號操作!函數(shù)會提示用戶是否調(diào)      用圖書查詢來找到自己想要操作的圖書的編號。如果某一本圖書已經(jīng)被借閱那么用戶就不能刪        除 該圖書!

5 借閱圖書通過學(xué)號和圖書編號進行借閱!如果該學(xué)號是第一次借閱那么會提示用戶輸入自己的姓      名,并存入student.txt,方便以后借閱與歸還!

6 歸還圖書先提供學(xué)號,然后程序會輸出該學(xué)號借閱的所有圖書,然后再通過編號歸還!

7 借閱查詢可查詢某個學(xué)生已借但未歸還的圖書!

C語言如何實現(xiàn)圖書管理系統(tǒng)

項目源碼

結(jié)構(gòu)體

先建立結(jié)構(gòu)體,定義結(jié)構(gòu)體成員

typedef struct book/*圖書結(jié)構(gòu)體*/
{
char num[10];  /*書號*/
char name[10];  /*書名*/
char auth[10]; /*作者*/
int count;
int sum;
}Book;
typedef struct borrow/*借書結(jié)構(gòu)體*/
{
char id[20];
char user[20];
char book[20];
char bookid[20];
struct borrow *next;
}BBnode,*BBlink;
struct user 
{ 
char num[10];/* 學(xué)號 */ 
char pass[15];
char name[15]; 
char sex[10]; 
 
}; 
 
typedef struct unode 
{ 
struct user data; 
struct unode *next; 
}Unode,*Ulink; 
Unode *os;

登錄界面函數(shù)

int login(Ulink l)
{
 
 
/*****************登陸窗口初始化****************************/
while(!flag)
{
char User_id[10],password[10],tmp;
int i=0;
User_id[0]='\0';
password[0]='\0';
textbackground(179);
clrscr();
gotoxy(33,23);
textcolor(YELLOW);
cputs("ESC = EXIT");
textcolor(WHITE);
textbackground(179);
box(1,1,80,24);
h_line(2,3,78);
gotoxy(15,2);
cputs("Login now please input the User__ID  and Password");
bar_(30,10,23,5,5);
/******************賬號過濾*********************/
while(User_id[0]=='\0')
{
gotoxy(31,11);
textcolor(YELLOW);
textbackground(5);
cputs("User__ID:");
gotoxy(31,13);
cputs("Password:");
textbackground(179);
textcolor(WHITE);
gotoxy(28,7);
cputs("please input the User__ID!");
textbackground(179);
textcolor(YELLOW);
gotoxy(27,11);
putch(272);
gotoxy(27,13);
putch(' ');
gotoxy(40,11);
tmp=getch();
if(tmp==27)
{
flg=27;
return 0;
}
while(tmp!='\r'&&i<=9&&(tmp>=64&&tmp<=90)||(tmp>=97&&tmp<=122||(tmp>=48&&tmp<=57)))
{
textcolor(YELLOW);
textbackground(5);
	putch(tmp);
	User_id[i]=tmp;
	i++;
	tmp=getch();
	if(tmp==27)
	{
flg=27;
return 0;
}
}
User_id[i]='\0';
}
/**********************密碼過濾****************************/
while(password[0]=='\0')
{
gotoxy(28,7);
textbackground(179);
textcolor(WHITE);
cputs("  input the password now  ");
textbackground(179);
textcolor(YELLOW);
gotoxy(27,13);
putch(272);
gotoxy(27,11);
putch(' ');
gotoxy(40,13);
i=0;
tmp=getch();
if(tmp==27)
{
flg=27;
return 0;
}
while(tmp!='\r'&&i<=10&&(tmp>=64&&tmp<=90)||(tmp>=97&&tmp<=122||(tmp>=48&&tmp<=57)))
{
	textbackground(5);
	putch('*');
 
	password[i]=tmp;
	i++;
	tmp=getch();
	if(tmp==27)
	{
flg=27;
return 0;
}
}
password[i]='\0';
}
/*************把賬號和密碼進行對比驗證**************/
if(!strcmp(User_id,"admin")&&!strcmp(password,"admin"))
	{
		return 2;
	}
if(cmps(l,User_id,password))
{	 
	return 1;
}
}
}

選擇界面函數(shù)

void choose()
{
while(1)
{
 
textbackground(179);
clrscr();
gotoxy(33,2);
textcolor(WHITE);
cputs("Administrastor");
textcolor(YELLOW);
box(1,1,80,24);
h_line(2,3,78);
gotoxy(3,6);
cputs(">>>-------------------------1.User Management----------------------------<<<");
gotoxy(3,10);
cputs(">>>-------------------------2.Book Management----------------------------<<<");
	gotoxy(3,14);
cputs(">>>-------------------------3.Borrow Books-------------------------------<<<");
gotoxy(30,22);
textcolor(RED);
cputs("Please Select!!!");
flg=getch();
if(flg=='2')		
	bookss();									
if(flg=='1')
	users();
if(flg=='3')
	borrow();
if(flg==27)
{
	flg=-1;
	return;
}	
}		
}
void admin()
{
while(1)
{
choose();	
if(flg=='1')	
bookss();
if(flg=='2')
users();
if(flg=='3')
borrow();
if(flg==27)
{
return;
}
}
}

操作界面函數(shù)

void user(Ulink h)
{
int flag;
BBlink l,p,r;/* 連表 */ 
FILE *fp; /* 文件指針 */ 
int count=0; 
l=(BBnode*)malloc(sizeof(BBnode)); 
l->next=NULL; 
r=l; 
fp=fopen(bfile,"rb"); 
if(fp==NULL) 
{ 
	fp=fopen(bfile,"wb"); 
} 
while(!feof(fp)) 
{
	p=(BBnode*)malloc(sizeof(BBnode)); 
	if(fread(p,sizeof(BBnode),1,fp)) /* 將文件的內(nèi)容放入接點中 */ 
	{ 
		p->next=NULL; 
        r->next=p; 
        r=p; /* 將該接點掛入連中 */ 
        count++; 
    } 
} 
	while(1) 
{	
	textbackground(179);
	clrscr();
	textcolor(YELLOW);
	box(1,1,80,24);
	h_line(2,3,78);
	gotoxy(3,2);
	textcolor(RED);
	cputs("A.");
	textcolor(BLUE);
	cputs("my message  ");
	textcolor(RED);
	cputs("B.");
	textcolor(BLUE);
	cputs("modyfy my message  ");
	textcolor(RED);
	cputs("C.");
	textcolor(BLUE);
	cputs("my borrow  ");
	textcolor(RED);
	cputs("D.");
	textcolor(BLUE);
	cputs("search book");
	textcolor(YELLOW);
	gotoxy(50,50);
	flag=getch(); 
    switch(flag)		
	{ 		
	case 'a':
		show(os);
		
		break; /*************添加用戶**********/
	case 'b':
		Modify_user(h);
		Save(h);
		
		break;/*************刪除用戶**********/
	case 'c':
		Myborrow();
		break;
	case 'd':
		usersearch();
 
		
		break;
	case 27:
		return;
		
	} 
 
} 
 
}

添加函數(shù)

圖書的添加,包括用戶添加以及管理員添加

void add(blink l)
{ 
Bnode *p,*r,*s; 
char num[10]; 
r=l; 
s=l->next; 
while(r->next!=NULL) 
	r=r->next; 
textcolor(RED);
gotoxy(25,4);
cputs("INPUT THE MESSAGE ABOUT BOOK");
gotoxy(31,10);
textcolor(YELLOW);
cputs("Book ID:");
scanf("%s",num); 
p=(Bnode *)malloc(sizeof(Bnode));  
while(s) 
{ 
	if(strcmp(s->data.num,num)==0) 
	{ 
		textcolor(WHITE);
		gotoxy(25,15);
		cputs("This ID:");
		printf("'%s'",num); 
		cputs("is exist!");    
		gotoxy(25,22);
		cputs("please Press any key to continue...");  
		gotoxy(255,252);
		getch();                    
		return; 
	} 
	s=s->next; 
} 
strcpy(p->data.num,num); 
gotoxy(31,12);
textcolor(YELLOW);
cputs("Input Book name:"); 
scanf("%s",p->data.name); 
gotoxy(31,14);
cputs("input your Book auth:"); 
scanf("%s",p->data.auth); 
gotoxy(31,16);
cputs("input your Book count:"); 
scanf("%d",&p->data.count); 
bookcount=p->data.count+bookcount;
p->data.sum=0;
p->next=NULL; 
r->next=p; 
r=p; 
gotoxy(30,22);
textcolor(RED);
cputs("Add Book Success !!!");
getch();
textcolor(YELLOW);
} 
 
 /*******管理員添加用戶*******/
void Add(Ulink l)
{ 
Unode *p,*r,*s; 
char num[10]; 
r=l; 
s=l->next; 
while(r->next!=NULL) 
	r=r->next; 
textcolor(RED);
gotoxy(25,4);
cputs("INPUT THE MESSAGE ABOUT BOOK");
gotoxy(31,10);
textcolor(YELLOW);
cputs("User ID:");
scanf("%s",num); 
p=(Unode *)malloc(sizeof(Unode));  
while(s) 
{ 
	if(strcmp(s->data.num,num)==0) 
	{ 
		gotoxy(25,15);
		cputs("This ID:");
		printf("'%s'",num); 
		cputs("is exist!");    
		gotoxy(25,22);
		textcolor(RED);
		cputs("please Press any key to continue...");  
		gotoxy(255,252);
		getch();                    
		return; 
	} 
	s=s->next; 
} 
strcpy(p->data.num,num); 
gotoxy(31,12);
textcolor(YELLOW);
cputs("Input Password:"); 
scanf("%s",p->data.pass); 
gotoxy(31,14);
cputs("input your name:"); 
scanf("%s",p->data.name); 
gotoxy(31,16);
cputs("input the sex:"); 
scanf("%s",p->data.sex); 
p->next=NULL; 
r->next=p; 
r=p; 
gotoxy(30,22);
cputs("Add User Success !!!");
usercount++;
getch();
textcolor(YELLOW);
}

查找函數(shù)

用戶查找以及管理員查找

/*******管理員查找圖書*******/
void qur(blink l)
{ 
int sel; 
char findmess[20]; 
Bnode *p; 
 
if(!l->next) 
{ 
gotoxy(30,4);
textcolor(WHITE);
     cputs("Not Find Bookdata!!!"); 
	 getch();
    return; 
} 
textcolor(RED);
gotoxy(25,4);
cputs("Please Select Search  Type !");
gotoxy(10,8);
textcolor(WHITE);
cputs("1.Search by ID");
gotoxy(10,10);
cputs("2.Search by Name");
gotoxy(10,12);
cputs("Please Select 1 or 2:");
scanf("%d",&sel); 
if(sel==1) 
{
	gotoxy(36,8);
	textcolor(YELLOW);
	cputs("Input the search ID:"); 
	scanf("%s",findmess); 
	p=locate(l,findmess,"num"); 
	if(p) 
	{ 
		gotoxy(36,12);
		textcolor(WHITE);
		cputs("Book ID:");
		printf("%s",p->data.num);
		gotoxy(36,14);
		textcolor(WHITE);
		cputs("Book Name:");
		printf("%s",p->data.name);
		gotoxy(36,16);
		textcolor(WHITE);
		cputs("Book author:");
		printf("%s",p->data.auth);
		gotoxy(36,18);
		textcolor(WHITE);
		cputs("Book count:");
		printf("%d",p->data.count);
		getch();
		textcolor(YELLOW);
		gotoxy(30,21);
		cputs("Search Success !!");
	}
	else 
	{
		gotoxy(30,22);
		textcolor(RED);
		cputs("Not finde !!!"); 
		getch();
	}
}	
else if(sel==2) /* 姓名 */
{ 
	gotoxy(36,8);
	textcolor(YELLOW);
	cputs("Input the search name:");
	scanf("%s",findmess); 
	p=locate(l,findmess,"name"); 		
	if(p) 
	{ 
		gotoxy(36,12);
		textcolor(WHITE);
		cputs("Book ID:");
		printf("%s",p->data.num);
		gotoxy(36,14);
		textcolor(WHITE);
		cputs("Book Name:");
		printf("%s",p->data.name);
		gotoxy(36,16);
		textcolor(WHITE);
		cputs("Book author:");
		printf("%s",p->data.auth);
		gotoxy(36,18);
		textcolor(WHITE);
		cputs("Book count:");
		printf("%d",p->data.count);
		getch();
		textcolor(YELLOW);
	} 
	else 
	{
		textcolor(RED);
		gotoxy(30,22);
		cputs("Not finde !!!"); 
	}
} 
else 
{
	textcolor(RED);
	gotoxy(30,22); 
	cputs("Error !!"); 
	getch();
}
} 
 
/*******用戶查找圖書*******/
void usersearch()
{ 
int sel; 
char findmess[20]; 
Bnode *p; 
blink l;/* 連表 */ 
FILE *fp; /* 文件指針 */ 
int count=0; 
Bnode *P,*r;
l=(Bnode*)malloc(sizeof(Bnode)); 
l->next=NULL; 
r=l; 
fp=fopen(file,"rb"); 
if(fp==NULL) 
{ 
	fp=fopen(file,"wb"); 
 } 
while(!feof(fp)) 
{ 
    P=(Bnode*)malloc(sizeof(Bnode)); 
    if(fread(P,sizeof(Bnode),1,fp)) /* 將文件的內(nèi)容放入接點中 */ 
    { 
        P->next=NULL; 
		bookcount=bookcount+P->data.count;
		booksum=booksum+P->data.sum;
        r->next=P; 
        r=P; /* 將該接點掛入連中 */ 
        count++; 
    }
} 
fclose(fp); /* 關(guān)閉文件 */ 
 
 
if(!l->next) 
{ 
gotoxy(30,4);
textcolor(WHITE);
     cputs("Not Find Bookdata!!!");
	 getch();
    return; 
} 
textcolor(RED);
gotoxy(25,4);
cputs("Please Select Delete  Type !");
gotoxy(10,8);
textcolor(WHITE);
cputs("1.Search by ID");
gotoxy(10,10);
cputs("2.Search by Name");
gotoxy(10,12);
cputs("Please Select 1 or 2:");
scanf("%d",&sel); 
if(sel==1) 
{
	gotoxy(36,8);
	textcolor(YELLOW);
	cputs("Input the search ID:"); 
	scanf("%s",findmess); 
	p=locate(l,findmess,"num"); 
	if(p) 
	{ 
		gotoxy(36,12);
		textcolor(WHITE);
		cputs("Book ID:");
		printf("%s",p->data.num);
		gotoxy(36,14);
		textcolor(WHITE);
		cputs("Book Name:");
		printf("%s",p->data.name);
		gotoxy(36,16);
		textcolor(WHITE);
		cputs("Book author:");
		printf("%s",p->data.auth);
		gotoxy(36,18);
		textcolor(WHITE);
		cputs("Book count:");
		printf("%d",p->data.count-p->data.sum);
		getch();
		textcolor(YELLOW);
	}
	else 
	{
		gotoxy(30,22);
		textcolor(RED);
		cputs("Not finde !!!"); 
		getch();
	}
}	
else if(sel==2)
{ 
	gotoxy(36,8);
	textcolor(YELLOW);
	cputs("Input the search name:");
	scanf("%s",findmess); 
	p=locate(l,findmess,"name"); 		
	if(p) 
	{ 
		gotoxy(36,12);
		textcolor(WHITE);
		cputs("Book ID:");
		printf("%s",p->data.num);
		gotoxy(36,14);
		textcolor(WHITE);
		cputs("Book Name:");
		printf("%s",p->data.name);
		gotoxy(36,16);
		textcolor(WHITE);
		cputs("Book author:");
		printf("%s",p->data.auth);
		gotoxy(36,18);
		textcolor(WHITE);
		cputs("Book count:");
		printf("%d",(p->data.count-p->data.sum));
		getch();
		textcolor(YELLOW);
	} 
	else 
	{
		textcolor(RED);
		gotoxy(30,22);
		cputs("Not finde !!!"); 
	}
} 
else 
{
	textcolor(RED);
	gotoxy(30,22); 
	cputs("Error !!"); 
	getch();
}
} 
 
/*******圖書查找*******/
int cmpbook(blink l,char id[],char na[])
{ 
char findm[20];
Bnode *p; 
if(!l->next) 
{ 
	gotoxy(25,4);
	textcolor(RED);
     cputs("Not Find Book!!!"); 
	 getch();
    return 0; 
} 
strcpy(findm,id);
	p=locate(l,findm,"num"); 
	if(p) 
	{ 
		strcpy(findm,na);
		p=locate(l,findm,"name"); 		
		if(p) 
		{ 
			return 1;	
		} 
		else 
		{
			textcolor(RED);
			gotoxy(30,22);
			cputs("Book name is NULL !!!"); 
			getch();
			return 0;
		}
	}
	else 
	{
		gotoxy(30,22);
		textcolor(RED);
		cputs("Book id is NULL !!!"); 
		getch();
		return 0;
	}
	
 
 
	
	
 
}

刪除函數(shù)

圖書的刪除

void del(blink l) 
{ 
	int sel; 
	Bnode *p,*r; 
	char findmess[20]; 
	if(!l->next) 
	{ 
		gotoxy(25,4);
		textcolor(RED);
		cputs("=====>not thing could delete!\n"); 
		getch();
		return; 
	} 
	textcolor(RED);
	gotoxy(25,4);
	puts("Please Select Delete  Type !");
	gotoxy(10,8);
	
	textcolor(WHITE);
	cputs("1.Delete by Book ID");
	gotoxy(10,10);
	cputs("2.Delete by Book Name");
	gotoxy(10,12);
	cputs("Please Select 1 or 2:");
	scanf("%d",&sel); 
	if(sel==1)     
	{ 
		gotoxy(36,8);
		textcolor(YELLOW);
		cputs("Input the delete ID:"); 
		scanf("%s",findmess); 
		p=locate(l,findmess,"num"); 
		if(p) 
		{ 
			bookcount=bookcount-p->data.count;
			r=l; 
			while(r->next!=p) 
				r=r->next; 
			r->next=p->next; 
			free(p); 
			gotoxy(30,22);
			textcolor(RED);
			cputs("Delete success!\n");     
			textcolor(YELLOW);  
		} 
		else 
		{
	textcolor(RED);
	gotoxy(30,22); 
	cputs("Error !!"); 
		}
	} 
	else if(sel==2) 
	{ 
		gotoxy(36,8);
		textcolor(YELLOW);
		cputs("Input the delete name:"); 
		scanf("%s",findmess); 
		p=locate(l,findmess,"name"); 
		if(p) 
		{ 
			r=l; 
			while(r->next!=p) 
				r=r->next; 
			r->next=p->next; 
			free(p); 
			gotoxy(30,22);
			textcolor(RED);
			cputs("Delete success!\n"); 
			bookcount--;
			textcolor(YELLOW);  
		} 
		else
		{
			gotoxy(25,18);
			cputs("Not find!!"); 
		}
	} 
	else
	{
	textcolor(RED);
	gotoxy(30,22); 
	cputs("Error !!");  
	}
	getch();
	textcolor(YELLOW);
}

借書管理函數(shù)

void borrow()
{
while(1)
{
int flag;
BBlink l,p,r;/* 連表 */ 
FILE *fp; /* 文件指針 */ 
int count=0; 
l=(BBnode*)malloc(sizeof(BBnode)); 
l->next=NULL; 
r=l; 
fp=fopen(bfile,"rb"); 
if(fp==NULL) 
{ 
	fp=fopen(bfile,"wb"); 
} 
while(!feof(fp)) 
{
	p=(BBnode*)malloc(sizeof(BBnode)); 
	if(fread(p,sizeof(BBnode),1,fp)) /* 將文件的內(nèi)容放入接點中 */ 
	{ 
		p->next=NULL; 
        r->next=p; 
        r=p; /* 將該接點掛入連中 */ 
        count++; 
    } 
	borrowcount=count;
} 
while(1) 
{	
	textbackground(179);
	clrscr();
	textcolor(YELLOW);
	box(1,1,80,24);
	h_line(2,3,78);
	gotoxy(3,2);
	textcolor(RED);
	cputs("B");
	textcolor(BLUE);
	cputs("orrow book  ");
	textcolor(RED);
	cputs("R");
	textcolor(BLUE);
	cputs("eturn book  ");
	textcolor(RED);
	cputs("S");
	textcolor(BLUE);
	cputs("earch borrow  ");
	textcolor(YELLOW);
	printf("count: (borrow=%d)",borrowcount);
	textcolor(RED);
	gotoxy(50,50);
	flag=getch(); 
    switch(flag)		
	{ 		
	case 'b':
		Add_borrow(l);
		
		break; /*************添加用戶**********/
	case 'r':
		Del_borrow(l);
		Save_borrow(l);
		break;
	case 's':
		Qur_borrow(l);
		break;
	case 27:
		return;
		
	} 
     } 	 
  }
}

信息儲存函數(shù)

圖書信息的儲存

*******借書信息保存*******/
void Save_borrow(BBlink l) 
{ 
 FILE* fp; 
 BBnode *p; 
 int flag=1,count=0; 
 fp=fopen(bfile,"wb"); 
 if(fp==NULL) 
 { 
gotoxy(35,12);
	textcolor(RED);
      cputs("open error!"); 
      exit(1); 
 } 
 p=l->next; 
 while(p) 
 { 
      if(fwrite(p,sizeof(BBnode),1,fp)==1) 
      { 
          p=p->next; 
          count++; 
      } 
      else 
      { 
          flag=0; 
          break; 
      } 
} 
if(flag) 
{ 
textcolor(RED);
gotoxy(30,24);
 /*** printf("save success.(saved%d.)",count);**調(diào)試的時候用的*/
}
fclose(fp); 
}

還書函數(shù)

/* 還書的操作 */ 
void Del_borrow(BBlink l) 
{ 
		int sel; 
	BBnode *p,*r; 
	Bnode *L;
	char findmess[20];
	FILE *fp; /* 文件指針 */
Bnode *P,*R,*Q;
L=(Bnode*)malloc(sizeof(Bnode)); 
L->next=NULL; 
R=L; 
fp=fopen(file,"rb"); 
if(fp==NULL) 
{ 
	fp=fopen(file,"wb");
 }
while(!feof(fp))
{
    P=(Bnode*)malloc(sizeof(Bnode));
    if(fread(P,sizeof(Bnode),1,fp)) /* 將文件的內(nèi)容放入接點中 */
    {
        P->next=NULL;
        R->next=P;
        R=P; /* 將該接點掛入連中 */
    }
}
fclose(fp); /* 關(guān)閉文件 */
 
	if(!l->next)
	{
		gotoxy(30,4);
		textcolor(RED);
		cputs("not Book could Return!\n");
		getch();
		return;
	}
	textcolor(RED);
	gotoxy(25,4);
	puts("Please Select Return  Type !");
	gotoxy(10,8);
 
	textcolor(WHITE);
	cputs("1.Return by Borrow ID");
	gotoxy(10,10);
	cputs("2.Return by book name");
	gotoxy(10,12);
	cputs("Please Select 1 or 2:");
	scanf("%d",&sel);
	if(sel==1)
	{
		gotoxy(36,8);
		textcolor(YELLOW);
		cputs("Input the Borrow ID:");
		scanf("%s",findmess);
		p=Locate_borrow(l,findmess,"num");
		if(p)
		{
 
				Q=locate(L,findmess,"num");
				if(Q) 
				{ 
					Q->data.sum=Q->data.sum-1;
						save(L);
				} 
			r=l; 
			while(r->next!=p) 
				r=r->next; 
			r->next=p->next; 
			free(p); 
			gotoxy(30,22);
			textcolor(RED);
			cputs("Return success!\n"); 
			borrowcount--;
			getch();
			textcolor(YELLOW);  
		} 
		else 
		{
			gotoxy(30,22);
			textcolor(RED);
			cputs("Note find !!"); 
			getch();
			
		}
	} 
	else if(sel==2) 
	{ 
		gotoxy(36,8);
		textcolor(YELLOW);
		cputs("Input the Book name:"); 
		scanf("%s",findmess); 
		p=Locate_borrow(l,findmess,"book");
		if(p) 
		{ 
			
				Q=locate(L,findmess,"name"); 
				if(Q) 
				{ 
					Q->data.sum=Q->data.sum-1;
						save(L);
				} 
			
			r=l; 
			while(r->next!=p) 
				r=r->next; 
			r->next=p->next; 
			free(p); 
			gotoxy(30,22);
			textcolor(RED);
			cputs("Borrow success!\n"); 
			borrowcount--;
			getch();
			textcolor(YELLOW);  
		} 
		else
		{
			gotoxy(30,18);
			textcolor(RED);
			cputs("Not find!!"); 
			getch();
		}
	} 
		
	else
	{
		gotoxy(30,22);
		textcolor(RED);
		cputs("Not finde !!"); 
		getch();
	}
	textcolor(YELLOW);
}

修改函數(shù)

也分為用戶和管理員兩種情況 

/* ****用于管理員修改用戶資料 ***/
void Modify(Ulink l) 
{ 
	Unode *p; 
	char findmess[20]; 
	if(!l->next) 
	{
		gotoxy(30,4);
		textcolor(RED);
		cputs("not thing could modify!"); 
		getch();
		return; 
	} 
	gotoxy(30,4);
	textcolor(RED);
	cputs("Modify User Message");
	gotoxy(25,8);
	textcolor(YELLOW);
	cputs("input the User Id:");
	scanf("%s",findmess); 
	p=Locate(l,findmess,"num"); 
	if(p) 
	{ 
		textcolor(YELLOW);
		gotoxy(25,10);
		printf("Inpute The New ID(old:%s):",p->data.num); 
		scanf("%s",p->data.num); 
		gotoxy(25,12);
		printf("Input The New Password(old:%s):",p->data.pass); 
		scanf("%s",p->data.pass); 
		gotoxy(25,14);
		printf("Input The New Name(old:%s):",p->data.name); 
		scanf("%s",p->data.name); 
		gotoxy(25,16);
		printf("Input The New Sex(old:%s):",p->data.sex); 
		scanf("%s",p->data.sex); 
		gotoxy(30,20);
		textcolor(RED);
		cputs("Modify Success !!!"); 
		getch();
		textcolor(YELLOW);
	} 
	else 
	{	
		gotoxy(30,16);
		textcolor(RED);
		cputs("Not Finde !!!"); 
		getch();
	}
} 
 
 
 /****供用戶修改用戶自己資料 */
void Modify_user(Ulink l)
{ 
	Unode *p; 
	char findmess[20]; 
	if(!l->next) 
	{
		gotoxy(30,4);
		textcolor(RED);
		cputs("not thing could modify!"); 
		getch();
		return; 
	} 
	gotoxy(30,4);
	textcolor(RED);
	cputs("Modify User Message");
	gotoxy(33,8);
	textcolor(YELLOW);
	strcpy(findmess,os->data.num);
	printf("your id:%s",findmess);
	p=Locate(l,findmess,"num"); 
	if(p) 
	{ 
		textcolor(YELLOW);
		gotoxy(24,10);
		printf("Input The New Password(old:%s):",p->data.pass); 
		scanf("%s",p->data.pass); 
		gotoxy(24,12);
		printf("Input The New Name(old:%s):",p->data.name); 
		scanf("%s",p->data.name); 
		gotoxy(24,14);
		printf("Input The New Sex(old:%s):",p->data.sex); 
		scanf("%s",p->data.sex); 
		gotoxy(31,18);
		textcolor(RED);
		cputs("Modify Success !!!"); 
		getch();
		textcolor(YELLOW);
	} 
	else 
	{	
		gotoxy(30,16);
		textcolor(RED);
		cputs("Not Finde !!!"); 
		getch();
	}
}

添加借書函數(shù)

/*******添加借書*******/
void Add_borrow(BBlink l) 
{ 
Ulink H;/* 連表 */ 
FILE *Fp; /* 文件指針 */ 
Unode *Q,*T;
blink L;/* 連表 */ 
FILE *FP; /* 文件指針 */ 
int ttl;
 
Bnode *P,*R;
char bookid[20];
char bookname[20];
char userid[20];
BBnode *p,*r,*s; 
char num[10]; 
r=l; 
s=l->next; 
while(r->next!=NULL) 
	r=r->next; 
L=(Bnode*)malloc(sizeof(Bnode)); 
L->next=NULL; 
R=L; 
FP=fopen(file,"rb"); 
if(FP==NULL) 
{ 
	FP=fopen(file,"wb"); 
 } 
while(!feof(FP)) 
{ 
    P=(Bnode*)malloc(sizeof(Bnode)); 
    if(fread(P,sizeof(Bnode),1,FP)) /* 將文件的內(nèi)容放入接點中 */ 
    { 
        P->next=NULL; 
		bookcount=bookcount+P->data.count;
        R->next=P; 
        R=P; /* 將該接點掛入連中 */ 
 
    } 
} 
fclose(FP); /* 關(guān)閉文件 */ 
 
 
H=(Unode*)malloc(sizeof(Unode)); 
H->next=NULL; 
T=H;
Fp=fopen(ufile,"rb"); 
if(Fp==NULL) 
{ 
	Fp=fopen(ufile,"wb"); 
 } 
while(!feof(Fp)) 
{ 
    Q=(Unode*)malloc(sizeof(Unode));
    if(fread(Q,sizeof(Unode),1,Fp)) /* 將文件的內(nèi)容放入接點中 */ 
    { 
        Q->next=NULL; 
        T->next=Q; 
        T=Q; /* 將該接點掛入連中 */ 
    } 
} 
fclose(Fp); 
textcolor(RED);
gotoxy(25,4);
cputs("Please input thease message");
gotoxy(30,10);
textcolor(YELLOW);
cputs("Input Borrow ID:");
scanf("%d",&ttl);
itoa(ttl,num,10) ;
p=(BBnode *)malloc(sizeof(BBnode));
while(s) 
{ 
	if(strcmp(s->id,num)==0) 
	{ 
		gotoxy(30,15);
		cputs("Borrow ID:");
		printf("'%s'",num); 
		cputs("is exist!");    
		gotoxy(26,22);
		textcolor(RED);
		cputs("please Press any key to continue...");  
		gotoxy(255,252);
		getch();                    
		return; 
	} 
	s=s->next; 
} 
strcpy(p->id,num);
gotoxy(31,12);
textcolor(YELLOW);
cputs("Input book id:"); 
scanf("%s",bookid);
gotoxy(31,14);
textcolor(YELLOW);
cputs("Input book name:"); 
scanf("%s",bookname);/***************************************圖書判斷在否***************************************/ 
if(cmpbook(L,bookid,bookname))
{
	strcpy(p->bookid,bookid);
	strcpy(p->book,bookname);
	gotoxy(31,16);
cputs("input your ID:"); 
scanf("%s",userid); /**************************************用戶判斷在否********************************/
if(cmpuser(H,userid))
{
	strcpy(p->user,userid);
	p->next=NULL; 
r->next=p; 
r=p; 
if(changeb(L,bookid))
{
gotoxy(30,22);
cputs("Borrow Success !!!");
Save_borrow(l);
borrowcount++;
 
getch();
}
}
 
}
 
textcolor(YELLOW);
}

查找借書函數(shù)

查找自己借了哪些書

void Myborrow()
{
int i;
 
BBlink l,p,r;/* 連表 */ 
FILE *fp; /* 文件指針 */ 
int count=0; 
l=(BBnode*)malloc(sizeof(BBnode)); 
l->next=NULL; 
r=l; 
fp=fopen(bfile,"rb"); 
if(fp==NULL) 
{ 
	fp=fopen(bfile,"wb"); 
} 
i=6;
while(!feof(fp)) 
{
 
 
	
	p=(BBnode*)malloc(sizeof(BBnode)); 
	if(fread(p,sizeof(BBnode),1,fp)) /* 將文件的內(nèi)容放入接點中 */ 
	{ 
		textcolor(WHITE);
		gotoxy(30,4);
		cputs("Your borrow book");
		
		if(strcmp(p->user,os->data.num)==0)
		{
			textcolor(YELLOW);
 
			gotoxy(20,i);
			printf("Borrow ID:%s\tBook id:%s\tBook name:%s",p->id,p->bookid,p->book);
			i++;
 
			p->next=NULL; 
			r->next=p; 
			r=p; /* 將該接點掛入連中 */ 
			count++; 
		}
    } 
	myborrow=count;
	if(myborrow==0)
	{
		textcolor(YELLOW);
		gotoxy(30,13);
		cputs("You  no borrow !!");
 
 
	}
 
 
 
}
fclose(fp);
textcolor(YELLOW);
	gotoxy(65,2);
	printf("(borrow=%d)",myborrow);
		
	getch();
 
}

借書管理函數(shù)

void borrow()
{
while(1)
{
int flag;
BBlink l,p,r;/* 連表 */ 
FILE *fp; /* 文件指針 */ 
int count=0; 
l=(BBnode*)malloc(sizeof(BBnode)); 
l->next=NULL; 
r=l; 
fp=fopen(bfile,"rb"); 
if(fp==NULL) 
{ 
	fp=fopen(bfile,"wb"); 
} 
while(!feof(fp)) 
{
	p=(BBnode*)malloc(sizeof(BBnode)); 
	if(fread(p,sizeof(BBnode),1,fp)) /* 將文件的內(nèi)容放入接點中 */ 
	{ 
		p->next=NULL; 
        r->next=p; 
        r=p; /* 將該接點掛入連中 */ 
        count++; 
    } 
	borrowcount=count;
} 
while(1) 
{	
	textbackground(179);
	clrscr();
	textcolor(YELLOW);
	box(1,1,80,24);
	h_line(2,3,78);
	gotoxy(3,2);
	textcolor(RED);
	cputs("B");
	textcolor(BLUE);
	cputs("orrow book  ");
	textcolor(RED);
	cputs("R");
	textcolor(BLUE);
	cputs("eturn book  ");
	textcolor(RED);
	cputs("S");
	textcolor(BLUE);
	cputs("earch borrow  ");
	textcolor(YELLOW);
	printf("count: (borrow=%d)",borrowcount);
	textcolor(RED);
	gotoxy(50,50);
	flag=getch(); 
    switch(flag)		
	{ 		
	case 'b':
		Add_borrow(l);
		
		break; /*************添加用戶**********/
	case 'r':
		Del_borrow(l);
		Save_borrow(l);
		break;
	case 's':
		Qur_borrow(l);
		break;
	case 27:
		return;
		
	} 
 
} 	
 
}
 
 
}

主函數(shù)

main()
{
 
Ulink h,os;/* 連表 */ 
FILE *fp; /* 文件指針 */ 
Unode *p,*r;
h=(Unode*)malloc(sizeof(Unode)); 
h->next=NULL; 
r=h; 
fp=fopen(ufile,"rb"); 
if(fp==NULL) 
{ 
	fp=fopen(ufile,"wb"); 
 } 
while(!feof(fp)) 
{ 
    p=(Unode*)malloc(sizeof(Unode)); 
    if(fread(p,sizeof(Unode),1,fp)) /* 將文件的內(nèi)容放入接點中 */
    {
        p->next=NULL;
        r->next=p;
        r=p; /* 將該接點掛入連中 */
 
    }
}
fclose(fp);
system("wellcome");
	if(flg==27)
	{
		flg=-1;
		return;
	}
		while(1)
		{
			flag=login(h);
			if(flg==27)
				{
					flg=-1;
					break;
				}
 
				if(flag==2)
				{
					choose();
					flag=0;
				}
				if(flag==1)
				{
					user(h);
					flag=0;
				}
 
		}
 
}

關(guān)于“C語言如何實現(xiàn)圖書管理系統(tǒng)”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI