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语言程序设计)

图书馆管理系统(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语言的图书管理系统

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

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

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

图书管理系统代码(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语言-图书管理系统

C语言-图书管理系统

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

图书管理系统c语言

图书管理系统c语言

图书管理系统C语言1. 简介图书管理系统是一种用于管理图书馆藏书和借阅记录的软件系统。

它通常包括图书的录入、借阅、归还、查询等功能,能够提高图书馆的工作效率和服务质量。

本文将使用C语言编写一个简单的图书管理系统,实现基本的图书信息录入、修改、查询、借阅、归还等功能。

2. 功能实现2.1 数据结构我们首先需要定义合适的数据结构来存储图书信息和借阅记录。

以下是一个简单的数据结构示例:struct Book {int id; // 图书编号char title[100]; // 图书标题char author[50]; // 图书作者char category[50]; // 图书分类int isBorrowed; // 图书是否已借阅,0表示未借阅,1表示已借阅char borrowerName[100]; // 借阅者姓名// 可根据需求扩展其他字段};struct BorrowRecord {int bookId; // 图书编号char borrowerName[100]; // 借阅者姓名char borrowDate[20]; // 借阅日期char returnDate[20]; // 归还日期// 可根据需求扩展其他字段};2.2 图书信息录入和修改我们可以通过实现相应的函数来实现图书信息的录入和修改。

以下是一个简单的示例:void addBook(struct Book *library, int *count) {// 输入图书信息,将其存入library数组中,同时更新count}void updateBook(struct Book *library, int count, int bookId) { // 根据图书编号bookId,更新library数组中对应图书的信息}2.3 图书查询我们可以根据图书的不同字段来实现不同的查询功能,比如根据图书标题、作者、分类等进行模糊查询,或根据图书编号进行精确查询。

图书管理系统设计与实现-C#经典案例

图书管理系统设计与实现-C#经典案例

图书管理系统的设计一、系统分析 (2)1. 开发背景 (2)2. 需求分析 (2)二、系统设计 (2)1. 系统总体结构 (2)2. 数据库设计 (3)3. 编码设计 (4)三、系统实施 (4)1。

登录 (4)2。

系统主界面 (5)3. 书库管理 (6)1)新书登记: (6)2)借书/还书: (9)1) 缴费 (15)2)书籍挂失: (18)3)图书信息查询: (22)4) 借书信息查询: (23)4。

借阅证管理: (24)1)办理借阅证: (24)2)借阅证信息查询: (26)3) 借阅证挂失: (26)5。

系统/其它: (28)1)添加账号: (28)2) 修改密码: (30)3) 退出: (31)四、总结(体会、经验与教训) (31)一、系统分析1. 开发背景随着人们知识层次的提高,图书馆成为日常生活中不可缺少的一部分。

而图书馆的存数量和业务量庞大,仅仅靠传统的记账式管理是不可行的。

图书馆管理系统应运而生,逐渐成为信息化建设的重要组成部分。

图书馆管理系统为学校或社会型图书馆的管理员提供所有借阅者的详细信息,以及馆内库存的详细情况,对借书和还书两大功能进行合理操纵并登记。

2. 需求分析经过仔细分析系统需求之后,本图书管理系统主要完成的主要功能如下:●进入系统前需要身份验证、用户名、密码,输入正确后方可进入。

●用户可以根据需要进行书库管理。

●用户可以进行借书证的办理、查询、挂失等操作。

●用户可以添加账户和修改密码。

●身份验证:提供系统的访问控制功能。

●书库管理:包括新书登记、借书、还书、书籍挂失、图书信息查询、借书信息查询等功能。

●借阅证管理:提供办理借阅证、借阅证信息查询、借阅证挂失功能.●系统管理功能:包括添加账号、修改密码和退出系统等功能。

二、系统设计1. 系统总体结构通过对图书管理系统的功能分析,可以定义出系统的功能模块图如下:2. 数据库设计3. 编码设计●WorkID,BorrowID,Puni_ID都设置了标识规范,增加记录时自动加1,保持其唯一性。

图书管理系统的设计(C语言)

图书管理系统的设计(C语言)

图书管理系统设计图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等功能描述:1 .新进熟土基本信息的输入2 .图书基本信息的查询3 .对撤销图书信息的删除4 .为借书人办理注册5 .办理借书手续6 .办理换书手续要求:以文件方式存储数据,系统以菜单方式工作。

