C语言-图书信息管理系统
- 格式:doc
- 大小:356.00 KB
- 文档页数:16
#include〈iostream〉#include<fstream〉#include〈conio.h〉using namespace std;class Librarian //图书管理员类{public:Librarian();Librarian(int n,int j,char na[20],int w );int getnumber();int getjobage();char *getname();int getwages();void resetjobage(int j);void resetwages(int w);void resetname(char na[20]);private:int number;int jobage;char name[20];int wages;};Librarian::Librarian() //其函数的实现{number=0;char b[20]="no one”;jobage=0;strcpy(name,b);}Librarian::Librarian(int n,int j,char na[20],int w) {number=n;jobage=j;strcpy(name,na);wages=w;}int Librarian::getjobage(){return jobage;}char *Librarian::getname(){return name;}int Librarian::getnumber(){return number;}int Librarian::getwages(){return wages;}void Librarian::resetjobage(int j){jobage=j;}void Librarian::resetname(char na[20]){strcpy(name,na);}void Librarian::resetwages(int w){wages=w;}class reader //读者类{private:int number;int age;char name[20];char borrowbook[20];public:reader();reader(int c,int a,char b[20],char e[20]);int getnumber();int getage();char *getname();char * getborrowbook();void reworkborrowbook(char a[20]);};reader::reader() //其函数的实现{char a[20]="没有人”;char c[20]=”没有借书";number=0;age=0;}reader::reader(int a,int c,char d[20],char e[20]) {number=a;age=c;strcpy(name,d);strcpy(borrowbook,e);}int reader::getnumber(){return number;}int reader::getage(){return age;}char *reader::getname(){return name;}char * reader::getborrowbook(){return borrowbook;}void reader::reworkborrowbook(char a[20]){strcpy(borrowbook,a);}struct book //图书的结构体{int num;char name[20];char writer[20];};void outbookinf() //输出所有图书信息{int i;ifstream infile(”allbook。
图书信息管理系统设计、【要求】图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
设计一图书信息管理系统,使之能提供以下功能:(1)(2)(3)(4)(5)二、【各功能模块】void main() (menu(); }void menu() (int a;do 系统以菜单方式工作图书信息录入功能图书信息浏览功能图书信息查询功能图书信息的删除与修改功能1、菜单模块建立menu()函数将主函数功能提取出来,主函数main调用menu()函数方便简捷。
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 } }while(a!=0);}【定义图书信息结构体】#include<stdio.h> #include<stdlib.h> #include<string.h>#include<conio.h> void menu(); #define N 3typedef struct system {long num; char name[20]; char writer[10]; char sort[10]; char publisher[20]; long time; float price; }赵 毅 *******);printf(" ****** printf("\n"); printf("****** printf("\n");printf("\n\n\n\n\n\t\t\t\t printf("\t\t* printf("\t\t\t1 printf("\t\t\t2 printf("\t\t\t3 printf("\t\t\t4 printf("\t\t\t5 printf("\t\t\t6 printf("\t\t\t0printf("\t\t******************************************* 中国地质大学******\n");图书信息管理系统\t\t\t\t\n");********************************************);图书信息录入 图书信息浏览 图书信息查询 图书信息删除 图书信息修改 图书信息追加退出图书信息系统\n");*\n");\n");\n"); \n"); \n"); \n"); \n");序号不对\n");BOOK;注:定义的BOOK吉构体N为限定的录入图书个数(可依据不同要求变化范围)long num为定义的登录号(长整形变量)char name[20]为定义的书名的数组char writer[10] 为定义的作者的数组char sort[10] 定义的分类号数组char publisher[20] 定义的出版单位数组long time 定义的出版时间长整形变量float price 价格为浮点型变量。
#include"stdio.h"#include"conio.h"#include"string.h"#include"stdlib.h"void enter(); /*声明输入函数*/void look(); /*声明查看函数*/void search_name(); /*声明按姓名查看函数*/int openl(); /*声明打开函数*/void save(); /*声明保存函数*/void del(); /*声明删除函数*/void see(); /*打开并查看文件函数*/void add(); /*追加图书信息*/void TSXX_out();void TSXX_back();struct tsxx /*定义学生信息的结构体类型*/{char tsn[15]; /*图书名*/char bh[15]; /*编号*/int pri; /*价格*/char zzn[10]; /*作者名*/int kc; /*库存*/int total; /*总量*/}ts[100];int n; /*声明一个全局变量*/int main() /*主函数即用户的操作界面*/{int b,flag=0; /*声明局部变量*/while(1) /*循环输出以下信息*/{printf("\n\t\t\t欢迎使用图书馆管理系统\n");printf("\n\t\t\t\t秦盛伟阮腾飞制作\n");printf("\t\t\t -------------------------------\n");printf("\t\t\t 1.图书信息输入\n\n"); /*键入学生的信息*/printf("\t\t\t 2.查看录入的图书信息\n\n"); /*查看录入的学生信息*/printf("\t\t\t 3.按书名查看图书的信息\n\n"); /*按姓名查看学生的信息*/printf("\t\t\t 4.删除图书信息\n\n"); /*删除学生信息*/printf("\t\t\t 5.添加图书信息\n\n");printf("\t\t\t 6.保存学生信息\n\n"); /*保存*/printf("\t\t\t 7.打开文件\n\n"); /*打开文件*/printf("\t\t\t 8.借出图书\n\n");printf("\t\t\t 9.归还图书\n\n");/*键入学生的信息*/printf("\t\t\t 0.退出\n\n"); /*退出*/printf("\t\t\t请输入你的选择:");scanf("%d",&b);switch(b){case 1:enter();break; /*调用键入学生信息函数*/case 2:look();break; /*调用查看函数*/case 3:search_name();break; /*调用姓名查看函数*/case 4:del();break;/*调用删除函数*/case 5:add();break;case 6:save();break;/*调用保存函数*/case 7:see();break;/*调用打开文件函数*/case 8:TSXX_out();break;case 9:TSXX_back();break;case 0:flag=1;break;/*退出SWITCH语句*/default :printf("错误!");}if(flag) break; /*如果选择0就退出循环*/}}void save() /*建立保存文件函数*/{system("CLS");FILE *fp; /*定义文件型指针*/int i;if((fp=fopen("ts.txt","wb"))==NULL) /*打开输出文件*/{printf("不能打开文件!\n");return; /*终止程序*/ }for(i=0;i<n;i++) /*向student文件中写入信息*/if(fwrite(&ts[i],sizeof(struct tsxx),1,fp)!=1)printf("文件写入错误\n");fclose(fp); /*关闭文件*/printf("\n\n\n\n\t\t\t图书信息保存成功!\n");printf("\n\n\n\n\t\t\t按任意键返回菜单!!");getch();}void enter() /*定义键入图书信息函数*/{system("CLS");int i; /*定义局部变量*/printf("\t\t输入需录入图书信息的个数:");scanf("%d",&n);for(i=0;i<n;i++) /*输入每个学生的信息*/{printf("\n\t\t\t----------------\n");printf("\t\t\t图书名称:");scanf("%s",ts[i].tsn); /*输入图书名*/printf("\t\t\t编号:");scanf("%s",ts[i].bh); /*输入编号*/printf("\t\t\t单价:");scanf("%d",&ts[i].pri); /*输入价格*/printf("\t\t\t作者:");scanf("%s",ts[i].zzn); /*输入作者名*/printf("\t\t\t总数:");scanf("%d",&ts[i].total);ts[i].kc=ts[i].total;}printf("\n\n\t\t\t按任意键返回菜单!!");getch();save();}void look() /*定义查看函数*/{system("CLS");int i;//n=openl(); /*调用openl函数*/printf("\t书名\t编号\t单价\t作者\t库存\n");for(i=0;i<n;i++) /*输出所有的学生信息*/{printf("%10s\t%s\t%2d\t%s\t%d\n",ts[i].tsn,ts[i].bh,ts[i].pri,ts[i].zzn,ts[i].kc);}printf("\n\n\n\t\t\t按任意键返回菜单");getch();}void search_name() /*按书名查看函数*/{system("CLS");int i;char name[20]; /*声明字符数组*/printf("\t\t\t请输入书名:\n");scanf("%s",name);printf("\t书名\t编号\t单价\t作者\t库存n");for(i=0;i<n;i++)if(strcmp(ts[i].tsn,name)==0) /*将输入的姓名与结构体中的姓名进行比较*/{printf("%10s\t%s\t%2d\t%s\t%d\n",ts[i].tsn,ts[i].bh,ts[i].pri,ts[i].zzn,ts[i].kc);printf("\n\n\n\t\t\t按任意键返回菜单");}getch();}void del() /*定义删除图书信息函数*/{int i;char a;char name[20];system("CLS");printf("\t\t\t输入图书名字:\n");scanf("%s",name);system("CLS");printf("\t书名\t编号\t单价\t作者\t库存\n");for(i=0;i<n;i++)if(strcmp(ts[i].tsn,name)==0){printf("%10s\t%s\t%2d\t%s\t%d\n",ts[i].tsn,ts[i].bh,ts[i].pri,ts[i].zzn,ts[i].kc);getch();printf("真的删除?(y or n)");getchar();scanf("%c",&a);if(a=='y') /*是否删除该信息*/{for(;i<n;i++)ts[i]=ts[i+1];n=n-1;printf("你已经删除信息");}elseprintf("退出");getch();}save();}int openl() /*定义打开文件函数*/{system("CLS");int i;FILE *fp;if((fp=fopen("ts.txt","rb"))==NULL){printf("Cannot open file.\n");exit(0);}for(i=0;!feof(fp);i++)fread(&ts[i],sizeof(struct tsxx),1,fp);fclose(fp);return(i-1);}void see() /*打开并查看文件*/{system("CLS");int i;n=openl();printf("文件打开成功!\n");printf("按任意键查看!\n");getch();printf("\t书名\t编号\t单价\t作者\t库存\n");for(i=0;i<n;i++) /*输出所有的学生信息*/{printf("%10s\t%s\t%2d\t%s\t%d\n",ts[i].tsn,ts[i].bh,ts[i].pri,ts[i].zzn,ts[i].kc);}printf("\n\n\n\t\t\t按任意键返回菜单");getch();}void add() /*定义键入学生信息函数*/{system("CLS");int i=1;while(i){printf("\n\t\t\t----------------\n");printf("\t\t\t书名:");scanf("%s",ts[n].tsn); /*输入学号*/printf("\t\t\t编号:");scanf("%s",ts[n].bh); /*输入姓名*/printf("\t\t\t单价:");scanf("%d",&ts[n].pri); /*输入性别*/printf("\t\t\t作者:");scanf("%s",ts[n].zzn); /*输入英语成绩*/printf("\t\t\t库存:");scanf("%d",&ts[n].kc); /*输入语文成绩*/n++;printf("是否继续添加?\n如果继续请键入1,否则键入0?\n");scanf("%d",&i);}printf("\n\n\t\t\t按任意键返回菜单!!");getch();save();}void TSXX_out(){int i,d;char name[15];char s[10];char num[30];n=openl();printf("请输入需要借阅的图书名称:");scanf("%s",s);for(i=0;i<n;i++){if(strcmp(ts[i].tsn,s)==0&&ts[i].kc>0){printf("姓名:");scanf("%s",name);printf("学号:");scanf("%s",num) ;printf("借阅天数:");scanf("%d",&d);ts[i].kc--;}else if(strcmp(ts[i].tsn,name)==0&&ts[n].kc==0)printf("此书已经全部借出.\n"); else printf("对不起,此书不存在.\n");}printf("\n\n\n\t\t\t按任意键返回菜单");getch();save_student();}save_student(){system("CLS");FILE *fp1; /*定义文件型指针*/int i;if((fp1=fopen("student.txt","wb"))==NULL) /*打开输出文件*/{printf("不能打开文件!\n");return; /*终止程序*/}for(i=0;i<n;i++) /*向student文件中写入信息*/if(fwrite(&ts[i],sizeof(struct tsxx),1,fp1)!=1)printf("文件写入错误\n");fclose(fp1); /*关闭文件*/printf("\n\n\n\n\t\t\t学生借阅图书信息保存成功!\n");printf("\n\n\n\n\t\t\t按任意键返回菜单!!");getch();}void TSXX_back(){int i;char d[15];n=openl();printf("请输入归还图书的编号");scanf("%s",d);for(i=0;i<n;i++){if(strcmp(ts[i].bh,d)==0){ts[i].kc++;}else printf("您输入的编号有误,请重新执行此程序或寻则其他操作.\n");}if(n!=-1&&ts[n].kc==ts[n].total)printf("全部入藏.\n");printf("\n\n\n\t\t\t按任意键返回菜单");getch();save();}。
c语言课程设计图书信息管理系统本课程设计的选题是基于C程序设计语言的图书信息管理系统。
该系统以菜单方式工作,包括图书信息录入、浏览、查询和排序、删除和修改等功能。
在基本要求达到后,还可以进行创新设计,如实现会员资料的查询、办理借书手续等。
为了实现这些功能,我们需要遵循结构化程序设计思想,将系统设计任务分解成许多子功能模块进行设计。
程序将综合if语句及switch语句的运用方法及嵌套应用方法,循环结构的三种语句while、do-while、for,以及函数的定义方法和调用方法等来进行编写。
系统的总体结构包括录入、浏览、查询和排序、删除和修改等功能模块。
重要数据的数据结构设计采用结构体的形式,将所需的数据全放在一维数组中,方便文件录入和读取的操作。
具体的功能模块包括录入模块、浏览模块、删除模块、修改模块和查询模块。
录入模块用于录入图书信息并保存于文件中,浏览模块用于添加一个或多个图书信息,并将所添加图书信息保存,方便查找。
删除模块和修改模块分别用于对图书信息进行删除和修改处理。
查询模块则提供了按分类号、作者名、书名等多种查询方式,方便用户查找所需图书信息。
在基本功能实现的基础上,还可以进行创新设计,如实现会员资料的查询、办理借书手续等。
includeincludeincludestruct BOOK {char shuming[999]。
zuozheming[999]。
fenleihao[999]。
danwei[999]。
shijian[999]。
jiage[999];books[___];void select() {system("cls");void jm();void input();void output();void search();void xiugai();void shanchu();int n;printf("图书管理功能界面\n");menu:jm();scanf("%d"。
图书管理系统/*图书数据由编号、书名、出版社、单价和图书状态(库存用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后面的改变的是文本背景色。
图书信息管理系统图书信息管理系统源程序m_book.c + s_book.c程序源码:m_book.c#include <stdlib.h>struct node{ char name[10];int price;char pub[15];};extern struct node *add(),*del(struct node *);extern struct node *load(),*mhdel(struct node *);/*******************************************************//* 函数功能:显示菜单,选择菜单*//* 输入参数:无*//* 函数输出:选择的菜单序号*//*******************************************************/int menu_select(){int cn=0;printf(" **********************************************\n");printf("\t\t 1. Add a book\n");printf("\t\t 2. Display book library\n");printf("\t\t 3. Query a book\n");printf("\t\t 4. Delete a book\n");printf("\t\t 5. Save to disk\n");printf("\t\t 6. Load from disk \n");printf("\t\t 7. Mohu search\n");printf("\t\t 8. Mohu delete\n");printf("\t\t 0. Exit\n");printf("\t***********************************************\n");printf("\n Input(0~8): ");for(; ;){ scanf("%d",&cn);if (cn<0 ||cn>8) printf("Error ! Input again(1~6):");elsebreak;}return cn;}void main(void){struct node *head=NULL;for(; ;){ clrscr();switch(menu_select()){case 1: head=add(head);break;case 2: print(head);break;case 3: search(head);break;case 4: head= del(head);break;case 5: save(head);break;case 6: head=load();break;case 7: mhsearch(head);break;case 8: head=mhdel(head);break;case 0: exit(0);}}}s_book.c#include <stdio.h>#include <string.h>#include <stdlib.h>struct node{char name[10];float price;char pub[15];struct node *link;};struct node *add(struct node *head ) ; /* 函数功能:创建结点,输入结点数据*/ void print(struct node *head); /* 函数功能:链表输出*/void save(struct node *head); /* 函数功能:链表存储*/void search(struct node *head); /* 函数功能:链表结点查找*/struct node *del(struct node *head); /* 函数功能:结点删除*/struct node *load(void); /* 函数功能:从文件中读入数据,创建链表*/struct node *mhdel(struct node *head); /* 函数功能:结点模糊删除*/void mhsearch(struct node *head); /* 函数功能:链表结点模糊查找*//*******************************************************//* 函数功能:创建结点,输入结点数据*//* 输入参数:链表头指针*//* 函数输出:链表头指针*//*******************************************************/struct node *add(struct node *head ){int i;float jg;struct node *p, *pnew;pnew=(struct node *)malloc(sizeof(struct node));printf("Please input book name,price,publisher\n");printf("name:");scanf("%s",pnew->name);printf("price:");scanf("%f",&jg);pnew->price=jg;printf("publisher:");scanf("%s",pnew->pub);pnew->link=NULL;if (head==NULL)return (pnew);p=head;while (p->link!=NULL) /* 找到尾结点*/p=p->link;p->link=pnew;return (head);}/*******************************************************/ /* 函数功能:链表输出*//* 输入参数:链表头指针*//* 函数输出:无*//*******************************************************/ void print(struct node *head){struct node *p;p=head;printf("name\tprice\tpublisher\n");while (p!=NULL){printf("%s\t%-5.2f\t%-s\n",p->name,p->price,p->pub);p=p->link;}printf("\n\t\tPress any keys!");getch();}/*******************************************************/ /* 函数功能:链表存储*//* 输入参数:链表头指针*//* 函数输出:无*//*******************************************************/ void save(struct node *head){FILE *fp;struct node *p;if ((fp=fopen("library","wb"))==NULL){ printf("Can't open file!\n");exit(1);}p=head;while (p!=NULL){fwrite(p,sizeof(struct node),1,fp);p=p->link;}fclose(fp);}/*******************************************************/ /* 函数功能:从文件中读入数据,创建链表*//* 输入参数:无*//* 函数输出:链表头指针*//*******************************************************/ struct node *load(void){FILE *fp;struct node *p,*pnew,*phead;if ((fp=fopen("library","rb"))==NULL){ printf("Can't open file!\n");exit(1);}pnew=(struct node *)malloc(sizeof(struct node));fread(pnew, sizeof(struct node),1,fp);pnew->link=NULL;phead=pnew;p=pnew;while (!feof(fp)){ pnew=(struct node *)malloc(sizeof(struct node));if (1!=fread(pnew, sizeof(struct node),1,fp)) break;pnew->link=NULL;p->link=pnew;p=p->link;}fclose(fp);return(phead);}/*******************************************************/ /* 函数功能:链表结点查找*//* 输入参数:链表头指针*//* 函数输出:无*//*******************************************************/ void search(struct node *head){char sname[15];struct node *p;printf("Please input book name\n");printf("name:");scanf("%s",sname);p=head;while (p!=NULL){ if (strcmp(p->name,sname)==0){printf(" name price publshier\n");printf("Book Found: %s %5.2f %s\n",p->name,p->price,p->pub); printf("\n\t\tPress any keys!");getch();return;}p=p->link;}printf("Book Not Exist!\n");printf("\n\t\tPress any keys !"); getch();}/*******************************************************/ /* 函数功能:结点删除*//* 输入参数:链表头指针*//* 函数输出:返回链表头指针*//*******************************************************/ struct node *del(struct node *head){char sn[15],s;int flag=0;struct node *p,*q;printf("Please input book name\n");printf("name:");scanf("%s",sn);p=head;while(p!=NULL){while(p!=NULL &&(strcmp(p->name,sn)!=0)){ q=p;p=p->link;}if((strcmp(p->name,sn)==0)&& p!=NULL){flag=1;printf(" name price publshier\n");printf("Book Found: %s %5.2f %s\n",p->name,p->price,p->pub); printf("Do you want to del this book(y/n)");scanf("\n%c",&s);if(s=='y' || s=='Y'){if(p==head)head=p->link;else q->link=p->link;free(p);printf("This book is deleted!\n");printf("\n\t\tPress any keys !");getch();}else{printf("\nThis book not delete!\n");printf("\n\t\tPress any keys!");getch();return head;}}else{ if(flag!=1){ printf("\nNOT found!");printf("\n\t\tPress any key!");getch();}break;}if(p!=NULL){ p=p->link; }}return head;}void mhsearch(struct node *head){char s[15];int flag=0;struct node *p;printf("Please input book name\n");printf("name:");scanf("%s",s);p=head;while(p!=NULL){while(p!=NULL && (strstr(p->name,s)==NULL)){ p=p->link;}if(strstr(p->name,s)!=NULL){printf(" name price publshier\n");printf("Book Found: %s %5.2f %s\n",p->name,p->price,p->pub); flag=1;getch();}else{ if(flag!=1){ printf("\nNOT found!");printf("\n\t\tPress any key!");getch();}}if(p!=NULL){ p=p->link; }}}struct node *mhdel(struct node *head){char sn[15],s;int flag=0;struct node *p,*q;printf("Please input book name\n");printf("name:");scanf("%s",sn);p=head;while(p!=NULL){while(p!=NULL &&(strstr(p->name,sn)==NULL)){ q=p;p=p->link;}if((strcmp(p->name,sn)!=NULL)&& p!=NULL){flag=1;printf(" name price publshier\n");printf("Book Found: %s %5.2f %s\n",p->name,p->price,p->pub); printf("Do you want to del this book(y/n)");scanf("\n%c",&s);if(s=='y' || s=='Y'){if(p==head)head=p->link;else q->link=p->link;free(p);printf("This book is deleted!\n");printf("\n\t\tPress any keys !");getch();}else{printf("\nThis book not delete!\n");printf("\n\t\tPress any keys!");getch();return head;}}else{ if(flag!=1){ printf("\nNOT found!");printf("\n\t\tPress any key!");getch();}break;}p=head;}return head;。
图书管理系统目录一、问题描述这是一个能简单管理图书的小型图书管理系统,其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。
通过这些信息使之提供以下功能:(1)图书信息创建功能。
其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。
(图书信息用文件保存)。
(2)图书信息查看功能。
用来查看各项图书信息。
(3)图书信息查找功能。
通过已知信息来查找想要的图书。
(4)图书信息的删除。
可以删除特定图书。
(5)图书信息的修改。
可以修改图书的各项信息。
(6)菜单选择功能,此功能也是图书信息信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能二、概要设计1 数据结构图书管理系统中主要的数据结构包含书名、图书书号、作者名、分类、出版社、出版时间、价格等;在处理过程中各项可以作为一本图书的不同属性来进行处理。
struct book{int num;//编号char name[20];//书名char author[20];//作者char publisher[20];//出版社int price;//价格int store;//库存};//图书信息结构体2 模块划分本系统主要有创建新的图书、查找图书、删除图书、修改图书、查看图书和图书排序几个基本功能。
void setup(struct book bo[]);//新建图书void search(struct book bo[]);//查找图书void modify(struct book bo[]);//查看图书void del(struct book bo);//删除图书void allbook(struct book bo[]);显示所有图书3 程序流程图否开始菜单新建图书修改信息查询图书删除图书所有图书退出是结束三、详细设计1 主函数int main()//主{struct book bo[100];char c;while(1){system("color 1A");printf("\n");printf("\n\t\t\t >>>欢迎进入图书管理系统<<<\n\n");printf("===================================== ===========================================\ n\n");printf("\t\t\t\t 1 录入新书\n\t\t\t\t 2 查询图书\n");printf("\t\t\t\t 3 修改信息\n\t\t\t\t 4 删除图书\n");printf("\t\t\t\t 5 所有图书\n");printf("\t\t\t\t 0 退出系统\n\n");printf("===================================== ===========================================\ n");printf("请选择:");c=getchar();switch(c){case'1':{setup(bo); getchar();break;}case'2':{search(bo);getchar();break;}case'3':{modify(bo);getchar();break;}case'4':{del(bo);getchar();break;}case'5':{allbook(bo);getchar;break;}case'0':{printf("\n感谢使用本系统");return 0;break;}default:{printf("\n输入有误,请重新输入:" );c=getchar();} }}}2 新建图书void setup(struct book bo[])打开文件或者新建一个文件,键盘输入新建的图书信息,然后把数据全部保存在数组bo数组中,最后存入文件。
1.设计目的随着科学技术的不断提高,计算机科学日渐成熟, 作为计算机应用的一部分,使用计算机对图书信息进行管理,具有手工管理所无法比拟的优点。
本系统以高校院级管理为背景,主要实现对图书馆信息的管理,主要可以分为两大块:教师借书、还书处理以及挂账信息处理。
2. 设计要求(1)系统以菜单方式工作,界面应清晰直观,便于用户操作;(2)借阅信息录入:包括图书编号(不重复)、书名、单价,借阅教师姓名,所属系部,借阅日期,还书日期(在还书时填上)。
以结构数组或数据文件形式保存教师借阅信息;(3)信息查询浏览:查询某教师所借图书信息一览,查询指定书目被借阅的信息;(4)挂账处理:显示某教师挂账信息(借出时间超过3个月);(5)借阅统计:某教师借阅图书总数,某系所有教师借阅图书数逆序显示,某系借阅图书超额的教师名单显示(任一种)3. 设计内容本次课程设计通过对管理系统模型的研究,提出了一套构造图书信息管理系统模型的方法,提出了图书管理系统的一般建立方法,并且利用数据库、信息系统分析所学知识,结合其它相关管理常识,通过对某图书馆图书流通过程的分析,建立相关数据模型,利用面向对象开发工具对其进行设计与开发。
系统主要由两大子系统组成:图书管理和图书信息服务子系统。
系统主要有三个数据库表:图书信息表,教师信息表和借出信息表.4. 概要设计(1)程序通过下拉菜单实现,菜单功能描述如图所示:(2)程序分为六个模块:建立菜单、借阅信息录入、某教师借阅信息、指定书目被借阅信息、挂账处理、统计某教师借阅图书总数。
运行时用主调函数将六个模块链接起来。
函数功能和程序流程图:5. 详细设计Menu () 菜单函数 main () 主函数Creat () 生成教师链表 Create () 生成图书链表 Search () 教师查询 Booksearch () 图书查询 Pay () 挂账处理 Total () 借阅统计(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 图书查询我们可以根据图书的不同字段来实现不同的查询功能,比如根据图书标题、作者、分类等进行模糊查询,或根据图书编号进行精确查询。
图书信息管理系统设计一、【要求】图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
设计一图书信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)图书信息录入功能(3)图书信息浏览功能(4)图书信息查询功能(5)图书信息的删除与修改功能二、【各功能模块】1、菜单模块《1》、主函数:建立menu( )函数将主函数功能提取出来,主函数main调用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.h>#include<stdlib.h>#include<string.h>#include<conio.h>void menu();#define N 3typedef struct system{long num;char name[20];char writer[10];char sort[10];char publisher[20];long time;float price;}BOOK;注:定义的BOOK结构体N为限定的录入图书个数(可依据不同要求变化围)long num为定义的登录号(长整形变量)char name[20]为定义的书名的数组char writer[10]为定义的作者的数组char sort[10]定义的分类号数组char publisher[20]定义的出版单位数组long time定义的出版时间长整形变量float price价格为浮点型变量。
《2》、【数据存储】整个程序没有利用保存save函数,而是利用txt.txt \ tab.txt 两个文件录入存取数据信息,并通过文件的读取、写入进行图书信息的修改/删除等功能。
(fopen fwrite fread写入及读取数据进行存储)。
《3》【图书信息录入】图书录入流程图【程序】void input() /*定义录入函数*/{int i;BOOK a;FILE *fp;if((fp=fopen("txt.txt","w"))==NULL){printf("error!\n");exit(0);}for(i=1;i<=N;i++){printf("\t请输入您所需书籍的登陆号:");scanf("%ld",&a.num);printf("\t请输入书名:");scanf("%s",);printf("\t请输入作者名:");scanf("%s",a.writer);printf("\t请输入分类号:");scanf("%s",a.sort);printf("\t请输入出版单位:");scanf("%s",a.publisher);printf("\t请输入出版时间:");scanf("%ld",&a.time);printf("\t请输入该书的价格:");scanf("%f",&a.price);fwrite(&a,sizeof(BOOK),1,fp);}fclose(fp);}《4》【图书信息浏览】该模块的功能是显示所有录入的图书信息,流程图如下:图书浏览流程【程序】void list() /*定义浏览函数*/{BOOK a;FILE *fp;if((fp=fopen("txt.txt","r"))==NULL){printf("error!\n");exit(0);}printf("\n\n\n\n\n\n\n\n\n登陆号\t书名\t作者名\t分类号\t出版单位\t 出版时间\t价格\n\n");while(fread(&a,sizeof(BOOK),1,fp)!=0)printf("\t%ld\t%s\t%s\t%s\t%s\t%ld\t%3.2f\n",a.num,,a.writer,a.sort,a.publisher,a.time,a.price);fclose(fp);printf("\n\t press any key to continue...");getch();}《5》【图书信息查询】[需求分析]用户需要查找的图书,调用函数:1、按书名查找search_by_name2、按作者名查找search_by_write,两种方式进行查询。
输入查询方式,进入功能选项,1、首先打开源文件txt.txt ,则按照输入书名进行for 循环查找,若查到则显示图书信息。
若无,则显示“file open error!!”。
按任意键结束。
2、与1、流程相同,按照作者名查询。
查询功能流程图【程序】void search() /*定义查询函数*/{int a;printf("\t\t******************************\n");printf("开始查询\n");printf("\t\t\t1---------------按书名查询\n");printf("\t\t\t2---------------按作者名查询\n");printf("\t\t\t0---------------exit\n");printf("\t\t******************************\n") ;printf("\t\t请选择你想要的查询方式:");scanf("%d",&a);switch(a){case 1:search_by_name();break;case 2:search_by_writer();break;case 0:return;}}void search_by_name() /*定义按书名查询*/{FILE *fp;int i;BOOK b[N];char s2[20];fp=fopen("txt.txt","r");if(fp==NULL){printf("file open error!!\n");exit(0);}for(i=0;i<N&&fp!=NULL;i++)//shanchufread(&b[i],sizeof(BOOK),1,fp);printf("请输入要查询的书名: ");scanf("%s",s2);for(i=0;i<N;i++){if(strcmp(s2,b[i].name)==0){printf("书号书名作者种类出版商出版日期价格\n");printf("\t%ld\t%s\t%s\t%s\t%s\t%ld\t%3.2f\n",b[i].num,b[i].name,b[i].writer,b[i].sort,b[i].publisher,b[i].time,b[i].price);}fclose(fp);}}void search_by_writer() /*定义按作者名查询*/{int i;FILE *fp;BOOK b[N];char s3[20];fp=fopen("txt.txt","r");if(fp==NULL){printf("file open error!!\n");exit(0);}for(i=0;i<N;i++)fread(&b[i],sizeof(BOOK),1,fp);printf("请输入要查询的书的作者: ");scanf("%20s",s3);for(i=0;i<N;i++)if(strcmp(s3,b[i].writer)==0){printf("书号书名作者种类出版商出版日期价格\n");printf("\t%ld\t%s\t%s\t%s\t%s\t%ld\t%3.2f\n",&b[i].num,b[i].name,b[i].writer,&b[i].sort,b[i].publisher,&b[i].time,&b[i].price);}fclose(fp);}《6》【图书信息删除】[需求分析]该模块功能是,先输入需要删除的图登陆号,打开存储文件for循环查找该图书信息,然后利用b[k]=b[k+1]语句进行删除,即将要删除的一列用后一列进行替换完成删除功能,最后将改后的信息在写入结构体存入文件,关闭文件夹。