当前位置:首页 » 操作系统 » 图书销售系统源码

图书销售系统源码

发布时间: 2023-10-12 07:23:45

A. 用C++编写图书管理系统(源代码)

这个由于你给的分太少,估计每人会给你做的。
我给你一个做参照吧,基本功能都已经实现了,并且在VC6上已经编译运行确认:

#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>//输入/输出文件流类
using namespace std;
const int Maxr=100;//最多的读者
const int Maxb=100;//最多的图书
const int Maxbor=5;//每位读者最多借五本书
//读者类,实现对读者的信息的描述

class Reader
{
private:
int tag; //删除标记 1:已删 0:未删
int no; //读者编号
char name[10]; //读者姓名
int borbook[Maxbor];//所借图书
public:
Reader() {}
char *getname() {return name;} //获取姓名
int gettag() {return tag;} //获取删除标记
int getno() {return no;} //获取读者编号
void setname(char na[]) //设置姓名
{
strcpy(name,na);

}
void delbook(){ tag=1; }//设置删除标记 1:已删 0:未删
void addreader(int n,char *na)//增加读者
{
tag=0;
no=n;
strcpy(name,na);
for(int i=0;i<Maxbor;i++)
borbook[i]=0;
}
void borrowbook(int bookid)//借书操作
{
for(int i=0;i<Maxbor;i++)
{
if (borbook[i]==0)
{
borbook[i]=bookid;
return;

}
}

}
int retbook(int bookid)//还书操作
{
for(int i=0;i<Maxbor;i++)
{
if(borbook[i]==bookid)
{
borbook[i]=0;
return 1;

}
}
return 0;
}
void disp()//读出读者信息
{
cout << setw(5) << no <<setw(10) << name<<"借书编号:[";
for(int i=0;i<Maxbor;i++)
if(borbook[i]!=0)
cout << borbook[i] << "|";
cout << "]"<<endl;

}
};

//读者类库,实现建立读者的个人资料
class RDatabase
{
private:
int top; //读者记录指针
Reader read[Maxr];//读者记录
public:
RDatabase() //构造函数,将reader.txt读到read[]中
{
Reader s;
top=-1;
fstream file("reader.txt",ios::in);//打开一个输入文件
while (1)
{
file.read((char *)&s,sizeof(s));
if (!file)break;
top++;
read[top]=s;
}
file.close(); //关闭 reader.txt
}
void clear()//删除所有读者信息
{
top=-1;
}
int addreader(int n,char *na)//添加读者时先查找是否存在
{
Reader *p=query(n);
if (p==NULL)
{
top++;
read[top].addreader(n,na);
return 1;
}
return 0;

}
Reader *query(int readerid)//按编号查找
{
for (int i=0;i<=top;i++)
if (read[i].getno()==readerid &&
read[i].gettag()==0)
{
return &read[i];
}
return NULL;
}
void disp() //输出所有读者信息
{
for (int i=0;i<=top;i++)
read[i].disp();
}
void readerdata();//读者库维护
~RDatabase() //析构函数,将read[]写到reader.txt文件中
{
fstream file("reader.txt",ios::out);
for (int i=0;i<=top;i++)
if (read[i].gettag()==0)
file.write((char *)&read[i],sizeof(read[i]));
file.close();

}
};
void RDatabase::readerdata()
{

char choice;
char rname[20];
int readerid;
Reader *r;
while (choice!='0')
{
cout <<"\n\n\t\t\t读 者 维 护\n\n\n\t\t 1 新 增\n\n\t\t 2 更 改\n\n\t\t 3 删 除\n\n\t\t 4 查 找\n\n\t\t 5 显 示\n\n\t\t 6 全 删\n\n\t\t 0 退 出"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout << "输入读者编号:";
cin >> readerid;
cout << "输入读者姓名:";
cin >> rname;
addreader (readerid,rname);
break;
case '2':
cout << "输入读者编号:";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout << " 该读者不存在 "<<endl;
break;
}
cout << "输入新的姓名:";
cin >> rname;
r->setname(rname);
break;
case '3':
cout << " 输入读者编号:";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout <<" 该读者不存在" << endl;
break;
}
r->delbook();
break;
case '4':
cout << "读入读者编号:";
cin >> readerid;
r=query(readerid);
if (r==NULL)
{
cout <<"该读者不存在"<< endl;
break;
}
r->disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout<<"输入错误,请从新输入:";break;
}
}
}

//图书类,实现对图书的描述,图书的编号,书名,借出,还入等
class Book
{
private:
int tag;//删除标记 1:已删 0:未删
int no;//图书编号
char name[20];//书名
int onshelf;//是否再架 1:再架 2:已借
public:
Book(){}
char *getname() { return name; }//获取姓名
int getno(){ return no; }//获取图书编号
int gettag(){ return tag; }//获取删除标记
void setname(char na[])//设置书名
{
strcpy(name,na);
}
void delbook(){ tag=1;}//删除图书
void addbook(int n,char *na)//增加图书
{
tag=0;
no=n;
strcpy(name,na);
onshelf=1;
}
int borrowbook()//借书操作
{
if (onshelf==1)
{
onshelf=0;
return 1;
}
return 0;
}
void retbook()//还书操作
{
onshelf=1;
}
void disp()//输出图书
{
cout << setw(6) << no << setw(18) << name << setw(10)
<<(onshelf==1? "在架":"已借") <<endl;
}
};

//图书库类,实现对图书的维护,查找,删除等
class BDatabase
{
private:
int top; //图书记录指针
Book book[Maxb]; //图书记录
public:
BDatabase()//构造函数,将book.txt读到book[]中
{
Book b;
top=-1;
fstream file("book.txt",ios::in);
while (1)
{
file.read((char *)&b,sizeof(b));
if (!file) break;
top++;
book[top]=b;
}
file.close();
}
void clear()//全删
{
top=-1;
}
int addbook(int n,char *na)//增加图书
{
Book *p=query(n);
if (NULL==p)
{
top++;
book[top].addbook(n,na);
return 1;
}
return 0;
}
Book *query(int bookid)//查找图书
{
for (int i=0;i<=top;i++)
if (book[i].getno()==bookid &&book[i].gettag()==0)
{
return &book[i];
}
return NULL;
}
void bookdata();//图书库维护
void disp()
{
for (int i=0;i<=top;i++)
if (book[i].gettag()==0)
book[i].disp();
}
~BDatabase()//析构函数,将book[]写到book.txt文件中
{
fstream file("book.txt",ios::out);
for (int i=0;i<=top;i++)
if (book[i].gettag()==0)
file.write((char *)&book[i],sizeof(book[i]));
file.close();
}
};
void BDatabase::bookdata()
{
char choice;
char bname[40];
int bookid;
Book *b;
while (choice!='0')
{
cout <<"\n\n\n\t\t\t图 书 维 护 "<<endl<<endl;
cout<<"\t\t1 新 增\n \t\t2 更 改\n\t\t3 删 除\n\t\t4 查 找\n\t\t5 显 示\n\t\t6 全 删\n\t\t0 退 出"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout << "输入图书编号:"<<endl;
cin >> bookid;
cout << "输入图书书名:"<<endl;
cin >> bname;
addbook(bookid,bname);
break;
case '2':
cout << "输入图书编号:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout << " 该图书不存在 "<<endl;
break;
}
cout << "输入新的书名:"<<endl;
cin >> bname;
b->setname(bname);
break;
case '3':
cout <<" 读入图书编号:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout <<" 该图书不存在" << endl;
break;
}
b->delbook();
break;
case '4':
cout << " 读入图书编号:"<<endl;
cin >> bookid;
b=query(bookid);
if (b==NULL)
{
cout <<" 该图书不存在"<< endl;
break;
}
b->disp();
break;
case '5':
disp();
break;
case '6':
clear();
break;
default:cout<<"输入错误,请从新输入:";
}
}
}

