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

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

这篇文章主要为大家详细介绍了C语言实现简单的图书管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言实现简单图书管理系统的具体代码,供大家参考,具体内容如下

代码:

/*

课程设计项目名称:图书查询系统

作者:施瑞文

时间:2018.3.4

*/

# includestdio.h

#includestring.h

#includewindows.h

#includeconio.h

#includestdlib.h

#定义sizeof(结构书)

结构书//图书信息

{

字符数[10];//登录号

char name[10];//书名

茶作者[10];//作者名

字符类型[10];//类型

char publish[10];//出版单位

充电时间[8];//出版时间

浮动价格;//价格

int num//数量

int x;

结构书*下一页//指针域

};

typedef结构书书;

typedef书*书;

void隐藏光标();//隐藏光标

void toxy(int x,int y);//将光标移动到x,Y坐标处

空颜色(短x);//设置颜色

void over();//退出

void menu();//菜单

void input_book()。//图书入库

void save_book(图书p);//将图书信息存入文件

void find _ book();//查询

void print _ book();//图书总览

void del _ book();//删除图书

void amend _ book();//修改信息

书ss();

void find _ name _ book();//按书名查询

void find _ author _ book();//按作者查询

void find _ number _ book();//按登录号查询

void find _ publish _ book();//按出版社查询

void fuzzy _ search();//模糊查找

void HideCursor() //隐藏光标

{

控制台_光标_信息光标_信息={1,0}。

SetConsoleCursorInfo(GetStdHandle(STD _ OUTPUT _ HANDLE),cursor _ info);

}

空心颜色(短x)

