c语言图书管理系统开发实例

合集下载

C语言:书店管理系统

C语言:书店管理系统

C语言:书店管理系统#include "stdio.h"#include <string.h>#define MAXNUM 1000typedef struct{char isbn[10]; /*书号*/char bkname[20]; /*书名*/char author[10]; /*作者*/float price; /*单价*/int num; /*数量(单位:册)*/} BOOK;int bknum;BOOK bk[MAXNUM];rdata(){FILE *fp;if ((fp=fopen("e:\\lth019\\bkstore\\bookdata.txt","rb"))==NULL){printf("Can not open the file!\n");return;}fread(&bknum,sizeof(int),1,fp);fread(bk,sizeof(BOOK),bknum,fp);fclose(fp);}bklist(){int i;clrscr();printf(" Isbn bkname author price num\n"); printf("----------------------------------------------------------------\n");for(i=0;i<bknum;i++)putout();printf("-------------------------BOOK LIST END---------------------------\n");printf("Press any key to return...");getch();}void wdata(){FILE *fp;if ( (fp=fopen("e:\\lth019\\bkstore\\bookdata.txt","wb"))==NULL) {printf("Can not open the file!\n");return;}fwrite(&bknum , sizeof(int) , 1 , fp);fwrite(bk, sizeof(BOOK), bknum, fp);fclose(fp);}void bookin(){char s[10],bn[20],au[10];int i,nn;float pp;printf("input isbn(000 to end input):");scanf("%s",s);while(strcmp(s,"000")!=0){if ((i=found(s))<bknum){ printf("Have found!\n");putout();printf("input the number:");scanf("%d",&nn);bk[i].num+=nn;{putout();getch();}printf("input isbn(000 to end input):");scanf("%s",s);}else{printf("A new book input,\nPlease input bkname,author,price,num\n");strcpy(bk[i].isbn,s);scanf("%s%s",bn,au);strcpy(bk[i].bkname,bn);strcpy(bk[i].author,au);scanf("%f%d",&pp,&nn );bk[i].price=pp;bk[i].num=nn;bknum++;{putout();getch();}printf("input isbn(000 to end input):");scanf("%s",s);break;}}}showsold(BOOK sold[],int n){int i;printf("\n\n\n -------------The Books are selling-----------------\n");for(i=0;i<n;i++)printf(" %-10s%-20s%-10s%-8.2f%-8d\n",sold[i].isbn,sold[i].bkname,sold[i].author,sold[i].price,sold[i].num);}int found(char isbn[]){int i;for(i=0;i<bknum;i++)if(strcmp(isbn,bk[i].isbn)==0) break;return i;}void booksale(){ char isbn[10];BOOK sold[100];int soldnum=0,i;float total=0;clrscr();printf("Please input isbn(000 to end input):");scanf("%s",isbn);while(strcmp(isbn,"000")!=0){if((i=found(isbn))<bknum)if(bk[i].num>0)sold[soldnum++]=bk[i],bk[i].num--;else{printf("\Not enough!Pressany key to continue...");getch();} else{printf("\Not enough!Pressany key to continue...");getch();}clrscr();for(i=0,total=0;i<soldnum;i++)total+=sold[i].price;if(soldnum){ showsold(sold,soldnum);printf(" ----------------------------------------------\n");printf("\n The total %8.2f\n\n\n",total);}printf("\n input isbn(000 to end input):");scanf("%s",isbn);}}void search(){ char s[10]; char found; char isbn[20];char num[10]; char au[20]; char name[20];int t,i;printf("=================\n");printf(" 1.search with isbn \n");printf(" 2.search with author \n");printf(" 3.search with bookname \n");printf("=================\n");printf(" please chose one way : ");scanf("%d",&t);if(t==1){ printf(" please input isbn : ");scanf("%s",&s);for(found=0,i=0 ; i<bknum ; i++)if(strcmp(s,bk[i].isbn)==0){printf("Have found!\n");putout();found++;}else continue;if(!found) printf("Not found!");getch();}if(t==2){ printf(" please input author: ");scanf("%s",au);for(found=0,i=0;i<bknum;i++)if(strcmp(au,bk[i].author)==0){printf("Have found!\n");putout();found++;}else continue;if(!found) printf("Not found!");getch();}if(t==3){ printf(" please input bookname: ");scanf("%s",name);for(found=0,i=0;i<bknum;i++)if(strcmp(bk[i].bkname,name)==0){printf("Have found!\n");putout();found++;}else continue;if(!found) printf("Not found!");getch();}}Delete(){ char s[10],t;int found=0,i,j;printf("please input isbn of the book:");scanf("%s",s);for(i=0 ; i<bknum ; i++)if( strcmp(s,bk[i].isbn)==0 )break;if (i<bknum){ found=1;printf("Found!\n");putout();printf("Are you sure to delete?(Y/N):"); flushall(); scanf("%c",&t);if(t=='y'||t=='Y'){ for(;i<=bknum;i++)bk[i]=bk[i+1];}bknum--;}else printf("This book did't delete!");getch();}putout(){ int i;printf(" %-10s%-20s%-10s%-8.2f%-8d\n",bk[i].isbn,bk[i].bkname,bk[i].author,bk[i].price,bk[i].num); }int showsel(){int sel;clrscr();printf("--------------------------ManiMenus-------------------------\n\n"); printf(" 0. Exit\n");printf(" 1. BookList\n");printf(" 2. BookIn\n") ;printf(" 3. BookSale\n");printf(" 4. Save\n ");printf(" 5. Delete\n");printf(" 6. Search\n");printf("\n------------------------------------------------------------\n"); printf(" Input the selection:");scanf("%d",&sel);return sel;}main(){int sel; char yes;clrscr();rdata();sel=showsel();while(1){ switch(sel){case 0:printf("Are sure to Save?(Y/N) ");flushall();scanf("%c",&yes);if(yes=='Y'||yes=='y') { wdata(); exit(0); }exit(0);case 1:bklist();break;case 2:bookin();break;case 3:booksale();break;case 4:wdata();break;case 5:Delete();break;case 6:search();break;default :break;}sel=showsel();}}。

C语言程序课程设计图书管理系统方案

C语言程序课程设计图书管理系统方案

C语言程序课程设计报告标题:图书管理系统专业:软件工程类:设计主题图书馆管理系统主要包括管理图书的库存信息,每本书的借阅信息,每个人的借阅信息。

每本书的库存信息包括数量、书名、作者、出版日期、金额、类别、总入库数量、当前库存、已借出图书数量等。

每本借书包括以下信息:编号、书名、金额、借书证号、借阅日期、到期日期、罚款金额等。

每个人的图书馆信息包括借书证号、班级、学号等。

该系统的功能包括以下几个方面:一、借阅资料管理要求对图书、期刊、报纸、期刊进行分类管理,这样操作会更加灵活方便。

可以随时添加、删除、修改、查询等相关资料。

b、借贷管理(1)借贷操作(2)还书操作(3)更新治疗提示:以上处理需要相互配合,通过编辑赔偿和违约金金额来完成图书借还业务的各种登记。

例如,读者在还书时,不仅要更新图书的库存信息,还要自动计算图书的罚款金额。

并显示读者当天到期未还图书的所有信息。

c、读者管理读者等级:对借阅的读者进行分类,比如可以分为教师和学生两类。

并定义每类读者可以借阅的图书数量及相关借阅时间等信息。

读者管理:可以录入读者信息,以及挂失或注销读者、查询等服务。

D.统计分析可以随时进行统计分析,及时了解当前的借阅情况和相关数据状态。

统计分析包括借阅列表、数据状态统计、借阅统计等功能分析,显示当日所有到期未还的图书信息。

e系统参数设置:您可以设置相关的系统服务器参数,如违约金金额、最大借用天数等。

根据题目分析这项工作分为六个模块。

1.图书数据2.借款人信息3.借用模块4.还书模块5.照看书籍6.查询模块模块一:书号,书名,作者,出版时间,价格,份数,页数。

模块二:单位、借阅书目、借阅时间模块3:输入书名、书号、借书证。

模块四:登记书号,还书,处理罚款。

模块5:管理书库中的书籍,将新书入库,删除旧书,堆栈查询模块6:图书查询。

数据测试源代码汉字菜单可以参照以下代码编写:#包含“stdio.h”。

主(){ char c;int I;做{clr SCR();for(I = 0;i < 80i++)printf(" * ");printf("\t 1:添加书籍\ n ");printf("\t 2:列出书籍\ n ");printf(" \ t 3:s reach books \ n ");printf("\t 4:借书\ n ");printf("\t 5:返回图书\ n ");printf("\t6:退出\n ")printf(" \ t请选择输入选项[1 \ \ 2 \ \ 3 \ \ 4 \ \ 5 \ \ 6]:\ n ");做{c = getchar();}while(c!='1'&&c!='2'&&c!='3'&&c!='4'&&c!='5'&&!='6');getchar();开关(c){事例“1”:输入();打破;案例“2”:del();打破;事例“3”:find();打破;case“4”:arrange();打破;事例“5”:right();打破;案例“6”:出口(0);}Printf("按任意键返回主菜单:\ n ");getchar();clr SCR();} while(1);}#include <stdio.h >定义图书结构*/结构书{int _ id#include <stdlib.h >#include <string.h >#定义借入1#定义NOBORROW 0/*//数字,唯一char _ name[32];//书的名称,不唯一int _ type//书的类型,不唯一int _ status//书的状态,借出/未借出int _ count//图书借出的次数struct Book * _ next//下一本书结构书* _ prev//前一本书};定义书籍类型*/操作目录提示*/操作目录提示1 */添加图书类型并显示用户信息*/添加图书状态并显示用户信息。

图书管理系统 C语言

图书管理系统 C语言

/*12. bookfunction.c源程序*//*** bookfunction.c***//*添加图书*/#include "c13_book.c"void BookAdd(){FILE *fp;Book consultbook;fp=fopen("book.txt","rb");/*读方式打开文件*/if(fp==NULL)fp=fopen("book.txt","wb"); /*写方式打开文件*/else/*如果有书就添加*/{fclose(fp);fp=fopen("book.txt","ab");/*追加方式打开文件*/}ClrScr();/*清屏*/printf("Intput new book num: ");/*逐个输入新图书的资料*/ gets(consultbook.num);gotoxy(2,4);printf("Input new book name: ");gets();gotoxy(2,5);printf("Please input new book's price: ");scanf("%d%*c",&consultbook.price);strcpy(consultbook.person,"");consultbook.yes=1;/*表示书存在未借出*/consultbook.next=NULL;fwrite(&consultbook,sizeof(Book),1,fp);/*块写*/fclose(fp); /*关闭文件*/ClrScr();}/*图书查询*/void BookConsult(){FILE *fp;Book consultbook;char bookname[20]; /*书名*/int flag=0,i=0;ClrScr();gotoxy(2,3);printf("Input the book name: ");gets(bookname); /*输入要查询的图书名*/fp=fopen("book.txt","rb");{ClrScr();gotoxy(2,3);printf("Error!");fclose(fp);return;}elsewhile(!feof(fp))/*查询图书资料*/{fread(&consultbook,sizeof(Book),1,fp);if(strcmp(,bookname)==0)/*如果查找到*/{ClrScr();gotoxy(2,3+i*5);printf("This book %s information as follow:",); gotoxy(2,4+i*5);printf("This book num is %s",consultbook.num);gotoxy(2,5+i*5);printf("This book's price is %d",consultbook.price);gotoxy(2,6+i*5);printf("This book's is browwed by %s",consultbook.person); gotoxy(2,7+i*5);printf("This book's state is %d",consultbook.yes);i++;flag=1; /*查找数据标志*/}}if(flag==0){ClrScr();gotoxy(2,3);printf("No found this book");}fclose(fp);}/*删除图书资料*/void BookDel(){FILE *fp;Book *head,*p,*q;char bookname[20];fp=fopen("book.txt","rb");/*读方式打开文件*/{gotoxy(2,3);printf("Error!");fclose(fp);return;}head=p=q=(Book*)malloc(sizeof(Book));/*将文件内容放入链表*/ fread(p,sizeof(Book),1,fp); /*读第一条记录*/while(!feof(fp)){q=p;p=(Book*)malloc(sizeof(Book));fread(p,sizeof(Book),1,fp); /*读记录*/q->next=p;/*新记录插入到链表的尾*/}p->next=NULL;/*最后一个结点的后继为空*/fclose(fp);ClrScr();printf("Input the book name: ");gets(bookname); /*输入图书名*/p=head;while(p!=NULL)/*按名字查找要删除的图书*/{if(strcmp(p->name,bookname)==0)/*找到要删除的图书*/{if(p==head) /*如果是第一个结点*/head=head->next;elseq->next=p->next;/*不是第一个结点*/break;}q=p; /*指针后移*/p=p->next;}fp=fopen("book.txt","wb");/*删除后从链表的头开始重新保存*/ while(head!=NULL){fwrite(head,sizeof(Book),1,fp);/*块写*/head=head->next;}fclose(fp);ClrScr();}/*借书*/void BookBorrow(){FILE *fp;Book consultbook;Member consultmember;char bookname[20],membername[20];int flag=0,mflag=0;ClrScr();gotoxy(2,3);printf("Input the mermber name: ");gets(membername); /*输入会员名*/if((fp=fopen("member.txt","rb"))==NULL)/*没找到文件*/{gotoxy(3,3);printf("Cannot open file\n!");return;}elsewhile(!feof(fp))/*查询会员资料*/{fread(&consultmember,sizeof(Member),1,fp);if(strcmp(,membername)==0){mflag=1; /*是会员标志*/break;}}fclose(fp);if(mflag==0){gotoxy(2,4);printf("You not is a member,pleas register!");/*不是会员不能借书*/ return;}gotoxy(3,5);printf("Input the book name: ");gets(bookname); /*输入图书名*/ClrScr();if((fp=fopen("book.txt","rb+"))==NULL)/*没找到文件*/{gotoxy(2,3);printf("Cannot open file\n!");return;}while(!feof(fp))/*查询图书资料*/{fread(&consultbook,sizeof(Book),1,fp);if(strcmp(,bookname)==0){if(consultbook.yes==0)/*图书已经借出的判断*/{gotoxy(2,3);printf("This book has borrowed\n!");break;}else{consultbook.yes=0; /*作借出标志*/strcpy(consultbook.person,membername);/*登记借书会员*/ fseek(fp,-1L*sizeof(Book),1);/*从当前位置前移一条记录指针*/ fwrite(&consultbook,sizeof(Book),1,fp);/*写记录*/gotoxy(2,3);printf("Borrowed succ!");flag=1;/*借出书标志*/break;}}}if(flag!=1){ClrScr();gotoxy(2,3);printf("Borrowed fail!\n");/*借书失败*/}fclose(fp);}/*还书*/void BookReturn(){FILE *fp;Book consultbook;char bookname[20];int flag=0;ClrScr();if((fp=fopen("book.txt","rb+"))==NULL)/*没找到文件*/{gotoxy(2,3);printf("cannot open file\n!");return;}printf("Input the book name: ");gets(bookname); /*输入图书名*/ClrScr();while(!feof(fp))/*查询图书资料*/{fread(&consultbook,sizeof(Book),1,fp);if(strcmp(,bookname)==0){if(consultbook.yes==0)/*图书已经借出的判断*/{consultbook.yes=1;/*作图书未借书标志,表示已还书*/strcpy(consultbook.person,"");fseek(fp,-1L*sizeof(Book),1);fwrite(&consultbook,sizeof(Book),1,fp);gotoxy(2,3);printf("Return book succ!");flag=1;break;}}}if(flag!=1)printf("Return fail!\n");fclose(fp);}/*清除屏幕*/void ClrScr(){int i,j;puttext(2,3,78,23,c);/*刚开始已经用gettext把蓝色的一块地方保存下来,现在再还原*/ gotoxy(2,3);}/*会员注册*/void MemberAdd(){FILE *fp;Member consultmember;fp=fopen("member.txt","rb");if(fp==NULL)/*如果没会员就新建*/fp=fopen("member.txt","wb");else/*如果有会员就添加*/{fclose(fp);fp=fopen("member.txt","ab");/*追加方式打开*/}ClrScr();gotoxy(2,3);printf("Intput new member name: ");/*逐个输入会员的资料*/ gets();gotoxy(2,4);printf("Input member sex: ");gets(consultmember.sex);gotoxy(2,5);printf("Please input member age: ");scanf("%d%*c",&consultmember.age);fwrite(&consultmember,sizeof(Member),1,fp);/*写入记录*/ fclose(fp);ClrScr();}/*查询会员*/void MemberConsult(){FILE *fp;Member consultmember;char membername[20];int flag=0;ClrScr();gotoxy(2,3);printf("Input the member name: ");/*输入要查询的会员名*/ gets(membername);fp=fopen("member.txt","rb");if(fp==NULL)/*没找到文件*/{ClrScr();gotoxy(2,3);printf("Error!");fclose(fp);return;}while(!feof(fp))/*查询会员资料*/{fread(&consultmember,sizeof(Member),1,fp);if(strcmp(,membername)==0)/*比较*/{ClrScr();gotoxy(2,3);printf("This member %s information as follow:",); gotoxy(2,4);printf("This member'sex is %s",consultmember.sex);gotoxy(2,5);printf("This member 's age is %d",consultmember.age);flag=1;break;}}if(flag==0){ClrScr();gotoxy(2,3);printf("No found this member!");}fclose(fp);}/*删除会员资料*/void MemberDel(){FILE *fp;Member *head,*p,*q;char membername[20];fp=fopen("member.txt","rb");if(fp==NULL)/*没找到文件*/{gotoxy(2,3);printf("Error!");fclose(fp);return;}head=p=q=(Member*)malloc(sizeof(Member));/*将文件内容放入链表*/ fread(p,sizeof(Member),1,fp);while(!feof(fp)){q=p;p=(Member*)malloc(sizeof(Member));fread(p,sizeof(Member),1,fp);/*读记录*/q->next=p;/*链入到链表的尾部*/}p->next=NULL;fclose(fp);ClrScr();printf("Input the member name: ");/*输入会员名*/gets(membername);p=head;while(p!=NULL)/*按名字查找要删除的书*/{if(strcmp(p->name,membername)==0)/*查找会员*/{if(p==head)head=head->next;/*如果是第一条记录*/elseq->next=p->next;/*不是第一条记录*/break;}q=p; /*没找到,则指针后移继续找*/p=p->next;}fp=fopen("member.txt","wb");/*删除后重新保存*/while(head!=NULL){fwrite(head,sizeof(Member),1,fp);/*块写*/head=head->next;}fclose(fp);ClrScr();}/*查询会员所借的图书*/void MemberBook(){FILE *fp;Book consultbook;Member consultmember;char bookname[20],membername[20];int flag=0,mflag=0,i=0;ClrScr();gotoxy(2,3);printf("Input the mermber name: ");/*输入会员名*/ gets(membername);if((fp=fopen("member.txt","rb"))==NULL)/*没找到文件*/ {gotoxy(3,3);printf("Cannot open file\n!");return;}elsewhile(!feof(fp))/*查询会员资料,确认会员*/{fread(&consultmember,sizeof(Member),1,fp);if(strcmp(,membername)==0){mflag=1;break;}}fclose(fp);if(mflag==0){gotoxy(2,4);printf("Not the member!");return;}ClrScr();if((fp=fopen("book.txt","rb+"))==NULL)/*没找到文件*/{gotoxy(2,3);printf("Cannot open file\n!");return;}while(!feof(fp))/*查询图书资料*/{fread(&consultbook,sizeof(Book),1,fp);gotoxy(2,3);printf("This member %s has borrowed book as follow:",membername); gotoxy(2,4);printf("********************************************");if(strcmp(consultbook.person,membername)==0)/*借阅人比较*/{gotoxy(2,5+i*4);printf("Book name is %s",);gotoxy(2,6+i*4);printf("This book num is %s",consultbook.num);gotoxy(2,7+i*4);printf("This book's price is %d",consultbook.price);printf("\n");i++;flag=1;}}if(flag!=1)。