//main() 函数的实现,程序的主界面的引导

void main()
{
char choice;
int bookid,readerid;
RDatabase ReaderDB;
Reader *r;
BDatabase BookDB;
Book *b;
while(choice!='0')
{
cout <<endl<<endl<<"\t\t\t 图 书 管 理 系 统\n\n\n";

cout <<"\t\t\t1 借 书\n\n\t\t\t2 还 书 \n\n\t\t\t3 图 书 维 护\n\n\t\t\t4 读 者 维 护\n\n\t\t\t0 离 开"<<endl;
cin >> choice;
switch (choice)
{
case '1':
cout <<" 借书 读者编号:";
cin >>readerid;
cout <<" 图书编号: ";
cin >>bookid;
r=ReaderDB.query(readerid);//按编号查找
if (NULL==r)
{
cout <<" 不存在该读者,不能借书"<< endl;
break;
}
b=BookDB.query(bookid);
if (b==NULL)
{
cout <<" 不存在该图书,不能借书"<< endl;
break;
}
if (b->borrowbook()==0)
{
cout << " 该图书已借出,不能借书"<< endl;
break;
}
r->borrowbook(b->getno());
break;
case '2':
cout<<"还书\n 读者编号:";
cin >>readerid;
cout << " 图书编号:";
cin >>bookid;
r=ReaderDB.query(readerid);
if (r==NULL)
{
cout <<" 不存在该读者,不能还书" << endl;
break;
}
b=BookDB.query(bookid);
if (b==NULL)
{
cout <<" 不存在该图书,不能还书" <<endl;
break;
}
b->retbook();
r->retbook(b->getno());
break;
case '3':
BookDB.bookdata();
break;
case '4':
ReaderDB.readerdata();
break;
default:cout<<"输入错误,请从新输入:";

}
}
}

B. c语言 有关于图书信息管理系统代码

#include<stdio.h>
#include <string.h>
#include <stdlib.h>
#include<conio.h>
#define Max 2
typedef struct book //书的信息
{
char book_num[10];//书号
char book_name[20];//书名
char book_writer[10];//作者
int book_xy;//书的剩余数量
int book_kc;//书的总数量
struct book *next;
}BK;
typedef struct borrow //被借书的信息
{
char borrow_book_num[10];//借书书号
char limit_date[8];//借书归还日期
}BO;
typedef struct reader //读者信息
{
char reader_num[10];//读者号
char reader_name[10];//读者姓名
int right;//已借数量
BO borrow[Max];//已借书信息
struct reader *next;
}RD;

BK *h_book;
RD *h_reader;
void Login();
int Menu();
void Init();
void Init_book();
void Menu_select();
void Insert_New_Book();
void Find_Book();
void add_reader();
void Print_reader();
void Print_book();
void Borrow_Book();
void Return_Book();
void Save();
void Save_Book();
void Save_Reader();
void Load();
void Load_Reader();
void Load_Book();

void Login()
{
system("cls");
printf("\n\n\n\t\t\t欢迎使用图书管理系统\n");
printf("\n\n\t\t本程序分析者 秦义 学号:200907014122\n\n\n\n\n\n\n");//以前是设计者 xxxx
printf("\n\n\n\t\t 按 任 意 键 进 入 系 统 ...");
getch(); system("cls");
}

int Menu() /*主菜单*/
{ int dm;
printf("\n\t\t图书管理系统主菜单\n");
printf("=================================================\n");
printf("☆\t0----退出系统 ☆\n");
printf("☆\t1----采编入库 ☆\n");
printf("☆\t2----登记读者 ☆\n");
printf("☆\t3----借阅登记 ☆\n");
printf("☆\t4---还书管理 ☆\n");
printf("☆\t5---查询图书信息 ☆\n");
printf("☆\t6----查询读者信息 ☆\n");
printf("=================================================\n");
printf("请选择相应的代码:");
for(;;)
{ scanf("%d",&dm);
if(dm<0||dm>6)
printf("\n错误!请重新输入:");
else break;
}
return dm;
}

void Menu_select()/*主菜单选择函数*/
{
for(;;)
{
switch(Menu()) /*功能选择*/
{ case 0:
system("cls");
Save();
printf("\n\n\t文件保存成功!\n");
printf("\n\n\t欢迎下次使用本系统!\n");
getch();
exit(0);
case 1:Insert_New_Book();break;
case 2:add_reader();break;
case 3:Borrow_Book();break;
case 4:Return_Book();break;
case 5:Print_book();break;
case 6:Print_reader();break;
default:printf("\n错误!");
exit(0);}
}
}

void Init() /*初始化*/
{

Init_book();
}

void Init_book() /*初始化图书信息*/
{
BK *p0;
printf("\n图书初始化开始,请输入图书信息..\n包括编号.书名.数量..\n");
p0=(BK*)malloc(sizeof(BK));
h_book=p0;
printf("\n请输入图书信息:\n");
printf("图书编号:"); /*输入图书编号(唯一)*/
scanf("%s",p0->book_num);
printf("图书名称:"); /*输入图书名称*/
scanf("%s",p0->book_name);
printf("图书作者:"); /*输入图书作者*/
scanf("%s",p0->book_writer);
printf("图书数量:"); /*输入图书数量*/
scanf("%d",&p0->book_kc);
p0->book_xy=p0->book_kc; /*开始时图书现有量和库存量相等*/
p0->next=NULL;
printf("\n图书信息初始化完毕!按任意键继续下一步操作..\n");
getch();
system("cls");
}

void Insert_New_Book()/*新书入库*/
{
BK *p,*p0,*p1;
p=p1=h_book;
printf("\n新书入库模块...\n");
printf("\n请输入新书信息..\n包括书号.书名.数量..\n");
p0=(BK *)malloc(sizeof(BK));
printf("图书编号:");
scanf("%s",p0->book_num);
while(strcmp(p0->book_num,p1->book_num)!=0&&p1->next!=NULL)
p1=p1->next;
if(strcmp(p0->book_num,p1->book_num)==0) /*此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量*/
{
printf("\n此编号图书已存在!!直接入库!\n");
printf("图书数量:");
scanf("%d",&p0->book_kc);
p1->book_kc+=p0->book_kc;
p1->book_xy+=p0->book_kc;
}
else/*若不存在,则需要输入其他的信息 ,然后在进行插入操作*/
{
printf("图书名称:");
scanf("%s",p0->book_name);
printf("图书作者:");
scanf("%s",p0->book_writer);
printf("图书数量:");
scanf("%d",&p0->book_kc);
while(p->next)
{ p=p->next; }
if(h_book==NULL) h_book=p0; /*此处分两种情况,链表中没有数据,head直接指向p0处*/
else p->next=p0; /*此处分两种情况,链表中有数据,链表中最后元素的next指向p0处*/
p0->next=NULL;
p0->book_xy=p0->book_kc;
}
printf("\n新书入库完毕!按任意键继续下一步操作..\n");
getch();
system("cls");
}

