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语言程序课程设计报告标题:图书管理系统专业:软件工程类:设计主题图书馆管理系统主要包括管理图书的库存信息,每本书的借阅信息,每个人的借阅信息。
每本书的库存信息包括数量、书名、作者、出版日期、金额、类别、总入库数量、当前库存、已借出图书数量等。
每本借书包括以下信息:编号、书名、金额、借书证号、借阅日期、到期日期、罚款金额等。
每个人的图书馆信息包括借书证号、班级、学号等。
该系统的功能包括以下几个方面:一、借阅资料管理要求对图书、期刊、报纸、期刊进行分类管理,这样操作会更加灵活方便。
可以随时添加、删除、修改、查询等相关资料。
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语言

/*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语言程序实现简单的图书馆图书管理系统,程序包含平时的借书,还书,新书录入,查询功能,用简单明了的人机交互界面快速实现图书管理的目的。
二.模块说明及代码分析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语言如何应用等,非常迷茫。
直到大一下半学期的高级语言设计课程之后,试过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语言课程设计-图书信息管理系统设计

图书信息管理系统设计一、【要求】图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
设计一图书信息管理系统,使之能提供以下功能:(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结语 化 ,避 免 了很 多 因 人 工操 作而 带 来 的 不 必 要 的 通过 系统实现 自主借 阅功 能,并且能查阅相关
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图书管理系统开发实例
前面的章节系统地介绍了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
需求分析