C语言程序设计大作业--图书管理系统

C语言程序设计大作业--图书管理系统

C语言程序设计大作业设计报告一.设计方案本程序旨在用一个C语言程序实现简单的图书馆图书管理系统,程序包含平时的借书,还书,新书录入,查询功能,用简单明了的人机交互界面快速实现图书管理的目的。

二.模块说明及代码分析1.主函数:源代码:void main(){int a;printf("\n");printf("\n");printf(" ( ^_^ ) WELCOME!\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\t〉〉-------------BJTU图书管理系统--------------〈〈");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");do {printf("1.借书 2.还书 3.新书录入4.查询 0.退出");printf("\n");printf("\n");printf("\n");printf("\n");printf("请选择序号:");scanf("%d",&a);switch(a){case 1:jieshu();break;case 2:huanshu();break;case 3:xinshu();break;case 4:chaxun();break;case 0:break;default:printf("请选择正确的序号!\n");printf("\n");}}while(a!=0);printf("谢谢使用图书管理系统!\n");}主函数提供人机交互界面,让操作者选择所需的操作项目,并有退出选项。

C语言实现图书管理系统

C语言实现图书管理系统

C语言实现图书管理系统这篇文章主要为大家详细介绍了C语言实现图书管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下:目前为止跟着学校进度学习C语言大概半年左右,基础学习只学到了指针,学得非常浅。

说实话,起初对C语言的印象———只是一个学习计算机语言的敲门砖,对具体C语言如何应用等,非常迷茫。

直到大一下半学期的高级语言设计课程之后,试过dos运行的图形化界面的完整小程序,才发现C语言的魅力。

ok,废话不多说了,下面是我第二节课的作品————C语言的图书管理系统。

一个简单的小程序。

并非纯原创,是基于网络搜索到的“学生管理系统”改编而成的。

通过直接浏览、修改一个完整的代码,我的收获颇丰。

我认为这样比枯燥的学习代码更加高效、易懂、易记。

以下是几个我在修改程序时学到的对于我来说比较有用的几点:(这些可能很简单,但是我之前真的没学过(⊙﹏⊙)b )1.DOS界面的颜色设置(背景、字体颜色)color [attr]下面是颜色代码:(如color fc 为亮白色产生亮红色,第一个背景,第二个前景)0 = 黑色8 = 灰色1 = 蓝色9 = 淡蓝色2 = 绿色A = 淡绿色3 = 湖蓝色B = 淡浅绿色4 = 红色C = 淡红色5 = 紫色D = 淡紫色6 = 黄色E = 淡黄色7 = 白色F = 亮白色dos只能显示这几种基础颜色并不能自己定制其他的颜色2.字符串的比较(用于密码验证等)strcmp 是一个比较字符串的函数原型:extern int strcmp(char *s1,char * s2); 用法:#include <string.h> 功能:比较字符串s1和s2。

说明:当s1<s2时,返回值<0 当s1=s2时,返回值=0 当s1>s2时,返回值>03.C语言的文件操作定义一个代表文件的符号(指针变量)这样的形式FILE *fp打开文件的语句是fopen(文件位置,打开模式);文件位置好理解,就是文件所在的位置,例如D://test.txt打开模式有几种,r(read): 读w(write): 写a(append): 追加t(text): 文本文件,可省略不写b(banary): 二进制文件+: 读和写一般是rt+,也可以写成r+,和w+,就是读和写,能保留原来的内容。

C语言课程设计-图书信息管理系统设计

C语言课程设计-图书信息管理系统设计

图书信息管理系统设计一、【要求】图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

设计一图书信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)图书信息录入功能(3)图书信息浏览功能(4)图书信息查询功能(5)图书信息的删除与修改功能二、【各功能模块】1、菜单模块《1》、主函数:建立menu( )void main(){menu();}void menu(){int a;do{printf(” ******赵毅******\n”);printf("\n”);printf(”******中国地质大学******\n”);printf("\n");printf(”\n\n\n\n\n\t\t\t\t图书信息管理系统\t\t\t\t\n”);printf("\t\t********************************************\n");printf(”\t\t\t1 ———--—----—-—-——图书信息录入\n”);printf("\t\t\t2 -—-—-———-—-———-—图书信息浏览\n”);printf(”\t\t\t3 -——-—-——-——-——--图书信息查询\n");printf("\t\t\t4 ——--—-—--——-———-图书信息删除\n”);printf("\t\t\t5 ——————-—-—--—-——图书信息修改\n”);printf(”\t\t\t6 --——-———--——--——图书信息追加\n”);printf(”\t\t\t0 ——--—---—--——---退出图书信息系统\n”);printf("\t\t********************************************\n”);printf(”\t\tplease choose:”);scanf("%d",&a);switch(a){case 1:input();break;case 2:list();break;case 3:search();break;case 4:del();break;case 5:revise();break;case 6:append();break;case 0:exit(0);default:printf(”\n序号不对\n”);}}while(a!=0);}【定义图书信息结构体】#include<stdio。