void add_reader()/*添加读者*/
{ RD *p0;
int i;
printf("\n读者初始化开始,请输入读者信息..\n包括书证号.姓名..\n");
p0=(RD*)malloc(sizeof(RD)); /*申请新结点存储空间*/
h_reader=p0;
printf("\n请输入读者的信息:\n");
printf("读者书证号:");
scanf("%s",p0->reader_num);
printf("读者姓名:");
scanf("%s",p0->reader_name);
p0->right=0;
for(i=0;i<Max;i++)
{
strcpy(p0->borrow[i].borrow_book_num,"0"); /*所借图书直接置为0(即没有借书)*/
strcpy(p0->borrow[i].limit_date,"0");
}
p0->next=NULL;
printf("\n读者信息初始化完毕!按任意键继续下一步操作..\n");
getch();
system("cls");
}

void Borrow_Book() /*借书模块*/
{
BK *p0; RD *p1;
char bo_num[10],rea_num[10],lim_date[8];
int i;
p0=h_book; p1=h_reader;
printf("\n借书模块...\n");
printf("\n请输入借书的读者书证号:");
scanf("%s",rea_num);
while(p1->next!=NULL&&strcmp(rea_num,p1->reader_num)!=0) //查找读者号
{p1=p1->next;}
if(p1->next==NULL&&strcmp(rea_num,p1->reader_num)!=0)
{
printf("\n此读者编号不存在!按任意键返回..\n");
goto END;
}
printf("\n请输入你要借的书的编号:");
scanf("%s",bo_num);
while(strcmp(bo_num,p0->book_num)!=0&&p0->next!=NULL) //查找书号
{p0=p0->next;}
if(p0->next==NULL&&strcmp(bo_num,p0->book_num)!=0)
{
printf("\n此图书编号不存在!按任意键返回..\n");
}
else if(p0->book_xy<=0)
{
printf("\n抱歉,此书已借完!请等待新书的到来!!\n按任意键返回....");
}
else if(p1->right>=Max)
{
printf("\n不好意思,借书数目已满!不能借书!\n按任意键返回....");
}
else if(strcmp(p1->borrow[0].borrow_book_num,"0")!=0)
{
for(i=0;i<Max;i++)
{
if(strcmp(p1->borrow[i].borrow_book_num,bo_num)==0)
{
printf("\n抱歉!同一个读者不能同借两本相同的书!\n");
}
else if(strcmp(p1->borrow[i].borrow_book_num,"0")==0)
{
printf("\n请输入你要归还图书的日期:");
scanf("%s",lim_date);
strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);
strcpy(p1->borrow[p1->right-1].limit_date,lim_date);
p0->book_xy--;
printf("\n读者编号%s借书完毕!按任意键继续下步操作..",p1->reader_num);
}
}
}
else
{
printf("\n请输入你要归还图书的日期:");
scanf("%s",lim_date);
strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);
strcpy(p1->borrow[p1->right-1].limit_date ,lim_date );
p0->book_xy--;
printf("\n读者编号%s借书完毕!按任意键继续下步操作..",p1->reader_num);
}
END:getch(); system("cls");
}

void Return_Book() /*还书模块*/
{
BK *p; RD *q;
int i,j,find=0;
char return_book_num[10],return_reader_num[10];
p=h_book; q=h_reader;
printf("\n还书模块...\n");
printf("\n请输入要还书的读者编号:");
scanf("%s",return_reader_num);
while(q->next!=NULL&&strcmp(return_reader_num,q->reader_num)!=0)
q=q->next;
if(q->next==NULL&&strcmp(return_reader_num,q->reader_num)!=0)
{
find=2;
printf("\n此读者编号不存在!按任意键返回..\n");
goto end;
}
printf("\n请输入读者还书的编号:");
scanf("%s",return_book_num);
while(p->next!=NULL&&strcmp(return_book_num,p->book_num)!=0)
p=p->next;
if(p->next==NULL&&strcmp(return_book_num,p->book_num)!=0)
{
find=2;
printf("\n错误!此图书编号不存在!按任意键返回..\n");
goto end;
}
for(i=0;i<Max;i++)
if(strcmp(return_book_num,q->borrow[i].borrow_book_num)==0) /*如果此读者借了此书*/
{
find=1;
for(j=i;j<Max-1;j++)
{
strcpy(q->borrow[j].borrow_book_num,q->borrow[j+1].borrow_book_num);
strcpy(q->borrow[j].limit_date,q->borrow[j+1].limit_date);
}
strcpy(q->borrow[Max-1].borrow_book_num,"0");
strcpy(q->borrow[Max-1].limit_date,"0");
p->book_xy++;
q->right--;
printf("\n编号%s的读者还书完毕!按任意键继续下步操作..",return_reader_num);
}
if(find==0)
printf("\n错误!此读者未借此书!按任意键返回..\n");
end: getch(); system("cls");
}

void Print_book() /*查询图书信息*/
{
BK *p;
p=h_book;
printf("\n图书信息如下:\n\n");
printf("图书编号\t图书名称\t图书作者\t现有\t\t库存\n");
while(p!=NULL)
{
printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\n",p->book_num,p->book_name,p->book_writer,p->book_xy,p->book_kc);
p=p->next;
}
printf("\n图书信息打印完毕!按任意键继续下一步操作..");
getch();
system("cls");
}

void Print_reader() /*查询读者信息*/
{
RD *p;
int i;
p=h_reader;
printf("\n读者信息如下:\n\n");
printf("读者书证号\t\t读者姓名\n");
printf("\n");
while(p!=NULL)
{
printf("\t%s\t\t%s",p->reader_num,p->reader_name);
for(i=0;i<Max;i++)
{
printf("\n");
printf("图书编号",i+1);
printf("\t还书日期",i+1);
printf("\n");
printf("\t%s",p->borrow[i].borrow_book_num);
printf("\t\t%s",p->borrow[i].limit_date);
}
printf("\n");
p=p->next;
}
printf("\n读者信息打印完毕!按任意键继续下一步操作..");
getch();
system("cls");
}

//文件模块
void Save() /*保存信息*/
{
Save_Reader();
Save_Book();
}
void Save_Reader() /*保存读者信息*/
{
FILE *fp_reader;
RD *p,*p0;
p=h_reader;
if((fp_reader=fopen("Reader.txt","wb"))==NULL) /*创建文件,进行保存*/
{
printf("\n文件保存失败!\n请重新启动本系统...\n");
exit(0);
}
while(p!=NULL)
{
if(fwrite(p,sizeof(RD),1,fp_reader)!=1) /*将链表中的信息写入文件中*/
printf("\n写入文件失败!\n请重新启动本系统!\n");
p0=p;
p=p->next;
free(p0); /*释放所有结点*/
}
h_reader=NULL;
fclose(fp_reader); /*关闭文件*/
}

void Save_Book() /*保存图书信息*/
{
FILE *fp_book; /*创建文件型指针*/
BK *p,*p0;
p=h_book;
if((fp_book=fopen("Book.txt","wb"))==NULL) /*创建文件,进行保存*/
{
printf("\n文件保存失败!\n请重新启动本系统...\n");
exit(0);
}
while(p!=NULL)
{
if(fwrite(p,sizeof(BK),1,fp_book)!=1) /*将链表中的信息写入文件中*/
printf("\n写入文件失败!\n请重新启动本系统!\n");
p0=p;
p=p->next;
free(p0);
}
h_book=NULL;
fclose(fp_book); /*关闭文件*/
}

