学生学籍管理系统 用C++编写

附录1学生学籍管理系统的功能要求要求完成以下功能:1)能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。2)能够将指定的信息从文件中删除。3)能够按编号、姓名对学生... 附录1 学生学籍管理系统的功能要求
要求完成以下功能:
1)能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。
2)能够将指定的信息从文件中删除。
3)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。
4)可以统计全部学生的总成绩,及其在班上的排名。
5)能够统计各科的平均成绩及及格率。
6)要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。
7)如果检索不到相应的信息应提示用户。

ps;小妹财富不足,见谅见谅,抱歉实在
展开
 我来答
Hfuu_Francis
2010-06-08
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
一时半会也不能写出一模一样的程序了,给个程序让你参考吧!希望对你有帮助!
#include <iomanip.h>
#include <stdio.h>
void menu();//函数声明******主菜单函数
void help();
void build();
void add();
void del();
void save();
void load();
void print();
void print(int l, int *p);
void print1(int l, int *p);
void mend();
void score();
void all();
int findnum(int *r);
int findname(int *r);
void countout();
void countin();
struct student
{
int number;
char name[20];
double math,e,c,avg,all;
};
student people[100];
static int n;
char file[30],ch;
void main()
{
system("color 1A");
cout<<"\t\t\t欢迎使用学生成绩管理系统"<<endl;
menu();}
void menu()
{

cout<<endl<<endl;
cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓";
cout<<"┃**************** ☆ 学 生 成 绩 管 理 系 统 ☆ ****************** ┃";
cout<<"┃********** ★★★★★ ★★★★★★★ ★★★★★ *********** ┃";
cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫";
cout<<"┃****************★ ☆ 1.帮助 ☆ ★***************┃";
cout<<"┃****************★ ☆ 2.输入数据并存档 ☆ ★***************┃";
cout<<"┃****************★ ☆ 3.添加学生 ☆ ★***************┃";
cout<<"┃****************★ ☆ 4.删除学生 ☆ ★***************┃";
cout<<"┃****************★ ☆ 5.修改学生资料 ☆ ★***************┃";
cout<<"┃****************★ ☆ 6.成绩统计 ☆ ★***************┃";
cout<<"┃****************★ ☆ 7.总成绩统计 ☆ ★***************┃";
cout<<"┃****************★ ☆ 8.储存学生成绩 ☆ ★***************┃";
cout<<"┃****************★ ☆ 9.安全退出系统 ☆ ★***************┃";
cout<<"┃****************★ ☆ 0.查看全部 ☆ ★***************┃";
cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"
<<"****************作者: 09计本三班 赵天武 QQ:469536761************************"<<endl;
char a;
cout<<endl<<"\t\t\t 请输入选项:";
cin>>a;
cout<<endl;
2. switch(a)
{
case '1':help();break;
case '2':build();break;
case '3':add();break;
case '4':del();break;
case '5':mend();break;
case '6':score();break;
case '7':all();break;
case '8':save();break;
case '9':cout<<"退出程序"<<endl;break;
case '0'{
print();
cout<<"任意键返回。"<<endl;
getchar();
system("cls");
menu();
};break;
default:cout<<"输入错误"<<endl;
cout<<"回车键返回。"<<endl;
getchar();
system("cls");
menu();
}
}
void help()
{

system("cls");
cout<<" 此系统是应老师所布置的作业编制而成,该系统具有存贮学生数据,\n";
cout<<" 学号、姓名查询,列出学生成绩和统计功能。使用方法:系统输\n";
cout<<" 入数据后,将在当前目录中建立一个名为 stu.dat文件,用于保存\n";
cout<<" 输入的数据。学号输入只能用数字输入,并且学号只能是10位。姓\n";
cout<<" 名输入符合中国人的姓名,只能用中文,且最长为5个汉字。"<<endl<<endl<<endl;
cout<<"回车键返回!!"<<endl;
getchar();
system("cls");
menu();

}
void build() //新建
{
fstream outf;
cout<<"输入文件名(包括扩展名):";cin>>file;cout<<endl;
cout<<"请问初始化学生的个数:";cin>>n;cout<<endl;
for(int i=0;i<n;i++)
{
cout<<"\t\t\t学号:"; cin>>people[i].number; cout<<endl;
cout<<"\t\t\t姓名:"; cin>>people[i].name; cout<<endl;
cout<<"\t\t\t数学:"; cin>>people[i].math; cout<<endl;
cout<<"\t\t\t英语:"; cin>>people[i].e; cout<<endl;
cout<<"\t\t\tC++ :"; cin>>people[i].c; cout<<endl;
}
cout<<n<<endl;
save();
}
void save() //保存
{
system("cls");
fstream outf;
outf.open(file,ios::out|ios::binary);
if(!outf)
{
cout<<"文件存储失败;"<<endl;
abort();
}
for(int i=0;i<n;i++)
outf.write((char *)&people[i],sizeof(people[i]));
outf.close();
cout<<"保存完毕"<<endl;
cout<<"按任意键返回主菜单。";
cin.get();
system("cls");

menu();
}
void load() //读取文件
{
n=0;
loop:
cout<<"输入文件名(包括扩展名):";cin>>file;cout<<endl;
fstream inf;
inf.open(file,ios::in|ios::binary|ios::nocreate);
if (!inf)
{
cout<<"载入文件失败"<<endl;
goto loop;
}
else cout<<"成功读取文件!"<<endl;
while(!inf.eof())
{inf.read((char *)&people[n],sizeof(people[n]));n=n+1;}
cout<<n-2<<endl;
cout<<"学生成绩汇总表:"<<endl;
inf.close();
cout<<"确定返回主菜单。";
getchar();
system("cls");
menu();
}
void add() //添加
{
char ch;
int i=n;
cout<<n<<endl;
loop:
system("cls");
cout<<"学号:"; cin>>people[n].number; cout<<endl;
cout<<"姓名:"; cin>>people[n].name; cout<<endl;
cout<<"数学:"; cin>>people[n].math; cout<<endl;
cout<<"英语:"; cin>>people[n].e; cout<<endl;
cout<<"C++ :"; cin>>people[n].c; cout<<endl;
n=n+1;cout<<n<<endl;
cout<<endl<<"\t"<<"继续添加?(y/n):";cin>>ch;
if(ch=='y') goto loop;
cout<<"文件尚未保存,保存吗?(y/n)";cin>>ch;
if(ch=='y')
{
fstream outf;
outf.open(file,ios::out|ios::binary|ios::ate);
if(!outf)
{
cout<<"文件存储失败;"<<endl;
abort();
}
for(i;i<n;i++)
outf.write((char *)&people[i],sizeof(people[i]));
outf.close();
cout<<"保存完毕"<<endl;
}
getchar();
system("cls");
menu();
}
void del() //删除
{
if(n==0)
cout<<"无学生档案"<<n<<endl;
else
{
int findnum(int *p);
int findname(int *p);
int a,k,remember[20];
char ch;
loop:
cout<<"\t\t"<<"输入1.学号查询"<<endl;
cout<<"\t\t"<<"输入2.以姓名查询"<<endl<<endl;
cout<<"\t\t"<<"输入3.返回"<<endl;
cout<<"\t\t\t\t输入选项:";cin>>a;
if(a==1)
{
k=findnum(remember);
if (k==0) {cout<<"无此人"<<endl;goto loop;}
else print1(k,remember);
}
else if(a==2)
{
k=findname(remember);
if (k==0){ cout<<"无此人"<<endl;goto loop;}
else print1(k,remember);
}
else if(a==3) {system("cls");menu(); }
else {cout<<"错误选项!";goto loop;}
cout<<endl<<"是否删除?(y/n)";
cin>>ch;
if(ch=='y')
{
for(int j=0;j<k;j++) //print(n,remember);
{
for(int t=remember[j];t<n;t++)
{ if(remember[j]==n-1) break;
else
people[t]=people[t+1]; //经典
}
n--;cout<<k<<" "<<n<<" "<<remember[0]<<endl; //
}
fstream outf;
outf.open(file,ios::out|ios::binary);
if(!outf)
{
cout<<"文件存储失败;"<<endl;
abort();
}
for(int i=0;i<n-k;i++)
outf.write((char *)&people[i],sizeof(people[i]));
outf.close();
cout<<"删除完毕,文件已保存。"<<endl;
getchar();
system("cls");
menu();
}
else {cout<<"删除完毕,文件已保存。"<<endl;
cout<<"\t\t\t\t\t\t\t\t\t\t确定";
getchar();
system("cls");menu();}
}
}
void mend() //修改****************************************************************************
{
if(n==0)
cout<<"无学生资料"<<n<<endl;
else
{
int findnum(int *p);
int findname(int *p);
int a,k,remember[20];
loop:
cout<<"\t"<<"1.以学号查询"<<endl;
cout<<"\t"<<"2.以姓名查询"<<endl<<endl;
cout<<"\t"<<"3.返回"<<endl;
cout<<"输入选项:";cin>>a;
if(a==1)
{
k=findnum(remember);
if (k==0) cout<<"无此人"<<endl; else print1(k,remember);
}
else if(a==2)
{
k=findname(remember);
if (k==0) cout<<"无此人"<<endl; else print1(k,remember);
}
else if(a==3){system("cls"); menu();}
else {cout<<"错误选项!";goto loop;}
cout<<"学生资料修改输入:===>>"<<endl;
for(int i=0;i<k;i++)
{
cout<<"\t\t\t学号:"; cin>>people[remember[i]].number; cout<<endl;
cout<<"\t\t\t姓名:"; cin>>people[remember[i]].name; cout<<endl;
cout<<"\t\t\t数学:"; cin>>people[remember[i]].math;cout<<endl;
cout<<"\t\t\t英语:"; cin>>people[remember[i]].e; cout<<endl;
cout<<"C++:"; cin>>people[remember[i]].c; cout<<endl;
}
fstream outf;
outf.open(file,ios::out|ios::binary);
if(!outf)
{
cout<<"文件未存储;"<<endl;
abort();
}
for(i=0;i<n;i++)
{
if(i==k) continue;
else outf.write((char *)&people[i],sizeof(people[i]));
}
outf.close();
cout<<"学生信息修改完成。"<<endl;
}
cout<<"\t\t\t\t\t\t\t\t\t\t确定。"<<endl;
getchar();
system("cls");

menu();
}
void score() //成绩统计****************************************************************************
{
double savg[3];
int pnum[3][5],good,lgood,so,ok,notok; //3 科 1~5 优秀,良好,中,及格,不及格 的人数
double sum[3]={0,0,0};
for(int j=0;j<n;j++) {sum[0]+=people[j].math;sum[1]+=people[j].e;sum[2]+=people[j].c;} //单科总成绩****************************************************************************
for(int i=0;i<3;i++) savg[i]=sum[i]/n; //科目平均****************************************************************************
for(i=0;i<5;i++)
{
good=0;lgood=0;so=0;ok=0;notok=0;
for(int j=0;j<n;j++)
{
if (people[j].math>=90) good++;else if(people[j].math>=80) lgood++;else if(people[j].math>=70) so++;else
if (people[j].math>=60) ok++;else notok++;
}
pnum[0][0]=good;pnum[0][1]=lgood;pnum[0][2]=so;pnum[0][3]=ok;pnum[0][4]=notok;
good=0;lgood=0;so=0;ok=0;notok=0;
for(j=0;j<n;j++)
{
if (people[j].e>=90) good++;else if(people[j].e>=80) lgood++;else if(people[j].e>=70) so++;else
if (people[j].e>=60) ok++;else notok++;
}
pnum[1][0]=good;pnum[1][1]=lgood;pnum[1][2]=so;pnum[1][3]=ok;pnum[1][4]=notok;
good=0;lgood=0;so=0;ok=0;notok=0;
for(j=0;j<n;j++)
{
if (people[j].c>=90) good++;else if(people[j].c>=80) lgood++;else if(people[j].c>=70) so++;else
if (people[j].c>=60) ok++;else notok++;
}
pnum[2][0]=good;pnum[2][1]=lgood;pnum[2][2]=so;pnum[2][3]=ok;pnum[2][4]=notok;
}
cout<<"┌————┬—————┬————┬————┬————┬————┬————┐"<<endl;
cout<<"│ 科目 │ 平均成绩 │ 优秀 │ 良好 │ 中等 │ 及格 │ 不及格 │"<<endl;
cout<<"├————┼—————┼————┼————┼————┼————┼————┤"<<endl;
cout<<"│ 数学 │"<<setw(5)<<savg[0]<<" │"<<setw(5)<<pnum[0][0]<<" │"<<setw(5)<<pnum[0][1]<< " │"
<<setw(5)<<pnum[0][2]<<" │"<<setw(5)<<pnum[0][3]<<" │"<<setw(5)<<pnum[0][4]<<" │"<<endl;
cout<<"├————┼—————┼————┼————┼————┼————┼————┤"<<endl;
cout<<"│ 英语 │"<<setw(5)<<savg[1]<<" │"<<setw(5)<<pnum[1][0]<<" │"<<setw(5)<<pnum[1][1]<< " │"
<<setw(5)<<pnum[1][2]<<" │"<<setw(5)<<pnum[1][3]<<" │"<<setw(5)<<pnum[1][4]<<" │"<<endl;
cout<<"├————┼—————┼————┼————┼————┼————┼————┤"<<endl;
cout<<"│ C++ │"<<setw(5)<<savg[2]<<" │"<<setw(5)<<pnum[2][0]<<" │"<<setw(5)<<pnum[2][1]<< " │"
<<setw(5)<<pnum[2][2]<<" │"<<setw(5)<<pnum[2][3]<<" │"<<setw(5)<<pnum[2][4]<<" │"<<endl;
cout<<"└————┴—————┴————┴————┴————┴————┴————┘"<<endl;
cout<<"比例(%)"<<endl;
cout<<"┌————┬—————┬————┬————┬————┬————┬————┐"<<endl;
cout<<"│ 科目 │ 平均成绩 │ 优秀 │ 良好 │ 中等 │ 及格 │ 不及格 │"<<endl;
cout<<"├————┼—————┼————┼————┼————┼————┼————┤"<<endl;
cout<<"│ 数学 │"<<setw(5)<<savg[0]<<" │"<<setw(5)<<pnum[0][0]/n*100<<" │"<<setw(5)<<pnum[0][1]/n*100<< " │"
<<setw(5)<<pnum[0][2]/n*100<<" │"<<setw(5)<<pnum[0][3]/n*100<<" │"<<setw(5)<<pnum[0][4]/n*100<<" │"<<endl;
cout<<"├————┼—————┼————┼————┼————┼————┼————┤"<<endl;
cout<<"│ 英语 │"<<setw(5)<<savg[1]<<" │"<<setw(5)<<pnum[1][0]/n*100<<" │"<<setw(5)<<pnum[1][1]/n*100<< " │"
<<setw(5)<<pnum[1][2]/n*100<<" │"<<setw(5)<<pnum[1][3]/n*100<<" │"<<setw(5)<<pnum[1][4]/n*100<<" │"<<endl;
cout<<"├————┼—————┼————┼————┼————┼————┼————┤"<<endl;
cout<<"│ C++ │"<<setw(5)<<savg[2]<<" │"<<setw(5)<<pnum[2][0]/n*100<<" │"<<setw(5)<<pnum[2][1]/n*100<< " │"
<<setw(5)<<pnum[2][2]/n*100<<" │"<<setw(5)<<pnum[2][3]/n*100<<" │"<<setw(5)<<pnum[2][4]/n*100<<" │"<<endl;
cout<<"└————┴—————┴————┴————┴————┴————┴————┘"<<endl;
getchar();
system("cls");
menu();
}
void all() //总成绩统计****************************************************************************
{
int a[100],flag;
if (n>=1)
{
for(int j=0;j<n;j++) //单人成绩相加****************************************************************************
{
people[j].all=people[j].math+people[j].e+people[j].c;
people[j].avg=people[j].all/3;
}
for(j=0;j<n;j++)
{
flag=0;
for(int s=0;s<n;s++)
{
if (people[j].all<people[s].all) flag++;
}
a[j]=flag;
}

system("cls");
cout<<"┌—————┬—————┬——————┬——————┬—————┐"<<endl;
cout<<"│ 排名 │ 学号 │ 姓名 │ 平均分 │ 总成绩 │"<<endl;
cout<<"├—————┼—————┼——————┼——————┼—————┤"<<endl;
for(int i=0;i<n;i++)
{
cout<<"│ "<<setw(3)<<i+1
<<" │ "<<setw(5)<<people[*(a+i)].number
<<" │"<<setw(5)<<people[*(a+i)].name
<<" │"<<setw(5)<<people[*(a+i)].avg
<<" │"<<setw(5)<<people[*(a+i)].all
<<" │"<<endl;
if(i==n-1) break;
cout<<"├—————┼—————┼——————┼——————┼—————┤"<<endl;
}
cout<<"└—————┴—————┴——————┴——————┴—————┘"<<endl;
}
else cout<<"错误,或无学生资料."<<endl;
cout<<"\t\t\t\t\t\t\t\t\t\t确定。"<<endl;
getchar();
system("cls");
menu();
}

