用C++做一个图书管理系统,需求如下:

作者&投稿:沈纨 (若有异议请与网页底部的电邮联系)
用C++做一个小型图书管理系统~

可以依靠Baidu Hi联系我
有时间可能完成你所面临的任务
类似的要求也可能联系我

ES:\\EEF785DE3EB1E7327A2C31F2E80B9970
PS:大家连手拆穿预先支付订金的骗子

#include
#include
#include
//
#define MAXSIZE 100 //最大值定义为100
#define LIST_INIT_SIZE 100//图书证使用者最大值定义为100
//借书人的结构体


typedef struct Boro//借书行为
{
char BNum[20];//借书的书号
char RetDate[8];//归还日期
struct Boro *next;
}Bor;

typedef struct LinkBook
{
Bor *next;//该图书证的借书行为
char CNum[20];//证号
int Total;//借书的数量
}lend[LIST_INIT_SIZE];//借书人数组

//图书的结构体信息

typedef struct LNode
{
char CardNum[20];//图书证号
struct LNode *next;
}LinkList; //借书人


typedef struct book
{//每种图书需要登记的内容包括书号ISBN、书名、作者、出版社、总库存量和现库存量。
char num[20];//书号
char name[20];//书名
char auth[20];//作者
char pub[20];//出版社
int TotNum;//总库存
int NowNum;//现库存
LinkList *next;//借了该书的人
}ook[MAXSIZE];
//

int Retotal;//读者数量
int total; //定义外部变量.书的种类数
//
//结构体初始化
void InitBo(ook &boo) //初始化图书信息
{
for(int i=0;i<MAXSIZE;i++)
{
boo[i].NowNum=0;
boo[i].TotNum=0;
boo[i].next=NULL;
}
}

void InitRe(lend &Lin) //初始化借阅者信息
{
for(int i=0;i<LIST_INIT_SIZE;i++)
Lin[i].next=NULL;
}



//

int mid=0;//外部函数mid,用来返回查找到的位置

bool BinarySearch(ook boo,char SearchNum[]) //二分法查找比较书号
{ //用bool函数,但由于函数不能有两个返回值,所以设置一个外部变量mid,用来返回查找到的位置
int low=0,high=total-1;
int found=0;
while(low<=high)
{
mid=(low+high)/2; //中间点
if(strcmp(boo[mid].num,SearchNum)==0) //书号相同
{
found=1;
return true;
}//查找成功
if(strcmp(boo[mid].num,SearchNum)!=0)//书号不同
high=mid-1;
else low=mid+1;
}
if(found==0)
return false; //查找失败
}