void Load() /*加载信息*/
{
Load_Reader();
Load_Book();
}
void Load_Reader() /*加载读者信息*/
{
RD *p1,*p2,*p3;
FILE *fp; /*创建文件型指针*/
fp=fopen("book.txt","rb"); /*打开文件*/
p1=(RD *)malloc(sizeof(RD));
fread(p1,sizeof(RD),1,fp);
h_reader=p3=p2=p1;
while(! feof(fp)) /*读出信息,重新链入链表*/
{ p1=(RD *)malloc(sizeof(RD));
fread(p1,sizeof(RD),1,fp);
p2->next=p1;
p3=p2;
p2=p1;
}
p3->next=NULL;
free(p1);
fclose(fp); /*关闭文件*/
}

void Load_Book() /*加载图书信息*/
{
BK *p1,*p2,*p3;
FILE *fp; /*创建文件型指针*/
fp=fopen("Book.txt","rb"); /*打开文件*/
p1=(BK *)malloc(sizeof(BK));
fread(p1,sizeof(BK),1,fp);
h_book=p3=p2=p1;
while(! feof(fp)) /*读出信息,重新链入链表*/
{ p1=(BK *)malloc(sizeof(BK));
fread(p1,sizeof(BK),1,fp);
p2->next=p1;
p3=p2;
p2=p1;
}
p3->next=NULL;
free(p1);
fclose(fp); /*关闭文件*/
}

void main()
{
FILE *fp_book,*fp_reader; /*创建文件型指针*/
Login();
if((fp_book=fopen("Book.txt","rb"))==NULL||(fp_reader=fopen("Reader.txt","rb"))==NULL)
{ Init(); }
else Load();
Menu_select(); /*调用主菜单*/
}

C. 求图书馆管理系统C++源代码

#include<iostream>
#include<fstream>
#include<windows.h>
#include<stdlib.h>
using namespace std;
void mainmenu();
void Manage_Book();
void input_Book();
void input_Reader();
void New_Book();
void Seek_Book();
void Borrow_Manage();
void Borrow_Book();
void Return_Book();
void Output_Message();
void Exit_System();
int u,v=3,k=0;
struct Book
{
char name[20];
int booknumber;
int num_present;
int num_all;
}book[1000];
struct Reader
{
char name[20];
int readernumber;
int card;
}reader[3];
void mainmenu()
{
int Num_Choice1,flag=1;
system("color E");
for(;k<=0;k++)
{
input_Book();
input_Reader();
}
while(flag==1)
{
system("cls");
cout<<"\t\t\t◆◆◆◆◆主菜单◆◆◆◆◆"<<endl
<<"\t\t\t☆ 1.图书管理 ☆"<<endl
<<"\t\t\t☆ 2.借阅管理 ☆"<<endl
<<"\t\t\t☆ 3.输出信息 ☆"<<endl
<<"\t\t\t☆ 4.退出系统 ☆"<<endl
<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cout<<"请输入所需要的服务编码"<<endl;
cin>>Num_Choice1;
switch(Num_Choice1)
{
case 1:
Manage_Book();
break;
case 2:
Borrow_Manage();
break;
case 3:
Output_Message();
break;
case 4:
Exit_System();
flag=0;
break;
default:
flag=0;
cout<<"输入有误!!"<<endl;
}
}
}
void Manage_Book()
{
int flag1=1,Num_Choice2;
system("cls"); while(flag1==1)
{
cout<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl
<<"\t\t\t☆ 1.新书入库 ☆"<<endl
<<"\t\t\t☆ 2.图书查询 ☆"<<endl
<<"\t\t\t☆ 3.返回主菜单 ☆"<<endl
<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cin>>Num_Choice2;
switch(Num_Choice2)
{
case 1:
flag1=2;
New_Book();
break;
case 2:
flag1=2;
Seek_Book();
break;
case 3:
mainmenu();
default:
flag1=1;
cout<<"输入有误!"<<endl;
system("pause");
system("cls");
}
}}
void input_Book()
{
cout<<"请依照提示输入现有的三本图书的信息:"<<endl;
for(int i=0;i<3;i++)
{
cout<<"书名:"<<endl;
cin>>book[i].name;
cout<<"书号:"<<endl;
cin>>book[i].booknumber;
cout<<"库存量:"<<endl;
cin>>book[i].num_all;
cout<<"现存量:"<<endl;
cin>>book[i].num_present;
}
}
void New_Book()
{
system("cls");
int j;
char newbook_name[20];
cout<<"请输入新书书名:"<<endl;
cin>>newbook_name;
for(j=0;j<1000;j++)
{
if(strcmp(newbook_name,book[j].name)==0)
{
book[j].num_all++;
book[j].num_present++;
break;
}
}
if(j==1000)
{
cout<<"请为此新书编号:"<<endl;
v++;
cin>>book[v].booknumber;
strcpy(book[v].name,newbook_name);
book[v].num_all=1;
book[v].num_present=1;
}
else cout<<"已有此书,库存量加一"<<endl;
system("pause");
}
void Seek_Book()
{
system("cls");
int k,booknumber;
cout<<"请输入所要查询的书号:"<<endl;
cin>>booknumber;
for(k=0;k<1000;k++)
{
if(book[k].booknumber==booknumber)
{
cout<<"书号:"<<booknumber<<endl;
cout<<"书名:"<<book[k].name<<endl;
cout<<"库存量:"<<book[k].num_all<<endl;
cout<<"现存量:"<<book[k].num_present<<endl;
system("pause");
break;
}
}
if(k==1000)
{
cout<<"未找到此书!!"<<endl;
system("pause");
}
}
void Borrow_Manage()
{
int flag=1;
system("cls");
int Num_Choice3;
while(flag==1)
{
cout<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl
<<"\t\t\t☆ 1.借书登记 ☆"<<endl
<<"\t\t\t☆ 2.还书管理 ☆"<<endl
<<"\t\t\t☆ 3.返回主菜单 ☆"<<endl
<<"\t\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl;
cin>>Num_Choice3;
switch(Num_Choice3)
{
case 1:
flag=2;
Borrow_Book();
break;
case 2:
flag=2;
Return_Book();
break;
case 3:
mainmenu();
default:
flag=1;
cout<<"输入有误!!"<<endl;
system("pause");
}
system("cls");
}
}
void input_Reader()
{
system("cls");
cout<<"请依照提示输入现有的三位读者的信息:"<<endl;
for(int m=0;m<3;m++)
{
cout<<"姓名:"<<endl;
cin>>reader[m].name;
cout<<"编号:"<<endl;
cin>>reader[m].readernumber;
reader[m].card=0;
}
}
void Borrow_Book()
{
system("cls");
char reader_name[20];
int n,book_number;
cout<<"请输入读者姓名:"<<endl;
cin>>reader_name;
for(n=0;n<3;n++)
{
if(strcmp(reader_name,reader[n].name)==0)
{
if(reader[n].card!=0)
{
cout<<"已借书,不能再借,请按任意键返回"<<endl;
system("pause");
mainmenu();
}
else
break;
}
}
if(n==3)
{
cout<<"无此读者!输入有误!!按任意键返回主菜单"<<endl;
system("pause");
mainmenu();
}
cout<<"请输入所借图书书号:"<<endl;
cin>>book_number;
for(n=0;n<v;n++)
{
if(strcmp(reader_name,reader[n].name)==0)
reader[n].card=book_number;
}
for(n=0;n<v;n++)
{
if(book[n].booknumber==book_number)
{
if(book[n].num_present==0)
{
cout<<"该书已经被借完,请按任意键返回"<<endl;
system("pause");
for(n=0;n<v;n++)
{
if(strcmp(reader_name,reader[n].name)==0)
reader[n].card=0;
}
mainmenu();
}
else
{
book[n].num_present--;
cout<<"借书成功,请按任意键返回"<<endl;
system("pause");
break;
}
}
}
if(n==v)
{
for(n=0;n<v;n++)
{
if(strcmp(reader_name,reader[n].name)==0)
reader[n].card=0;
}
cout<<"所输入的书号不存在,请按任意键返回主菜单"<<endl;
system("pause");
mainmenu();
}
}void Return_Book()
{
system("cls");
int j;
char reader_name[20];
int book_number;
cout<<"请输入读者姓名:"<<endl;
cin>>reader_name;
for(j=0;j<3;j++)
{
if(strcmp(reader_name,reader[j].name)==0)
break;
}
if(j==3)
{
cout<<"无此读者!输入有误!!按任意键返回主菜单"<<endl;
system("pause");
mainmenu();
}
cout<<"请输入所还图书书号:"<<endl;
cin>>book_number;

for(j=0;j<3;j++)
{
if(strcmp(reader_name,reader[j].name)==0)
{
if(book_number==reader[j].card)
{
reader[j].card=0;
for(j=0;j<v;j++)
{
if(book[j].booknumber==book_number)
{
book[j].num_present++;
cout<<"还书成功,请按任意键返回"<<endl;
system("pause");
break;
}
}
}
else
{
cout<<"该读者未借此书"<<endl;
system("pause");
}
}
if(j==v)
cout<<"所输入的书号不存在:"<<endl;
}
}
void Output_Message()
{
system("cls");
int q;
cout<<"以下是图书信息"<<endl<<endl;
for(q=0;q<v;q++)
{
cout<<"书号:"<<book[q].booknumber<<'\t';
cout<<"书名:"<<book[q].name<<'\t';
cout<<"库存量:"<<book[q].num_all<<'\t';
cout<<"现存量:"<<book[q].num_present<<endl;
}
cout<<"以下是读者信息"<<endl<<endl;
for(q=0;q<3;q++)
{
cout<<"姓名:"<<reader[q].name<<'\t'
<<"编号:"<<reader[q].readernumber<<'\t'
<<"所借书号:"<<reader[q].card<<endl;
}
system("pause");
}
void Exit_System()
{
system("cls");
cout<<"欢迎下次使用,谢谢"<<endl;
system("pause");
}
void main()
{
mainmenu();
}

