跪求一C++做的《网上图书管理系统》谢谢!!! 100
题目:网上图书管理系统设计设计要求:某图书馆馆长希望你能设计一个图书管理系统。你需要使用C或C++编写,并使用socket,多线程,和文件操作等程序设计方法完成这个系统,...
题目:网上图书管理系统设计
设计要求:
某图书馆馆长希望你能设计一个图书管理系统。你需要使用C或C++编写,并使用socket,多线程,和文件操作等程序设计方法完成这个系统,馆长的具体要求是:
a) 两种人可以登录这个系统,读者和管理员。读者用自己的用户和密码登录后可以查看管内书籍信息,自己借还书信息。管理员可以管理书籍及读者信息,如,来了新书后将新书加入书籍信息,读者借书或还书后更改读者借还书信息,修改读者密码,添加新的读者等。
b) 能实现多线程支持,即多个读者和管理员可以同时上线查询和管理。
c) 退出系统后所有信息不会丢失。
本次设计的操作系统为Windows XP,使用Microsoft Visual C++ 6.0集成环境。
设计步骤:
a) 根据题目及任务要求进行系统设计,写出设计方案并画出流程图;
b) 根据流程图完成功能模块的细节设计;
c) 完成代码并调试;
发到邮箱 : leslie_1987@126.com 展开
设计要求:
某图书馆馆长希望你能设计一个图书管理系统。你需要使用C或C++编写,并使用socket,多线程,和文件操作等程序设计方法完成这个系统,馆长的具体要求是:
a) 两种人可以登录这个系统,读者和管理员。读者用自己的用户和密码登录后可以查看管内书籍信息,自己借还书信息。管理员可以管理书籍及读者信息,如,来了新书后将新书加入书籍信息,读者借书或还书后更改读者借还书信息,修改读者密码,添加新的读者等。
b) 能实现多线程支持,即多个读者和管理员可以同时上线查询和管理。
c) 退出系统后所有信息不会丢失。
本次设计的操作系统为Windows XP,使用Microsoft Visual C++ 6.0集成环境。
设计步骤:
a) 根据题目及任务要求进行系统设计,写出设计方案并画出流程图;
b) 根据流程图完成功能模块的细节设计;
c) 完成代码并调试;
发到邮箱 : leslie_1987@126.com 展开
3个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
void main()
{
char choice1,choice2,ch;
int n=0;
void change();//删修函数原型声明
void seek();//查询函数原型声明
void add();//图书信息录入函数原型声明
void menu_function(); //功能选择菜单提示原型声明
printf("---------------------------------Welcome!!!-------------------------------------\n");
do
{ menu_function(); //调用功能选择菜单提示
choice1=getchar(); //选择要实现功能选择
if(n!=0)
ch=getchar();
n++;
switch(choice1)
{
case 'A': add();break;
case 'B': seek();break;
case 'C': change();break;
default : printf("输入错误\n");break;
}
printf("请选择下一步操作:\n1---继续\n2---退出\n");
ch=getchar();
choice2=getchar();
ch=getchar();
}
while(choice2!='2');
printf("Thank you for your comming!\n");
}
void menu_seek() //查询方式选择菜单
{
system("cls");
printf("----------------------请选择按哪种方式进行查询:-------------------------------\n");
printf("1---按书名查询\t2---按作者名查询\t3---全部显示\n");
printf("按序号进行选择:");
}
void menu_function() //实现功能选择菜单
{
system("cls");
printf("---------------------------请选择要实现哪种功能:-------------------------------\n");
printf("A---图书信息的录入功能\nB---图书信息的浏览功能\nC---图书信息的删除与修改\n");
printf("按序号进行选择:");
}
struct book
{
char number_1[10]; //登录号
char bookname[10]; //书名
char writername[10]; //作者名
char number_2[10]; //分类号
char printadd[10]; //出版单位
char printtime[10]; //出版时间
int price; //价格
};
struct book *head,books[20];
int n=0;
void add() //图书信息录入
{ FILE *fp;
struct book *p1;
system("cls");
printf("请输入要添加的图书信息:\n登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");
printf("提示:当输入登录号为00时信息录入完毕进行下一步操作\n");
if((fp=fopen("book.dat","wb"))==NULL)
{
printf("cannot open file\n");
return;
}
for(p1=head=books;n<20;p1++,n++)
{
scanf("%s",p1->number_1);
if((strcmp(p1->number_1,"00"))==0) break;
scanf("%s",p1->bookname);
scanf("%s",p1->writername);
scanf("%s",p1->number_2);
scanf("%s",p1->printadd);
scanf("%s",p1->printtime);
scanf("%d",&p1->price);
fwrite(p1,sizeof(struct book),1,fp);
}
fclose(fp);
}
void seek() //图书信息浏览
{ void writername();//按照图书作者名查询函数原型声明
void bookname();//按照图书书名查询函数原型声明
void allprint();//全部输出函数原型声明
char choice,ch; //查询方式选择
menu_seek(); //调用查询方式选择菜单
choice=getchar();
ch=getchar();
switch(choice)
{
case '1': bookname();break; //按书名查询
case '2': writername();break;//按作者名查询
case '3': allprint();break;// 全部输出
default: printf("输入错误\n");break;
}
}
void bookname() //按书名查询
{
void print(struct book *p);
struct book *p1;
char *p2="00",*p3;
char temp[10];
system("cls");
printf("请输入要查询的书名:\n"); //要查询的图书名称
scanf("%s",temp);
p3=temp;
for(p1=head;p1<head+n;p1++)
{if(strcmp(p3,p1->bookname)==0)
print(p1);
}
printf("图书名称查询完毕!\n");
}
void writername() //按作者名查询
{
void print(struct book *p);//输出图书信息函数原型声明
struct book *p1;
char *p2="00",*p3;
char temp[10];
system("cls");
printf("请输入要查询的书的作者名:\n"); //要查询的图书作者名称
scanf("%s",temp);
p3=temp;
for(p1=head;p1<=head+n;p1++)
{if((strcmp(p3,p1->writername))==0)
print(p1);//调用输出图书信息函数
}
printf("图书作者名称查询完毕!\n");
}
void change() //信息删修
{
char choice;
char temp[10]; //要删修图书的书名
struct book *p1;
char *p2,ch;
void bookname();
void del(struct book*);//删除函数原型声明
void update(struct book *p);//修改函数原型声明
p1=head;
system("cls");
printf("请输入所要删修的图书书名\n");
scanf("%s",temp);
p2=temp;
for(p1=head;p1<=head+n;p1++)
{
if((strcmp(p2,p1->bookname))==0)
{
printf("请选择是删除还是进行修改?\n");
printf("1---删除\n2---修改\n");
ch=getchar();
choice=getchar();
ch=getchar();
switch(choice)
{
case '1': del(p1);break;
case '2': update(p1);break;
default: printf("输入错误\n");
}
}
}
printf("删修完毕!\n");
}
void print(struct book *p)//输出图书信息函数
{
system("cls");
printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");
printf("%s\t",p->number_1);
printf("%s\t",p->bookname );
printf("%s\t",p->writername);
printf("%s\t",p->number_2);
printf("%s\t",p->printadd);
printf("%s\t",p->printtime);
printf("%d\n",p->price);
}
void allprint()
{
struct book *p;
system("cls");
printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");
for(p=head;p<head+n;p++)
{
printf("%s\t",p->number_1);
printf("%s\t",p->bookname );
printf("%s\t",p->writername);
printf("%s\t",p->number_2);
printf("%s\t",p->printadd);
printf("%s\t",p->printtime);
printf("%d\n",p->price);
}
}
void del(struct book *p)//
{
void print(struct book *p);
struct book nul={'\0',"","","","","",' '},*p1;
p1=&nul;
strcpy(p->number_1,p1->number_1);
strcpy(p->bookname,p1->bookname);
strcpy(p->writername,p1->writername);
strcpy(p->number_2,p1->number_2);
strcpy(p->printadd,p1->printadd);
strcpy(p->printtime,p1->printtime);
p->price=nul.price;
system("cls");
print(p);//调用输出图书信息函数
}
void update(struct book *p)
{
FILE *fp;
struct book *p1;
p1=head=books;
system("cls");
if((fp=fopen("book.dat","rb"))==NULL)
{
printf("cannot open file\n");
return;
}
fread(p1,sizeof(struct book),1,fp);
printf("请输入要修改的图书新信息:\n登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");
printf("提示:当输入登录号为00时信息录入完毕进行下一步操作\n");
for(;n<20;p1++,n++)
{ scanf("%s",p1->number_1);
if((strcmp(p1->number_1,"00"))==0) break;
scanf("%s",p1->bookname);
scanf("%s",p1->writername);
scanf("%s",p1->number_2);
scanf("%s",p1->printadd);
scanf("%s",p1->printtime);
scanf("%d",&p1->price);
fwrite(p1,sizeof(struct book),1,fp);
}
fclose(fp);
}
#include<stdlib.h>
#include<string.h>
#include<conio.h>
void main()
{
char choice1,choice2,ch;
int n=0;
void change();//删修函数原型声明
void seek();//查询函数原型声明
void add();//图书信息录入函数原型声明
void menu_function(); //功能选择菜单提示原型声明
printf("---------------------------------Welcome!!!-------------------------------------\n");
do
{ menu_function(); //调用功能选择菜单提示
choice1=getchar(); //选择要实现功能选择
if(n!=0)
ch=getchar();
n++;
switch(choice1)
{
case 'A': add();break;
case 'B': seek();break;
case 'C': change();break;
default : printf("输入错误\n");break;
}
printf("请选择下一步操作:\n1---继续\n2---退出\n");
ch=getchar();
choice2=getchar();
ch=getchar();
}
while(choice2!='2');
printf("Thank you for your comming!\n");
}
void menu_seek() //查询方式选择菜单
{
system("cls");
printf("----------------------请选择按哪种方式进行查询:-------------------------------\n");
printf("1---按书名查询\t2---按作者名查询\t3---全部显示\n");
printf("按序号进行选择:");
}
void menu_function() //实现功能选择菜单
{
system("cls");
printf("---------------------------请选择要实现哪种功能:-------------------------------\n");
printf("A---图书信息的录入功能\nB---图书信息的浏览功能\nC---图书信息的删除与修改\n");
printf("按序号进行选择:");
}
struct book
{
char number_1[10]; //登录号
char bookname[10]; //书名
char writername[10]; //作者名
char number_2[10]; //分类号
char printadd[10]; //出版单位
char printtime[10]; //出版时间
int price; //价格
};
struct book *head,books[20];
int n=0;
void add() //图书信息录入
{ FILE *fp;
struct book *p1;
system("cls");
printf("请输入要添加的图书信息:\n登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");
printf("提示:当输入登录号为00时信息录入完毕进行下一步操作\n");
if((fp=fopen("book.dat","wb"))==NULL)
{
printf("cannot open file\n");
return;
}
for(p1=head=books;n<20;p1++,n++)
{
scanf("%s",p1->number_1);
if((strcmp(p1->number_1,"00"))==0) break;
scanf("%s",p1->bookname);
scanf("%s",p1->writername);
scanf("%s",p1->number_2);
scanf("%s",p1->printadd);
scanf("%s",p1->printtime);
scanf("%d",&p1->price);
fwrite(p1,sizeof(struct book),1,fp);
}
fclose(fp);
}
void seek() //图书信息浏览
{ void writername();//按照图书作者名查询函数原型声明
void bookname();//按照图书书名查询函数原型声明
void allprint();//全部输出函数原型声明
char choice,ch; //查询方式选择
menu_seek(); //调用查询方式选择菜单
choice=getchar();
ch=getchar();
switch(choice)
{
case '1': bookname();break; //按书名查询
case '2': writername();break;//按作者名查询
case '3': allprint();break;// 全部输出
default: printf("输入错误\n");break;
}
}
void bookname() //按书名查询
{
void print(struct book *p);
struct book *p1;
char *p2="00",*p3;
char temp[10];
system("cls");
printf("请输入要查询的书名:\n"); //要查询的图书名称
scanf("%s",temp);
p3=temp;
for(p1=head;p1<head+n;p1++)
{if(strcmp(p3,p1->bookname)==0)
print(p1);
}
printf("图书名称查询完毕!\n");
}
void writername() //按作者名查询
{
void print(struct book *p);//输出图书信息函数原型声明
struct book *p1;
char *p2="00",*p3;
char temp[10];
system("cls");
printf("请输入要查询的书的作者名:\n"); //要查询的图书作者名称
scanf("%s",temp);
p3=temp;
for(p1=head;p1<=head+n;p1++)
{if((strcmp(p3,p1->writername))==0)
print(p1);//调用输出图书信息函数
}
printf("图书作者名称查询完毕!\n");
}
void change() //信息删修
{
char choice;
char temp[10]; //要删修图书的书名
struct book *p1;
char *p2,ch;
void bookname();
void del(struct book*);//删除函数原型声明
void update(struct book *p);//修改函数原型声明
p1=head;
system("cls");
printf("请输入所要删修的图书书名\n");
scanf("%s",temp);
p2=temp;
for(p1=head;p1<=head+n;p1++)
{
if((strcmp(p2,p1->bookname))==0)
{
printf("请选择是删除还是进行修改?\n");
printf("1---删除\n2---修改\n");
ch=getchar();
choice=getchar();
ch=getchar();
switch(choice)
{
case '1': del(p1);break;
case '2': update(p1);break;
default: printf("输入错误\n");
}
}
}
printf("删修完毕!\n");
}
void print(struct book *p)//输出图书信息函数
{
system("cls");
printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");
printf("%s\t",p->number_1);
printf("%s\t",p->bookname );
printf("%s\t",p->writername);
printf("%s\t",p->number_2);
printf("%s\t",p->printadd);
printf("%s\t",p->printtime);
printf("%d\n",p->price);
}
void allprint()
{
struct book *p;
system("cls");
printf("登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");
for(p=head;p<head+n;p++)
{
printf("%s\t",p->number_1);
printf("%s\t",p->bookname );
printf("%s\t",p->writername);
printf("%s\t",p->number_2);
printf("%s\t",p->printadd);
printf("%s\t",p->printtime);
printf("%d\n",p->price);
}
}
void del(struct book *p)//
{
void print(struct book *p);
struct book nul={'\0',"","","","","",' '},*p1;
p1=&nul;
strcpy(p->number_1,p1->number_1);
strcpy(p->bookname,p1->bookname);
strcpy(p->writername,p1->writername);
strcpy(p->number_2,p1->number_2);
strcpy(p->printadd,p1->printadd);
strcpy(p->printtime,p1->printtime);
p->price=nul.price;
system("cls");
print(p);//调用输出图书信息函数
}
void update(struct book *p)
{
FILE *fp;
struct book *p1;
p1=head=books;
system("cls");
if((fp=fopen("book.dat","rb"))==NULL)
{
printf("cannot open file\n");
return;
}
fread(p1,sizeof(struct book),1,fp);
printf("请输入要修改的图书新信息:\n登录号 书名 作者名 分类号 出版单位 出版时间 价格\n");
printf("提示:当输入登录号为00时信息录入完毕进行下一步操作\n");
for(;n<20;p1++,n++)
{ scanf("%s",p1->number_1);
if((strcmp(p1->number_1,"00"))==0) break;
scanf("%s",p1->bookname);
scanf("%s",p1->writername);
scanf("%s",p1->number_2);
scanf("%s",p1->printadd);
scanf("%s",p1->printtime);
scanf("%d",&p1->price);
fwrite(p1,sizeof(struct book),1,fp);
}
fclose(fp);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
一品书汇(北京)
2024-10-17 广告
2024-10-17 广告
作为一品书汇(北京)科技有限公司的一员,我们深知图书馆馆配图书的重要性。我们专注于为各大图书馆精选高质量、多元化、符合读者需求的图书资源。从经典名著到前沿科技,从儿童绘本到专业学术,我们力求每一本书都能丰富馆藏,满足读者的精神文化需求。通过...
点击进入详情页
本回答由一品书汇(北京)提供
展开全部
这都可以卖钱了吧。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
二楼的有多线程吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询