图书馆管理系统(C语言程序设计)

图书管理系统/*图书数据由编号、书名、出版社、单价和图书状态(库存用0表示或借出用读者编号表示),读者数据由编号、姓名和电话号码构成。

实现功能包括:(1)添加图书的记录(2)图书管理(借书和还书)(3)对图书数据排序(按单价的降序)(4)删除图书记录(5)修改图书记录(6)添加读者记录(7)输出图书信息表和读者信息表*#include <stdio.h>#include <string.h>#include <stdlib.h>#include <windows.h>/*函数的声明*/void bookname();void writername();void booknumber();void press();void bookdate();void Bfind(); //查询主菜单void Bdevise(); //修改函数void Badd(); //添加函数void Bdelete(); //删除函数void Bdisplay(); //显示所以已保存的图书信息函数void Bclean(); //清除所有图书信息函数void lendbook(); // 借书函数void returnbook(); //还书函数void lendorreturnbook();//借书或还书主菜单函数void appealkey();//用户密码申诉函数void devisepeoplekey();//修改用户密码函数void accountapply(); //用户申请账户函数void addpeopleaccount(); //管理员之添加用户帐号函数void addmanageaccount(); //管理员之添加管理员账号函数void addaccount(); //管理员之账户添加主菜单函数void devisepeopleaccount();//管理员之修改用户账号函数void devisemanageaccount();//管理员之修改管理员帐号函数void deviseaccount();//管理员之修改账号主菜单函数void deletepeopleaccount();//管理员之删除用户账号函数void deletemanageaccount();//管理员之删除管理员账号函数void deleteaccount();//管理员之删除账号主菜单函数void displayallpeopleaccounts();//显示所有用户信息函数void displayallmanageaccounts();//显示所有管理员信息函数void displayallaccountsmessage();//显示所有账号信息主菜单函数void highaddpeopleaccount(); //高级管理员添加用户账户函数void highaddmanageaccount(); //高级管理员添加管理员账户函数void highaddaccount(); //高级管理员之添加账户主菜单函数void booksmanage();//图书操作主菜单函数void accountsmanage();//管理员账号操作主菜单函数void highaccountsmanage();//高级管理员账号操作主菜单函数void menu1(); //用户之查询主菜单void menu2(); //管理员之查询主菜单void menu3(); //高级管理员之查询主菜单/*定义书的类型*/struct book{int bookstock; //库存量char bookname[20]; //书名char bookwriter[20]; //作者char booknumber[20]; //书号char press[20]; //出版社char bookdate[20]; //出版日期char price[20]; //出版价格int turefalse; //判断图书是否被借阅}books[20];/*定义用户类型*/struct peopleaccount{char pname[20];char pkey[20];}peopleaccounts[20];/*定义管理员类型*/struct manageaccount{char mname[20];char mkey[20];}manageaccounts[20];/*定义借书卡类型*/struct card{char cardnumber[20]; //借书卡号和用户信息一起写入yonghu.txt文件中的}cards[20];/*定义文件指针变量*/FILE *fp1; //fp1打开用户信息文件FILE *fp2; //fp2打开管理员信息文件FILE *fp3; //fp3打开图书信息文件FILE *fp4; //打开借还书记录的文件FILE *fpa; //fpa是临时文件指针/*改变输出的字体颜色*/void color(const unsigned short color1){if(color1>=0&&color1<=15)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color1);/*仅限改变0-15的颜色;如果在0-15那么实现他的颜色因为如果超过15后面的改变的是文本背景色。

基于C语言的图书管理系统


1图书管理系统和开发环境简介
进 行代码 编写和功能的实现,最后进行测试和 的功能实现出发,测试主要功能的实现 。白盒 功 能的分 析,完成一个应用系统的整体设计工 测 试需要了解程序的逻辑结构 ,对程序 的各种
随 着 社 会 主 义 经 济 的 发 展 , 各 种 信 息 管 程 , 需 要 用 到 c 语 言 中 的 算 法 , 功 能 通 过 函 通 路结构和基本算法都要了解 ,来检测 图书管
展迅速 ,图书馆 的馆藏量也在不断的加大 ,图
根 据系 统分 析功 能 的需求 制定 图书 管理 护 。 随着 信 息 化 时 代 的 到 来 , 运 用 互 联 网 技 术
书管理系统可 以代替 图书管理员大部分 的工作 系统的总体设计 ,采用 自顶向下的层次化 的模 进行对 日常工 作的 管理 是今后 业务 发展 的潮
格按照编程 的标准 要求 自己,在 复杂的函数结 构 上 加 注 释 ,有 利 于 后 期 管 理 人 员 的维 护 。
代 码测 试通 过两 种方 式来 实现 ,黑 盒测
析 ,从 图 书 管 理 系 统 目标 的 建 立 、需 求 分 析 、 试 , 不考 虑 程序 的 语 法 结 构 , 从 图 书 管 理 系 统
来说 ,计算机系统 实现对 图书的管理功能,代 对 于 缺 失 和 淘 汰 的 图书 进 行信 息 的删 除 ; 修 改 确 保 图 书 管 理 系 统 的 正 常 投 入 使 用 。
替人工管理 ,使得 图书管 理变得 规范化和严谨 功能 ,对 图书馆 图书信 息进 行修 改;借阅功能, 5结语 化 ,避 免 了很 多 因 人 工操 作而 带 来 的 不 必 要 的 通过 系统实现 自主借 阅功 能,并且能查阅相关

图书管理系统代码(C语言)

图书管理系统代码(c语言)#include〈stdio. h>#include〈stdlib・ h>#include〈string・ h>struct book{int num;char bname[50];char wname[20];char press[50^;char sort[50]:int time;float price;struct book *next;};struct book *creatbook() ; //创建链表struct book * addbook (structbook *head) ; //添加图书int yanzheng(struct book *head, int m) ; //验证新添加的图书编码是否已存在void deletebook (struct book *head) ; //删除图书void fprint (struct book *head) : //将链表写入文件struct book *load() ; // 从文件中读取信息并建成链表void print_book(struct book *head) : //将链表信息输出void chaxun(struct book *head) ; //查询图书信息void num_chaxun(struct book *head) ; //按图书编号查询图书void wname_chaxun(struct book *head) ; //按作者名查询图书voidsort_chaxun(struct book *head) ; //按类另lj查询图书void time_chaxun(structbook *head) ; //按出版时间查询图书void bname_chaxun(struct book *head); //按图书名査询图书void xiugai (struct book *head); //修改图书信息void paixu(struct book *head) ; //对图书进行排序void num_paixu(struct book ♦head); 〃按图书编号排序void time_paixu(struct book *head) ; //按图书出版时间排序void price_paixu(struct book *head): //按图书价格排序void bname_paixu(struct book *head) ; //按图书名排序void wname_paixu(struct book *head) ; //按作者名排序int main()int choice, n, x, y=l, c, cl=123456;char a, d, b[10], bl[10]="201102520116";struct book *head=NULL;while(y){system("cis");printf ("\n\n\n\n\n\n\n");printf (z ********** 欢迎光临**********\n\n,z);printf (,z ********************** 图书信息管理系统printf C\n\n');printf C ™=_1—用户登录=_==\十);二二二二二二二二二二二二0-退出系统二二二二二二二二二二二\『);printf Cprintf f请输入您的选择「);scanf (,z%d,z, &n);printf("\n");getchar ();switch(n) {case 0:y 二0;break;case 1:printf C请输入您的用户名:〃);gets(b);printf C\n");printf C请输入您的密码:“);scanf("%d", &c);printf("\n");if(strcmp(b, bl)!=0 |c!=cl){printf C验证失败,请重新输入!\n〃);scanf &d);getchar ();system("cls");}else {printf ("验证通过!请按Enter键进入!\n"); scanf("%c", &d);getchar ();x二1;while(x){ system("cis");printf C --------------------- \n"); printff *图书信息管理系统*\n 〃); printf C --------------------- \n\rT); • I • '.I"■、』•-1"• I • '.I" ■、』•-1"■、/• I • '.I" ■、』•-1"■、/• I • '.I" ■、』•-1"■、/• I • '.I" ■、』•-1" ■、/ • I • '.I" \ \1 •viw vaw vVw vTw vVwvaw vgW viw vaw vVw vTw vVwvaw vgW viw vaw vVw vTw vVwvaw vgW viw vaw vVw vTw vVwvaw vgW viw vaw vVw vTw vVw vaw vgW viw vaw vVw vTw viw »Tw 、『(、『]•、.• \ \ 1 • viw viw vaw vTw viw viw viw viw vTW viwvaw vaw viw viw viw viw vTW viw vaw vaw viw viw viw viw vTW viw vaw vaw viw viw viw viw vTW viw vaw vaw viw viw viw viw vTW viw vaw vaw viw »Tw•”f.・•工・•」・• —I" ■、尸■、■•■、丿•工・•」・• —I"■、尸■、■•■、丿•工・•」・• —I"■、尸■、■•■、丿•工・•」・• —I" ■、尸■、■• ■、丿•工・•」・• —I"■、尸■、■• ■、丿•工・•」・• —I"■、,\ \1 •VBW VIW VIW VSW VBW VCW VIW VIW VIW VIW VBW VBW vYw VIW VIW VIW VIW VBW VBW vYwVIW VIW VIW VIW VBW VBW vYw V IW VIW VIW VIW VBW VBW vYwVIW VIW VIW VIW VBW VIW»Tw 、『(、[]• (_•・.l ・■、』•工・•丄• •」•• •丄••丄• •■l ・■、』•工・•丄• •」•• •丄••丄• •■1・■、』•工・•丄• •」•• •丄• •丄• •■1・■、』•工・•丄••」•• •丄••丄• •■1・■、』•工・•丄• •」•• •丄• •丄•■、』•工・•丄• •」.• \ \ 1 •v^w viw vaw vTw vawv^w viw vaw vaw vawv^w viw vaw vaw vawv^w viw vaw vaw vawv^w viw vaw vaw vawv^w viw vaw viw ^«w | I 、了]printf C 请输入所选择的序号:〃); scanf("%d", &choice); getchar (); system("cls"); switch(choice) case 0: x=0;break; case 1: head=load(); if (head=NULL) {printf C 文件为空,请先录入数据! \n 〃); getchar (); break; } else {head=addbook(head); printf ("添加成功! \n");printff 是否将新信息保存到文件?(y/n)\n 〃); scanf&a);printf (”II 1-添加图书 2-删除图书I\n\n");printf (" II 3-图书列表 4-图书排序 I \n\rT); printf (“II 3-查询图书 6-修改图书 I \n\rT); printf (“ II 7-录入数据 0-退岀系统 I \n\rT);printf Cprintf (”printf ("printf (”getchar ();switch(a){case , n,:break;case ' y‘ :fprint(head);printf ("保存成功! \n");getchar ();break;}break;}case 2:head=load();if (head=NULL) {printf C文件为空,请先录入数据! \n〃);getchar ();break;}else{deletebook(head);getchar ();break;}break;case 3:head=load();辻(head==NULL){printf ("文件为空,请先录入数据!\n");getchar ();break;}else{print_book(head);getchar ();break;}case 4:head二load ();辻(head==NULL) {printf ("文件为空,请先录入数据! \『);getchar ();break;}else{paixu (head);getchar ();}break;case 5:head二load ();辻(head==NULL){printf ("文件为空,请先录入数据!\n");getchar ();break;}else{chaxun(head);getchar ();}break;case 6:head=load();辻(head二二NULL){printf C文件为空,请先录入数据!\n");getchar ();break;}else {xiugai(head);getchar ();break;}break;case 7:printf (〃注意:输入图书编码为0时结束! \rT);head=creatbook ();printf r是否将输入的信息保存到文件以覆盖文件中已存在的信息?(y/n)\n");getchar ();scanf (“%c", &a);getchar ();switch(a){case ' n :break;case ' y‘ :fprint(head);printf ("保存成功! \n");getchar ();break;}break;default:printff您的输入有误,请重新输入! \n〃);getchar ();break;}}}break;default:printf("您的输入有误!请重新输入!\n〃);getchar ();break;}}}//录入数据并形成链表struct book *creatbook() {struct book *head, *tail, *p;int num, time, n;char bname[50], wname[20], press[50],sort[50];float price; int size=sizeof(struct book): head二tail二NULL; printfC请输入图书编号:〃);scanf&num);printff请输入图书名:〃);scanfbname);getchar ();printff请输入作者名:〃);scanf wname);getchar ();printfC请输入出版社:“);scanfpress);getchar ();printfC请输入类别:“);scanf (〃%s: sort);getchar ();printfC请输入出版时间:“);scanf&time);getchar ();printf ("请输入价格:");scanf("%f", &price);getchar ();while(l) {p= (struct book *)malloc(size);p->num=num;strcpy(p->bname, bname);strcpy(p->wname, wname);strcpy(p->press,press);strcpy(p->sort, sort);p->time二time;p->price=price;p->next二NULL;if (head=NULL)head二p;elsetail-〉next二p;tail=p;do{printff请输入图书编号:〃);scanf&num);n=yanzheng(head, num);辻(n=0)break;elseprintff您输入的编号已存在,请重新输入! \n〃); }while(1);if(num==0) break;else printfC请输入图书名:〃);scanfbname);getchar ();printff请输入作者名:〃);scanf wname);getchar ();printff请输入出版社:“);scanfpress);getchar ();printfC请输入类别:");scanfsort);getchar ();printfC请输入出版时间:”); scanf ("%d", &time);getchar ();printf ("请输入价格:”);scanf("%f", &price);getchar ();}}return head;}〃插入结点,并且插入后仍按一定顺序struct book *addbook (struct book *head) struct book *ptr, *pl, *p2, *p;char bname[50], wname[20], press[50_, sort[50];int size=sizeof(struct book):int num, time, n=l:float price;do{printff请输入图书编号:“);scanf&num);n=yanzheng(head, num);if (n=0)break;elseprintf (〃您输入的编号已存在,请重新输入! \n〃);}while(1);printf C请输入图书名:〃);scanfbname);getchar ();printf r请输入作者名:〃);scanf wname);getchar ();printf C请输入出版社:〃);scanfpress);getchar ();printfC请输入类别:〃);scanf(〃%s〃, sort);getchar ();printfC请输入出版时间:“);scanf &time);getchar ();printf ("请输入价格:”);scanf("%f", &price);getchar ();p= (struct book *)malloc(size);p->num=num;strcpy (p~>bname, bname);strcpy(p->wname, wname);strcpy (p->press, press);strcpy (p->sort, sort);p->time=time;p->price=price;p2=head;Ptr=p;while((ptr->num>p2->num)&&(p2-〉next!=NULL)){pl二p2;p2二p2-〉next;}if(ptr->num<=p2->num){if (head=p2)head二ptr;else {pl->next=ptr;p->next=p2;}}else {p2->next=ptr;p->next二NULL;}return head;}//验证添加的图书编号是否已存在int yanzheng(struct book *head, int m) {struct book *p;p=head;while(p!=NULL){if (p-'nunFp)break;p=p->next;}辻(p二二NULL)return 0;elsereturn 1;}//将新链表写入文件中void fprint (struct book *head){FILE *f p;char ch二'1’ ;struct book *pl;if ((fp 二 f open ("fl. txt", "w"))=NULL) {printf (,z File open error!\n z/):exit(0);}fputc(ch, fp);for(pl二head;pl;pl二pl->next) {fprintf (fp,,z%d %s %s %s %s %d %f\n,z, pl->num, pl->bname, pl->wname, pl->press,pl-〉sort,pl-〉time, pl-〉price);}fclose (fp);}//从文件中读取图书信息struct book *load()FILE *fp;char ch;struct book *head,*tail,*pl:head二tail二NULL;if ((fp 二 f open ("fl. txt", "r"))=NULL) {printf (,z File open error!\n z/):exit(O);}ch=fgetc (fp);辻(ch='l'){while(!feof(fp)) {pl=(struct book *)malloc(sizeof(struct book)):fscanf (fp, z,%d%s%s%s%s%d%f\n, &pl->num, pl->bname, pl->wname, pl- >press,pl-〉sort, &pl-〉time, &pl->price);辻(head二二NULL)head=pl;elsetail->next=pl;tail=pl;}tail-〉next二NULL;fclose (fp);return head;}elsereturn NULL;}〃将整个链表的信息输出void print_book(struct book *head) {struct book *ptr;辻(head=NULL) {printf ("\n 没有信息!\n");return;}printf r图书信息列表如下\n);printf C============================+)printfC编号图书名作者名出版社类别出版时间价格\n〃);for(ptr=head;ptr;ptr=ptr->next)printf (,z %d %s %s %s %s %d%・ 2f\n z/, ptr->num, ptr->bname, ptr->wname, ptr-〉press, ptr-〉sort, ptr->time, ptr-〉price);}printf CW);}//删除图书信息void deletebook(struct book *head) {int a;char b, ch二'1’ ;struct book *pl,*p2;FILE *fp;printff请输入要删除的图书编号:〃);scanf&a);pl=head;if (pl->num~a&&pl->next==NULL) { //对于文件中只有一组数据printfC是否清空文件!(y/n)\『);getchar ();scanf&b);getchar ();switch (b) {case ' n :break;case ' y‘ :if ((fp 二 f open ("fl. txt", "w"))=NULL) {printf (,z File open error!\n z,):exit(O);}fclose (fp);printf C文件已清空! \rT);}}else {while (pl->num!二a&&pl-〉next!二NULL) {p2二pl;pl=pl->next;}if (pl->next=NULL) {if (pl->num==a){p2-〉next二NULL;printfC是否确定从文件中彻底删除该图书?(y/n)\n,z); getchar ();scanf&b);switch (b) {case ' n :break;case ' y‘ :fprint(head);printf ("删除成功!\n");getchar ();break;}}else {printf (〃没有找到要删除的数据! \『);getchar ();}}else if(pl==head) {head=pl~>next:printf("是否确定从文件中彻底删除该图书?(y/n)\n"); getchar (); scanf &b);switch(b){case ' n :break;case ' y‘ :fprint (head);PrintfC 删除成功!\n〃);getchar ():break;}}else{p2-〉next二pl->next;printf("是否确定从文件中彻底删除该图书?(y/n)\n"); getchar ();scanf ("%c", &b);switch (b) { case ' n': break;case ' y,:fprint(head);printf ("删除成功!\n");getchar ();break;}}}}〃图书查询void chaxun(struct book *head) {int a;printf(”============================\n)printf C ** 1-按图书编号查询2-按图书名查询和<\『);printf (,z ** 3-按图书类别查询4-按作者名查询和<\n〃);printf C ** 5-按出版时间査询0-退出查询**\n");printf C============================\n );printf C请输入所选择的编号:〃);scanf&a);getchar ();switch(a){case 0:break;case 1:num_chaxun(head); break;case 2:bname_chaxun(head); break;case 3:sort_chaxun(head); break;case 4:wname_chaxun(head); break;case 5:t ime_chaxun(head); break;default:printf ("您的输入有误! \n"); break;}//按编号查询图书信息void num_chaxun(struct book *head){int a;struct book *p;printff请选择您要查询的图书编号:〃); scanf&a);getchar ();p二head;while(p!=NULL){if (p->num==a)break;p=p->next;}辻(p二二NULL){printfC没有找到该编号的图书!\n〃);}else {printfC你所查询的图书信息如下\n〃); printf C二二二\『);printfC * *编号图书名作者名岀版社类别岀版时间}价格**\n9 ;printf("** %d %s %s %s %s %d %. 2fp->num, p->bname, p->wname, p->press, p->sort, p->time, p->price); printf C=\n〃);}}〃按图书名查询图书信息void bname_chaxun(struct book *head) {char a[50];int flag=0;struct book *p;printf (〃请选择您要查询的图书名:〃);gets (a);p=head;while(p!=NULL){if (strcmp(p->bname, a)==0){flag=l;break;p=p->next; }}辻(flag=O) {printff没有找到该图书名的图书!\n〃);}else {printf(〃你所查询的图书信息如下\n〃);printf C二二二\『);printf (〃桂编号图书名作者名出版社类别出版时间价格桂\n〃);while(p!=NULL){if(strcmp(p->bname, a)==0){printf("** %d %s %s %s %s %d %. 2f**\n,z, p->num, p->bname, p->wname, p->press, p->sort, p->time, p->price); }p=p->next;}printf C}===\n,z); }〃按作者名查询图书信息void wname_chaxun(struct book *head) { char a[50];int flag^O;struct book *p;printff请选择您要查询的图书作者名:〃); gets (a);p二head;while(p!=NULL){if (strcmp (p->wname, a) ==0) {flag=l;break;}p=p->next;}if(flag=0) {printff没有找到该图书名的图书!\n〃);}printf Celse {printfC你所查询的图书信息如下\n〃);printf C=\n〃);printfC **编号图书名作者名出版社类别出版时间价格while(p!=NULL){if (strcmp (p->wname, a) ==0) {printf("** %d %s %s %s %s %d %. 2fp->num, p->bname, p->wname, p->press, p->sort, p->time, p->price); flag=l;}p=p->next;}printf C=\n〃);}}〃按图书类别查询图书信息void sort_chaxun(struct book *head) {char a[50];int flag=0;struct book *p;printf C请选择您要查询的图书类别:〃);gets (a);p=head;while(p!=NULL){if(strcmp(p->sort, a)==0) {flag=l;break;}p二p->next;}辻(flag=O) {printff没有找到该图书名的图书!\n〃);}else {printf ("你所查询的图书信息如下\n〃);printf C=\『);printf (,z **编号图书名作者名出版社类别出版时间价格杯\n"); while(p!=NULL){if(strcmp(p->sort, a)==0) {printf C** %d %s %s %s %s %d %. 2f**\n,z, p->num, p->bname, p->wname, p->press, p->sort, p->time, p->price); flag=l;}p=p->next;}printf C=\『);}}〃按图书出版时间查询图书信息void time^chaxun(struct book *head) {int a,flag=0;struct book *p;printf r请选择您要查询的图书出版时间:〃);scanf("%d", &a);getchar ();p=head;while(p!=NULL){if (p->time==a) {flag=l;}break; }p=p->next;}if(flag=O) {printff没有找到该图书名的图书!\n〃);}else {printff你所查询的图书信息如下\n〃);printf(”=\n");printf (〃桂编号图书名作者名出版社类别出版时间价格while(p!=NULL){if(p->time==a){printf("** %d %s %s %s %s %d %. 2fp->num, p->bname, p->wname, p->press, p-〉sort, p->time, p-〉price);flag=l;}p二p-〉next;printf("}=\n");}}//修改图书信息void xiugai(struct book *head) {int a, b;char c;struct book *p;printfC请输入要修改的图书编号:〃);scanf&a);p=head;while(p!=NULL){if (p->num==a)break;p=p->next;}if(p二二NULL){printfC没有找到该编号的图书!\n〃); getchar ();}else {printf CW);printf r ** 1-编号2-图书名3-作者名printf C ** 4-出版社5-类别6-出版时间*水\n");printf C ** 7-价格8-修改全部0-放弃修改**\n");printf C============================\n");printf C请选择你要修改的信息编号:〃);scanf&b);getchar ();switch (b) {case 1:printf r请输入新编号:“);scanf&p->num);printf ("修改成功! \n");getchar ();break;case 2:printf r请输入新图书名:“);gets (p->bname);printf ("修改成功! \n");break;case 3:printff请输入新作者名:“);gets(p->wname);printf ("修改成功!\n"); break;case 4:printf r请输入新出版社:”);gets(p->press);printf ("修改成功! \n"); break;case 5:printf r请输入新类别:”);gets(p->sort);printf ("修改成功! \n"); break;case 6:printf r请输入新出版时间:“); scanf&p~>time);printf ("修改成功!\n"); getchar ();break;case 7:printf r请输入新价格:“); scanf ("%f", &p->price); printf ("修改成功! \n");getchar ();break;case 8:printf r请输入新图书编号:“);scanf&p->num);printf C请输入新图书名:“);scanf p->bname);getchar ();printf C请输入新作者名:“);scanf p->wname);getchar ();printf r请输入新出版社:”);scanfp->press);getchar ();printf r请输入新类别:“);scanf(〃%s: p->sort);getchar ();printf r请输入新出版时间:“);scanf&p->time);getchar ();printf r请输入新价格:〃);scanf ("%f", &p->price);getchar ();printf ("修改成功! \n");getchar ();break;case 0:break;default :printf C您的输入有误! \n");break;}printf C是否将修改后的信息保存到文件中?(y/n)\rT); scanf&c):getchar ();switch (c) {case ' n :break;case ,y‘ :fprint(head);printf ("保存成功!\n");getchar ();break;}}}〃图书排序void paixu(struct book *head) {int a;printf(”\ 〃 \\ > .----------------------------------------------------------------------- \n 丿, printf r ** 1-按图书编号排序2-按出版时间排序**\n");printf C ** 3-按图书价格排序4-按图书名排序**\n z/);printf C ** 5-按作者名排序0-取消排序操作材\n");printf (”___________________________________________________________________ \〃\ . \AX / f printf C请输入您选择的编号:〃);scanf("%d", &a);getchar ();switch(a){case 0:break;case 1:num_paixu(head); break;case 2:time_paixu(head);break;case 3:price_paixu(head);break;case 4:bname_paixu(head);break;case 5:wname_paixu(head);break;default:printf C您的输入有误! \n");break;}}〃按图书编号排序void num_paixu(struct book *head) {struct book *a[1000], *p, *pl, *temp; int i, k, index, n=0;for(p=head;p;p=p->next)n++;。

C语言-图书管理系统

图书借阅管理系统1.课程设计的目的我这次做的系统是图书借阅管理系统,主要目的是利用本系统来管理图书的借阅问题,以实现图书借阅的快捷化、规范化、自动化来提高工作效率。

系统以实用性,通用、开放和安全的原则。

使用数据库开发软件开发制作,实现了图书借阅信息的管理,借阅图书的信息自动化添加,借阅者的个人基本信息,借阅的基本信息,对各种图书的分类管理以及各种新书的添加等一些繁琐事项。

更好的管理好图书的借阅问题。

大大的减少了人工的工作量,比以往很大程度上提高了工作人员的工作效率。

使之成为图书馆的一个平台,成为真正的现代化科技。

为了充分利用学院现有的计算机硬件资源,做好图书借阅管理工作,提高办事效率, 实现全面的、相对集中的办公自动化,开发本系统就成了当务之急,其目的主要为了彻底改变这种繁杂的管理模式,实现全面的、相对集中的、智能化的信息综合管理,为图书馆的管理工作带来方便。

我想借本次课程设计之际,开发一个适用于通用大规模图书馆的管理系统,采用现学习的C++6. 0开发工具开发出来的基于Windows系列的图书借阅管理系统。

该系统面向所有的在校学生,实现对学生个人的借书、学生的基本信息情况等的计算机管理。