D. 数据库图书管理系统代码

create database db

use db

create table 借阅等级信息(

借阅等级 int primary key,

最长借阅时间 int,

最大借阅数量 int,

)

insert into 借阅等级信息 values

(0, 30, 10),

(1, 60, 20),

(2, 90, 30),

(3, 120, 40)

create table 读者信息(

姓名 char(15) not null,

证件号 char(12) primary key,

借阅等级 int default 0,

累计借书 int default 0,

foreign key(借阅等级) references 借阅等级信息(借阅等级)

)

insert into 读者信息(姓名, 证件号, 借阅等级) values

('张三', '541607120165', 1),

('李四', '541707010185', 3),

('王五', '541707120165', 1),

('赵六', '541505980268', 2),

('孙七', '541407010169', 0),

('周八', '541307010489', 1)

create table 出版社信息(

出版社 varchar(20) primary key,

地址 varchar(25),

联系电话 char(7)

)

insert into 出版社信息 values

('清华大学出版社', '北京', '4979421'),

('晟威出版社', '天津', '5564130'),

('南海出版公司', '海南', '4984910'),

('上海文艺出版社', '上海', '6640239')

create table 图书信息(

索书号 char(15) primary key,

作者 char(15),

书名 char(15),

出版社 varchar(20),

出版时间 date,

foreign key(出版社)references 出版社信息(出版社)

)

insert into 图书信息 values

('b12987', '严蔚敏', '数据结构', '清华大学出版社', '2012-02-06'),

('b97894', '东野圭吾', '幻夜', '南海出版公司', '2004-08-02'),

('b16546', '吴玉华', '物理实验教程', '清华大学出版社', '2013-05-15'),

('b89490', '张雪峰', '考研指点', '晟威出版社', '2016-12-12'),

('b56400', '郏宗培', '纸上寻仙记', '上海文艺出版社', '2011-02-05')

create table 单本图书信息(

条码号 char(7) primary key check(len(条码号) = 7),

索书号 char(15),

馆藏地 varchar(40),

书刊状态 varchar(6) check(书刊状态 in ('可借', '借出', '非可借')),

历史借阅量 int default 0,

foreign key(索书号)references 图书信息(索书号)

)

insert into 单本图书信息(条码号, 索书号, 馆藏地, 书刊状态) values

('t987628', 'b97894', '三楼A8', '借出'),

('t594805', 'b97894', '二楼C7', '可借'),

('t984910', 'b89490', '五楼A2', '借出'),

('t940566', 'b12987', '负一楼D3', '借出')

create table 借阅信息(

借阅号 char(6) primary key,

借阅时间 date,

归还时间 date,

图书条码号 char(7),

借阅人证件号 char(12),

foreign key(图书条码号) references 单本图书信息(条码号),

foreign key(借阅人证件号) references 读者信息(证件号)

)

create table 评论信息(

评论号 char(8) primary key,

评分 numeric(2, 1),

内容 varchar(200),

评论时间 date,

评论者id char(12),

索书号 char(15),

foreign key(索书号)references 图书信息(索书号),

foreign key(评论者id)references 读者信息(证件号)

)

insert into 评论信息 values

('p12391', 8.9, '很有趣', '2015-06-24', '541707010185', 'b97894'),

('p98523', 7.8, '受益颇多', '2016-05-22', '541307010489', 'b89490'),

('p94606', 6.8, '完全看不懂orz', '2017-05-02', '541607120165', 'b12987')

create table 主题词信息(

ID char(8) primary key,

类别 char(15),

索书号 char(15),

foreign key(索书号)references 图书信息(索书号)

)

insert into 主题词信息 values

('z64400', '计算机', 'b12987'),

('z95410', '物理', 'b16546'),

('z98500', '考研', 'b89490'),

('z64165', '推理悬疑', 'b97894'),

('z69850', '仙侠', 'b56400')

use db

go

create trigger trigger1

on 借阅信息

after insert

as

begin

update 读者信息 --更改读者累计借书量

set 累计借书 = 累计借书 + 1

from 读者信息, inserted

where 读者信息.证件号 = inserted.借阅人证件号

update 单本图书信息 --更改图书状态

set 单本图书信息.书刊状态 = '借出'

from inserted, 单本图书信息

where inserted.图书条码号 = 单本图书信息.条码号

update 单本图书信息

set 历史借阅量 = 历史借阅量 + 1 --更改图书历史借阅量

from inserted, 单本图书信息

where inserted.图书条码号 = 单本图书信息.条码号

end

insert into 借阅信息 values

('j13488', '2018-05-01', '2018-08-01', 't987628', '541407010169')

insert into 借阅信息 values

('j14910', '2016-12-11', '2017-01-25', 't984910', '541607120165')

insert into 借阅信息 values

('j97890', '2018-05-14', '2018-06-14', 't940566', '541607120165')

go

create view view_1(图书条码, 借阅者姓名, 编号, 借阅时间, 应还时间)

as

select 图书条码号, 姓名, 证件号, 借阅时间, 归还时间