void Buy(ook &boo, char BuyNum[])
{//1、 采编入库:新购入一种书,如果该书在图书账目中已经存在,则将其库存量增加(包
//括总库存量和现库存量),如果该书不存在,则在图书账目中增加一种书,总库存量和现库存量均为1。
if(BinarySearch(boo,BuyNum)) //如果书库中有此书
{
boo[mid].TotNum++; //总库存加1
boo[mid].NowNum++; //现库存加1
printf("入库成功.
");
printf("已更改书库中该书的信息。编号 %s 的书 %s 作者是 %s ,出版社是 %s ,目前的总库存是 %d ,现库存是 %d 。
",boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].TotNum,boo[mid].NowNum);
}
if(!BinarySearch(boo,BuyNum))
{
int i;
for(i=total;i>mid&&total;i--) //插在适合位置 保持有序
boo[i]=boo[i-1]; //空出插入位置

printf("该书在书库中不存在。设立新书目,请补全书的详细信息。
");
strcpy(boo[i].num,BuyNum);
printf("该书购入的数量是:");
scanf(" %d",&boo[i].NowNum);
boo[i].TotNum=boo[i].NowNum;
printf("该书的名字是:");
scanf(" %s",&boo[i].name);
printf("该书的作者是:");
scanf(" %s",&boo[i].auth);
printf("该书的出版社是:");
scanf(" %s",&boo[i].pub);//补全信息
boo[i].next=NULL;
total++;//总量+1
printf("已增加该书的信息。编号 %s 的书 %s 作者是 %s ,出版社是 %s ,目前的总库存是 %d ,现库存是 %d 。
",boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);
printf("入库成功.
");
}
}






void Delete(ook &boo,char DeleteNum[])
{//2、 清空库存:某一种书已无保留价值,将它从图书账目中注销。

if(BinarySearch(boo,DeleteNum)==false||total==0) //如果无此书
printf("书库中没有该书.
");
if(BinarySearch(boo,DeleteNum))//若有
{
if(!boo[mid].next)
{
int j;
for( j=mid;j<total;j++)
boo[j]=boo[j+1];

strcpy(boo[j].num,boo[j+1].num);
strcpy(boo[j].name,boo[j+1].name);
strcpy(boo[j].auth,boo[j+1].auth);
strcpy(boo[j].pub,boo[j+1].pub);
boo[j].TotNum=boo[j+1].TotNum;
boo[j].NowNum=boo[j+1].NowNum;
printf("已成功删除该书.
");
}

else printf("该书有借阅者,无法删除。
");

}
}




void Borrow(ook &boo,lend &Lin,char BorrowNum[],char CaNum[])
{//3、 借阅:如果一种书的现库存量大于零,则借出一本书,将现库存量减1,
//并登记借阅者的图书证号和归还期限。

Bor *p,*q;
LinkList *m,*n;
if(!BinarySearch(boo,BorrowNum)||total==0) //如果没有找到此书
printf("书库里没这书。
");//如果有这书

if(BinarySearch(boo,BorrowNum)) //书库里有
{
if(boo[mid].NowNum>0) //看现库存是否大于0
{
boo[mid].NowNum--;//借出一本,少1
if(boo[mid].next==NULL) //若该书信息下显示该种书还没被人借过
{
m=(LinkList *)malloc(sizeof(LNode));//分配
boo[mid].next=m;//该图书信息中的链表的第一个结点
strcpy(m->CardNum,CaNum);
m->next=NULL;//后一个结点为空
}
else //如果已经有人在借这书了
{
m=boo[mid].next;
while(m->next) //遍历到最后一个结点
m=m->next;
n=(LinkList *)malloc(sizeof(LNode));//分配空间,增加1个结点
m->next=n;
strcpy(n->CardNum,CaNum);//记录证号
n->next=NULL;
}
int i=0;
for(i=0;i<Retotal;i++)//
{
if(!strcmp(Lin[i].CNum,CaNum))//如果已经有该图书证的信息
{
p=Lin[i].next;
while(p->next)p=p->next;//遍历到最后一个结点
q=(Bor *)malloc(sizeof(Boro));//分配空间
p->next=q;
strcpy(q->BNum,BorrowNum); //记录书号
printf("输入归还日期:");
scanf("%s",&q->RetDate);
q->next=NULL;
printf("借阅成功.
");
break; //找到证了就跳出循环
}
}
if(i==Retotal)//如果没有这张证的信息
{
strcpy(Lin[i].CNum,CaNum); //记录证号
p=(Bor *)malloc(sizeof(Boro)); //分配空间
Lin[i].next=p;
strcpy(p->BNum,BorrowNum);
printf("输入归还日期:");
scanf(" %s",&p->RetDate);
p->next=NULL;
Retotal++; //借阅证号信息总数加1
printf("借阅成功.
");
}
}
else printf("借阅失败.该书现在库存为0.
");
}
}



void Return(ook &boo,lend &Lin,char ReturnNum[],char BorrowerNum[])
{//4、 归还:注销对借阅者的登记,改变该书的现存量。
Bor *p,*q;
LinkList *m,*n;
int flag=0;//设置一个参数
if(!BinarySearch(boo,ReturnNum)||!total) //没书
printf("书库中无此书.
");
if(BinarySearch(boo,ReturnNum)) //有书
{
m=boo[mid].next;
if(!strcmp(m->CardNum,BorrowerNum)) //如果是第一个借的人还的
{
boo[mid].NowNum++; //现库存加1
boo[mid].next=m->next; //删除结点
free(m); //释放该结点的空间空间
}
else
{
while(m->next) //查找归还者的借阅者结点
{
if(!strcmp(m->next->CardNum,BorrowerNum)) //如果找到
{
n=m->next; //n为归还者的借阅结点
m->next=n->next; //m指向归还者的借阅结点的下一结点
free(n); //释放空间
boo[mid].NowNum++; //现库存加1
break;
}
m=m->next;
}
}
}
//在借阅者表里查找借阅者信息
for(int i=0;i<Retotal;i++)
{
if(!strcmp(Lin[i].CNum,BorrowerNum)) //如果找到借阅者
{
p=Lin[i].next;
if(!strcmp(p->BNum,ReturnNum)) //如果是归还的是借的第一本书
{
Lin[i].next=p->next; //指向下一借书结点
free(p); //释放结点空间
printf("成功归还该书.
");
flag=1;
break;
}
else //找不到
{
while(p->next) //找到归还书的借书结点
{
if(!strcmp(p->next->BNum,ReturnNum)) //如果找到
{
q=p->next; //q为归还书的借书结点
p->next=q->next; //p指向下一借书结点
free(q); //释放空间
printf("成功归还该书.
");
flag=1;
break;
}
p=p->next;
}
}
}
}
for(int k=0;k<Retotal;k++)
if(!Lin[k].next)
{
int j;
for(j=k;j<Retotal;j++)
Lin[j]=Lin[j+1]; //其后都往前移一位,覆盖掉当前信息
strcpy(Lin[j].CNum," "); //删除图书证号
Retotal--; //图书证数减1
} //删除当前状态下没借书的图书证的信息,节省空间
if(flag==0) printf("无该证信息.
");
}


//5、 查找:实现按三种查询条件之一查找:按书号查找、
//按书名查找、按作者查找。注:可不实现组合查找,即几个条件组合查找。
void SearchByNum(ook &boo,char SeaNum[])
{//BY NUM 根据书号查找
LinkList *p;
p=boo[mid].next;
if(BinarySearch(boo,SeaNum)==false)printf("对不起,未找到您想查找的书。
");//二分查找 没找到
else//找到了的话
{
{
printf("┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┓
");
printf("┃ 书号 ┃ 书名 ┃ 作者 ┃ 出版社 ┃ 现库存 ┃ 总库存 ┃
");
printf("┣━━━━━━━╋━━━━━━━╋━━━━━━━━╋━━━━━━━━╋━━━━━╋━━━━━┫
");
printf("┃%14s┃%14s┃%16s┃%16s┃%10d┃%10d┃
",boo[mid].num,boo[mid].name,boo[mid].auth,boo[mid].pub,boo[mid].NowNum,boo[mid].TotNum);
printf("┗━━━━━━━┻━━━━━━━┻━━━━━━━━┻━━━━━━━━┻━━━━━┻━━━━━┛
");
if(boo[mid].next!=NULL)
{
printf("┏━━━━━━━┓
");
printf("┃ 已借该书的 ┃
");
printf("┃ 图书证号 ┃
");
while(p)
{
printf("┣━━━━━━━┫
");
printf("┃%14s┃
",p->CardNum);
p=p->next;
}
printf("┗━━━━━━━┛
");
}

}
while(p)
{
printf(" %s ",p->CardNum);//在按书号查找的函数里也显示借了这本书的借阅者的证号
p=p->next;
}
printf("
");
}//显示查找的书籍的信息
}



void SearchByName(ook &boo)
{//BY NAME 根据书名查找
char SeaName[20];
printf("输入想查找的书的书名:
");
scanf(" %s",&SeaName);
printf("找到符合该书名的书的详细信息如下:
");
for(int i=0;i<total;i++)
{
if(strcmp(SeaName,boo[i].name)==0)//如果书名一样
{
printf("书号:%s
书名:%s
作者:%s
出版社:%s
总库存量:%d
现库存量:%d

",boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);
}//显示符合信息的所有书籍的信息
}
}




void SearchByAuth(ook &boo)
{// BY AUTH 根据作者查找
char SeaAuth[20];
printf("输入想查找的书的作者:
");
scanf(" %s",&SeaAuth);
printf("找到符合该作者的书的详细信息如下:
");
for(int i=0;i<total;i++)
{
if(strcmp(SeaAuth,boo[i].auth)==0)//如果作者一样
{
printf("书号:%s
书名:%s
作者:%s
出版社:%s
总库存量:%d
现库存量:%d

",boo[i].num,boo[i].name,boo[i].auth,boo[i].pub,boo[i].TotNum,boo[i].NowNum);
}//显示符合信息的所有书籍的信息
}
}

//6、 查看:可查看某图书证号的借阅者借阅的全部图书,可查看全部超期未还的图书。

void ViewCard(ook &boo,lend &Lin)
{//查看某图书证号的借阅者借阅的全部图书
char Num[20];
printf("请输入您所想要查看的图书证号:
");
scanf(" %s",&Num);
Bor *p;
int qqq=0;

for(int i=0;i<Retotal;i++)
{
if(strcmp(Lin[i].CNum,Num)==0) //找到该证
{
printf("这个证借的书有:
");
p=Lin[i].next;
while(p)
{
printf(" %s ",p->BNum); //书号
p=p->next;
}
printf("
");
qqq=1;
break;
}
}
if(qqq==0)
printf("该证不存在.
");
}


void ViewBook(ook &boo,lend &Lin)
{//查看全部超期未还的图书
char date[8];
Bor *p;
printf("请输入日期(请按格式20060605输入):
");
scanf(" %s",&date);
printf("所有超期未还的书有:
");
for(int i=0;i<Retotal;i++)
{
p=Lin[i].next;
while(p)//当p不空时
{
if(strcmp(p->RetDate,date)<0) //超过日期
{
printf("书号为 %s 证号为 %s 应归还日期为 %s
",p->BNum,Lin[i].CNum,p->RetDate);
}//显示所有超期未还的书的信息
p=p->next;
}
}
}


void Menu() //菜单
{
printf("┏—————————————————M E N U————————————————┓
");
printf("│ │
");
printf("│ 1. 采编入库:新购入一种书,如果该书在图书账目中已经存在, │
");
printf("│ 则将其库存量增加(包括总库存量和现库存量)。 │
");
printf("│ 如果该书不存在,则在图书账目中增加一种书, │
");
printf("│ 总库存量和现库存量均为输入的数字。 │
");
printf("│ 2. 清空库存:某一种书已无保留价值,将它从图书账目中注销。 │
");
printf("│ 3. 借阅:如果一种书的现库存量大于零,则借出一本书,将现库存量减1, │
");
printf("│ 并登记借阅者的图书证号和归还期限。 │
");
printf("│ 4. 归还:注销对借阅者的登记,改变该书的现存量。 │
");
printf("│ 5. 按书号查找。 │
");
printf("│ 6. 按书名查找。 │
");
printf("│ 7. 按作者查找。 │
");
printf("│ 8. 查看某图书证号的借阅者借阅的全部图书。 │
");
printf("│ 9. 查看全部超期未还的图书。 │
");
printf("│ 0. 退出图书管理系统。 │
");
printf("│ │
");
printf("┗—————————————请 选 择 你 需 要 的 操 作————————————┛
");
}


void main()
{
ook Bo;
lend Lin;
char BNum[20];
char CNum[20];
printf("-----------------------欢 迎 进 入 图 书 管 理 系 统!---------------------------

");
int choice=10;
int SearchCho=10,ViewCho=10;
while(choice!=0)
{
Menu();//显示菜单
scanf(" %d",&choice);
switch(choice)
{
case 1://采编入库
printf("请输入入库的书的书号:");
scanf(" %s",BNum);
Buy(Bo,BNum);
break;

case 2://清空库存
printf("请输入想要清除的书的书号:");
scanf(" %s",BNum);
Delete(Bo,BNum);
break;

case 3://借阅
printf("请输入想要借阅的书的书号:
");
scanf(" %s",&BNum);
printf("请输入图书证号:");
scanf(" %s",&CNum);
Borrow(Bo,Lin,BNum,CNum);
break;

case 4://归还
printf("请输入想要归还的书的书号:
");
scanf(" %s",&BNum);
printf("请输入图书证号:");
scanf(" %s",&CNum);
Return(Bo,Lin,BNum,CNum);
break;

case 5://查找//根据书号查找
printf("请输入书号:");//输入书号查找
scanf(" %s",&BNum);
SearchByNum(Bo,BNum);
break;

case 6://根据书名查找
SearchByName(Bo);
break;

case 7://根据作者查找
SearchByAuth(Bo);
break;

case 8://查看某图书证所借的所有书
ViewCard(Bo,Lin);
break;

case 9: //查看全部超期未还的书
ViewBook(Bo,Lin);
break;

case 0://退出系统
exit(0);break;

default:printf("输入错误!
");exit(0);break;

}
}
}

用access数据库比较好,简单,参考代码如下,希望对您有帮助

供参考的代码:
#include<iostream.h>
#include<string.h>
#include<fstream.h>
class stu
{
char name[20];
double math,chinese,english,average,sum;
public:
stu()
{
}
stu(char n[20],double ma,double chin,double eng)
{
strcpy(name,n);
math=ma;
chinese=chin;
english=eng;
}
double getsum()
{
sum=chinese+english+math;
return sum;
}
double getaver()
{
average=getsum()/3;
return average;
}
friend void main();
};

void main()
{
cout<<"请选择您需要的操作!"<<endl;
cout<<"操作:"<<endl;
cout<<"(0)数据录入"<<endl;
cout<<"(1)增加人员"<<endl;
cout<<"(2)删除人员"<<endl;
cout<<"(3)修改数据"<<endl;
cout<<"查询:"<<endl;
cout<<"(4)按总成绩查询"<<endl;
cout<<"(5)按姓名查询"<<endl;
cout<<"(6)输出所有学生的数据"<<endl;
cout<<"成绩名词"<<endl;
cout<<"(7)按总分查询排名"<<endl;
cout<<"(8)按语文查询排名"<<endl;
cout<<"(9)按数学查询排名"<<endl;
cout<<"(y)按英语查询排名"<<endl;
cout<<"选择相关操作请输入相对的括号里的阿拉伯数字!"<<endl;
char p;char w;
stu *s[50];
ofstream *file[50];
int i=0;
int j=0;
bool flag2=0;
do
{
cin>>p;
if((p>='0'&&p<='10'))
flag2=1;
else
cout<<"指令错误!请重新输入:"<<endl;
}while(flag2==0);
do{
switch(p)
{
case '0':
{
char c;
char name[20];double math,chinese,english;
do{
cout<<"请输入姓名"<<endl;
cin>>name;
cout<<"请输入数学成绩:"<<endl;
cin>>math;
cout<<"请输入语文成绩:"<<endl;
cin>>chinese;
cout<<"请输入外语成绩:"<<endl;
cin>>english;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl;
j++;
s[i]=new stu(name, math, chinese, english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;
cin>>c;
flag2=0;
do
{
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break;
}
case '4':
{
double t;char c;
do
{
int flag1=0;
cout<<"请输入你要查询学生的总成绩"<<endl;
cin>>t;
for(int q=0;q<i;q++)
{
if(s[q]->getsum()==t)
{
flag1=1;
cout<<"您要查询的学生是:"<<(*s[q]).name<<endl;
}
}
if(flag1==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}

case '5':
{
char n[20];int j=0;char c;
do{
int flag=0;
cout<<"请输入你要查询的学生姓名"<<endl;
cin>>n;
for(int j=0;j<i;j++)
{
if(strcmp(n,(*s[j]).name)==0)
{
flag=1;
cout<<"您要查询的学生是:"<<(*s[j]).name<<endl;
cout<<(*s[j]).name<<"的总成绩成绩是"<<(*s[j]).getsum()<<endl<<"平均成绩是:"<<(*s[j]).getaver()<<endl;
}
}
if(flag==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}
case '1':
{
char name[20];double math,chinese,english;
char c;
do
{
cout<<"请输入您要增加的学生的姓名:"<<endl;
cin>>name;
cout<<"请输入数学成绩:"<<endl;
cin>>math;
cout<<"请输入语文成绩:"<<endl;
cin>>chinese;
cout<<"请输入外语成绩:"<<endl;
cin>>english;
file[j]=new ofstream("d:\\document",ios::ate);
*file[j]<<"姓名"<<name<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl;
j++;
s[i]=new stu(name, math, chinese, english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '2':
{
char name[20];bool flag3=0;char c;
do{
cout<<"请输入您要删除的学生姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
flag3=1;
i--;
do{
s[h]=s[h+1];
h++;
}while(h<=i);
}
}
if(flag3==0)
cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!";
cout<<"要继续删除吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '3':
{
char name[20];double mat,chin,eng;flag2=0;
char c;
do
{
cout<<"请输入您要修改的学生的姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
flag2=1;
cout<<"请输入新的数学成绩:"<<endl;
cin>>mat;
cout<<"请输入新的语文成绩:"<<endl;
cin>>chin;
cout<<"请输入新的外语成绩:"<<endl;
cin>>eng;
s[h]->chinese=chin;
s[h]->math=mat;
s[h]->english=eng;
cout<<"数据修改成功!";
}
}
if(flag2==0)
{
cout<<"您要修改的学生本来就不存在!请检查重新输入!"<<endl;
}
cout<<"想继续修改吗(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}

case '6':
{
cout<<"本系统所有学生数据如下:"<<endl;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<(*s[k]).getsum()
<<"平均分:"<<" "<<(*s[k]).getaver()<<endl;
}
break;
}
case '7':
{
int t;stu b;

cout<<"本系统所以学生排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->getsum())<(s[y]->getsum()))
t=y;
if(t!=x)
{
b=*s[x];
*s[x]=*s[t];
*s[t]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
}
break;
}
case '8':
{
int t;stu b;

cout<<"本系统所以学生语文排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->chinese)<(s[y]->chinese))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}

if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
}
break;
}
case '9':
{
int t;stu b;

cout<<"本系统所以学生数学排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->math)<(s[y]->math))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}

if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
}
break;
}
case 'y':
{
int t;stu b;

cout<<"本系统所以学生英语排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->english)<(s[y]->english))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}

if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
}
}
break;
}

cout<<"您想继续进行其他操作吗?(y/n)"<<endl;
bool flag4=0;
do
{
cin>>w;
if(w!='y'&&w!='n')
cout<<"指令错误!请重新输入!"<<endl;
else
flag4=1;
}while(flag4==0);
if(w=='y')
cout<<"请输入操作代码(0 录入/4 按总分查询/5 按姓名查询/1 增加人员/2 删除人员/3 修改数据/6 显示所有成员数据/7 按总分排名/8 按语文排名/9按数学排名/y按英语排名)"<<endl;
cin>>p;
}while(w=='y');
for(int x=0;x<i;x++)
{
delete s[x];
cout<<"delete all members!"<<endl;
}
}

呵呵 网上的源代码很多,你不会自己找吗? 呵呵


用C语言写个图书馆系统
1)图书目录一览模块实现:从数据表中的信息导出所有图书的信息,包括:图书编号、图书名称、作者姓名、出版社、出版日期、单价和图书类别。2)图书目录增加模块实现:把图书名称、作者姓名、出版社、出版日期、单价和图书类别增加到数据表中,并在图书目录一览模块中显示出来。3)图书目录删除模块实现:把图书编号、图书名称、...

c语言图书管理系统程序设计
1.读者类中借书操作函数中,采用循环语句时判断读者已借图书量时for(int i=0;i<Maxbor;i++)误写为for(int i=1;i<Maxbor;i++),使循环发生错误。2.指针使用错误,指针b和r混淆,导致编译错误得到“error C2660: 'retbook' : function does not take 1 parameters”错误报告。

急需用C语言写的图书馆信息管理系统
(1)新进图书基本信息的输入。(2) 图书基本信息的查询。(3) 对撤消图书信息的删除。(4)为借书人办理注册。(5)办理借书手续(非注册会员不能借书)。(6)办理还书手续 信息描述:有关该系统基本信息的描述,如:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等 include...

求c语言编程图书管理
printf("图书在馆,可以借出,是否确定借出?'y'or'n'\\n"); c=getchar(); scanf("%c",&c); if(c=='y') { printf("请输入你的名字:"); scanf("%s",b); p3=(reader *)malloc(LEN1); strcpy(p3->name,b); if(p0->a->next2==NULL) { p0->a->next2=p3; p3->next2=NULL; } el...

C语言程序设计 图书馆信息管理系统设计
C语言编程题:请设计一个图书馆管理系统,要求:(... 2015-08-27 c语言编程问题:关于图书馆信息管理的 2015-09-20 c语言程序设计图书馆管理系统 10 2013-05-20 c语言程序设计图书馆源代码 6 2009-07-12 急需用C语言写的图书馆信息管理系统 31 2010-07-08 C语言课程设计图书馆管理系统加讲解 16 ...

用C语言编写简单的图书馆系统
用C语言编写简单的图书馆系统 图书的基本信息包括书名,书号,作者,单价,数量,简介。1设计简单的菜单,能够进行系统的功能选择2实现信息的录入功能3在已有的信息的基础上添加新的记录4删除和修改指定书号的记录... 图书的基本信息包括书名,书号,作者,单价,数量,简介。1设计简单的菜单,能够进行系统的功能选择 2实现信息...

【速求C\/C++】制作一个图书馆管理系统,其功能包括增加、删除、修改图...
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; }\/\/获取删除标记 ...

图书馆图书管理系统(c语言)
图书馆图书管理系统(c语言) C语言程序设计综合报告要求1.用工程管理两个以上的源文件,函数的原型用.H文件管理;2.完成文本文件的创建、读写等相关操作;3.完成图形操作的基本功能;4.程序行数不少于200行。索取... C语言程序设计综合报告要求1. 用工程管理两个以上的源文件,函数的原型用.H文件管理;2. 完成文本...

用C语言编写的"图书馆管理系统"的源代码,删减版
厉害

求图书馆管理系统程序(c语言)
printf("已将原表中第%d个 图书信息删除!",n); getch(); } } void ListLength(){ Book *p; int i; p=L->next; i=0; while(p){i++; p=p->next ;} printf("图书个数为:%d",i); getch(); } void main(){ char c; while(1){ system("cls"); printf("*...

萝岗区13928095068: 用C++代码 编写一个图书管理系统 -
僪娟锦普: /*lib.txt的格式为书的id categoryid\n书的状态 借书人的id\n书的名字\n*/#include#include#include//...

萝岗区13928095068: 简单的c++图书管理系统
僪娟锦普: #include &lt;stdio.h&gt; #include &lt;vector&gt; using namespace std; #include &lt;string.h&gt; //图书类 class CBook { public: int m_ID;//编号 char m_name[200];//书名 float m_price;//价格 public: CBook(int _ID,char* _name,float _price = 0.0f); ...

萝岗区13928095068: 如何用C++编写一个图书管理程序. -
僪娟锦普: 一个简单的界面 + 数据库保存信息 + 点击不同的按钮执行特定的操作(比如点击“借书”进入借书界面,填写界面上的借书人,借书日期,借书许可时间等信息,点击确定后执行数据库连接,数据库添加记录等操作,然后输出成功信息等)然后返回主界面等待点击其他功能.

萝岗区13928095068: 用C++写一个图书管理系统的软件需要哪些方面的知识? -
僪娟锦普: 如果你是在WINODWS平台,那么需要:1、WINDOWS程序设计知识.2、数据库知识(基本概念要清楚,SQL语言起码会一点等等)3、C++基础(这个自然是必须的)4、COM知识(如果你使用COM组件(ADO等)连接数据库,这是必须的)5、ODBC知识(如果你使用ODBC函数连接数据库,这是必须的) 选择你所用的编程工具也非常重要!如果你使用VC6来编程,那么这些知识必须全部掌握.如果你使用c++builder6来编程,那么 知识1只需要掌握一些概念 知识2是必须全部掌握的 知识3自然也是要全部掌握的 知识4和知识5就不必了.

萝岗区13928095068: G求:C++图书管理系统!1.新书入库:图书信息包括书名、书号、库存量、现存量共四项.首先输入3本书的信息,并将其存入文件“book.dat”中.当有... -
僪娟锦普:[答案] 我这里有个类似的学生管理系统,你要不?相信对你有帮助哈

萝岗区13928095068: c++ 图书管理系统 -
僪娟锦普: #include #include //输入/输出文件流类 using namespace std; const int Maxr=100;//最多的读者 const int Maxb=100;//最多的图书 const int Maxbor=5;//每位读者最多借五本书//读者类,实现对读者的信息的描述 class Reader {private: int tag; ...

萝岗区13928095068: 用C++代码 编写一个图书管理系统 -
僪娟锦普: /* lib.txt的格式为 书的id categoryid\n 书的状态 借书人的id\n 书的名字\n*/#include<stdio.h>#include<stdlib.h>#include<stdbool.h>//定义bool类型#include<string.h> typedef struct book book; struct book{ int bid;//书的id int cid;//category id 所属的书...

萝岗区13928095068: c++课程设计 图书管理系统 -
僪娟锦普: #include <iostream> #include <iomanip> #include <string> #include <fstream>//输入/输出文件流类 using namespace std; const int Maxr=100;//最多的读者 const int Maxb=100;//最多的图书 const int Maxbor=5;//每位读者最多借五本书 //读者类...

萝岗区13928095068: 跪求高手用C++写个图书管理系统,要求如下:
僪娟锦普: 没学过这个.不过我推荐你去51CTO看看去..那里好像有这个http://down.51cto.com/detail_list.php?c_it=&c_re=&c_co=&c_in=&keywords=%E5%9B%BE%E4%B9%A6%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F&typeby=0&search_...

萝岗区13928095068: 求助:用c++编写的图书管理系统 -
僪娟锦普: #include "stdio.h"#include<graphics.h>#include "conio.h"#include<stdlib.h>#include<string.h> void main() {void adm1(),adm2(),build(),huan(),borrow(),dele(); adm1(); } void adm1() { FILE *fp,*p ; char adp[20],password[20]; int i,n=0; ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网