这是本人大一第二学期初 C 语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ 网络硬盘中找到了当初的teta 版,发布于此,以作记念。

C 源代码如下:#include〈stdio 。

h〉#include<stdlib。

h〉#include〈string 。

h>struct book {char book_name [30];int bianhao;double price;char author[20];char state [20] ;char name[20];char sex [10];int xuehao;struct book *book_next;};struct club {char name [20];char sex[10];int xuehao;char borrow [30];struct club *club_next;};void Print_Book(struct book *head_book);/*浏览所有图书信息*/void Print_Club(struct club *head_club);/*浏览所有会员信息*/struct book *Create_New_Book();/*创建新的图书库, 图书编号输入为0 时结束*/struct book *Search_Book_bianhao(int bianhao,struct book *head_book);struct book *Search_Book_name (char *b_name,struct book *head_book);struct book *Search_Book_price (double price_h,double price_l,struct book *head_book);struct book *Insert_Book (struct book *head_book,struct book *stud_book) ;/*增加图书,逐个添加*/struct book *Delete_Book(struct book *head_book,int bianhao);/*删除图书*/struct club *Create_New_Club() ;struct club *Search_Club_xuehao(int xuehao,struct club *head_club);struct club *Search_Club_name (char *c_name,struct club *head_club);struct club *Insert_Club (struct club *head_club,struct club *stud_club);struct club *Delete_Club (struct club *head_club,int xuehao);struct book *Lent_Book (int bianhao ,int xuehao,struct book *head_book,struct club *head_club);struct book *back (int bianhao,int xuehao,struct book *head_book,struct club *head_club); int main(){struct book *head_book,*p_book;char book_name [30],name [20],author [20],sex [10];int bianhao;double price,price_h,price_l;int size_book=sizeof(struct book);int m=1,n=1,f;char *b_name,*c_name;struct club *head_club,*p_club;int xuehao;int size_club=sizeof (struct club) ;int choice;printf ("\n 欢迎您第一次进入图书管理系统!\n\n");printf("---——>[向导]————-〉[新建图书库] \n\n”) ;printf ("注意:当输入图书编号为0 时,进入下一步.\n\n");head_book=Create_New_Book();system(”cls”) ;printf("\n 欢迎您第一次进入图书管理系统!\n\n") ;printf("----—〉[向导]——---〉[新建会员库]\n\n”);printf(”注意:当输入会员学号为0 时,进入主菜单.\n\n”);head_club=Create_New_Club () ;system (”cls”);do {printf(”\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n”);printf("\n”);printf ("\t\t\t[1] :借书办理\t");printf(" [6]:还书办理\n”);printf (”\n");printf(”\t\t\t[2]:查询图书\t");printf(" [7]:查询会员\n”);printf (” \t\t\t[3]:添加图书\t");printf (" [8]:添加会员\n”);printf ("\t\t\t[4]:删除图书\t");printf (” [9] :删除会员\n") ;printf (” \t\t\t[5]:遍历图书\t");printf (” [10]:遍历会员\n\n”) ;printf ("\t\t\t〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n\n”);printf("\t\t\t0:退出\n\n”) ;printf(”请选择〈0~10〉:”);scanf(”%d",&choice);switch(choice) {case 1:printf ("\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n");printf (”输入所借图书编号:\n");scanf (”%d",&bianhao);printf ("输入借书人的学号:\n”);scanf ("%d",&xuehao);head_book=Lent_Book(bianhao,xuehao,head_book,head_club);system (”cls");printf (” \n 借阅成功!\n\n");printf (”相关信息如下:\n\n");head_book=Search_Book_bianhao (bianhao,head_book);break;case 2:system ("cls”) ;printf(”\n\t\t\t〓〓〓〓〓图书管理系统〓〓〓〓〓\n\n”); printf ("1。

C语言实现简单的图书管理系统

C语言实现简单的图书管理系统

C语⾔实现简单的图书管理系统本⽂实例为⼤家分享了C语⾔实现简单图书管理系统的具体代码,供⼤家参考,具体内容如下代码:/*课程设计项⽬名称:图书查询系统作者:施瑞⽂时间:2018.3.4*/#include<stdio.h>#include<string.h>#include<windows.h>#include<conio.h>#include<stdlib.h>#define N sizeof(struct BOOK)struct BOOK //图书信息{char number[10]; //登录号char name[10]; //书名char author[10]; //作者名char type[10]; //类型char publish[10]; //出版单位char time[8]; //出版时间float price; //价格int num; //数量int x;struct BOOK *next; //指针域};typedef struct BOOK Book;typedef Book *book;void HideCursor(); //隐藏光标void toxy(int x, int y); //将光标移动到X,Y坐标处void color(short x); //设置颜⾊void over(); //退出void menu(); //菜单void input_book(); //图书⼊库void save_book(book p);//将图书信息存⼊⽂件void find_book(); //查询void print_book(); //图书总览void del_book(); //删除图书void amend_book(); //修改信息book ss();void find_name_book(); //按书名查询void find_author_book(); //按作者查询void find_number_book(); //按登录号查询void find_publish_book(); //按出版社查询void fuzzy_search(); //模糊查找void HideCursor() //隐藏光标{CONSOLE_CURSOR_INFO cursor_info = {1, 0};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); }void color(short x){if(x>=0&&x<=15){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);}SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x); }}void toxy(int x, int y) //将光标移动到X,Y坐标处{COORD pos = { x , y };HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(Out, pos);}void menu() //菜单{do{system("cls"); //清屏HideCursor(); //隐藏光标color(15); //设置⼀个好看的颜⾊char t;toxy(50,5);//将光标移动到(50,5)坐标处printf(" 图书查询管理系统");toxy(48,8);printf("| 1.图书⼊库 |");toxy(48,10);printf("| 2.修改信息 |");toxy(48,12);printf("| 3.删除信息 |");toxy(48,14);printf("| 4.图书查询 |");toxy(48,16);printf("| 5.图书总览 |");toxy(48,18);printf("| 6.退出软件 |");t=getch(); //不回显函数switch(t){case '1':input_book();break;case '2':amend_book();break;case '3':del_book();break;case '4':find_book();break;case '5':print_book();break;case '6':over();break;default :break;}}while(1);}book ss() //将⽂件中的内容读出到链表中,返回值为表头地址{FILE *fp; //⽂件指针int n=0;book head=NULL;book p2,p,pr=NULL;fp=fopen("mybook","ab+"); //以只读的⽅式打开⽂件if(fp==NULL){printf("cannot open file\n");}while(!feof(fp)) //判断⽂件位置标志是否移动到⽂件末尾{n++;p=(book)malloc(N); //向内存申请⼀段空间fread(p,N,1,fp); //将fp所指向的⽂件中的内容赋给pif(n==1){head=p;p2=p;}else //创建链表{pr=p2;p2->next=p;p2=p;}}if(pr!=NULL)pr->next=NULL;elsehead=NULL;fclose(fp); //关闭⽂件return head; //返回头指针}void input_book() //图书录⼊{system("cls");color(10);char t;book p;p=(book)malloc(N); //申请空间//输⼊图书信息toxy(48,8);printf("请输⼊图书登录号(⼩于10位数):");scanf("%s",p->number);getchar();toxy(48,10);printf("请输⼊书名(⼩于10位数):");scanf("%s",p->name);getchar();toxy(48,12);printf("请输⼊作者名(⼩于10位数):");scanf("%s",p->author);getchar();toxy(48,14);printf("请输⼊图书类别(⼩于10位数):");scanf("%s",p->type);getchar();toxy(48,16);printf("请输⼊图书出版单位(⼩于10位数):"); scanf("%s",p->publish);getchar();toxy(48,18);printf("请输⼊图书出版时间(⼩于8位数):");scanf("%s",p->time);getchar();toxy(48,20);printf("请输⼊图书价格:");scanf("%f",&p->price);getchar();toxy(48,22);printf("请输⼊图书数量:");scanf("%d",&p->num);save_book(p);toxy(48,24);printf("正在保存....");Sleep(500); //暂停0.5秒system("cls");toxy(46,8);printf("-------------------------");toxy(46,9);printf("| |");toxy(46,10);printf("| 保存成功!是否继续? |");toxy(46,12);printf("| 1.是 2.否 |");toxy(46,13);printf("| |");toxy(46,14);printf("-------------------------");while(1) //利⽤死循环可有效防⽌其他按键⼲扰 {t=getch();if(t=='1'){break;}else if(t=='2'){menu();}}}while(1);}void amend_book() //修改图书信息{do{system("cls");color(10);book head,p;int i=11,j=0,x;char ch,t;FILE *fp; //⽂件指针char _name[10];char number[10]; //登录号char name[10]; //书名char author[10]; //作者名char type[10]; //类型char publish[10]; //出版单位char time[8]; //出版时间float price; //价格int num; //数量head=ss();p=head;toxy(48,10);gets(_name);while(p!=NULL) //初始化p->x为0{p->x=0;p=p->next;}p=head; //让p重新指向表头toxy(20,5);printf("***********************************************图书信息******************************************************");toxy(20,8);printf("-------------------------------------------------------------------------------------------------------------");toxy(20,9);printf("登录号书名作者名图书类别出版单位出版时间价格数量");toxy(20,10);printf("-------------------------------------------------------------------------------------------------------------");while(p!=NULL){if(p!=NULL&&strcmp(p->name,_name)==0){toxy(20,i);j++;printf("%d:%s%14s%14s%14s %14s %18s %.2f%12d\n",j,p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num); p->x=j; //给符合查询标准的结点标号i++;}p=p->next;}if(j==0) //如果j=0,即没有进⼊前⾯的搜索循环,也就是没有找到相应的信息{toxy(50,i);printf("没有找到相应的信息!(按0返回,按1重新搜索)");while(1) //死循环是为了防⽌除0和1的其他按键⼲扰{ch=getch();if(ch=='0'){menu();break;}else if(ch=='1'){break;}}if(ch=='1') //如果输⼊的ch等于1,则结束本次循环continue;}while(1){toxy(45,i);printf("请输⼊您要修改的图书的编号:");scanf("%d",&x);getchar();if(x>j||x==0){toxy(45,++i);printf("输⼊错误,请重新输⼊!");Sleep(500);}else{break;}}p=head; //让p重新指向表头while(p!=NULL&&p->x!=x) //遍历链表查询符合条件的结点{p=p->next;}if(p) //如果p不为空{system("cls");//输⼊要修改的信息toxy(48,8);printf("请输⼊图书登录号(⼩于10位数):");scanf("%s",number);getchar();strcpy(p->number,number);toxy(48,10);printf("请输⼊书名(⼩于10位数):");scanf("%s",name);getchar();strcpy(p->name,name);toxy(48,12);printf("请输⼊作者名(⼩于10位数):");scanf("%s",author);getchar();strcpy(p->author,author);toxy(48,14);printf("请输⼊图书类别(⼩于10位数):");scanf("%s",type);getchar();strcpy(p->type,type);toxy(48,16);printf("请输⼊图书出版单位(⼩于10位数):");scanf("%s",publish);getchar();strcpy(p->publish,publish);printf("请输⼊图书出版时间(⼩于8位数):");scanf("%s",time);getchar();strcpy(p->time,time);toxy(48,20);printf("请输⼊图书价格:");scanf("%f",&price);getchar();p->price=price;toxy(48,22);printf("请输⼊图书数量:");scanf("%d",&num);getchar();p->num=num;}color(7);toxy(46,8);printf("-------------------------");toxy(46,9);printf("| |");toxy(46,10);printf("| 是否确认修改? |");toxy(46,12);printf("| 1.是 2.否 |");toxy(46,13);printf("| |");toxy(46,14);printf("-------------------------");while(1) //利⽤死循环防⽌其他按键⼲扰{t=getch();if(t=='1'){break;}else if(t=='2'){menu();}}system("cls");toxy(46,10);printf("正在修改,请稍后....");fp=fopen("mybook","wb"); //以只写的⽅式打开名为mybook的⼆进制⽂件,打开的同时清空⽂件中的内容 if(fp==NULL){printf("cannot open file");}if(fwrite(head,N,1,fp)!=1) //将head写⼊fp所指向的⽂件中{printf("write error!");}fclose(fp); //关闭⽂件if(head!=NULL) //如果head不为空{p=head->next; //让p指向第⼆个结点fp=fopen("mybook","ab"); //以追加的⽅式打开⽂件if(fp==NULL){printf("cannot open file");}while(p!=NULL){if(fwrite(p,N,1,fp)!=1)//将p写⼊fp所指向的⽂件中{printf("write error!");}p=p->next;}fclose(fp); //关闭⽂件}Sleep(500); //暂停0.5秒system("cls");toxy(46,10);printf("修改成功!即将⾃动返回主菜单....");Sleep(500);break;}while(1);}void del_book() //删除信息{do{system("cls");color(9);FILE *fp;book head,p,pre=NULL;int j=0,x,i=11;char name[10];char t,c,ch;head=ss(); //调⽤函数,返回表头地址printf("请输⼊你要删除的图书的书名:");scanf("%s",name);p=head;while(p!=NULL){p->x=0;p=p->next;}p=head;toxy(20,5);printf("***********************************************图书信息******************************************************");toxy(20,8);printf("-------------------------------------------------------------------------------------------------------------");toxy(20,9);printf("登录号书名作者名图书类别出版单位出版时间价格数量");toxy(20,10);printf("-------------------------------------------------------------------------------------------------------------");while(p!=NULL){if(p!=NULL&&strcmp(p->name,name)==0){toxy(20,i);j++;printf("%d:%s%14s%14s%14s %14s %18s %.2f%12d\n",j,p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num); p->x=j;i++;}p=p->next;}if(j==0) //如果j=0,即没有进⼊前⾯的搜索循环,也就是没有找到相应的信息{toxy(50,i);printf("没有找到相应的信息!(按0返回,按1重新搜索)");while(1) //死循环是为了防⽌除0和1的其他按键⼲扰{ch=getch();if(ch=='0'){menu();break;}else if(ch=='1'){break;}}if(ch=='1') //如果输⼊的ch等于1,则结束本次循环continue;}while(1){toxy(45,i);printf("请输⼊您要删除的图书的编号:");scanf("%d",&x);getchar();if(x>j||x==0){toxy(45,++i);printf("输⼊错误,请重新输⼊!");Sleep(500);}else{break;}}color(7);toxy(46,8);printf("-------------------------");toxy(46,9);printf("| |");toxy(46,10);printf("| 是否确认删除? |");toxy(46,12);printf("| 1.是 2.否 |");toxy(46,13);printf("| |");toxy(46,14);printf("-------------------------");while(1){t=getch();if(t=='1'){break;}else if(t=='2'){}}p=head;while(p!=NULL&&p->x!=x){pre=p;p=p->next;}if(p!=NULL){if(pre==NULL){head=head->next;}else{pre->next=p->next;}}free(p);fp=fopen("mybook","wb");if(fp==NULL){printf("cannot open file");}if(fwrite(head,N,1,fp)!=1){printf("write error!");}fclose(fp);if(head!=NULL){p=head->next;fp=fopen("mybook","ab");if(fp==NULL){printf("cannot open file");}while(p!=NULL){if(fwrite(p,N,1,fp)!=1){printf("write error!");}p=p->next;}fclose(fp);}system("cls");toxy(46,10);printf("正在删除,请稍后....");Sleep(500);system("cls");toxy(46,8);printf("-------------------------");toxy(46,9);printf("| |");toxy(46,10);printf("| 删除成功,是否继续? |"); toxy(46,12);printf("| 1.是 2.否 |");toxy(46,13);printf("| |");toxy(46,14);printf("-------------------------");while(1){c=getch();if(c=='1'){break;}else if(c=='2'){menu();}}}while(1);}void print_book() //图书总览{system("cls");color(6);book head,p;int i=11;head=ss();toxy(20,5);printf("***********************************************图书总览******************************************************");toxy(20,8);printf("-------------------------------------------------------------------------------------------------------------");toxy(20,9);printf("登录号书名作者名图书类别出版单位出版时间价格数量");toxy(20,10);printf("-------------------------------------------------------------------------------------------------------------");if(head==NULL){toxy(45,11);printf("书库暂时没有书哦~赶快去添加⼏本吧^_^(按任意键返回)");getch();menu();}p=head;while(p!=NULL){toxy(20,i);printf("%s%14s%14s%14s %14s %18s %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num); i++;sum+=p->num;//计算图书总量p=p->next;}toxy(48,7);printf("图书总量为:%d",sum);toxy(45,i);printf("按任意键返回");getch();//不回显函数}void find_book() //查询图书{do{system("cls"); //清屏color(8);char t;toxy(50,5);printf(" 图书查询");toxy(48,8);printf("| 1.书名查询 |");toxy(48,10);printf("| 2.作者查询 |");toxy(48,12);printf("| 3.登录号查询 |");toxy(48,14);printf("| 4.出版社查询 |");toxy(48,16);printf("| 5.模糊查询 |");toxy(50,18);printf("按0返回主菜单");t=getch();switch(t){case '0':menu();break;case '1':find_name_book();break;case '2':find_author_book();break;case '3':find_number_book();break;case '4':find_publish_book();break;case '5':fuzzy_search();break;default :break;}}while(1);}void find_name_book() //按名字查询{system("cls");color(8);book head,p;int i=11;head=ss();char name[10];toxy(48,8);printf("请输⼊您要查询图书的书名:");gets(name);toxy(48,10);printf("正在查询....");Sleep(500);p=head;toxy(20,5);printf("***********************************************图书总览******************************************************");toxy(20,8);printf("-------------------------------------------------------------------------------------------------------------");printf("登录号书名作者名图书类别出版单位出版时间价格数量");toxy(20,10);printf("-------------------------------------------------------------------------------------------------------------");while(p!=NULL){if(p!=NULL&&strcmp(p->name,name)==0){toxy(20,i);printf("%s%14s%14s%14s %14s %18s %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num); i++;}p=p->next;}toxy(45,i);printf("按任意键返回!");getch();find_book();}void find_author_book() //按作者名查询{system("cls");color(8);book head,p;int i=11;head=ss();char author[10];toxy(48,8);printf("请输⼊您要查询图书的作者名:");gets(author);toxy(48,10);printf("正在查询....");Sleep(500);p=head;toxy(20,5);printf("***********************************************图书总览******************************************************");toxy(20,8);printf("-------------------------------------------------------------------------------------------------------------");toxy(20,9);printf("登录号书名作者名图书类别出版单位出版时间价格数量");toxy(20,10);printf("-------------------------------------------------------------------------------------------------------------");while(p!=NULL){if(p!=NULL&&strcmp(p->author,author)==0){toxy(20,i);printf("%s%14s%14s%14s %14s %18s %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num); i++;}p=p->next;}toxy(45,i);printf("按任意键返回!");getch();find_book();}void find_number_book() //按图书编号查询{system("cls");color(8);book head,p;int i=11;head=ss();char number[10];toxy(48,8);printf("请输⼊您要查询图书的登录号:");gets(number);toxy(48,10);printf("正在查询....");Sleep(500);p=head;toxy(20,5);printf("***********************************************图书总览******************************************************");toxy(20,8);printf("-------------------------------------------------------------------------------------------------------------");toxy(20,9);printf("登录号书名作者名图书类别出版单位出版时间价格数量");toxy(20,10);printf("-------------------------------------------------------------------------------------------------------------");while(p!=NULL){if(p!=NULL&&strcmp(p->number,number)==0){toxy(20,i);}p=p->next;}toxy(45,i);printf("按任意键返回!");getch();find_book();}void find_publish_book() //按出版商查询{system("cls");color(8);book head,p;int i=11;head=ss();char publish[10];toxy(48,8);printf("请输⼊您要查询图书的出版社:");gets(publish);toxy(48,10);printf("正在查询....");Sleep(500);p=head;toxy(20,5);printf("***********************************************图书总览******************************************************");toxy(20,8);printf("-------------------------------------------------------------------------------------------------------------");toxy(20,9);printf("登录号书名作者名图书类别出版单位出版时间价格数量");toxy(20,10);printf("-------------------------------------------------------------------------------------------------------------");while(p!=NULL){if(p!=NULL&&strcmp(p->publish,publish)==0){toxy(20,i);printf("%s%14s%14s%14s %14s %18s %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);i++;}p=p->next;}toxy(45,i);printf("按任意键返回!");getch();find_book();}void fuzzy_search() //模糊查询{system("cls");color(8);book head,p;int i=11;head=ss();char information[10];toxy(48,8);printf("请输⼊您要查询图书的信息:");gets(information);toxy(48,10);printf("正在查询....");Sleep(500);p=head;toxy(20,5);printf("***********************************************图书总览******************************************************");toxy(20,8);printf("-------------------------------------------------------------------------------------------------------------");toxy(20,9);printf("登录号书名作者名图书类别出版单位出版时间价格数量");toxy(20,10);printf("-------------------------------------------------------------------------------------------------------------");while(p!=NULL){if(p!=NULL&&(strcmp(p->name,information)==0||strcmp(p->author,information)==0||strcmp(p->number,information)==0||strcmp(p->publish,information)==0)) {toxy(20,i);printf("%s%14s%14s%14s %14s %18s %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);i++;}p=p->next;}toxy(45,i);printf("按任意键返回!");getch();find_book();}void save_book(book p) //将p中内容写⼊⽂件{FILE *fp; //⽂件指针fp=fopen("mybook","ab"); //以追加的⽅式打开名字为mybook的⼆进制⽂件if(fp==NULL){printf("cannot open file");}if(fwrite(p,N,1,fp)!=1) //将p所指向的⼀段⼤⼩为N的内容存⼊fp所指向的⽂件中{printf("write error");}fclose(fp); //关闭⽂件}void over() //退出软件{char t;toxy(48,11);printf("-----------------------");toxy(48,12);printf("| 您确定要退出吗? |");toxy(48,14);printf("| 1.确定 2.取消 |");toxy(48,15);printf("-----------------------");while(1){t=getch(); //输⼊tswitch(t){case '1':system("cls");color(6);toxy(48,10);printf("正在安全退出....");Sleep(1000); //暂停1秒system("cls");color(8);toxy(48,10);printf("已安全退出软件");toxy(48,12);printf("谢谢使⽤!");toxy(48,14);printf("by-by^_^");exit(0); break; //终⽌程序case '2':menu(); break; //调⽤函数,进⼊菜单default :break;}}}main() //简洁明了的主函数{menu();//菜单}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

C语言课程设计(图书销售管理系统)

C语言课程设计(图书销售管理系统)

HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYC语言程序设计课程设计报告课设题目:图书销售管理系统专业:电气工程及其自动化班级: KT1223-1姓名:********成绩:完成日期: 2012年12月28日-2013年1月11日指导教师: ************目录目录1.课程设计目的 (2)2.需求分析 (2)2.1要求 (2)2.2任务描述 (2)2.3运行环境 (3)2.4开发工具 (3)3.总体设计 (3)3.1系统流设计 (3)3.2系统模块设计 (4)4.详细设计 (5)4.1数据结构设计 (5)4.2模块接口设计 (6)4.3 以下是几个主要模块的流程图: (7)5.运行结果 (111)5.1主菜单界面: (111)5.2图书信息查询界面: (122)5.3:图书销售界面..................................................................... 错误!未定义书签。

45.4图书信息整体浏览界面:.................................................... 错误!未定义书签。

95.5图书信息删除界面:.............................................................. 错误!未定义书签。

5.6图书信息保存界面: (22)5.7 退出程序: (30)5.8图书信息新建界面: (30)5.9修改密码 (23)6.程序调试与测试 (23)6.1程序调试 (23)6.2程序测试 (27)7.问题与不足 (30)8.建议 (31)9.编程体会 (31)10.程序源代码: (31)11.参考文献 (56)12.用户使用手册 (57)1.课程设计目的1)通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。

c语言图书馆管理系统(codeblocks版)

c语言图书馆管理系统(codeblocks版)
printf("\t--------ID: %40s--------\n", p1->ID);
printf("\t--------PASS: %40s--------\n", p1->pass);
printf("\t--------LEVEL:%40d--------\n", p1->level);
/*
*图书馆管理系统
*@author琴卓
*@time 2015-12-10
*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<windows.h>
#define PASS_LEN 20 //密码长度
int lendsum;
struct user *next;
}user;
//用户结构体简写为bokk
typedef struct book {
char name[20];
char author[20];
char publish[20];
char year[10];
char ISBN[40];
char state[10];
char choice;
//程序入口
void main()
{
system("color 8b");
system("mode con cols=100 lines=50");
printf("\t\t\t图书馆系统细则:\n\t\t1.新用户注册由系统管理员操作\n\t\t2.图书由图书管理员负责\n\t\t3.普通用户最多借3本书为期30天,可续借一次,\n\t\t超期不换将每天扣除0.1元,超过10元账户将冻\n\t\t结,届时无法完成登录,需要找系统管理员解冻\n\t\t4.密码输入支持退格,访问级别1代表普通用户\n\t\t5.单项数据输入不支持空格\n\t\t6.程序每关闭开启一次经过6天\n");

c语言实现图书管理系统

c语言实现图书管理系统

c语⾔实现图书管理系统前⾔⽤C语⾔实现⼀个图书管理系统简单的那种。

简单。

运⾏环境:vs2013效果1.主界⾯2.查看库存3.录⼊书籍4.删除书籍5.查询书籍6.价格排序7.修改信息8.退出完整代码/*************************************** Author:拾荒荒* Note:more...***************************************/#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <string.h>#define EMPTY -1 // 初始标志#define DEL_EMPTY 0 // 删除标志#define _MAX 200 //库存最⼤数量typedef struct BookInfo {int _count;int _price;char _id[10];char _author[20];char _name[50];char _introduction[100];}BookData;BookData books_house[_MAX] = { -1, 0,"","", "", "", };// 书仓信息void books_house_info(){printf("--------------------书籍信息--------------------\n");printf("ID\t书名\t作者\t价格\t数量\t简介\n");for (int i = 0; i < _MAX; ++i) {if (books_house[i]._count == EMPTY)break;else if (books_house[i]._count == DEL_EMPTY)continue;printf("%s\t", books_house[i]._id);printf("%s\t", books_house[i]._name);printf("%s\t", books_house[i]._author);printf("%d\t", books_house[i]._price);printf("%d\t", books_house[i]._count);printf("%s\t", books_house[i]._introduction);printf("\n");}printf("------------------------------------------------\n");}// 增添书bool books_house_add(BookData info){for (int i = 0; i < _MAX; ++i) {if (books_house[i]._count == EMPTY ||books_house[i]._count == DEL_EMPTY) {for (int j = 0; j < _MAX; ++j) {if (strcmp(books_house[j]._id, info._id) == 0 ||strcmp(books_house[j]._name, info._name) == 0) {return false;}}books_house[i] = info; break;}}books_house_info();return true;}// 删除书void books_house_del(BookData info){for (int i = 0; i < _MAX; ++i) {if (strcmp(books_house[i]._name, info._name) == 0) {books_house[i]._count = DEL_EMPTY;break;}}books_house_info();}// 价格排序(升序)void books_house_sort(){for (int i = 0; i < _MAX - 1; ++i) {if (books_house[i]._count == EMPTY) break;else if (books_house[i]._count == DEL_EMPTY) continue; for (int j = 0; j < _MAX - i - 1; ++j) {if (books_house[j]._price > books_house[j + 1]._price) { BookData tmp = books_house[j];books_house[j] = books_house[j + 1];books_house[j + 1] = tmp;}}}books_house_info();}// 修改书籍信息void books_house_modify(BookData info){for (int i = 0; i < _MAX; ++i) {if (strcmp(books_house[i]._name, info._name) == 0) {books_house[i] = info; break;}}books_house_info();}// 根据书ID查找bool books_house_search(BookData info){printf("\n--------------------查询结果--------------------\n");printf("ID\t书名\t作者\t价格\t数量\t简介\n");for (int i = 0; i < _MAX; ++i) {if (strcmp(books_house[i]._id, info._id) == 0) {printf("%s\t", books_house[i]._id);printf("%s\t", books_house[i]._name);printf("%s\t", books_house[i]._author);printf("%d\t", books_house[i]._price);printf("%d\t", books_house[i]._count);printf("%s\t", books_house[i]._introduction);printf("\n");return true;break;}}return false;}void set_book_info(BookData *book){printf("输⼊ID:");scanf_s("%s", book->_id, sizeof(book->_id));printf("输⼊书名:");scanf_s("%s", book->_name, sizeof(book->_name));printf("输⼊作者:");scanf_s("%s", book->_author, sizeof(book->_author));printf("输⼊简介:");scanf_s("%s", book->_introduction, sizeof(book->_introduction));printf("输⼊数量:");scanf_s("%d", &book->_count);printf("输⼊价格:");scanf_s("%d", &book->_price);}void books_house_manage_menu(){system("cls");printf(" 图书管理系统 \n\n");printf(" | 1.查看库存 |\n");printf(" 2.录⼊书籍 \n");printf(" | 3.删除书籍 |\n");printf(" 4.查询书籍 \n");printf(" | 5.价格排序 |\n");printf(" 6.修改信息 \n");printf(" | 7.退出 |\n");printf("\n-----\n");printf("请问你想操作什么: ");}int main(int argc, char **argv){do {int select;books_house_manage_menu();scanf_s("%d", &select);switch (select){case 1: {books_house_info();break;}case 2: {BookData book;set_book_info(&book);books_house_add(book) ? NULL : printf("**该书籍已存在!请勿重复输⼊!\n"); break;}case 3: {BookData book;printf("输⼊需要删除的书名:");scanf_s("%s", book._name, sizeof(book._name));books_house_del(book);break;}case 4: {BookData book;printf("输⼊需要查询的ID号:");scanf_s("%s", book._id, sizeof(book._id));books_house_search(book);break;}case 5: {books_house_sort();break;}case 6: {BookData book;printf("输⼊需要修改书籍的ID:");scanf_s("%s", book._id, sizeof(book._id));if (books_house_search(book)) {printf("请输⼊以下提⽰的修改信息\n");set_book_info(&book);books_house_modify(book);}break;}return 0;}default:break;}printf("\n");system("pause"); } while (true);return 0;}_End。

  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
需求分析
相关文档
最新文档