from 借阅信息, 读者信息

where 借阅信息.借阅人证件号 = 读者信息.证件号 and 归还时间 > getdate()

go

create view view_2(图书条码, 历史总借阅量)

as

select 条码号, 历史借阅量

from 单本图书信息, 图书信息

where 单本图书信息.索书号 = 图书信息.索书号 and 书名 = '幻夜'

go

create view view_3(类别, 图书条码, 历史总借阅量)

as

select 类别, 条码号, 历史借阅量

from 单本图书信息, 图书信息, 主题词信息

where 主题词信息.索书号 = 图书信息.索书号 and 图书信息.索书号 = 单本图书信息.索书号 and 类别 = '考研'

go

create view view_4(读者编号, 条码, 图书名称, 应还日期)

as

select 借阅人证件号, 图书条码号, 书名, 归还时间

from 单本图书信息, 图书信息, 借阅信息

where 借阅信息.图书条码号 = 单本图书信息.条码号 and 单本图书信息.索书号 = 图书信息.索书号

and 归还时间 > getdate() and 借阅人证件号 = '541607120165'

go

create view view_5(读者编号, 图书条码, 图书名称, 借阅日期, 归还日期)

as

select 借阅人证件号, 图书条码号, 书名, 借阅时间, 归还时间

from 单本图书信息, 图书信息, 借阅信息

where 借阅信息.图书条码号 = 单本图书信息.条码号 and 单本图书信息.索书号 = 图书信息.索书号

and 借阅人证件号 = '541607120165'

go

create view view_6(读者编号, 图书名称, 评论时间, 评论内容)

as

select 评论者id, 书名, 评论时间, 内容

from 借阅信息, 单本图书信息, 评论信息, 图书信息

where 借阅信息.图书条码号 = 单本图书信息.条码号 and 单本图书信息.索书号 = 评论信息.索书号

and 评论信息.索书号 = 图书信息.索书号 and 评论者id = '541607120165'

go

create view view_7(出版社名称, 图书名称, 出版时间)

as

select top 100 percent 出版社信息.出版社, 书名, 出版时间

from 出版社信息, 图书信息

where 出版社信息.出版社 = 图书信息.出版社

order by 出版时间 asc

--执行

select * from view_1

select * from view_2

select * from view_3

select * from view_4

select * from view_5

select * from view_6

select * from view_7 order by 出版时间 asc

(4)图书销售系统源码扩展阅读:

数据库模型:

对象模型

层次模型(轻量级数据访问协议)

网状模型(大型数据储存)

关系模型

面向对象模型

半结构化模型

平面模型(表格模型,一般在形式上是一个二维数组。如表格模型数据Excel)

架构

数据库的架构可以大致区分为三个概括层次:内层、概念层和外层。

内层:最接近实际存储体,亦即有关数据的实际存储方式。

外层:最接近用户,即有关个别用户观看数据的方式。

概念层:介于两者之间的间接层。

数据库索引

主条目:数据库索引

数据索引的观念由来已久,像是一本书前面几页都有目录,目录也算是索引的一种,只是它的分类较广,例如车牌、身份证字号、条码等,都是一个索引的号码,当我们看到号码时,可以从号码中看出其中的端倪,若是要找的人、车或物品,也只要提供相关的号码,即可迅速查到正确的人事物。

另外,索引跟字段有着相应的关系,索引即是由字段而来,其中字段有所谓的关键字段(Key Field),该字段具有唯一性,即其值不可重复,且不可为"空值(null)"。

例如:在合并数据时,索引便是扮演欲附加字段数据之指向性用途的角色。故此索引为不可重复性且不可为空。

数据库操作:事务

主条目:数据库事务

事务(transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。

事务的并发性是指多个事务的并行操作轮流交叉运行,事务的并发可能会访问和存储不正确的数据,破坏交易的隔离性和数据库的一致性。

网状数据模型的数据结构 网状模型 满足下面两个条件的基本层次联系的集合为网状模型。 1. 允许一个以上的结点无双亲; 2. 一个结点可以有多于一个的双亲。

参考资料来源:网络——数据库

E. 急求用C语言编写的图书管理系统源代码

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include<ctype.h>
#define STACK_INIT_SIZE 10
#define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR 0

struct student /*定义学生类型,用于存放借出的书籍*/
{
int carnum;
char lendbook[10];
}student[1000];

struct employ /*定义职工类型*/
{
int employnum;
char employname[15];
int employage;
char employsex[2];
char employleve[10];
long int employtage;
}employ[50];

struct book /*定义书的类型*/
{
int booknum;
char bookname[10];
char bookcreat[10];
int turefalse; /*用于借书和还书模块判断一本书是否借出的条件*/
}book[1000];

struct car /*借书卡的数据类型*/
{
int carnum;
char studentname[10];
int studentclass;
}car[100];

huanbook() /*还书函数*/
{
FILE *fp,*fp2; /*定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏*/
int i,n;
int carnum;
char lendbook[10];
printf("请你输入你的卡号\n");
scanf("%d",&carnum);
fp=fopen("car.txt","r"); /*读取卡号记录*/
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++) /*for循环判断卡号是否存在*/
{
if(car[i].carnum==carnum) /*卡号存在,进入下一循环*/
{
n=i;
fclose(fp);
printf("请输入你要还的书的名字\n");
scanf("%s",lendbook);
fp=fopen("record.txt","r");
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) /*判断是否借阅了输入的书*/
{
if(strcmp(student[i].lendbook,lendbook)==0) /*借阅了该书,进入下一循环,否则出错显示*/
{
fclose(fp);
fp=fopen("record.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++)
{
if(strcmp(student[i].lendbook,lendbook)==0)
{
continue; /*删除还掉的书的借书记录*/
}
fwrite(&student[i],sizeof(struct student),1,fp2); /*写入原来没还的书的记录*/
}
fclose(fp);
fclose(fp2);
fp=fopen("record.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&student[i],sizeof(struct student),1,fp2)!=0;i++)
{
fwrite(&student[i],sizeof(struct student),1,fp); /*将借书记录信息写回*/
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w"); /*清临时文件的记录*/
fclose(fp2);
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) /*将书的记录写入临时文件,防止因为修改信息破坏以前的记录*/
{
if(i==n)
{
book[i].turefalse=1;
fwrite(&book[i],sizeof(struct book),1,fp2); /*将还的书的原来状态设为无人借阅的*/
continue;
}
fwrite(&book[i],sizeof(struct book),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(struct book),1,fp); /*将临时文件写回*/
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w"); /*清临时文件*/
fclose(fp2);
printf("还书完毕,按任意键返回\n");
getch();
return 1;
}
}
printf("你没有借这样的书,任意键返回\n"); /*出错提示*/
fclose(fp);
getch();
return 0;
}
}
printf("系统没这样的卡,和管理员联系,按任意键返回\n"); /*出错提示*/
fclose(fp);
getch();
}

findbook()
{
FILE *fp;
char bookname[10];
int ture,i;
fp=fopen("book.txt","r");
printf("请输入你要查找的书名\n");
scanf("%s",bookname);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookname,book[i].bookname)==0)
{
if(book[i].turefalse==1)
{
printf("这本书的详细资料是:%d %s %s 此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
}
else {printf("这本书已经有人借出\n");fclose(fp);return 0;}
fclose(fp);
return FALSE;
}
}
printf("没有你要查询的书籍\n");
fclose(fp);
return FALSE;
}

