c语言图书管理系统开发实例
- 格式:ppt
- 大小:443.50 KB
- 文档页数:42
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语言程序课程设计报告标题:图书管理系统专业:软件工程类:设计主题图书馆管理系统主要包括管理图书的库存信息,每本书的借阅信息,每个人的借阅信息。
每本书的库存信息包括数量、书名、作者、出版日期、金额、类别、总入库数量、当前库存、已借出图书数量等。
每本借书包括以下信息:编号、书名、金额、借书证号、借阅日期、到期日期、罚款金额等。
每个人的图书馆信息包括借书证号、班级、学号等。
该系统的功能包括以下几个方面:一、借阅资料管理要求对图书、期刊、报纸、期刊进行分类管理,这样操作会更加灵活方便。
可以随时添加、删除、修改、查询等相关资料。
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 */添加图书类型并显示用户信息*/添加图书状态并显示用户信息。
/*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语言程序实现简单的图书馆图书管理系统,程序包含平时的借书,还书,新书录入,查询功能,用简单明了的人机交互界面快速实现图书管理的目的。
二.模块说明及代码分析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语言如何应用等,非常迷茫。
直到大一下半学期的高级语言设计课程之后,试过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+,就是读和写,能保留原来的内容。
图书信息管理系统设计一、【要求】图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
设计一图书信息管理系统,使之能提供以下功能:(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。
图书管理系统/*图书数据由编号、书名、出版社、单价和图书状态(库存用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语言)#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++;。
图书借阅管理系统1.课程设计的目的我这次做的系统是图书借阅管理系统,主要目的是利用本系统来管理图书的借阅问题,以实现图书借阅的快捷化、规范化、自动化来提高工作效率。
系统以实用性,通用、开放和安全的原则。
使用数据库开发软件开发制作,实现了图书借阅信息的管理,借阅图书的信息自动化添加,借阅者的个人基本信息,借阅的基本信息,对各种图书的分类管理以及各种新书的添加等一些繁琐事项。
更好的管理好图书的借阅问题。
大大的减少了人工的工作量,比以往很大程度上提高了工作人员的工作效率。
使之成为图书馆的一个平台,成为真正的现代化科技。
为了充分利用学院现有的计算机硬件资源,做好图书借阅管理工作,提高办事效率, 实现全面的、相对集中的办公自动化,开发本系统就成了当务之急,其目的主要为了彻底改变这种繁杂的管理模式,实现全面的、相对集中的、智能化的信息综合管理,为图书馆的管理工作带来方便。
我想借本次课程设计之际,开发一个适用于通用大规模图书馆的管理系统,采用现学习的C++6. 0开发工具开发出来的基于Windows系列的图书借阅管理系统。
该系统面向所有的在校学生,实现对学生个人的借书、学生的基本信息情况等的计算机管理。
系统支持工作人员对学生图书借阅信息、图书馆新书的添加、旧书的信息修改、删除等操作,确保了数据库的安全性快捷性和一致性。
2.设计方案论证2.1主界面设计思路本次设计这个系统利用于图书馆的图书借阅管理,该系统相比以往人工的记录方式减少了很多不比要得麻烦,大大的提高了图书馆工作人员的工作效率。
这次系统的开发制作主要包括以下几个方面。
书籍统计可以查询图书的名称、作者、序号等信息,以及是否借出去了。
书籍管理可以把新书添加到系统当中,修改书籍的详细资料等。
注册会员功能,借阅书籍的学生必须注册会员才可以借书,通过注册会员来添加该学生的基本信息。
通过系统来办理借书手续以记录该学生的借书信息。
学生借书模块能够查询借阅学生的信息和该学生的借书的信息。
图书管理系统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 图书查询我们可以根据图书的不同字段来实现不同的查询功能,比如根据图书标题、作者、分类等进行模糊查询,或根据图书编号进行精确查询。
图书管理系统的设计一、系统分析 (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,保持其唯一性。
图书管理系统设计图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等功能描述: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语⾔实现简单图书管理系统的具体代码,供⼤家参考,具体内容如下代码:/*课程设计项⽬名称:图书查询系统作者:施瑞⽂时间: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();//菜单}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
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语⾔实现图书管理系统前⾔⽤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。