题目如下:
图书信息管理系统:
要求:1、主界面以菜单形式显示其主要功能
2、要有显示增加、插入、删除、排序及存取功能
Book Information System
L=List all records
D=Delete a records
A=Append records
I=Insert records
S=Sort record
H=Show this help message
V=Save to a file
O=Load from a file
C=Clear scream
Q=Quit system
3、以链表为结构创建该数据库
Struct Book-Info
{unsigned ID;
unsinned ISBN;
char title[41];
char auther [11];
char press [21];
data pub-data;
struct Book -Info *next;};
各位大哥大姐帮帮忙啊~~~~~~~~~~
小妹在此有礼了!
5 个解决方案
#1
分太少了,都对不起观众!!
#2
你那么在乎那个吗?人家是新手啊,或许还不清楚那个分数是怎么回事呢?
#3
好象很好搞呀……呵呵
我上个学期才做了的
区别不大
你要不要?
我给你
好象你说的几个功能我都有
你稍微改一改应该就好了
#include<iostream>
#include<string>
#include <iomanip>
using namespace std;
typedef struct
{
string name;
string age;
string sex;
string num;
}student;//学生信息
typedef struct slnode
{
student data;
struct slnode *next;
}stud;//学生链表的存储结构
int init(stud **p)
{//初始化头节点
if(!(*p=new stud))
{//初始化分配内存失败
cout<<"初始化失败!"<<endl;
return 0;
}
(*p)->next=NULL;
return 1;//初始化成功
}
int insert(stud *p,int i,student x)
{//插入元素x到链表中第i个元素之前
stud *h;
stud *s;
int j=0;
h=p;
while(j<i-1&&h->next!=NULL)
{//找到第i-1个节点
h=h->next;
j++;
}
if(j!=i-1)
{//未找到第i-1个位置
cout<<"插入位置不合理"<<endl;
return 0;
}
if(!(s=new stud))
{//为新插入的元素分配内存失败
cout<<"分配内存失败"<<endl;
return 0;
}
s->data=x;
s->next=h->next;
h->next=s;
return 1;
}
int delet(stud *p,string name1)
{//删除链表p中名字为name1的元素
stud *h;
stud *s;
int j=0;
int i=1;
h=p;
while(h!=NULL)
{
if(h->data.name!=name1)
{
i++;
h=h->next;
}//找要删除的学生的位置
else break;
}
if(h==NULL)//没有这个学生
{
cout<<"没有这个学生!"<<endl;
return 0;
}
h=p;
while(j<i-2&&h->next!=NULL)
{//找到第i-1个节点
h=h->next;
j++;
}
if(j!=i-2)
{//没有找到第i-1个元素
cout<<"删除位置不合理"<<endl;
return 0;
}
s=h->next;//找到第i个节点,并用s指向它
h->next=s->next;
free(s);//释放删除的节点的空间
cout<<"删除学生"<<name1<<"的信息成功!"<<endl;
return 1;
}
void output(stud *h)
{//输出表
stud *p;
int j=0;
p=h->next;
cout<<left<<setw(20)<<"学号"<<left<<setw(20)<<"姓名"
<<left<<setw(20)<<"年龄"
<<setw(20)<<"性别";
while(p!=NULL)
{
cout<<left<<setw(20)<<p->data.num<<left<<setw(20)
<<p->data.name<<left<<setw(20)
<<p->data.age<<left<<setw(20)
<<p->data.sex;
j++;//j用来记录输出的个数
p=p->next;
};
if(j==0)
{
cout<<"这是个空表!"<<endl;
}
}
void input(student *y)
{//控制输入数据的函数,将学生信息记录到y中
cout<<"请输入学生的信息:"<<endl;
cout<<"姓名:";
cin>>y->name;
cout<<"年龄:";
cin>>y->age;
cout<<"性别:";
cin>>y->sex;
cout<<"学号:";
cin>>y->num;
}
main()
{
student x;
stud *list;
int i;
char a='z';
string name2;
init(&list);
while(a!='x')
{
cout<<"\t\t这个程序用来操作学生信息链表"<<endl;
if(list->next==NULL)
cout<<"当前表中无任何信息,请先输入!"<<endl;
cout<<"a-->插入一个新的学生信息到表中"<<endl;
cout<<"b-->删除一个学生的信息"<<endl;
cout<<"c-->输出当前学生信息表"<<endl;
cout<<"x-->退出程序"<<endl;
cout<<"请选择:";
cin>>a;
if(a=='a')
{//输入学生信息并插入到指定位置
input(&x);
cout<<"请输入要插入的位置:";
cin>>i;
if(insert(list,i,x))
cout<<"插入成功!"<<endl;
}
if(a=='b')
{//输入学生姓名并删除
cout<<"请输入要删除的学生的名字:";
cin>>name2;
delet(list,name2);
}
if(a=='c')
{//输出学生信息表
output(list);
}
cout<<"c键继续!\n其他键退出!"<<endl;
char z;
cin>>z;
if(z=='c') continue;
else break;
}
return 1;
}
我上个学期才做了的
区别不大
你要不要?
我给你
好象你说的几个功能我都有
你稍微改一改应该就好了
#include<iostream>
#include<string>
#include <iomanip>
using namespace std;
typedef struct
{
string name;
string age;
string sex;
string num;
}student;//学生信息
typedef struct slnode
{
student data;
struct slnode *next;
}stud;//学生链表的存储结构
int init(stud **p)
{//初始化头节点
if(!(*p=new stud))
{//初始化分配内存失败
cout<<"初始化失败!"<<endl;
return 0;
}
(*p)->next=NULL;
return 1;//初始化成功
}
int insert(stud *p,int i,student x)
{//插入元素x到链表中第i个元素之前
stud *h;
stud *s;
int j=0;
h=p;
while(j<i-1&&h->next!=NULL)
{//找到第i-1个节点
h=h->next;
j++;
}
if(j!=i-1)
{//未找到第i-1个位置
cout<<"插入位置不合理"<<endl;
return 0;
}
if(!(s=new stud))
{//为新插入的元素分配内存失败
cout<<"分配内存失败"<<endl;
return 0;
}
s->data=x;
s->next=h->next;
h->next=s;
return 1;
}
int delet(stud *p,string name1)
{//删除链表p中名字为name1的元素
stud *h;
stud *s;
int j=0;
int i=1;
h=p;
while(h!=NULL)
{
if(h->data.name!=name1)
{
i++;
h=h->next;
}//找要删除的学生的位置
else break;
}
if(h==NULL)//没有这个学生
{
cout<<"没有这个学生!"<<endl;
return 0;
}
h=p;
while(j<i-2&&h->next!=NULL)
{//找到第i-1个节点
h=h->next;
j++;
}
if(j!=i-2)
{//没有找到第i-1个元素
cout<<"删除位置不合理"<<endl;
return 0;
}
s=h->next;//找到第i个节点,并用s指向它
h->next=s->next;
free(s);//释放删除的节点的空间
cout<<"删除学生"<<name1<<"的信息成功!"<<endl;
return 1;
}
void output(stud *h)
{//输出表
stud *p;
int j=0;
p=h->next;
cout<<left<<setw(20)<<"学号"<<left<<setw(20)<<"姓名"
<<left<<setw(20)<<"年龄"
<<setw(20)<<"性别";
while(p!=NULL)
{
cout<<left<<setw(20)<<p->data.num<<left<<setw(20)
<<p->data.name<<left<<setw(20)
<<p->data.age<<left<<setw(20)
<<p->data.sex;
j++;//j用来记录输出的个数
p=p->next;
};
if(j==0)
{
cout<<"这是个空表!"<<endl;
}
}
void input(student *y)
{//控制输入数据的函数,将学生信息记录到y中
cout<<"请输入学生的信息:"<<endl;
cout<<"姓名:";
cin>>y->name;
cout<<"年龄:";
cin>>y->age;
cout<<"性别:";
cin>>y->sex;
cout<<"学号:";
cin>>y->num;
}
main()
{
student x;
stud *list;
int i;
char a='z';
string name2;
init(&list);
while(a!='x')
{
cout<<"\t\t这个程序用来操作学生信息链表"<<endl;
if(list->next==NULL)
cout<<"当前表中无任何信息,请先输入!"<<endl;
cout<<"a-->插入一个新的学生信息到表中"<<endl;
cout<<"b-->删除一个学生的信息"<<endl;
cout<<"c-->输出当前学生信息表"<<endl;
cout<<"x-->退出程序"<<endl;
cout<<"请选择:";
cin>>a;
if(a=='a')
{//输入学生信息并插入到指定位置
input(&x);
cout<<"请输入要插入的位置:";
cin>>i;
if(insert(list,i,x))
cout<<"插入成功!"<<endl;
}
if(a=='b')
{//输入学生姓名并删除
cout<<"请输入要删除的学生的名字:";
cin>>name2;
delet(list,name2);
}
if(a=='c')
{//输出学生信息表
output(list);
}
cout<<"c键继续!\n其他键退出!"<<endl;
char z;
cin>>z;
if(z=='c') continue;
else break;
}
return 1;
}
#4
谢谢大家的回复,但是我要的是c不是c++,再次谢谢您的回复!
#5
要变成C也很简单呀
你把我里面的头文件改成include<stdio.h>
include<string.h>
然后里面的new语句改成malloc,cout和cin改成printf和scanf就可以了
我没有用到对象,还要改的就是所有的字符串副制你用一个for来完成就应该没有问题了
你把我里面的头文件改成include<stdio.h>
include<string.h>
然后里面的new语句改成malloc,cout和cin改成printf和scanf就可以了
我没有用到对象,还要改的就是所有的字符串副制你用一个for来完成就应该没有问题了
#1
分太少了,都对不起观众!!
#2
你那么在乎那个吗?人家是新手啊,或许还不清楚那个分数是怎么回事呢?
#3
好象很好搞呀……呵呵
我上个学期才做了的
区别不大
你要不要?
我给你
好象你说的几个功能我都有
你稍微改一改应该就好了
#include<iostream>
#include<string>
#include <iomanip>
using namespace std;
typedef struct
{
string name;
string age;
string sex;
string num;
}student;//学生信息
typedef struct slnode
{
student data;
struct slnode *next;
}stud;//学生链表的存储结构
int init(stud **p)
{//初始化头节点
if(!(*p=new stud))
{//初始化分配内存失败
cout<<"初始化失败!"<<endl;
return 0;
}
(*p)->next=NULL;
return 1;//初始化成功
}
int insert(stud *p,int i,student x)
{//插入元素x到链表中第i个元素之前
stud *h;
stud *s;
int j=0;
h=p;
while(j<i-1&&h->next!=NULL)
{//找到第i-1个节点
h=h->next;
j++;
}
if(j!=i-1)
{//未找到第i-1个位置
cout<<"插入位置不合理"<<endl;
return 0;
}
if(!(s=new stud))
{//为新插入的元素分配内存失败
cout<<"分配内存失败"<<endl;
return 0;
}
s->data=x;
s->next=h->next;
h->next=s;
return 1;
}
int delet(stud *p,string name1)
{//删除链表p中名字为name1的元素
stud *h;
stud *s;
int j=0;
int i=1;
h=p;
while(h!=NULL)
{
if(h->data.name!=name1)
{
i++;
h=h->next;
}//找要删除的学生的位置
else break;
}
if(h==NULL)//没有这个学生
{
cout<<"没有这个学生!"<<endl;
return 0;
}
h=p;
while(j<i-2&&h->next!=NULL)
{//找到第i-1个节点
h=h->next;
j++;
}
if(j!=i-2)
{//没有找到第i-1个元素
cout<<"删除位置不合理"<<endl;
return 0;
}
s=h->next;//找到第i个节点,并用s指向它
h->next=s->next;
free(s);//释放删除的节点的空间
cout<<"删除学生"<<name1<<"的信息成功!"<<endl;
return 1;
}
void output(stud *h)
{//输出表
stud *p;
int j=0;
p=h->next;
cout<<left<<setw(20)<<"学号"<<left<<setw(20)<<"姓名"
<<left<<setw(20)<<"年龄"
<<setw(20)<<"性别";
while(p!=NULL)
{
cout<<left<<setw(20)<<p->data.num<<left<<setw(20)
<<p->data.name<<left<<setw(20)
<<p->data.age<<left<<setw(20)
<<p->data.sex;
j++;//j用来记录输出的个数
p=p->next;
};
if(j==0)
{
cout<<"这是个空表!"<<endl;
}
}
void input(student *y)
{//控制输入数据的函数,将学生信息记录到y中
cout<<"请输入学生的信息:"<<endl;
cout<<"姓名:";
cin>>y->name;
cout<<"年龄:";
cin>>y->age;
cout<<"性别:";
cin>>y->sex;
cout<<"学号:";
cin>>y->num;
}
main()
{
student x;
stud *list;
int i;
char a='z';
string name2;
init(&list);
while(a!='x')
{
cout<<"\t\t这个程序用来操作学生信息链表"<<endl;
if(list->next==NULL)
cout<<"当前表中无任何信息,请先输入!"<<endl;
cout<<"a-->插入一个新的学生信息到表中"<<endl;
cout<<"b-->删除一个学生的信息"<<endl;
cout<<"c-->输出当前学生信息表"<<endl;
cout<<"x-->退出程序"<<endl;
cout<<"请选择:";
cin>>a;
if(a=='a')
{//输入学生信息并插入到指定位置
input(&x);
cout<<"请输入要插入的位置:";
cin>>i;
if(insert(list,i,x))
cout<<"插入成功!"<<endl;
}
if(a=='b')
{//输入学生姓名并删除
cout<<"请输入要删除的学生的名字:";
cin>>name2;
delet(list,name2);
}
if(a=='c')
{//输出学生信息表
output(list);
}
cout<<"c键继续!\n其他键退出!"<<endl;
char z;
cin>>z;
if(z=='c') continue;
else break;
}
return 1;
}
我上个学期才做了的
区别不大
你要不要?
我给你
好象你说的几个功能我都有
你稍微改一改应该就好了
#include<iostream>
#include<string>
#include <iomanip>
using namespace std;
typedef struct
{
string name;
string age;
string sex;
string num;
}student;//学生信息
typedef struct slnode
{
student data;
struct slnode *next;
}stud;//学生链表的存储结构
int init(stud **p)
{//初始化头节点
if(!(*p=new stud))
{//初始化分配内存失败
cout<<"初始化失败!"<<endl;
return 0;
}
(*p)->next=NULL;
return 1;//初始化成功
}
int insert(stud *p,int i,student x)
{//插入元素x到链表中第i个元素之前
stud *h;
stud *s;
int j=0;
h=p;
while(j<i-1&&h->next!=NULL)
{//找到第i-1个节点
h=h->next;
j++;
}
if(j!=i-1)
{//未找到第i-1个位置
cout<<"插入位置不合理"<<endl;
return 0;
}
if(!(s=new stud))
{//为新插入的元素分配内存失败
cout<<"分配内存失败"<<endl;
return 0;
}
s->data=x;
s->next=h->next;
h->next=s;
return 1;
}
int delet(stud *p,string name1)
{//删除链表p中名字为name1的元素
stud *h;
stud *s;
int j=0;
int i=1;
h=p;
while(h!=NULL)
{
if(h->data.name!=name1)
{
i++;
h=h->next;
}//找要删除的学生的位置
else break;
}
if(h==NULL)//没有这个学生
{
cout<<"没有这个学生!"<<endl;
return 0;
}
h=p;
while(j<i-2&&h->next!=NULL)
{//找到第i-1个节点
h=h->next;
j++;
}
if(j!=i-2)
{//没有找到第i-1个元素
cout<<"删除位置不合理"<<endl;
return 0;
}
s=h->next;//找到第i个节点,并用s指向它
h->next=s->next;
free(s);//释放删除的节点的空间
cout<<"删除学生"<<name1<<"的信息成功!"<<endl;
return 1;
}
void output(stud *h)
{//输出表
stud *p;
int j=0;
p=h->next;
cout<<left<<setw(20)<<"学号"<<left<<setw(20)<<"姓名"
<<left<<setw(20)<<"年龄"
<<setw(20)<<"性别";
while(p!=NULL)
{
cout<<left<<setw(20)<<p->data.num<<left<<setw(20)
<<p->data.name<<left<<setw(20)
<<p->data.age<<left<<setw(20)
<<p->data.sex;
j++;//j用来记录输出的个数
p=p->next;
};
if(j==0)
{
cout<<"这是个空表!"<<endl;
}
}
void input(student *y)
{//控制输入数据的函数,将学生信息记录到y中
cout<<"请输入学生的信息:"<<endl;
cout<<"姓名:";
cin>>y->name;
cout<<"年龄:";
cin>>y->age;
cout<<"性别:";
cin>>y->sex;
cout<<"学号:";
cin>>y->num;
}
main()
{
student x;
stud *list;
int i;
char a='z';
string name2;
init(&list);
while(a!='x')
{
cout<<"\t\t这个程序用来操作学生信息链表"<<endl;
if(list->next==NULL)
cout<<"当前表中无任何信息,请先输入!"<<endl;
cout<<"a-->插入一个新的学生信息到表中"<<endl;
cout<<"b-->删除一个学生的信息"<<endl;
cout<<"c-->输出当前学生信息表"<<endl;
cout<<"x-->退出程序"<<endl;
cout<<"请选择:";
cin>>a;
if(a=='a')
{//输入学生信息并插入到指定位置
input(&x);
cout<<"请输入要插入的位置:";
cin>>i;
if(insert(list,i,x))
cout<<"插入成功!"<<endl;
}
if(a=='b')
{//输入学生姓名并删除
cout<<"请输入要删除的学生的名字:";
cin>>name2;
delet(list,name2);
}
if(a=='c')
{//输出学生信息表
output(list);
}
cout<<"c键继续!\n其他键退出!"<<endl;
char z;
cin>>z;
if(z=='c') continue;
else break;
}
return 1;
}
#4
谢谢大家的回复,但是我要的是c不是c++,再次谢谢您的回复!
#5
要变成C也很简单呀
你把我里面的头文件改成include<stdio.h>
include<string.h>
然后里面的new语句改成malloc,cout和cin改成printf和scanf就可以了
我没有用到对象,还要改的就是所有的字符串副制你用一个for来完成就应该没有问题了
你把我里面的头文件改成include<stdio.h>
include<string.h>
然后里面的new语句改成malloc,cout和cin改成printf和scanf就可以了
我没有用到对象,还要改的就是所有的字符串副制你用一个for来完成就应该没有问题了