{

if(x=0x=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() //菜单

{

{

系统(“cls”);//清屏

隐藏光标();//隐藏光标

颜色(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();//不回显函数

开关(吨)

{

事例“1”:input _ book();打破;

案例" 2 ":amend _ book();打破;

案例" 3 ":del _ book();打破;

案例“4”:find _ book();打破;

案例" 5 ":print _ book();打破;

案例“6”:over();打破;

默认:断开

}

} while(1);

}

书ss() //将文件中的内容读出到链表中,返回值为表头地址

{

FILE * fp//文件指针

int n=0;

书头=空;

书p2,p,pr=空

fp=fopen('mybook ',' ab ');//以只读的方式打开文件

if(fp==NULL)

{

printf('无法打开文件\ n’);

}

而(!feof(fp)) //判断文件位置标志是否移动到文件末尾

{

n;

p=(book)malloc(N);//向内存申请一段空间

fread(p,N,1,FP);//将复调钢琴所指向的文件中的内容赋给p

如果(n==1)

{

head=p;

p2=p;

}

else //创建链表

{

pr=p2

p2-next=p;

p2=p;

}

}

如果(公关!=空)

pr-next=NULL;

其他

head=NULL

fclose(FP);//关闭文件

回程头;//返回头指针

}

void input_book() //图书录入

{

{

系统(“cls”);

颜色(10);

char t;

书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型);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('保存.');

睡眠(500);//暂停0.5秒

系统(“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('-');

而(1) //使用无限循环可以有效防止其他键的干扰。

{

t=getch();

if(t=='1 ')

{

打破;

}

else if(t=='2 ')

{

menu();

}

}

} while(1);

}

voi Modify _ book()//修改图书信息

{

{

系统(“cls”);

颜色(10);

书头,p;

int i=11,j=0,x;

char ch,t;

FILE * fp//文件指针

char _ name[10];

字符数[10];//登录号

char name[10];//书名

char作者[10];//作者姓名

字符类型[10];//类型

char publish[10];//出版公司

充电时间[8];//发布时间

浮动价格;//价格

int num//数量

head=ss();

p=头部;

toxy(48,10);

Printf('请输入要修改的书名:');

获取(_ name);

而(p!=NULL) //将p-x初始化为0

{

p-x=0;

p=p-next;

}

p=头部;//让P再次指向头

toxy(20,5);

printf(' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *)

toxy(20,8);

printf('-');

toxy(20,9);

Printf('登录号、书名、作者姓名、图书类别、出版单位、出版时间、价格、数量');

toxy(20,10);

printf('-');

而(p!=空)

{

如果(p!=NULLstrcmp(p-name,_name)==0)

{

toxy(20,I);

j;

printf('%d:%ssss s s %.2fd\n',j,p-number,p-name,p-author,p-type,p-publish,p-time,p-price,p-num);

p-x=j;//标注符合查询条件的节点

我;

}

p=p-next;

}

If(j==0) //如果j=0,则不进入前一个搜索周期,即没有找到对应的信息。

{

toxy(50,I);

Printf('没有找到对应的信息!(按0返回,按1再次搜索)’);

而(1) //无限循环是为了防止0和1以外的其他键的干扰。

{

ch=getch();

if(ch=='0 ')

{

menu();打破;

}

else if(ch=='1 ')

{

打破;

}

}

If(ch=='1') //如果输入ch等于1,结束这个循环。

继续;

}

while(1)

{

toxy(45,I);

Printf('请输入您要修改的书号:');

scanf('%d ',x);getchar();

if(xj||x==0)

{

toxy(45,I);

Printf('输入错误,请重新输入!');

睡眠(500);

}

其他

{

打破;

}

}

p=头部;//让P再次指向头

而(p!=NULLp-x!=x) //遍历链表查询符合条件的节点。

{

p=p-next;

}

If(p) //如果p不为空

{

系统(“cls”);

//输入要修改的信息

toxy(48,8);

Printf('请输入图书存取号(少于10位):');

scanf('%s ',编号);getchar();strcpy(p-number,number);

toxy(48,10);

Printf('请输入书名(少于10位):');

scanf('%s ',名称);getchar();strcpy(p-name,name);

toxy(48,12);

Printf('请输入作者姓名(少于10位):');

scanf('%s ',作者);getchar();strcpy(p-author,作者);

toxy(48,14);

Printf('请输入图书类别(少于10位):');

scanf('%s ',类型);getchar();strcpy(p型,type);

toxy(48,16);

printf('请输入图书出版单位(小于10位数):');

scanf('%s ',发布);getchar();strcpy(p-publish,publish);

toxy(48,18);

printf('请输入图书出版时间(小于8位数):');

scanf('%s ',时间);getchar();strcpy(p-time,time);

toxy(48,20);

printf('请输入图书价格:');

扫描f('%f ',价格);getchar();p-价格=价格;

toxy(48,22);

printf('请输入图书数量:');

scanf('%d ',编号);getchar();p-num=num;

}

颜色(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 ')

{

打破;

}

else if(t=='2 ')

{

menu();

}

}

系统(“cls”);

toxy(46,10);

printf('正在修改,请稍后.');

fp=fopen('mybook ',' WB ');//以只写的方式打开名为我的书的二进制文件,打开的同时清空文件中的内容

if(fp==NULL)

{

printf('无法打开文件');

}

if(fwrite(head,N,1,fp)!=1) //将头写入复调钢琴所指向的文件中

{

printf('写入错误!');

}

fclose(FP);//关闭文件

如果(头!=NULL) //如果头不为空

{

p=head-next;//让p指向第二个结点

fp=fopen('mybook ',' ab ');//以追加的方式打开文件

if(fp==NULL)

{

printf('无法打开文件');

}

而(p!=空)

{

if(fwrite(p,N,1,fp)!=1)//将p写入复调钢琴所指向的文件中

{

printf('写入错误!');

}

p=p-next;

}

fclose(FP);//关闭文件

}

睡眠(500);//暂停0.5秒

系统(“cls”);

toxy(46,10);

printf('修改成功!即将自动返回主菜单.');

睡眠(500);

打破;

} while(1);

}

void del_book() //删除信息

{

{

系统(“cls”);

颜色(9);

文件* fp

书头,p,pre=NULL

int j=0,x,i=11

char name[10];

char t,c,ch;

head=ss();//调用函数,返回表头地址

toxy(48,10);

printf('请输入你要删除的图书的书名:');

scanf('%s ',名称);

p=头部;

而(p!=空)

{

p-x=0;

p=p-next;

}

p=头部;

toxy(20,5);

printf(' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * '图书信息******************************************************');

toxy(20,8);

printf('-');

toxy(20,9);

printf('登录号书名作者名图书类别出版单位出版时间价格数量');

toxy(20,10);

printf('-');

而(p!=空)

{

如果(p!=NULLstrcmp(p-name,name)==0)

{

toxy(20,I);

j;

printf('%d:%ssss s s %.2fd\n',j,p-number,p-name,p-author,p-type,p-publish,p-time,p-price,p-num);

p-x=j;

我;

}

p=p-next;

}

if(j==0) //如果j=0,即没有进入前面的搜索循环,也就是没有找到相应的信息

{

toxy(50,I);

printf('没有找到相应的信息!(按0返回,按一重新搜索)');

while(1) //死循环是为了防止除0和一的其他按键干扰

{

ch=getch();

if(ch=='0 ')

{

menu();打破;

}

else if(ch=='1 ')

{

打破;

}

}

if(ch=='1') //如果输入的荣誉勋爵等于1,则结束本次循环

继续;

}

while(1)

{

toxy(45,I);

printf('请输入您要删除的图书的编号:');

scanf('%d ',x);getchar();

if(xj||x==0)

{

toxy(45,I);

printf('输入错误,请重新输入!');

睡眠(500);

}

其他

{

打破;

}

}

颜色(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 ')

{

打破;

}

else if(t=='2 ')

{

menu();

}

}

p=头部;

而(p!=NULLp-x!=x)

{

pre=p;

p=p-next;

}

如果(p!=空)

{

if(pre==NULL)

{

head=head-next;

}

其他

{

pre-next=p-next;

}

}

免费(p);

fp=fopen('mybook ',' WB ');

if(fp==NULL)

{

printf('无法打开文件');

}

if(fwrite(head,N,1,fp)!=1)

{

printf('写入错误!');

}

fclose(FP);

如果(头!=空)

{

p=head-next;

fp=fopen('mybook ',' ab ');

if(fp==NULL)

{

printf('无法打开文件');

}

而(p!=空)

{

if(fwrite(p,N,1,fp)!=1)

{

printf('写入错误!');

}

p=p-next;

}

fclose(FP);

}

系统(“cls”);

toxy(46,10);

printf('正在删除,请稍后.');

睡眠(500);

系统(“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 ')

{

打破;

}

else if(c=='2 ')

{

menu();

}

}

} while(1);

}

void print_book() //图书总览

{

系统(“cls”);

颜色(6);

书头,p;

int i=11

int sum=0;

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=头部;

而(p!=空)

{

toxy(20,I);

printf('%ssss s s %.2fd\n',p-number,p-name,p-author,p-type,p-publish,p-time,p-price,p-num);

我;

sum=p-num;//计算图书总量

p=p-next;

}

toxy(48,7);

printf('图书总量为:%d ',sum);

toxy(45,I);

printf('按任意键返回');

getch();//不回显函数

}

void find_book() //查询图书

{

{

系统(“cls”);//清屏

颜色(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();

开关(吨)

{

事例“0”:menu();打破;

事例“1”:find _ name _ book();打破;

案例“2”:find _ author _ book();打破;

案例“3”:find _ number _ book();打破;

案例“4”:find _ publish _ book();打破;

案例“5”:fuzzy _ search();打破;

默认:断开

}

} while(1);

}

void find_name_book() //按名字查询

{

系统(“cls”);

颜色(8);

书头,p;

int i=11

head=ss();

char name[10];

toxy(48,8);

printf('请输入您要查询图书的书名:');

获取(名称);

toxy(48,10);

printf('正在查询.');

睡眠(500);

p=头部;

toxy(20,5);

printf(' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * '图书总览******************************************************');

toxy(20,8);

printf('-');

toxy(20,9);

printf('登录号书名作者名图书类别出版单位出版时间价格数量');

toxy(20,10);

printf('-');

而(p!=空)

{

如果(p!=NULLstrcmp(p-name,name)==0)

{

toxy(20,I);

printf('%ssss s s %.2fd\n',p-number,p-name,p-author,p-type,p-publish,p-time,p-price,p-num);

我;

}

p=p-next;

}

toxy(45,I);

printf('按任意键返回!');

getch();

find _ book();

}

void find_author_book() //按作者名查询

{

系统(“cls”);

颜色(8);

书头,p;

int i=11

head=ss();

茶作者[10];

toxy(48,8);

printf('请输入您要查询图书的作者名:');

获取(作者);

toxy(48,10);

printf('正在查询.');

睡眠(500);

p=头部;

toxy(20,5);

printf(' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * '图书总览******************************************************');

toxy(20,8);

printf('-');

toxy(20,9);

printf('登录号书名作者名图书类别出版单位出版时间价格数量');

toxy(20,10);

printf('-');

而(p!=空)

{

如果(p!=NULLstrcmp(p-author,author)==0)

{

toxy(20,I);

printf('%ssss s s %.2fd\n',p-number,p-name,p-author,p-type,p-publish,p-time,p-price,p-num);

我;

}

p=p-next;

}

toxy(45,I);

printf('按任意键返回!');

getch();

find _ book();

}

void find_number_book() //按图书编号查询

{

系统(“cls”);

颜色(8);

书头,p;

int i=11

head=ss();

字符数[10];

toxy(48,8);

printf('请输入您要查询图书的登录号:');

获取(数字);

toxy(48,10);

printf('正在查询.');

睡眠(500);

p=头部;

toxy(20,5);

printf(' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * '图书总览******************************************************');

toxy(20,8);

printf('-');

toxy(20,9);

printf('登录号书名作者名图书类别出版单位出版时间价格数量');

toxy(20,10);

printf('-');

而(p!=空)

{

如果(p!=NULLstrcmp(p-number,number)==0)

{

toxy(20,I);

printf('%ssss s s %.2fd\n',p-number,p-name,p-author,p-type,p-publish,p-time,p-price,p-num);

我;

}

p=p-next;

}

toxy(45,I);

printf('按任意键返回!');

getch();

find _ book();

}

void find_publish_book() //按出版商查询

{

系统(“cls”);

颜色(8);

书头,p;

int i=11

head=ss();

char publish[10];

toxy(48,8);

printf('请输入您要查询图书的出版社:');

获取(发布);

toxy(48,10);

printf('正在查询.');

睡眠(500);

p=头部;

toxy(20,5);

printf(' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * '图书总览******************************************************');

toxy(20,8);

printf('-');

toxy(20,9);

printf('登录号书名作者名图书类别出版单位出版时间价格数量');

toxy(20,10);

printf('-');

而(p!=空)

{

如果(p!=NULLstrcmp(p-publish,publish)==0)

{

toxy(20,I);

printf('%ssss s s %.2fd\n',p-number,p-name,p-author,p-type,p-publish,p-time,p-price,p-num);

我;

}

p=p-next;

}

toxy(45,I);

printf('按任意键返回!');

getch();

find _ book();

}

空的模糊搜索()//模糊查询

{

系统(“cls”);

颜色(8);

书头,p;

int i=11

head=ss();

茶信息[10];

toxy(48,8);

printf('请输入您要查询图书的信息:');

获取(信息);

toxy(48,10);

printf('正在查询.');

睡眠(500);

p=头部;

toxy(20,5);

printf(' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * '图书总览******************************************************');

toxy(20,8);

printf('-');

toxy(20,9);

printf('登录号书名作者名图书类别出版单位出版时间价格数量');

toxy(20,10);

printf('-');

而(p!=空)

{

如果(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('%ssss s s %.2fd\n',p-number,p-name,p-author,p-type,p-publish,p-time,p-price,p-num);

我;

}

p=p-next;

}

toxy(45,I);

printf('按任意键返回!');

getch();

find _ book();

}

void save_book(book p) //将p中内容写入文件

{

FILE * fp//文件指针

fp=fopen('mybook ',' ab ');//以追加的方式打开名字为我的书的二进制文件

if(fp==NULL)

{

printf('无法打开文件');

}

if(fwrite(p,N,1,fp)!=1) //将p所指向的一段大小为普通的内容存入复调钢琴所指向的文件中

{

printf("写入错误");

}

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();//输入t

开关(吨)

{

案例"1":

系统(“cls”);

颜色(6);

toxy(48,10);

printf('正在安全退出.');

睡眠(1000);//暂停一秒

系统(“cls”);

颜色(8);

toxy(48,10);

printf('已安全退出软件');

toxy(48,12);

printf('谢谢使用!');

toxy(48,14);

printf('by-by^_^');

退出(0);打破;//终止程序

案例"2":

menu();打破;//调用函数,进入菜单

默认:断开

}

}

}

main() //简洁明了的主函数

{

menu();//菜单

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: