我刚接触c++没多久,很多地方还不太懂,老师就让我在2天的时间里编一个学生信息管理系统,真的很让我头疼!希望您能给我帮助。

suping1842 2008-07-01 03:31:30
编写一个学生信息管理系统,主要实现下列功能:
(1)录入功能:提供学生基本信息和某学期各科成绩的录入功能,学生信息要齐全。
(2)查询功能,可以按照姓名或班级关键字查询学生基本信息。
(3)修改功能,修改学生的信息和成绩。
(4)排序功能,可以按学生姓名、单科成绩和平均成绩等进行排序。
(5)统计功能,可以按照各分数段对学生人数进行统计。
(7)数据备份功能,将学生的基本信息备份到硬盘的普通文本文件,并且能
读出


可不可以帮我按照以上要求改一下下面的程序,顺便帮我把每句都用中文翻译过来(答辩时要用)

#include <iostream.h>
#include<iomanip.h>
#include <string.h>
void sort( char xh[][20],char xm[][20],float s[]);
void insert( char xh[][20],char xm[][20],float s[]);
void disp(char xh[][20],char xm[][20],float s[]);
void record(char xh[][20],char xm[][20],float s[]);
void del(char xh[][20],char xm[][20],float s[]);
int n=0;
void main()
{ char m; //若定义为整型,则选择时按了字符键,总有死循环发生;
char xh[20][20],xm[20][20];
float s[20];
cout<<" 简易学生信息管理系统\n"<<endl;
do{

cout<<"*****系统功能菜单*****"<<endl;
cout<<"______________________"<<endl;

cout<<"1. 录入学生信息"<<endl;
cout<<"2. 按成绩排序"<<endl;
cout<<"3. 增加学生信息"<<endl;
cout<<"4. 按学号删除信息"<<endl;
cout<<"5. 显示当前信息"<<endl;
cout<<"6. 退出系统"<<endl;
cout<<"______________________"<<endl;
cout<<"请选择:";
cin>>m;
cout<<endl;

switch(m)
{case '1': record(xh,xm,s);break; //这里1-6原为数字,但现皆改为字符了;
case '2': sort(xh,xm,s); break;
case '3': insert(xh,xm,s);break;
case '4': del(xh,xm,s); break;
case '5': disp(xh,xm,s);break;
case '6': break;

default: cout<<"选择错误!"<<endl;break;
}
if(m=='6')
{cout<<"退出系统!"<<endl; break;}

}while(1);
}


void record(char xh[][20],char xm[][20],float s[]) //录入信息
{
int i ;
cout<<"请输入待录入的学生数:\n";
cin>>n;
for(i=0;i<n;i++)
{cout<<"请输入第"<<i+1<<"个同学的学号、姓名、分数:\n";
cin>>xh[i]>>xm[i]>>s[i];
for(int l=0;l<i;l++)
if(strcmp(xh[l],xh[i])==0)
{cout<<"已有该学号,请检查后重新输入!"<<endl;
i--;}
}
cout<<"\n录入完毕!\n"<<endl;
}

void sort(char xh[][20],char xm[][20],float s[]) //排序信息
{int i,j,p;
float f;
char st[20];
if(n==0)cout<<"无信息可排序!"<<endl;
else
{ for(i=0;i<n;i++)
{ p=i;
for(j=i+1;j<n;j++)
if(s[j]<s[p])p=j;

if(p!=i)
{ f=s[i];s[i]=s[p];s[p]=f;
strcpy(st,xm[i]);
strcpy(xm[i],xm[p]);
strcpy(xm[p],st);
strcpy(st,xh[i]);
strcpy(xh[i],xh[p]);
strcpy(xh[p],st);
}
}
cout<<"\n按分数由小到大的排序结果为:\n"<<endl;
cout<<setw(8)<<"学号"<<setw(8)<<"姓名"<<setw(8)<<"分数"<<endl;
for(i=0;i<n;i++)
cout<<setw(8)<<xh[i]<<setw(8)<<xm[i]<<setw(8)<<s[i]<<endl;}
}

void insert(char xh[][20],char xm[][20],float s[])//增加信息
{
int i,j,k;
cout<<"请输入待增加学生数:"<<endl;
cin>>k;
for(i=0,j=n;j<n+k;j++,i++)
{cout<<"请输入第"<<i+1<<"个待增加同学的学号、姓名、分数:\n";
cin>>xh[j]>>xm[j]>>s[j];
for(int l=0;l<j;l++) //每录入一个都要检查前面是否有与之重复的学号;
if(strcmp(xh[l],xh[j])==0)
{cout<<"已有该学号,请检查后重新输入!"<<endl;
j--;i--;}

}
n=n+k;
cout<<"\n增加录入完毕!\n"<<endl;
}

void disp(char xh[][20],char xm[][20],float s[])//显示信息
{int i;
if(n==0)
cout<<"无可显示信息!"<<endl;
else
{cout<<setw(8)<<"学号"<<setw(8)<<"姓名"<<setw(8)<<"分数"<<endl;
for(i=0;i<n;i++)
cout<<setw(8)<<xh[i]<<setw(8)<<xm[i]<<setw(8)<<s[i]<<endl;}
}

void del(char xh[][20],char xm[][20],float s[])
{
int i,k;
char str[20];
if(n==0)cout<<"无信息可删除!"<<endl;
else
{cout<<"请输入待删除学生的学号"<<endl;
cin>>str;
for(i=0;i<n;i++)
{
if(strcmp(str,xh[i])==0)
break;
}
if(i>=n)
cout<<"系统无该学生信息!"<<endl;
else
{for(k=i;k<n-1;k++)
{strcpy(xh[k],xh[k+1]);
strcpy(xm[k],xm[k+1]);
s[k]=s[k+1];
}

n=n-1;
cout<<"\n删除完毕!\n"<<endl;}
}

}
...全文
199 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
majiajun_no_2 2008-09-29
  • 打赏
  • 举报
回复
潜水多年,今日上岸,继续学习。
majiajun_no_13 2008-09-28
  • 打赏
  • 举报
回复
快乐顶贴,快乐看贴,快乐学习
converf 2008-09-25
  • 打赏
  • 举报
回复
分析得精彩.....
很受益!
laxila 2008-09-25
  • 打赏
  • 举报
回复
留脚印
wzzwt 2008-09-23
  • 打赏
  • 举报
回复
支持下
gaoteng1984 2008-08-28
  • 打赏
  • 举报
回复
把往届师兄的代码借过来
iland9876543210 2008-08-27
  • 打赏
  • 举报
回复
down源码改改
jdlsfl 2008-07-04
  • 打赏
  • 举报
回复
很强大

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