帮忙做一份c++的学籍管理系统的作业吧
学籍管理系统问题描述:建立学籍管理系统,实现对于学生信息的添加和维护管理基本要求:必须完成学籍登记表中的下面功能(登记表中包括学号、姓名、性别、出生日期、政治面貌、联系方...
学籍管理系统问题描述:建立学籍管理系统,实现对于学生信息的添加和维护管理基本要求:必须完成学籍登记表中的下面功能(登记表中包括学号、姓名、性别、出生日期、政治面貌、联系方式、家庭住址等信息)⑴ 插入:将某学生的基本信息插入到登记表中;⑵ 删除:将满足条件的基本信息删除;⑶ 修改:对基本信息的数据项进行修改;⑷ 查询:查找满足条件的学生;⑸ 输出:将登记表中的全部(或满足条件)基本信息输出。提高要求:(1) 可以添加课程信息(如开课学期、上课时间、上课地点等信息),学生选课信息,实现学生的选课功能;(2) 增加学生成绩信息,可以对学生的成绩进行插入、删除、修改等操作(3) 实现查找某学生的选课记录,课程成绩等(4) 利用二叉排序树、平衡树、排序算法等数据结构知识提高排序和查找速度提示:(1) 学生登记表一般建立后,比较少更改,因此,可以采用顺序表方式建立(2) 学生选课、成绩等信息,一般更改比较频繁,则可以采取链表建立(3) 可以将学生的信息存储到文件中;系统运行时,将信息从文件调入到内存中运行
展开
展开全部
#include<iostream>
#include<string>
#include<iomanip.h>
#include<ctime>
#include<conio.h>
struct student //定义一个学生结构体
{
char name[8];
int num;
char add[20];
int Chinese,Math,Enlish,SUM,ave;
};
int s=0;
class student1 //定义一个学生类
{
private:
student stu[40];
char name,add;
int num;
int Chinese,Math,Enlish,SUM,ave;
public:
void sr(char *,int,char *,int,int,int);
void print(int);
int jc(int xxh)
{
int m=0;
while(m<=s+1)
if(xxh==stu[m++].num)
break;
if(m>s+1)
return 0;
else
return 1;
}
void cz(int);
void sc(int);
void sum(int);
};
void student1::sr(char *xm,int xh,char *dz,int Chinese,int Math,int Enlish) //输入模块
{
strcpy(stu[s].name,xm);
stu[s].num=xh;
strcpy(stu[s].add,dz);
stu[s].Chinese=Chinese;
stu[s].Math=Math;
stu[s].Enlish=Enlish;
}
void student1::print(int s) //输出模块
{
cout<<s<<"\t";
cout<<stu[s].name<<"\t";
cout<<stu[s].num<<"\t";
cout<<stu[s].add<<"\t";
cout<<stu[s].Chinese<<"\t";
cout<<stu[s].Math<<"\t";
cout<<stu[s].Enlish<<"\t";
cout<<endl;
}
void student1::cz(int s) //查找模块
{
int xxh,p;
while(s==0)
{
cout<<"没有记录,请先输入记录!"<<endl;
break;
}
if(s!=0)
{cout<<"请输入您要查找的学号:";
cin>>xxh;
while (xxh<0||xxh>999999999) //判断输入的学号是否正确
{
cout<<"您输入的学号不正确,请输入一个九位数的学号"<<endl;
cin>>xxh;
}
while(s!=0) //查找是否有符合条件的记录
{
p=1;
if (xxh==stu[s].num)
{
cout<<"姓名\t学号\t地址\t语文\t数学\t英语"<<endl;
cout<<stu[s].name<<"\t";
cout<<stu[s].num<<"\t";
cout<<stu[s].add<<"\t";
cout<<stu[s].Chinese<<"\t";
cout<<stu[s].Math<<"\t";
cout<<stu[s].Enlish<<endl;
getch();
break;
}
else
p=0;
s--;
}
if(p==0)
cout<<"很抱歉,没有找到您要查找的学号!"<<endl;}
getch();
}
void student1::sc(int n) //删除模块
{
int xxh,p;
char da;
while(s==0)
{
cout<<"没有记录,请先输入记录!"<<endl;
break;
}
if(s!=0)
{
cout<<"请输入您要删除的学号:";
cin>>xxh;
while (xxh<0||xxh>999999999)
{
cout<<"您输入的学号不正确" <<endl;
cin>>xxh;
}
for(int i=1;i<=n;i++)
{
if(stu[i].num!=xxh)
p=0;
if(stu[i].num==xxh)
{
cout<<"姓名\t学号\t地址\t语文\t数学\t英语"<<endl;
cout<<stu[i].name<<"\t";
cout<<stu[i].num<<"\t";
cout<<stu[i].add<<"\t";
cout<<stu[i].Chinese<<"\t";
cout<<stu[i].Math<<"\t";
cout<<stu[i].Enlish<<endl;
cout<<"您确实要删除该学生的记录吗?(y/n)";
cin>>da;
if(da=='y'||da=='Y')
{
for(int j=i;j<=n-1;j++) //删除记录
{
strcpy(stu[j].name,stu[j+1].name);
stu[j].num=stu[j+1].num;
strcpy(stu[j].add,stu[j+1].add);
stu[j].Chinese=stu[j+1].Chinese;
stu[j].Math=stu[j+1].Math;
stu[j].Enlish=stu[j+1].Enlish;
}
cout<<"该记录已删除!"<<endl;
s=s-1;
p=1;
break;
}
else
{
cout<<"该记录未删除!"<<endl;
p=1;
}
}
}
if(p==0)
cout<<"很抱歉,没有找到您要找的学号!"<<endl;
}
getch();
}
void student1::sum(int s) //排序模块
{
int chang;
int b[40];
while(s==0)
{
cout<<"没有记录,请先输入记录!"<<endl;
break;
}
if(s!=0)
{
cout<<"姓名\t学号\t地址\t语文\t";
cout<<"数学\t英语\t总分\t平均分"<<endl;
for(int k=1;k<=s;k++)
{
b[k]=stu[k].Chinese+stu[k].Math+stu[k].Enlish;
stu[k].SUM=stu[k].Chinese+stu[k].Math+stu[k].Enlish;
stu[k].ave=stu[k].SUM/3;
}
for(int i=1;i<=s;i++) //利用冒泡法对B[]进行排序
for(int j=1;j<=s-i;j++)
if(b[j]<b[j+1])
{
chang=b[j];
b[j]=b[j+1];
b[j+1]=chang;
}
for(int h=1;h<=s;h++) //输出与B[]中相同总分所对应的内容
for(int e=1;e<=s;e++)
if(b[h]==stu[e].SUM)
{
cout<<stu[e].name<<"\t";
cout<<stu[e].num<<"\t";
cout<<stu[e].add<<"\t";
cout<<stu[e].Chinese<<"\t";
cout<<stu[e].Math<<"\t";
cout<<stu[e].Enlish<<"\t";
cout<<stu[e].SUM<<"\t";
cout<<stu[e].ave<<"\t";
}
}
getch();
}
void main()
{
student1 st;
char da,a;
char *xm,*dz;
int Chinese,Math,Enlish, xh;
time_t t;
time(&t);
while(1)
{
system("cls"); //清屏
cout<<" 学生成绩管理系统"<<endl;
cout<<" 系统时间和日期:"<<ctime(&t)<<endl;
cout<<"1.输入/添加学生资料"<<endl;
cout<<"2.显示学生资料"<<endl;
cout<<"3.按学号查找"<<endl;
cout<<"4.删除记录"<<endl;
cout<<"5.按总分进行排序"<<endl;
cout<<"6.退出"<<endl;
cout<<"请选择操作(1-6)"<<endl;
cin>>a;
t: if(a=='6') break;
switch (a)
{
case '1':
{
cout<<"请依次输入学生的姓名,学号,地址,语文,数学,英语:"<<endl;
xm=new char[];dz=new char[];
cin>>xm>>xh>>dz>>Chinese>>Math>>Enlish;
while(st.jc(xh)) //调用JC模块判断学号是否重复
{
cout<<"学号重复,请重新输入!"<<endl;
cin>>xh;
}
s=s+1;
st.sr(xm,xh,dz,Chinese,Math,Enlish);
cout<<"是否继续输入?(y/n)";
cin>>da;
while (da=='y'||da=='Y') //判断是否要继续输入
{
cout<<"请依次输入学生的姓名,学号,地址,语文,数学,英语:"<<endl;
xm=new char[];dz=new char[];
cin>>xm>>xh>>dz>>Chinese>>Math>>Enlish;
while(st.jc(xh))
{
cout<<"学号重复,请重新输入!"<<endl;
cin>>xh;
}
s=s+1;
st.sr(xm,xh,dz,Chinese,Math,Enlish);
cout<<"是否继续输入?(y/n)";
cin>>da;
}
getch();
};break;
case '2':
{
if(s==0) //判断是否有记录输入
{
cout<<"没有记录,请先输入记录!"<<endl;
getch();
break;
}
if(s!=0)
{
cout<<"序号"<<"\t";
cout<<"姓名"<<"\t";
cout<<"学号"<<"\t";
cout<<"地址"<<"\t";
cout<<"语文"<<"\t";
cout<<"数学"<<"\t";
cout<<"英语"<<"\t";
cout<<"平均分"<<endl;
for(int i=1;i<=s;i++)
st.print(i);
getch();
}
};break;
case '3':st.cz(s);break;
case '4':st.sc(s);break;
case '5':st.sum(s);break;
default:
{
while(a=='0'||a>'6') //判断选项是否正确
{
cout<<"错误选项,请重新选择!"<<endl;
cin>>a;
}
goto t;
};break;
}
}
cout<<"谢谢您的使用!"<<endl;
}
给个类似的成绩管理系统你参考!
#include<string>
#include<iomanip.h>
#include<ctime>
#include<conio.h>
struct student //定义一个学生结构体
{
char name[8];
int num;
char add[20];
int Chinese,Math,Enlish,SUM,ave;
};
int s=0;
class student1 //定义一个学生类
{
private:
student stu[40];
char name,add;
int num;
int Chinese,Math,Enlish,SUM,ave;
public:
void sr(char *,int,char *,int,int,int);
void print(int);
int jc(int xxh)
{
int m=0;
while(m<=s+1)
if(xxh==stu[m++].num)
break;
if(m>s+1)
return 0;
else
return 1;
}
void cz(int);
void sc(int);
void sum(int);
};
void student1::sr(char *xm,int xh,char *dz,int Chinese,int Math,int Enlish) //输入模块
{
strcpy(stu[s].name,xm);
stu[s].num=xh;
strcpy(stu[s].add,dz);
stu[s].Chinese=Chinese;
stu[s].Math=Math;
stu[s].Enlish=Enlish;
}
void student1::print(int s) //输出模块
{
cout<<s<<"\t";
cout<<stu[s].name<<"\t";
cout<<stu[s].num<<"\t";
cout<<stu[s].add<<"\t";
cout<<stu[s].Chinese<<"\t";
cout<<stu[s].Math<<"\t";
cout<<stu[s].Enlish<<"\t";
cout<<endl;
}
void student1::cz(int s) //查找模块
{
int xxh,p;
while(s==0)
{
cout<<"没有记录,请先输入记录!"<<endl;
break;
}
if(s!=0)
{cout<<"请输入您要查找的学号:";
cin>>xxh;
while (xxh<0||xxh>999999999) //判断输入的学号是否正确
{
cout<<"您输入的学号不正确,请输入一个九位数的学号"<<endl;
cin>>xxh;
}
while(s!=0) //查找是否有符合条件的记录
{
p=1;
if (xxh==stu[s].num)
{
cout<<"姓名\t学号\t地址\t语文\t数学\t英语"<<endl;
cout<<stu[s].name<<"\t";
cout<<stu[s].num<<"\t";
cout<<stu[s].add<<"\t";
cout<<stu[s].Chinese<<"\t";
cout<<stu[s].Math<<"\t";
cout<<stu[s].Enlish<<endl;
getch();
break;
}
else
p=0;
s--;
}
if(p==0)
cout<<"很抱歉,没有找到您要查找的学号!"<<endl;}
getch();
}
void student1::sc(int n) //删除模块
{
int xxh,p;
char da;
while(s==0)
{
cout<<"没有记录,请先输入记录!"<<endl;
break;
}
if(s!=0)
{
cout<<"请输入您要删除的学号:";
cin>>xxh;
while (xxh<0||xxh>999999999)
{
cout<<"您输入的学号不正确" <<endl;
cin>>xxh;
}
for(int i=1;i<=n;i++)
{
if(stu[i].num!=xxh)
p=0;
if(stu[i].num==xxh)
{
cout<<"姓名\t学号\t地址\t语文\t数学\t英语"<<endl;
cout<<stu[i].name<<"\t";
cout<<stu[i].num<<"\t";
cout<<stu[i].add<<"\t";
cout<<stu[i].Chinese<<"\t";
cout<<stu[i].Math<<"\t";
cout<<stu[i].Enlish<<endl;
cout<<"您确实要删除该学生的记录吗?(y/n)";
cin>>da;
if(da=='y'||da=='Y')
{
for(int j=i;j<=n-1;j++) //删除记录
{
strcpy(stu[j].name,stu[j+1].name);
stu[j].num=stu[j+1].num;
strcpy(stu[j].add,stu[j+1].add);
stu[j].Chinese=stu[j+1].Chinese;
stu[j].Math=stu[j+1].Math;
stu[j].Enlish=stu[j+1].Enlish;
}
cout<<"该记录已删除!"<<endl;
s=s-1;
p=1;
break;
}
else
{
cout<<"该记录未删除!"<<endl;
p=1;
}
}
}
if(p==0)
cout<<"很抱歉,没有找到您要找的学号!"<<endl;
}
getch();
}
void student1::sum(int s) //排序模块
{
int chang;
int b[40];
while(s==0)
{
cout<<"没有记录,请先输入记录!"<<endl;
break;
}
if(s!=0)
{
cout<<"姓名\t学号\t地址\t语文\t";
cout<<"数学\t英语\t总分\t平均分"<<endl;
for(int k=1;k<=s;k++)
{
b[k]=stu[k].Chinese+stu[k].Math+stu[k].Enlish;
stu[k].SUM=stu[k].Chinese+stu[k].Math+stu[k].Enlish;
stu[k].ave=stu[k].SUM/3;
}
for(int i=1;i<=s;i++) //利用冒泡法对B[]进行排序
for(int j=1;j<=s-i;j++)
if(b[j]<b[j+1])
{
chang=b[j];
b[j]=b[j+1];
b[j+1]=chang;
}
for(int h=1;h<=s;h++) //输出与B[]中相同总分所对应的内容
for(int e=1;e<=s;e++)
if(b[h]==stu[e].SUM)
{
cout<<stu[e].name<<"\t";
cout<<stu[e].num<<"\t";
cout<<stu[e].add<<"\t";
cout<<stu[e].Chinese<<"\t";
cout<<stu[e].Math<<"\t";
cout<<stu[e].Enlish<<"\t";
cout<<stu[e].SUM<<"\t";
cout<<stu[e].ave<<"\t";
}
}
getch();
}
void main()
{
student1 st;
char da,a;
char *xm,*dz;
int Chinese,Math,Enlish, xh;
time_t t;
time(&t);
while(1)
{
system("cls"); //清屏
cout<<" 学生成绩管理系统"<<endl;
cout<<" 系统时间和日期:"<<ctime(&t)<<endl;
cout<<"1.输入/添加学生资料"<<endl;
cout<<"2.显示学生资料"<<endl;
cout<<"3.按学号查找"<<endl;
cout<<"4.删除记录"<<endl;
cout<<"5.按总分进行排序"<<endl;
cout<<"6.退出"<<endl;
cout<<"请选择操作(1-6)"<<endl;
cin>>a;
t: if(a=='6') break;
switch (a)
{
case '1':
{
cout<<"请依次输入学生的姓名,学号,地址,语文,数学,英语:"<<endl;
xm=new char[];dz=new char[];
cin>>xm>>xh>>dz>>Chinese>>Math>>Enlish;
while(st.jc(xh)) //调用JC模块判断学号是否重复
{
cout<<"学号重复,请重新输入!"<<endl;
cin>>xh;
}
s=s+1;
st.sr(xm,xh,dz,Chinese,Math,Enlish);
cout<<"是否继续输入?(y/n)";
cin>>da;
while (da=='y'||da=='Y') //判断是否要继续输入
{
cout<<"请依次输入学生的姓名,学号,地址,语文,数学,英语:"<<endl;
xm=new char[];dz=new char[];
cin>>xm>>xh>>dz>>Chinese>>Math>>Enlish;
while(st.jc(xh))
{
cout<<"学号重复,请重新输入!"<<endl;
cin>>xh;
}
s=s+1;
st.sr(xm,xh,dz,Chinese,Math,Enlish);
cout<<"是否继续输入?(y/n)";
cin>>da;
}
getch();
};break;
case '2':
{
if(s==0) //判断是否有记录输入
{
cout<<"没有记录,请先输入记录!"<<endl;
getch();
break;
}
if(s!=0)
{
cout<<"序号"<<"\t";
cout<<"姓名"<<"\t";
cout<<"学号"<<"\t";
cout<<"地址"<<"\t";
cout<<"语文"<<"\t";
cout<<"数学"<<"\t";
cout<<"英语"<<"\t";
cout<<"平均分"<<endl;
for(int i=1;i<=s;i++)
st.print(i);
getch();
}
};break;
case '3':st.cz(s);break;
case '4':st.sc(s);break;
case '5':st.sum(s);break;
default:
{
while(a=='0'||a>'6') //判断选项是否正确
{
cout<<"错误选项,请重新选择!"<<endl;
cin>>a;
}
goto t;
};break;
}
}
cout<<"谢谢您的使用!"<<endl;
}
给个类似的成绩管理系统你参考!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询