findbook1()
{
FILE *fp;
char bookcreat[10];
int ture,i;
fp=fopen("book.txt","r");
printf("请输入你要查找的作者名\n");
scanf("%s",bookcreat);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookcreat,book[i].bookcreat)==0)
{
if(book[i].turefalse==1)
{
printf("这本书的详细资料是:%d %s %s 此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
}
else {printf("这本书已经有人借出\n");fclose(fp);return 0;}
fclose(fp);
return FALSE;
}
}
printf("没有你要查询的书籍\n");
fclose(fp);
return FALSE;
}

lendcount()
{
FILE *fp;
int i,n=0;
fp=fopen("record.txt","r");
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++)
{
printf("卡号:%d 借出的书籍:%s \n",student[i].carnum,student[i].lendbook);
n=n+1;
}
fclose(fp);
printf("目前共有%d本书借出\n",n);
printf("按任意键\n");
getch();
return n;
}

chabook()
{
char ch5;
do
{
printf("---------------欢迎进入图书查询系统!--------------\n");
printf(" 1:<按书名查找>\n");
printf(" 2:<按作者查找>\n");
printf(" 0:<返回>\n");
printf("请输入0--2,其他输入非法!\n");
scanf("%s",&ch5);
switch(ch5)
{
case '1':findbook();getch();break;
case '2':findbook1();getch();break;
case '0':break;
default:printf("无此操作\n");getch();break;
}
}while(ch5!='0');
return FALSE;
}

lendbook()
{
FILE *fp,*fp2;
int i,n;
int carnum;
printf("请你输入你的卡号\n");
scanf("%d",&carnum);
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)
{
if(car[i].carnum==carnum)
{
n=i;
fclose(fp);
printf("请输入你要借阅的书的名字\n");
scanf("%s",student[n].lendbook);
fp=fopen("book.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)
{
if(book[i].turefalse==0) {printf("对不起,此书有人借出,请借其他书\n");fclose(fp);getch();return;}
else
fclose(fp);
fp=fopen("record.txt","a+");
student[n].carnum=carnum;
fwrite(&student[n],sizeof(struct student),1,fp);
fclose(fp);
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)
{
book[i].turefalse=0;
fwrite(&book[i],sizeof(struct book),1,fp2);
continue;
}
fwrite(&book[i],sizeof(struct book),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(struct book),1,fp);
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w");
fclose(fp2);
printf("借书完毕,按任意键返回\n");
getch();
return;
}
}
printf("不存在这样的书,任意键返回\n");
fclose(fp);
getch();
return;
}
}
printf("你的卡号不存在,请申请新卡,按任意键返回\n");
fclose(fp);
getch();
}

carcount()
{
FILE *fp;
int i,n=0;
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)
{
printf("第%d张卡<卡号:%d 姓名:%s 班级:%d>\n",i+1,car[i].carnum,car[i].studentname,car[i].studentclass);
n=n+1;
}
fclose(fp);
printf("目前共有%d本书\n",n);
printf("按任意键\n");
getch();
}