void countout()//个数记录**********************************************************************************************************************
{
fstream out;
out.open("F:\\count.dat",ios::out);
if(!out){cout<<"count error"<<endl;abort();}
else out<<n<<endl;
out.close();
}
void countin()//个数读取****************************************************************************
{
fstream in;
in.open("F:\\count.dat",ios::in);
if(!in){cout<<"in error"<<endl;abort();}
in>>n;
in.close();
}
void print(int l,int *p) //输出删除后所剩学生的信息****************************************************************************
{
if(l==0) cout<<"无学生资料."<<endl;
int m(0);
cout<<"┌—————┬—————┬——————┬——————┬—————┐"<<endl;
cout<<"│ 学号 │ 姓名 │ 数学 │ 英语 │ C++ │"<<endl;
cout<<"├—————┼—————┼——————┼——————┼—————┤"<<endl;
for(int i=0;i<l;i++)
{
if(i==*(p+m)) {m++;continue;}
cout<<"│ "<<setw(5)<<people[i].number
<<" │ "<<setw(5)<<people[i].name
<<" │"<<setw(5)<<people[i].math
<<" │"<<setw(5)<<people[i].e
<<" │"<<setw(5)<<people[i].c
<<" │"<<endl;
if(i==l-2) break;
cout<<"├—————┼—————┼——————┼——————┼—————┤"<<endl;
}
cout<<"└—————┴—————┴——————┴——————┴—————┘"<<endl;
}
void print() //通用查看学生信息
{
if (n==0) cout<<"无学生资料."<<endl;
cout<<"┌—————┬—————┬——————┬——————┬—————┐"<<endl;
cout<<"│ 学号 │ 姓名 │ 数学 │ 英语 │ C++ │"<<endl;
cout<<"├—————┼—————┼——————┼——————┼—————┤"<<endl;
for(int i=1;i<n+1;i++)
{
cout<<"│"<<setw(5)<<people[i-1].number
<<" │"<<setw(5)<<people[i-1].name
<<" │ "<<setw(5)<<people[i-1].math
<<" │"<<setw(5)<<people[i-1].e
<<" │"<<setw(5)<<people[i-1].c
<<" │"<<endl;
if(i==n) break;
cout<<"├—————┼—————┼——————┼——————┼—————┤"<<endl;
}
cout<<"└—————┴—————┴——————┴——————┴—————┘"<<endl;
cin.get();cin.get();
}
void print1(int l,int *p) // 输出要删除的学生的信息
{
if (l==0) cout<<"无学生资料."<<endl;
int m(0);
cout<<"┌—————┬—————┬——————┬——————┬—————┐"<<endl;
cout<<"│ 学号 │ 姓名 │ 数学 │ 英语 │ C++ │"<<endl;
cout<<"├—————┼—————┼——————┼——————┼—————┤"<<endl;
for(int i=1;i<l+1;i++)
{
cout<<"│ "<<setw(5)<<people[*(p+m)].number
<<" │ "<<setw(5)<<people[*(p+m)].name
<<" │"<<setw(5)<<people[*(p+m)].math
<<" │"<<setw(5)<<people[*(p+m)].e
<<" │"<<setw(5)<<people[*(p+m)].c
<<" │"<<endl;
if(i==l) break;
cout<<"├—————┼—————┼——————┼——————┼—————┤"<<endl;
}
cout<<"└—————┴—————┴——————┴——————┴—————┘"<<endl;
}

参考资料: C++语言程序设计 郑莉版(清华大学出版社)

深圳市校管家教育科技有限公司_
2024-02-23 广告
选择培训学校管理系统,需要考虑多方面因素,如系统功能。培训学校管理系统实现了动态的网络化管理,提高了各职能部门的协同办公效能。培训学校管理系统是针对培训学校的管理和教学特点而设计的高效协同工作平台和优秀的综合管理系统。具体费用不是一定的,和... 点击进入详情页
本回答由深圳市校管家教育科技有限公司_提供
灰色8酷
2010-06-06 · TA获得超过306个赞
知道小有建树答主
回答量:414
采纳率:100%
帮助的人:375万
展开全部
这个东西还是自己写比较好,对你入门很有帮助的,可以稍微理解下数据的存储,以后学习数据库可以对比下。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在梯田捕蝶的秋海棠
2010-06-06 · TA获得超过1262个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:135万
展开全部
过几天我考完专业课再帮你解答,如果你还没有答案的话
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
世界精选知识交流
2010-06-06 · TA获得超过396个赞
知道小有建树答主
回答量:481
采纳率:0%
帮助的人:185万
展开全部
这个,
还真得自己写。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式