#include
#include
#include
#include
#include
#define max 100
/////////////////////////////////////////////////////////////////////
/////strcut stu
struct stu //学生资料结构体
{
char name[10];
char num[20]; //学号
char adress[8];
float x,y,z,score;
int number;
};
///////////////////////////////////////////////////////////////////////
///////student.cpp
int count=0;
int temp=0;
int Exchang=0; //定义数据修改标志,若修改则为1,否则为0
class student //学生类
{
private:
stu data[max];
char start_del;
public:
void input(char *ch1,char *num,char *ch2,float x,float y,float z); //输入
void find(char *num); //查找
void del(char *num); //删除
int check_num(char *num) //确定没有重复学号
{
int m=0;
while(m<=count)
if(!strcmp(num,data[m++].num)) //判断是否相同
break;
if(m>count)
return 0;
else
return 1;
}
void taxis(); //总分排序
void show();
void save(); //保存学生资料
void read(); //从文件"student"读取学生资料
};
void student::input(char *ch1,char *num,char *ch2,float x,float y,float z)
{
strcpy(data[count].name,ch1);
strcpy(data[count].num,num);
strcpy(data[count].adress,ch2);
data[count].x=x; data[count].y=y; data[count].z=z;
count++;
Exchang=1; //设置已修改数据标志
}
void student::find(char * num)
{
int m=0;
while(m<=count)
if(!strcmp(num,data[m++].num))
break;
if(m>count)
{
cout << "很抱歉,没有该学号的学生" << endl;
start_del='n';
getch();
}
else
{
temp=count; count=m; start_del='y';
cout << "该学生的资料为" <
show();
count=temp; getch();
}
}
void student::del(char *num)
{
char chose;
find(num);
if(start_del=='y')
{
cout << "确实要删除该学生资料? Y/N" << endl;
cin >> chose;
if(chose=='y')
{
int m=0;
while(m
break;
temp=count; count=m;
if(temp==count)
{
count=temp-1;printf("2");
cout << "该学生资料已删除" << endl;
Exchang=1; //设置已修改数据标志
}
else
{
while(count
strcpy(data[count-1].name,data[count].name); strcpy(data[count-1].num,data[count].num);
strcpy(data[count-1].adress,data[count].adress); data[count-1].x=data[count].x;
data[count-1].y=data[count].y; data[count-1].z=data[count].z;
count++;
}printf("1");
count=temp-1;
cout << "该学生资料已删除" << endl;
Exchang=1; //设置已修改数据标志
}
}
else
cout << "学生资料未删除" << endl;
getch();
}
}
void student::taxis()
{
int x,y,array[max];
int change;
for(x=0;x
for(x=0;x
change=array[y];
array[y]=array[y+1];
array[y+1]=change;
}
cout << "总分\t姓名\t学号\t\t地址\t\t高数\t英语\t计算机" << endl;
for(x=0;x
{
cout << data[y].score << "\t" << data[y].name << "\t"
<< data[y].num << "\t" << data[y].adress << "\t"
<< data[y].x << "\t" << data[y].y << "\t"
<< data[y].z << endl;
}
getch();
Exchang=1; //设置已修改数据标志
}
void student::show()
{
cout << count << "\t" << data[count-1].name << "\t"
<< data[count-1].num << "\t" << data[count-1].adress << "\t\t"
<< data[count-1].x << "\t" << data[count-1].y << "\t"
<< data[count-1].z << endl;
}
////////////////////////////////////////////////////////////////////
//main.cpp
void main()
{
student st;
char *ch1,*ch2,chose;
char flag[2],num[20],find[20],del[20];
char ch;
system("color 70"); //设置背景和字体的颜色
float x,y,z;
time_t t;
time(&t);
st.read();//程序启动时即读入数据。
while(1)
{
system("cls");
cout << "------------------------学生管理系统------------------------" <
<< " 1.输入/添加学生资料 "<
<< " 7.退出" << endl << endl
<< " 请选择你要的服务(1-7)" << endl;
cin >> chose;
if(chose=='7')
{
if(1==Exchang)
{
printf("数据已修改,是否保存? y or n>");
fflush(stdin); //清空缓冲区
scanf("%c",&ch);
if(ch=='y')
{
st.save();
printf("数据已保存\n");
}
printf("\n");
}
break;
}
switch(chose)
{
case '1': // 输入学生信息
{
do
{
cout << "请输入学生姓名:" << endl;
ch1=new char[]; ch2=new char[];
cin >> ch1 ;
cout << "请输入学号:" << endl;
cin >> num ;
while(st.check_num(num))
{
cout << "学号重复,请重新输入" << endl;
cin >> num;
}
cout << "请输入地址:"<
cout << "请输入高数成绩:"<
cout << "请输入英语成绩:" <
cout << "请输入计算机成绩:" <
st.input(ch1,num,ch2,x,y,z);
printf("\n是否继续输入学生信息?(\"y\"继续)");
scanf("%s", flag);
}while(strcmp(flag, "y") == 0);
}break;
case '2':// 输出学生资料
{
temp=count; count=1;
cout << "序号\t姓名\t学号\t\t地址\t\t\t高数\t英语\t计算机" << endl;
while(count<=temp)
{
st.show(); count++;
}
count--; getch();
}break;
case '3':
{
cout << "请输入你要查找学生的学号" << endl;
cin >> find;
st.find(find);
}break;
case '4':
{
cout << "请输入你要删除的学生学号" << endl;
cin >> del;
st.del(del);
}break;
case '5':
{
st.taxis();
}break;
case '6':
st.save();
break;
default:
{
cout << "输入错误!!!,请重新输入" << endl;
getch();
}
}
}
cout << "感谢你的使用!\n" <
}
void student::save()
{
FILE *fp; //定义文件指针,用来打开文件
int i;
if(count<=0)
{
printf("没有可保存的数据\n");
return ;
}
else
{
fp=fopen("student","wb+"); //保存文件在当前目录,名为student
if(fp==NULL)
{
printf("创建文件失败!\n");
system("pause");
return;
}
for(i=0;i
fwrite(&data[i],sizeof(struct stu),1,fp);//将一个学生信息写入文件
}
}
fclose(fp); //关闭文件
Exchang=0; //数据已保存,修改标志设为0
}
void student::read()
{
FILE *fp; //定义文件指针
struct stu temp;
count=0; //初始化学生信息个数为0
fp=fopen("student","rb"); //打开文件
if(fp==NULL) //打不开文件,直接返回
return;
while(fread(&temp,sizeof(struct stu),1,fp)==1) //读文件函数fread返回值为0结束
{
data[count]=temp; //把读到的数据 赋给数组
count++; //学生信息个数加1
}
fclose(fp);
}
请C语言好人帮忙做一道题目(学生成绩管理程序基本要求:(1)设计一个功能菜单,将程序的各个功能显示出来,并有选择提示;(2)应包含学号、姓名和英语、高数、C语言、大学物理、体育等5门课程基本信息;(3)要求有错误提示功能。例如性别只能输入F,M,输入错误提示重新输入。(4)具有输入学生成绩的功能;(5)能够输出所有学生的全部成绩清单;(6)能够按学号或姓名查询某一个学生的成绩信息; (7)能够计算每个学生所有课程的总分和平均分;(8)能够按学号或姓名查询并修改某一个学生的成绩信息)小生谢了
你是说dos的程序,还是vc的windows程序? 功能菜单是内容的?
============
楼下程序是自己写的吗?
佩服啊!