delcar()
{
FILE *fp,*fp2;
int i;
int carnum;
char choice;
fp=fopen("car.txt","r");
fp2=fopen("bookl.txt","w");
printf("请输入你要删除的卡号\n");
printf("如果你输入的卡号存在,系统自动删除该信息!如果不存在,系统不做任何改动\n");
scanf("%d",&carnum);
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)
{
if(car[i].carnum!=carnum)
{
fwrite(&car[i],sizeof(struct car),1,fp2);
}
}
fclose(fp);
fclose(fp2);
printf("是否真的要删除该卡?删除后该书籍的所有信息将无法恢复《Y/N》\n");
scanf("%s",&choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("car.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&car[i],sizeof(struct car),1,fp2)!=0;i++)
{
fwrite(&car[i],sizeof(struct car),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意键返回\n");
getch();
return;
}
else
{
printf("按任意键返回\n");
getch();
return;
}
}

addcar()
{
FILE *fp;
int i=0;
fp=fopen("car.txt","a+");
printf("请你输入卡号\n");
scanf("%d",&car[i].carnum);
printf("请你输入学生姓名\n");
scanf("%s",car[i].studentname);
printf("请你输入班级\n");
scanf("%d",&car[i].studentclass);
fwrite(&car[i],sizeof(struct car),1,fp);
fclose(fp);
printf("输入完毕,任意键返回\n");
getch();
}

F. 高分求一PHP+MYSQL 网上书店 毕业设计 源代码

155. 546.55

G. 急求c语言程序设计 图书管理系统 源代码

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#define N 100 //书籍的最多本数
struct book
{ char title[30];
int number;
char author[30];
float price;
int store;
char borrower_name[20];
char borrower_gender[5];
int borrower_number;
}s[N];
int m=0;
void input(structbook *p); //输入图书信息
void save(structbook *p); //保存图书信息
void read(structbook *p); //读取图书信息
void search(structbook *p); //查找图书信息
void del(structbook *p); //删除图书信息
void borrow(structbook *p); //借阅图书
void retur(structbook *p); //归还图书
void main()
{
int x;
do
{
printf("**************************************菜单**************************************\n"
" *********** 1.输入图书信息 ********** \n"
" *********** 2.查找图书信息 ********** \n"
" *********** 3.删除图书信息 ********** \n"
" *********** 4.借阅图书 ********** \n"
" *********** 5.归还图书 ********** \n"
" *********** 0.退出 ********** \n");
printf("********************************************************************************\n");
printf("请在0-5中选择,以回车键结束\n");
scanf("%d",&x);
switch(x)
{ case 1: input(&s[0]);break;
case 2: search(&s[0]);break;
case 3: del(&s[0]);break;
case 4: borrow(&s[0]);break;
case 5: retur(&s[0]);break;
case 0: break;
}
}while(x!=0);
}
void input(structbook *p)
{ int y;
for(;p<(&s[0]+N);p++)
{ printf("请输入书名:");scanf("%s",p->title);
printf("请输入编号:"); scanf("%d",&p->number);
printf("请输入作者:"); scanf("%s",p->author);
printf("请输入图书价格:"); scanf("%f",&p->price);
printf("请输入图书数量:"); scanf("%d",&p->store);
m++;
printf("第%d个信息已经输入完毕,是否继续?\n按任意键继续,按0键结束.",m);
scanf("%d",&y);//读取是否继续
if(y==0)
{ save(&s[0]);
read(&s[0]);//调用读取文件函数
break;
}
}
}

void search(structbook *p)//查询模块
{ int n;
char name1[20];
char name2[20];
char c[3];
do
{ p=&s[0];
printf("\t请选择查找方式:\n");//打印查询方式菜单
printf(" 1.按书名查找\n 2.按作者查找\n 0.返回\n");
printf("请在0-2中选择:\n\n");
scanf("%d",&n);//读取查找方式
if(n==0) break;
switch(n)
{ case 1: printf("请输入书名:\n");scanf("%s",name1);break;
case 2: printf("请输入作者:\n");scanf("%s",name2);break;
}
for(;p<&s[m];p++)
{ read(&s[0]);//调用读取函数
if(strcmp(p->title,name1)==0||strcmp(p->author,name2)==0)
{ printf("\n查找图书信息成功!\n");
printf("书名 编号 作者 价格 数量\n");
printf("%-10s%-10d%-10s%-10.2f%-10d\n",p->title,p->number,p->author,p->price,p->store);//打印信息
break;
}
}
printf("是否继续查找?\n“是”请键入“yes”, “否”请按任意键,返回菜单\n");
scanf("%s",c);
}while(strcmp(c,"yes")==0);//判断是否结束
}
void del(structbook *p)//删除模块
{ int i;
struct book *p1,*p2;
char name1[20];
char name2[20];
char c[3];
int n;
do
{ p=&s[0];
printf("请选择删除以方式回车键结束:\n");//打印删除方式菜单
printf( " 1.按书名删除\n 2.按作者删除\n 0.返回\n");
printf("请在0-2中选择:\n\n");
scanf("%d",&n);//读取查找方//
if(n==0) break;
switch(n)
{case 1:printf("请输入书名:\n");
scanf("%s",name1);break;
case 2: printf("请输入作者:\n");
scanf("%s",name2);break;
}
read(&s[0]); //调用读取函数
for(i=0;i<m;i++,p++)
{
if(strcmp(p->title,name1)==0||strcmp(p->author,name2)==0)
{ p1=p;
for(p2=p1+1;p2<=&s[m];p1++,p2++)
{
strcpy(p1->title,p2->title);
strcpy(p1->author,p2->author);
p1->number=p2->number;
p1->store=p2->store;
p1->price=p2->price;
m--;
printf("删除成功!!\n");

}
}
else {printf("没有该书记录!!");
break;}
}
printf("是否继续删除?“是”请键入“yes”, “否”请按任意键,返回菜单\n");
scanf("%s",c); //读取是否继续
save(&s[0]); //调用保存函数
}while(strcmp(c,"yes")==0); //判断是否继续删除
}
void borrow(structbook *p)//借书模块
{ int z;
char name3[20],name4[20];
char w[3];
do
{ p=&s[0];
printf("请先查找您要借阅的图书!");
printf("请选择查找方式:\n");//打印查询方式菜单
printf(" 1.按书名查找\n 2.按作者查找\n 0.返回\n");
printf("请在0-2中选择:\n");
scanf("%d",&z);//读取查找方式
if(z==0) break;
switch(z)
{ case 1: printf("请输入书名:\n");scanf("%s",name3);break;
case 2: printf("请输入作者:\n");scanf("%s",name4);break;
}
read(&s[0]);//调用读取函数
for(;p<&s[m];p++)
{ if(strcmp(p->title,name3)==0||strcmp(p->author,name4)==0)
{
printf("\n查找图书信息成功!\n");
printf("书名 编号 作者 价格 数量\n");
printf("%-10s%-10d%-10s%-10.2fs%-10d\n",p->title,p->number,
p->author,p->price,p->store);//打印信息
printf("请输入您的姓名:");scanf("%s",p->borrower_name);
printf("请输入您的性别:");scanf("%s",p->borrower_gender);
printf("请输入您的学号:");scanf("%d",&p->borrower_number);
p->store--;
printf("借书成功!\n");
printf("书名 编号 作者 价格 数量 借书人 性别 学号\n");
printf("%-10s%-10d%-10s%-10.2f%-10d%-10s%-10s%-10d\n",p->title,p->number,p->author,
p->price,p->store,p->borrower_name,p->borrower_gender,p->borrower_number);
break;
}
}

printf("是否继续借书??");
printf("“是”请键入“yes”, “否”请按任意键,返回菜单\n");
scanf("%s",w); //读取是否继续
save(&s[0]); //调用保存函数
}while(strcmp(w,"yes")==0); //判断是否继续借书
}
void retur(structbook *p)//还书模块
{ int e,f;
char name5[20];
char name6[20];
char t[3];
do
{ p=&s[0];
printf("请先查找您要还的图目!");
printf("请选择查找方式:\n"); //打印查询方式菜单
printf(" 1.按书名查找\n 2.按作者查找\n 0.返回\n");
printf("请在0-2中选择:\n\n");
scanf("%d",&e); //读取查找方式
if(e==0) break;
switch(e)
{ case 1: printf("请输入书名:\n");scanf("%s",name5);break;
case 2: printf("请输入作者:\n");scanf("%s",name6);break;
}
read(&s[0]);//调用读取函数
for(;p<&s[m];p++)
{ if(strcmp(p->title,name5)==0||strcmp(p->author,name6)==0)
{ printf("\n查找图书信息成功!\n");
printf("确认还书请按“1”!");//确认是否还书
scanf("%d",&f);
if(f==1)
{ strcpy(p->borrower_name,"0");
strcpy(p->borrower_gender,"0");
p->borrower_number=0;
p->store++;
printf("书名 编号 作者 价格 数量 借书人 性别 学号\n");
printf("%-10s%-10d%-10s%-10.2f%-10d%-10s%-10s%-10d\n",p->title,p->number,p->author,
p->price,p->store,p->borrower_name,p->borrower_gender,p->borrower_number);
//打印信息
}
break;
}
else {printf("没有该书记录!!");
break;}
}
printf("是否继续还书?\n");
printf("“是”请键入“yes”, “否”请按任意键,返回菜单\n");
scanf("%s",t); //读取是否继续
save(&s[0]); //调用保存函数
}while(strcmp(t,"yes")==0); //判断是否继续还书
}
void save(structbook *p)//保存文件
{ FILE *fp,*fp1;
int i;
if((fp=fopen("tushu.txt","wb"))==NULL)//打开文件并判断是否出错
{ printf("创建文件失败!\n\n");//打印出错提示
getchar(); return;
}
if((fp1=fopen("book.txt","wb"))==NULL)//打开文件并判断是否出错
{ printf("创建文件失败!\n\n");//打印出错提示
getchar(); return;
}
for(i=0;i<m;i++,p++)
if(fwrite(p,sizeof(structbook),1,fp)==0)//向文件写入数据,并判断是否出错
printf("向文件输入数据失败!\n\n");
fprintf(fp1,"%d",m);
fclose(fp);//关闭文件
fclose(fp1);//关闭文件
}
void read(structbook *p)//从文件读取信息模块
{ FILE *fp,*fp1;
int i;
if((fp=fopen("tushu.txt","rb"))==NULL)//打开文件,并判断是否出错
{ printf("出错,请检查文件是否存在,按任意键返回住菜单");//打印出错提示
getchar();
}
if((fp1=fopen("book.txt","rb"))==NULL)//打开文件并判断是否出错
{ printf("创建文件失败!\n\n");//打印出错提示
getchar(); return;
}
fscanf(fp1,"%d",&m);
fclose(fp1);//关闭文件
for(i=0;i<m;i++,p++)
{ fread(p,sizeof(struct book),1,fp);//从文件中读取信息
}
fclose(fp);//关闭文件
}
你把保存的文件地址自己修改一下就可以了。。希望能帮到你

热点内容
tomcat编译后的文件 发布:2025-01-23 06:05:46 浏览:253
惠普畅游人14是什么配置表 发布:2025-01-23 05:57:39 浏览:295
简单搭建ftp服务器 发布:2025-01-23 05:49:41 浏览:227
有qq号没密码如何登上 发布:2025-01-23 05:34:08 浏览:469
javajsdes加密 发布:2025-01-23 05:33:21 浏览:770
qq怎么上传视频到电脑上 发布:2025-01-23 05:07:27 浏览:972
如何申请i7服务器地址 发布:2025-01-23 04:42:15 浏览:848
浏览器内核源码 发布:2025-01-23 04:41:34 浏览:662
精英版缤智少了些什么配置 发布:2025-01-23 04:41:30 浏览:359
编写c编译器 发布:2025-01-23 04:41:30 浏览:971