系统支持工作人员对学生图书借阅信息、图书馆新书的添加、旧书的信息修改、删除等操作,确保了数据库的安全性快捷性和一致性。

2.设计方案论证2.1主界面设计思路本次设计这个系统利用于图书馆的图书借阅管理,该系统相比以往人工的记录方式减少了很多不比要得麻烦,大大的提高了图书馆工作人员的工作效率。

这次系统的开发制作主要包括以下几个方面。

书籍统计可以查询图书的名称、作者、序号等信息,以及是否借出去了。

书籍管理可以把新书添加到系统当中,修改书籍的详细资料等。

注册会员功能,借阅书籍的学生必须注册会员才可以借书,通过注册会员来添加该学生的基本信息。

通过系统来办理借书手续以记录该学生的借书信息。

学生借书模块能够查询借阅学生的信息和该学生的借书的信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第21章
图书管理系统开发实例
前面的章节系统地介绍了C语言的基本概念和重要知识点, 并通过大量的范例来实现演示它们的使用方法和特性。 为了使读者能够掌握C语言开发的基本步骤和熟练使用C 语言的一些特性,下面以图书管理系统为例来介绍的应 用程序开发过程。
北京源智天下科技有限公司
联系方式:
21.2
系统设计
系统设计阶段可以理解为程序的概要设计,需要完成对系统 结构的分析和设计,以及设计系统需要的主要数据结构 。本小节将基于需求分析的结果,依次讨论了图书管理 系统的系统架构和数据类型。
北京源智天下科技有限公司
联系方式:
21.2.1
系统架构
根据需求分析的结果,本系统至少要分为以下几个模块: main函数模块、用户界面管理模块、数据管理模块和历 史日志模块。其中: main函数模块的主要功能为提供程序入口、前期环境设置 、调用主要的执行函数和程序结束前的数据处理。
北京源智天下科技有限公司
联系方式:
21.4.7
编写menu_search函数:输出搜索书 籍的二级菜单
menu_search函数与menu_delete函数类似。它提供了搜 索书籍的交互界面。同样地,本系统提供了多种搜索书 籍的功能,包括按照书名搜索、按作者搜索、按出版社 搜索等,因此本函数需要提供二级菜单,以供用户选择 ;同样地,提供二级菜单后,需要提供一个选择结构以 触发数据管理模块中的各种相应搜索操作;最后,同样 要提供日志记录和回到本级目录的功能。由于本函数功 能和逻辑都与menu_search类似,由于篇幅限制,在此 不多做介绍。
北京源智天下科技有限公司
联系方式:
21.4.6
编写menu_delete函数:输出删除书 籍的二级菜单
menu_delete函数提供了删除书籍的交互界面。本系统提供 了多种删除书籍的功能,包括按照书名删除、按作者删 除、按出版社删除等,因此本函数需要提供二级菜单, 以供用户选择;与menu_main函数类似,提供二级菜单 后,需要提供一个选择结构以触发数据管理模块中的各 种相应删除操作;最后,同样要提供日志记录和回到本 级目录的功能。
北京源智天下科技有限公司
联系方式:
21.4.1
程序流程
将以上本模块的功能具体化并整理为如下: (1)进入用户界面模块(其方式为在main函数中调用该模 块的主菜单)。 (2)打印出主菜单,要求含有系统名称和第一级菜单,该 第一级菜单的内容要求包括主要的功能选择:增加书籍 、删除书籍、搜索书籍、批量删除、高级搜索和退出。 (3)提示用户根据菜单选择要执行的功能。 (4)进入选择的功能模块;如果该功能模块又含有多个选 择,要求输出下一级菜单。所有的下层菜单选项中,要 求都含有返回上级菜单的选项。
联系方式:
21.2.2
数据结构
本图书管理系统的核心数据对象是书籍。书籍信息中包含很 多信息,包括:书名、作者、出版社、出版日期、入库 日期、入库编号和页数等。因此,处理书籍信息的数据 类型必须为结构体,将其命名为BookInfor。其中,书名 、作者和出版社的数据类型为字符数组;入库编号和页 数选择使用整型;而出版日期和入库日期由于包含年、 月、日信息,因此需要使用另一个结构体,将其命名为 TimeInfor。
北京源智天下科技有限公司
联系方式:
21.2.2
数据结构
年份的值可以处理为4位整数,可以存储在16位二进制数中 ;月份和日子都可以处理为2位整数,都可以存储在8位 二进制数中:因此,可以将时间数据类型TimeInfor处理 为位域类型,声明如下: 01 typedef struct { 02 unsigned year : 16; /* 年*/ 03 unsigned month : 8; /* 月*/ 04 unsigned day : 8; /* 日*/ 05 } TimeInfor; /* 时间信息类型*/
北京源智天下科技有限公司
联系方式:
21.4.3
编写menu_main函数:打印主界面和 第一级菜单
menu_main函数分为两部分,第一部分为主菜单内容,第 二部分为输入选择,第三部分为根据选择触发对应的选 项。
北京源智天下科技有限公司
联系方式:
用户界面管理模块主要提供用户交互界面,并在用户选择命 令后触发相应模块。
北京源智天下科技有限公司
联系方式:
21.2.1
系统架构
数据管理模块的功能为本系统的核心模块,提供所有对书籍 数据的操作请求的处理,包括增加书籍、删除书籍、搜 索书籍、批量删除书籍、高级搜索书籍等等。 历史日志模块主要提供用户行为记录、系统信息记录、异常 信息记录等功能。
北京源智天下科技有限公司
联系方式:
21.2.2
数据结构
本系统中的书籍数据是大批量数据,因此需要选择使 用数组或者链表保存书籍数据。考虑到图书管理系 统会很频繁地访问书籍信息,而增加和删除的操作 相对较少,因此选择使用数组来保存。而又由于书 籍数目是不可预期的,因此最好使用动态数组来处 理数据。 注意:数据结构要考虑时间复杂度和空间复杂度,同 时还要考虑实现的复杂度。
北京源智天下科技有限公司
联系方式:
21.4.1
程序流程
根据以上功能要求的描述设计出本系统的菜单导航示意图如 下图所示。该图同时也是本模块主要函数以及函数间调 用的程序流程图。
北京源智天下科技有限公司
联系方式:
21.4.2
代码实现
用户界面模块功能的代码实现都包含在menu.c文件中, menu.h文件包含了menu.c文件的接口信息。menu.c中 需要含有所有的菜单打印函数和选择命令后触发下一操 作的过程。
北京源智天下科技有限公司
联系方式:
21.4.2
代码实现
因此,menu.c文件需要包括以下函数: menu_main函数,打印主界面和第一级菜单,并选择 下一操作。 menu_add函数,打印增加书籍的二级菜单,并选择 下一操作。 menu_delete函数,输出删除书籍的二级菜单,并选 择下一操作。 menu_search函数,输出搜索书籍的二级菜单,并选 择下一操作。
联系方式:
21.4
用户界面模块
用户界面模块的主要功能为图书管理系统的使用提供一个命 令选择和导航的功能。现在流行的管理软件基本都是基 于图形界面的,C语言也可以实现图形界面,但由于篇幅 的限制,本系统只提供一个基于命令行的交互界面。具 体地讲,本系统提供的交互方式与现行的电话服务系统 类似:先列出一些以数字引导的命令选项,再由使用者 输入选项编号实现命令选择。
北京源智天下科技有限公司
联系方式:
21.4.2
代码实现
在这些函数中,除了menu_main函数会被外部调用外 ,其他函数暂时都只需要在本文件内使用,因此 menu.h文件中只需包含menu_main这个函数的声 明,同时其余函数都声明为static函数。若在以后需 要在其他文件中调用这些static函数,再回来修改它 的声明即可。 注意:把所有不允许外部使用的函数都定义为static函 数,以增强模块封装性。
北京源智天下科技有限公司
联系方式:
21.3
main模块
clean函数的作用与configure函数相对应,其负责程序结束 前的清理工作,比如清除程序中分配的堆内存等。本模 块的程序流程图如下图所示,这也就是main函数的程序 流程图。
北京源智天下科技有限公司
北京源智天下科技有限公司
联系方式:
21.4.2
代码实现
menu_batch_del函数,输出批量删除书籍的二级 菜单,并选择下一操作。 menu_advanced_sear函数,输出高级搜索书籍 的二级菜单,并选择下一操作。 menu_reload函数,输出载入书籍数据的二级菜 单,并选择下一操作。 menu_exit函数,退出操作所有二级菜单,在这里 给出提示信息,并退出程序。 menu_error函数,提示错误信息,并触发下一操 作。
21.4.4
编写menu_choice函数
此函数只在menu.c中使用,因此可声明为static函数。其功 能为从键盘输入一个大于0并且小于指定数值的整数。
北京源智天下科技有限公司
联系方式:
21.4.5
编写menu_add函数:打印增加书籍的 二级菜单,
menu_add函数提供了增加书籍的交互命令,从标准输入获 取书籍信息,并调用数据管理模块中的书籍增加函数 book_add,最后调用日志模块中的记录功能。进入 menu_main函数后,当出现图21-4后,如果选择选项1 ,则会触发memu_add函数。由于该菜单函数只在用户 界面模块中调用,并只在menu.c函数中调用,因此可以 将其定义为static函数。
21.1
需求分析
对于图书管理系统而言,其最重要的功能是管理图书,包括 增加书籍、删除书籍和查询书籍。其中,删除书籍和查 询书籍的功能又可以细化为很多功能,比如删除某一个 时间段内增加的书籍、删除某个作者的书籍、显示某个 作者的所有书籍、显示书名带某个关键字的书籍等等。 其次,需要提供一个友好的交互界面,这是用户接触到 的最直接的东西,其设计必须人性化;然后还需要一些 辅助功能,比如日志功能,它可以将所有的操作都记录 在案。实际上,一个完整的图书系统还需要包括另外两 个重要的功能:用户管理和数据库系统。由于篇幅有限 ,本系统将不考虑这两个功能。
辅助模块:全局配置模块。在这个模块中,会包含一些全局 使用的信息,比如全局变量的定义,const变量、具名常 量、枚举常量的定义等。
北京源智天下科技有限公司
联系方式:
21.2.1
系统架构
根据以上功能模块的划分,本系统的软件结构设计如下图所 示。
北京源智天下科技有限公司
北京源智天下科技有限公司
联系方式:
21.1
需求分析
相关文档
最新文档