学生成绩管理程序
#include<fstream>
#include<string> //控制字符串的头文件
using namespace std;
class student//建立同学录的一个类
{
//头接点
public:
char name[20];
int num;
int age;
char sex;
double en;
double ma;
double com;
double ave;
student *next;
student *stu;
student(); //构造函数
void display()
{
cout<<"名字: "<<name<<" "<<"学号: "<<num<<" "<<"性别: "<<sex<<"年龄: "<<age<<"英语: "<<en<<" "<<"数学: "<<ma<<" "<<"计算机: "<<com<<endl;
}
student (char n[20],int nu, int ag, char se,double e,double m,double c,double av);
~ student ();
void Set();//添加
void Delete();//删除
void Alter();//修改
void List();//显示
void aver();
void ssearch();//查询
// void RearchN();
// void RearchNU();
void staxis(); //排序
void ssave(); //保存
void sload(); //读取
//排序函数
void pnumb();
void peng();
void pmat();
void pcomp();
friend void caozuo(int);
};
void student::aver()
{
double z;
z=en+ma+com;
ave=z/3;
}
student::student()//构造函数
{
strcpy(name, "nomame");
num=0;
sex='M';
age=0;
double en=0;
double ma=0;
double com=0;
double ave=0;
}
student::student (char n[20],int nu, int ag, char se,double e,double m,double c,double av)
{
strcpy(name, n);
num=nu;
sex=se;
age=ag;
en=e;
ma=m;
com=c;
ave=av;
}
student::~student(){};
student *s[50];
int i=0;
int j=0;
void student::Set()
{
cout<<"请输入姓名:"<<endl;
cin>>name;
cout<<"请输入学号:"<<endl;
cin>>num;
cout<<"请输入年龄:"<<endl;
cin>>age;
cout<<"请输入性别:"<<endl;
cin>>sex;
cout<<"请输入英语成绩:"<<endl;
cin>>en;
cout<<"请输入数学成绩:"<<endl;
cin>>ma;
cout<<"请输入计算机成绩:"<<endl;
cin>>com;
j++;
s[i]=new student(name,num, age, sex,en,ma,com,ave);
i++;
}
void student:: Delete() //(2)删除人员(Delete)
{
cout<<"请输入您要删除的学生姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
i--;
s[h]=s[h+1];
h++;
}
else cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!";
}
}
void student::Alter() //(3)修改数据(Alter)
{
cout<<"请输入您要修改的学生的姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
int nu;
int ag;
char se;
double e;
double m;
double c;
cout<<"请输入学号: "<<endl;
cin>>nu;
cout<<"请输入年龄:"<<endl;
cin>>ag;
cout<<"请输入性别:"<<endl;
cin>>se;
cout<<"请输入英语成绩:"<<endl;
cin>>e;
cout<<"请输入数学成绩:"<<endl;
cin>> m;
cout<<"请输入计算机成绩:"<<endl;
cin>>c;
s[h]->num=nu;
s[h]->age=ag;
s[h]->sex=se;
s[h]->en=e;
s[h]->ma=m;
s[h]->com=c;
cout<<"数据修改成功!";
break;
}
if (i == j)
{
cout<<"对不起!您要查询的学生不存在!"<<endl;
break;
}
}
}
void student::List() //(4)显示记录(List)
{
cout<<"本系统所有通讯录的数据如下:"<<endl;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;
for(int k=0;k<i;k++)
{
s[k]->display();
}
}
void student::ssearch()//查询
{
//system("cls");
cout<<"\n** 查询学生信息 **\n"<<endl;
cout<<"请输入查询方式:"<<endl;
cout<<"1.按学号查询"<<endl;
cout<<"2.按姓名查询"<<endl;
cout<<"3.返回"<<endl;
char c;
cin>>c;
switch (c)
{
case '1':
{ int n;
if(i==0)
{
cout<<"管理系统中没有输入数据!"<<endl; exit(0);
}
cout<<"请输入你要查询的学生的学号"<<endl;
cin>>n;
for(int j=0;j<i;j++)
{
if(s[j]->num==n)
{
cout<<"您要查询的学生是:"<<s[j]->name<<endl;
cout<<"年龄: "<<s[j]->age<<" "<<"性别: "<<s[j]->sex<<" "<<"英语:"<<s[j]->en<<" "<<"数学:"<<s[j]->ma<<" "<<"计算机:"<<s[j]->com<<"平均分:"<<endl;
break;
}
}
if (i == j)
{
cout<<"对不起!您要查询的学生不存在!"<<endl;
}
break;
}
case '2':
{ if(i==0)
{ cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl; exit(0); }
cout<<"请输入你要查询的学生姓名"<<endl;
cin>>name;
for(int j=0;j<i;j++)
{
if(strcmp(name,s[j]->name)==0)
{
cout<<"您要查询的学生是:"<<stu[j].name<<endl;
//cout<<"学号:"<<stu[j].num
cout<<"学号:"<<stu[j].num<<" "<<"年龄: "<<stu[j].age<<" "<<"性别: "<<stu[j].sex<<" "<<"英语:"<<stu[j].en<<" "<<"数学:"<<stu[j].ma<<" "<<"计算机:"<<stu[j].com<<"平均分:"<<endl;
break;
};
if (i == j)
{
cout<<"对不起!您要查询的学生不存在!"<<endl;
}
}
break;}
case '3':
return ;
}
}
void student::pnumb()//按学号排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{
p1=stu;
if (p1->num>p1->next->num) // 如果头结点大于第二个的
{
p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->num) //中间的交换
{
p2=p1;
p1=p1->next;
if(p1->num>p1->next->num)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{
p1->display();
p1=p1->next;
}while(p1);
}
void student::pmat() //按数学成绩排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{
p1=stu;
if (p1->ma>p1->next->ma) // 如果头结点大于第二个的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{ p2=p1;
p1=p1->next;
if(p1->ma>p1->next->ma)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->display();
p1=p1->next;
}while(p1);
}
void student::pcomp()//按语文成绩排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{n++; p1=p1->next;}
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{
p1=stu;
if (p1->com>p1->next->com) // 如果头结点大于第二个的
{
p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{
p2=p1;
p1=p1->next;
if(p1->com>p1->next->com)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{
p1->display();
p1=p1->next;
}while(p1);
}
void student::peng()//按英语成绩排序
{
student *p1,*p2;
int n;
p1=stu;
n=1;
while(p1->next)
{ n++; p1=p1->next; }
cout<<"共有"<<n<<"条信息..."<<endl;
int i;
p1=stu;
for(i=1;i<n;i++)
{ p1=stu;
if (p1->en>p1->next->en) // 如果头结点大于第二个的
{ p2=p1->next;
p1->next=p1->next->next;
p2->next=p1; //头结点交换
stu=p2;
}
p1=stu;
while(p1->next->next) //中间的交换
{ p2=p1;
p1=p1->next;
if(p1->en>p1->next->en)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->display();
p1=p1->next;
}while(p1);
}
void student::staxis()//排序
{
char c;
cout<<"请选择以何种方式排序:"<<endl;
cout<<"1:以学号排序"<<endl;
cout<<"2:以英语成绩排序"<<endl;
cout<<"3:以数学成绩排序"<<endl;
cout<<"4:以计算机成绩排序"<<endl;
cout<<"5:返回"<<endl;
cout<<"请选择(1-5):"<<endl;
cin>>c;
switch (c)
{
case '1':pnumb(); break;
case '2':peng(); break;
case '3':pmat(); break;
case '4':pcomp(); break;
case '5':return;
}
}
void student::ssave() //保存到文件
{
char c;
cout<<"\n保存学生信息(将覆盖原文件),是否继续?[Y/N]:"; cin>>c;
if(toupper(c)!='Y') return;
ofstream tfile("date.txt",ios::binary);
student *p=stu;
while(p)// 写入文件
{
tfile<<p->name<<"\t"<<p->num<<"\t"<<p->en<<"\t"<<p->ma<<"\t"<<p->com<<"\t"<<p->ave;
tfile<<endl;
p=p->next;
}
tfile.close();
cout<<"保存完毕..."<<endl;
}
void student::sload() //读取
{
student *p;
p=stu;
while(p)
{
stu=p->next;
delete p;
p=stu;
}
ifstream tfile("date.txt",ios::binary);
char name1[20];
int num1;
char sex;
double en1,ma1,com1,ave1,age1;
tfile>>name1>>num1>>en1>>ma1>>com1>>ave1>>sex>>age1;
while(tfile.good())
{
//创建学生接点
student *s;
s=stu;
s=new student(name1,num1,age1,sex,en1,ma1,com1,ave1);
s->next=0;
s->ave=stu->ave;
if(stu) //若已经存在结点
{
student *p2;
p2=stu;
while(p2->next) //查找尾结点
{
p2=p2->next;
}
p2->next=s; //连接
}
else //若不存在结点(表空)
{
stu=s; //连接
}
tfile>>name1>>num1>>en1>>ma1>>com1>>ave1;
}
tfile.close();
cout<<"\n学生信息已经装入...\n";
}
void caozuo(int p)
{
student t;
switch(p)
{
case 0:t.Set();break;
case 1:t.Set();break;
case 2:t.Delete();break;
case 3:t.Alter();break;
case 4:t.List();break;
case 5:t.ssearch();//查询
case 6:t.staxis(); //排序
case 7:exit(0);break;
}
}
void main()
{
char w;
do
{
cout<<"请输入操作代码( 成绩录入/0 增加人员/1 删除人员/2 修改数据/3 显示记录/4 查询/5 排序/6 退出/7)"<<endl;
int a;
cin>>a;
caozuo(a);
cout<<"您想继续进行其他操作吗?(y/n)"<<endl;
cin>>w;
}while(w=='y');
} //利用while语句又回到了前面的循环
界面改一下,不好看,以前帮同学写的,现在我们改用数据库写了,呵呵,希望对你有用!
学生成绩管理程序~
c++学生成绩管理系统论文--课程设计[日期:2007-01-19] 来源:25175--你我一起舞 作者:未知 阅读:3593 次 [字体:大 中 小] c++学生成绩管理系统论文--课程设计powered by 25175.net
1、 对C++设计的《学生成绩管理系统》总体说明
系统上采用BC31编译器作为开发环境,这个环境是我们在学习C++的平台,这个编译器功能完善,使用方便。我作的这次课程设计是《学生成绩管理系统》,它的主要功能是对学生的成绩进行修改和管理,而且方便快速,这个程序虽然简单,但是可以作为老师的辅助软件,对学生的各种成绩进行管理。
系统功能要求:
(1)界面
****************************
学生成绩管理系统
****************************
************************************
** F1 --帮助 **
** F2 --输入数据并存入文件 **
** F3 --根据学号查询成绩 **
** F4 --根据姓名查询成绩 **
** F5 --输出文件内容 **
** F6 --统计及格和优秀人数 **
** ESC--退出系统 **
************************************
(2)功能
这个程序的主要功能是输入学生的学号、姓名对其进行存储,在存储后可以对学生的成绩按学号和姓名进行查寻。该系统具有存贮学生数据,按学号、姓名查询,列出学生成绩和统计功能。使用方法:系统输入数据后,将在当前目录中建立一个名为stu.dat文件,用于保存输入的数据。学号输入只能用数字输入,并且学号只能是10位。姓名输入符合中国人的姓名,只能用中文,且最长为5个汉字。此程序在BC2.0下运行通过由于是第一次用C++编写,所以水平有限此系统还有许多不够完整和严密性,敬请老师指正!
(3)实用性
《学生成绩管理系统》是对学生的成绩进行修改和管理,而且方便快速,这个程序虽然简单,但是可以作为老师的辅助软件,对学生的各种成绩进行管理。
目的:
通过课程设计培养了我的动手能力以及综合运用所学的C++语言基础理论,基础知识,基本技能,进行程序分析和程序开发,提高在实际开发中解决问题的能力,达到了能够利用C++语言进行应用程序的规划,分析,设计和实施,更能进一步使我对这门语言有深刻的理解和更好的得到巩固,更能对我所学的知识得到检验。
2、对《学生成绩管理系统》的介绍
具体的功能:
(1)帮助
(2)输入数据并存入文件
(3)根据学号查询成绩
(4)根据姓名查询成绩
(5)输出文件内容
(6)统计及格和优秀人数
(7)退出
(1)帮助
运行程序,屏幕出现该程序界面,第一项就是帮助,在按下“F1”后出现帮助信息,“此系统是应老师所布置的作业编制而成,该系统具有存贮学生数据,按学号、姓名查询,列出学生成绩和统计功能。使用方法:系统输入数据后,将在当前目录中建立一个名为stu.dat文件,用于保存输入的数据。学号输入只能用数字输入,并且学号只能是10位。姓名输入符合中国人的姓名,只能用中文,且最长为5个汉字。”
(2)输入数据并存入文件
在界面状态下,按下“F2”后出现“请输入学号:”,若输入“#”,则返回真值结束输入。在其后面可以输入学生的学号,长度要求10位而且必须是数字,这里用到了结构体变量和函数,对输入的字符进行判断,如果输入字母和汉字会出现“非法学号!请重新输入。”,如果学号长度不为10,则返回重新输入提示“学号长度不对。”, 如果学号后面的字符不是回车符,则学号长度大于10提示“学号长度大于10个!请重新输入!” 输入完学号后会出现提示“请输入姓名:”,在其后面可以输入学生的姓名,姓名必须是汉字而且长度必须是5, 这里也用到了结构体变量和函数,对输入的字符进行判断,如果输入为字母和数字会提示“姓名只能用中文,请重新输入!”,如果输入的汉字长度大于5会提示“姓名长度大于5个!请重新输入!”,输入姓名后会出现“请输入数学成绩:”、“ 请输入英语成绩:”和“请输入总评成绩:”输入规则也和前面输入学号、姓名的类似,判断输入的是否为数字,如果不是就会出现提示,重新输入,直到输入正确为止。都输入完成后,改系统会调用写文件函数对指定的文件进行写操作,把输入的学生信息写入到文件中。
(3)根据学号查询成绩
在界面状态下,在按下“F3”后会出现“请输入要查询的学号:” 输入“#”结束查询,若文件打不开则输出下面的信息,“文件打开失败!按任意键返回...”,如果文件打开会按照用户的要求从文件头开始查询满足要求的学号,找到即显示该学生的基本信息和成绩。如果未找到就会显示“无此学号”。
(4)根据姓名查询成绩
在界面状态下,在按下“F4”后会出现“请输入要查询的学生姓名:” 输入“#”结束查询,若文件打不开则输出下面的信息,“文件打开失败!按任意键返回...”,如果文件打开会按照用户的要求从文件头开始查询满足要求的姓名,找到即显示该学生的基本信息和成绩。如果未找到就会显示“无此学生!”。
(5)输出文件内容
输出文件,列出所有学生成绩。如果文件未打开会出现“文件打开失败!按任意键返回...”打开成功会每输出20个学生成绩,停一下提示,“请按任意键继续...”,关闭文件。
(6)统计及格和优秀人数
这里用到结构体函数和变量,判断成绩大于等于60分的为及格,并统计人数,判断成绩大于等于80分的为优秀,并统计人数,最后统计出来,显示在屏幕上。
(7)退出
在界面状态下,按下“ESC”会退出该学生成绩管理系统。返回源程序。
程序清单
/*-------------1-------------*/
#include
#include /*头文件*/
#include
#include
#include
#include
#include
#include
#define NULL 0
#define ESC 0x001b /* 退出 */
#define F1 0x3b00 /* 查看帮助信息,调用HelpMassage()函数 */
#define F2 0x3c00 /*输入学生成绩*/
#define F3 0x3d00 /*按学号查找*/
#define F4 0x3e00 /*按姓名查找*/
#define F5 0x3f00 /*列出所有学生成绩*/
#define F6 0x4000 /*统计*/
struct stuType /*定义结构体变量*/
{
char NO[11]; /*学号长度为10*/
char XM[10];
float CJ[4]; /*包含4门成绩*/
};
/*-------------2-------------*/
int JY_NO(char *stu_num,FILE *fp) /*检验学号的正确性*/
{ struct stuType stud;
int NO;
char *p=stu_num;
if(strcmp(stu_num,"#")==0) return 1; /*若输入"#"返回真值,不再循环输入*/
while(*p!='\0') /*学号必须是数字,否则返回重新输入*/
{ NO=(int)*p;
if(NO57)
{ puts("非法学号!请重新输入!
");
return 0;
}
else p++; /*指针加1*/
}
if(strlen(stu_num)!=10) /*若学号长度不为10,则返回重新输入*/
{ puts("学号长度不对!
");
return 0;
}
if(getchar()!='
') /*若学号后面的字符不是回车符,则学号长度大于10*/
{ printf("学号长度大于10个!请重新输入!
");
do{}while(getchar()!='
'); /*用getchar接收多余的字符*/
return 0;
}
else
{
rewind(fp); /*使文件指针指向头*/
while(!feof(fp)) /*若文件指针未到结尾,就继续执行下面的循环,feof遇到文件结束符返回非零值,否则返回0*/
{ fread(&stud,sizeof(struct stuType),1,fp); /*读取一定长度的数据*/
if(strcmp(stu_num,stud.NO)==0) /*学号的唯一性*/
{ printf("学号重复,请重新输入!
");
printf("该学生成绩如下:
");
printf("语文:%.1f
",stud.CJ[0]);
printf("数学:%.1f
",stud.CJ[1]);
printf("英语:%.1f
",stud.CJ[2]);
printf("总评:%.1f
",stud.CJ[3]);
return 0;
}
}
}
return 1;
}
/*-------------3-------------*/
int JY_NO2(char *stu_num) /*检验学号*/
{ int NO;
char *p=stu_num;
if(strcmp(stu_num,"#")==0)return 1; /*若输入“#”,则返回真值结束*/
if(strlen(stu_num)!=10) /*学号长度为10*/
{ puts("学号长度不对!
");
return 0;
}
while(*p!='\0') /*学号必须用数字,若包含有字母,或其它字符则返回假值重新输入*/
{ NO=(int)*p;
if(NO57)
{ puts("非法学号!请重新输入!
");
return 0;
}
else p++; /*指针加1*/
}
if(getchar()!='
') /*检验学号长度是否大于10,并把多余的字符去掉*/
{ printf("学号长度大于10个!请重新输入!
");
do{}while(getchar()!='
');
return 0;
}
return 1;
}
/*-------------4-------------*/
int JY_XM(char *stu_XM) /*检验姓名*/
{ int PD;
char *p;
p=stu_XM;
while(*p!='\0') /*姓名只能用中文*/
{
PD=(int)*p;
if(PD>0)
{ puts("姓名只能用中文,请重新输入!
");
return 0;
}
else p++; /*使指针加1,指向下一汉字*/
}
if(getchar()!='
') /*姓名长度不得大于5个*/
{ printf("姓名长度大于5个!请重新输入!
");
do{}while(getchar()!='
');
return 0;
}
return 1; /*字符串全为汉字返回真*/
}
/*-------------5-------------*/
int JY_CJ(float stu_CJ) /*学生成绩只能在0~100之间*/
{
if(stu_CJ100)
{ printf("输入错误,成绩只能在0~100之间!
");
return 0;
}
return 1;
}
/*-------------6-------------*/
void CreatFile() /*输入文件*/
{ FILE *fp;
struct stuType stu,stu0={"","",}; /*对stu0先赋值*/
fp=fopen("stu.dat","wb+"); /*打开或创建一个二进制文件,打开时将原来的内容删除*/
if(fp==NULL)
{ printf("文件打开失败!
按任意键返回...");
getch();
return;
}
else
{ while(1)
{ stu=stu0;
do{ printf("
请输入学号:"); /*输入学号并检验其正确性*/
scanf("%10s",stu.NO);
}while(!JY_NO(stu.NO,fp));
if(strcmp(stu.NO,"#")==0)break;
do{ printf("
请输入姓名:"); /*输入姓名并检验其正确性*/
scanf("%10s",stu.XM);
}while(!JY_XM(stu.XM));
do{ printf("
请输入语文成绩:"); /*输入成绩并检验其正确性*/
scanf("%f",&stu.CJ[0]);
}while(!JY_CJ(stu.CJ[0]));
do{ printf("
请输入数学成绩:"); /*同上*/
scanf("%f",&stu.CJ[1]);
}while(!JY_CJ(stu.CJ[1]));
do{ printf("
请输入英语成绩:");
scanf("%f",&stu.CJ[2]);
}while(!JY_CJ(stu.CJ[2]));
do{ printf("
请输入总评成绩:");
scanf("%f",&stu.CJ[3]);
}while(!JY_CJ(stu.CJ[3]));
fwrite(&stu,sizeof(struct stuType),1,fp); /*写文件*/
}
}
fclose(fp); /*关闭文件*/
}
/*-------------7-------------*/
void Search_Xuehao() /*按学号查询*/
{ FILE *fp;
int flag;
struct stuType stu,stud;
fp=fopen("stu.dat","rb");
if(fp==NULL) /*若文件打不开则输出下面的信息*/
{ printf("文件打开失败!
按任意键返回...");
getch();
return;
}
else
{ do{ puts("
输入“#”结束查询");
do{ printf("请输入要查询的学号:");
scanf("%10s",stu.NO);
}while(!JY_NO2(stu.NO));
if(strcmp(stu.NO,"#")==0)break; /*若输入“#”则结束循环*/
flag=0;
rewind(fp);
while(fread(&stud,sizeof(struct stuType),1,fp)) /*检查文件指针结束*/
{ if(strcmp(stu.NO,stud.NO)==0) /*比较学号*/
{ puts("该学生成绩如下:");
printf("学号:%s
",stud.NO);
printf("姓名:%s
",stud.XM);
printf("语文:%.1f
",stud.CJ[0]);
printf("数学:%.1f
",stud.CJ[1]);
printf("英语:%.1f
",stud.CJ[2]);
printf("总评:%.1f
",stud.CJ[3]);
flag=1; /*记录学号是否查到*/
}
}
if(flag==0)puts("无此学号!");
}while(strcmp(stu.NO,"#")!=0);
}
fclose(fp); /*关闭文件*/
}
/*-------------8-------------*/
void Search_Xingming() /*按姓名查找*/
{ FILE *fp;
int flag=0;
struct stuType stu,stud;
fp=fopen("stu.dat","rb");
if(fp==NULL)
{ printf("文件打开失败!
按任意键返回...");
getch();
return;
}
else
{ do{
do{ printf("请输入要查询的学生姓名:");
scanf("%10s",stu.XM);
}while(!JY_XM(stu.XM));
rewind(fp); /*文件指针指向头*/
while(fread(&stud,sizeof(struct stuType),1,fp))
{ if(strcmp(stu.XM,stud.XM)==0) /*比较姓名是否相同*/
{ puts("该学生姓名如下:");
printf("学号:%s
",stud.NO);
printf("姓名:%s
",stud.XM);
printf("语文:%.1f
",stud.CJ[0]);
printf("数学:%.1f
",stud.CJ[1]);
printf("英语:%.1f
",stud.CJ[2]);
printf("总评:%.1f
",stud.CJ[3]);
flag=1; /*记录姓名是否被查到*/
}
}
if(flag==0)puts("
无此学生!");
puts("是否继续(y--继续,其他返回)?");
}while(getch()=='y');
}
fclose(fp);
/* puts("请按任意键继续...");*/
/* getch();*/
}
/*-------------9-------------*/
int ListFile(void) /*输出文件,列出所有学生成绩*/
{ FILE *fp;
int REC=0; /*记录学生人数*/
struct stuType stu;
fp=fopen("stu.dat","rb");
if(fp==NULL)
{ printf("文件打开失败!
按任意键返回...");
getch();
return 1;
}
else{ printf("学生成绩如下:
");
printf("学号姓名语文数学英语总评
");
rewind(fp);
while(fread(&stu,sizeof(struct stuType),1,fp))
{ /*每读取一个长度的数据就输出*/
printf("%s",stu.NO);
printf("%s",stu.XM);
printf("%.1f",stu.CJ[0]);
printf("%.1f",stu.CJ[1]);
printf("%.1f",stu.CJ[2]);
printf("%.1f",stu.CJ[3]);
printf("
");
REC++;
if(REC%20==0) /*每输出20个学生成绩,停一下*/
{ printf("请按任意键继续...
");
getch();
}
}
}
fclose(fp); /*关闭文件*/
printf("请按任意键继续...");
getch();
}
/*-------------10-------------*/
void Statistics() /*统计及格和优秀人数*/
{ FILE *fp;
int REC=0,pass[4]={0},good[4]={0}; /*REC--记录个数,即人数,pass--及格人数,good--优秀人数*/
float highest[4]={0},score[4]={0}; /*highest--最高分,score--总分*/
struct stuType stu;
fp=fopen("stu.dat","rb");
if(fp==NULL)
{ printf("文件打开失败!
按任意键返回...");
getch();
return;
}
else { rewind(fp);
while(fread(&stu,sizeof(struct stuType),1,fp))
{ REC++;
score[0]=score[0]+stu.CJ[0]; /*语文*/
if(stu.CJ[0]>=60)pass[0]++;
if(stu.CJ[0]>=80)good[0]++;
if(highest[0]<stu.CJ[0])highest[0]=stu.CJ[0];
score[1]=score[1]+stu.CJ[1]; /*数学*/
if(stu.CJ[1]>=60)pass[1]++;
if(stu.CJ[1]>=80)good[1]++;
if(highest[1]<stu.CJ[1])highest[1]=stu.CJ[1];
score[2]=score[2]+stu.CJ[2]; /*英语*/
if(stu.CJ[2]>=60)pass[2]++;
if(stu.CJ[2]>=80)good[2]++;
if(highest[2]<stu.CJ[2])highest[2]=stu.CJ[2];
score[3]=score[3]+stu.CJ[3]; /*总评*/
if(stu.CJ[3]>=60)pass[3]++;
if(stu.CJ[3]>=80)good[3]++;
if(highest[3]<stu.CJ[3])highest[3]=stu.CJ[3];
}
if(REC==0) /*可以防止记录为0是REC作除数而造成的错误*/
{ printf("未输入学生记录!按任意键返回...");
getch();
return;
}
else{
printf(" 语文 数学 英语 总评
"); /*输出统计信息*/
printf("平均分: %.1f %.1f %.1f %.1f
",score[0]/REC,score[1]/REC,score[2]/REC,score[3]/REC);
printf("最高分: %.1f %.1f %.1f %.1f
",highest[0],highest[1],highest[2],highest[3]);
printf("优秀人数:%d %d %d %d
",good[0],good[1],good[2],good[3]);
printf("及格人数:%d %d %d %d
",pass[0],pass[1],pass[2],pass[3]);
}
}
fclose(fp);
printf("
请按任意键继续...");
getch();
}
/*-------------11-------------*/
void HelpMessage()
{ clrscr();
printf("
此系统是应老师所布置的作业编制而成,该系统具有存贮学生数据,按学号、姓名查询,列出学生成绩和统计功能。
使用方法:系统输入数据后,将在当前目录中建立一个名为stu.dat文件,用于保存输入的数据。学号输入只能用数字输入,并且学号只能是10位。姓名输入符合中国人的姓名,只能用中文,且最长为5个汉字。
此程序在Turbo C2.0下运行通过
由于是初学者,水平有限此系统还有许多不够完整和严密性,敬请指正!");
getch();
}
/*-------------12-------------*/
int GetKey(void) /*此函数返回一个按键的数值*/
{ int key;
key=bioskey(0); /*bioskey为调用BIOS键盘接口*/
if(key<<8) /*位移*/
{
key=key&0x00ff;
}
return key; /*返回按键*/
}
/*-------------13-------------*/
void main()
{ int key;
struct date d; /*定义时间结构体*/
getdate(&d); /*读取系统日期并把它放到结构体d中*/
clrscr(); /*清除屏幕*/
printf("
");
printf("****************************
"); /*版本信息*/
printf(" 学生成绩管理系统1.0
");
printf("****************************
");
printf(" 制作人:张春覃
");
printf(" 指导老师:杨宇晶 于宏伟
");
printf(" 制作时间:2005年9月
");
printf("****************************
");
printf("请按任意键继续...");
/*while(!kbhit());*/
getch(); /*从键盘读取一个字符,但不显示于屏幕*/
system("cls"); /*调用DOS的清屏函数,TC中可用clrscr代替*/
while(1) /*主菜单*/
{
printf("
");
printf("************************************
");
printf("**F1 --帮助 **
");
printf("**F2 --输入数据并存入文件 **
");
printf("**F3 --根据学号查询成绩 **
");
printf("**F4 --根据姓名查询成绩 **
");
printf("**F5 --输出文件内容 **
");
printf("**F6 --统计及格和优秀人数 **
");
printf("**ESC--退出系统 **
");
printf("************************************
");
printf("
请输入选项%d年%d月%d日
",d.da_year,d.da_mon,d.da_day); /*提示信息,并显示当前系统日期*/
key=GetKey(); /*调用自定义函数,读取一个键*/
switch(key)
{
case F1: HelpMessage(); break;
case F2: CreatFile(); break;
case F3: Search_Xuehao(); break;
case F4: Search_Xingming();break;
case F5: ListFile(); break;
case F6: Statistics(); break;
case ESC:exit(1); break;
/*default: puts("输入错误选项!");
printf("按任意键返回...");
getch();*/
}
clrscr(); /*每执行完一项功能后,自动清屏*/
}
}
这个成绩管理程序。在vc++ 学习案例分析里面常见, 可以去找本这样的书。COPY代码,可以修改成自己的东西!只要不用于商业赚钱。不会侵权的!
小弟急需 学生成绩管理系统 的C语言程序代码,他的说明书和计划书...
答:学生成绩管理系统-c语言程序代码二 学生成绩管理系统-c语言版 include "stdio.h" /*I/O函数*/ include "stdlib.h" /*其它说明*/ include "string.h" /*字符串函数*/ include "conio.h" /*屏幕操作函数*/ include "mem.h" /*内存操作函数*/ include "ctype.h" /*字符操作函数*/ include...
求用C语言设计一个学生成绩管理程序,明天下午要用。
答:题目学生成绩管理程序任务:使用C语言中相关知识,设计出学生成绩管理程序。要求如下所述:1录入学生信息,每位学生录入的信息有:姓名、学号、性别、班级、和三门功课(数学,英语,... 题目 学生成绩管理程序任务:使用C语言中相关知识,设计出学生成绩管理程序。要求如下所述: 1录入学生信息,每位学生录入的信息有:姓名、...
学生成绩管理程序
答:include<iostream> include<fstream> include<string> //控制字符串的头文件 using namespace std;class student//建立同学录的一个类 { //头接点 public:char name[20];int num;int age;char sex;double en;double ma;double com;double ave;student *next;student *stu;student(); //构造函数...
求助:用C++编一个学生成绩管理程序,要求如下
答:本程序在VC6.0上编译通过:include<iostream.h> class Person //定义Person类 { public:char Name[10];int Score;void takeIn();};void Person::takeIn() //录入学生的姓名和成绩 { cout<<"请输入学生的姓名和成绩:";cin>>Name;cin>>Score;} void main(){ int N;cout<<"请输...
C语言课程设计-学生成绩管理程序
答:include<stdio.h> /*引用库函数*/ include<stdlib.h> include<ctype.h> include<string.h> typedef struct /*定义结构体数组*/ { char num[10]; /*学号*/ char name[20]; /*姓名*/ int score; /*成绩*/ }Student;Student stu[80]; /*结构体数组变量*/ int menu_select() /*菜单...
C语言学生成绩管理系统
答:程序功能:(1)能完成每位学生的某门课程的平时成绩和期末考试成绩的录入。(2)完成每位学生的总评成绩计算(平时成绩*30%+期末考试成绩*70%)并生成数据文件、生成分数段统计文件(不及... 程序功能:(1)能完成每位学生的某门课程的平时成绩和期末考试成绩的录入。(2)完成每位学生的总评成绩计算(平时成绩*30%+期末...
C语言程序设计课程的基础上完成学生成绩管理系统???
答:include<stdio.h> include<string.h> include<stdlib.h> include<conio.h> define max 20 typedef struct student //学生 { char sno[max]; // 学号 char sname[max]; //姓名 char sex[max]; //性别 char age[max]; //年龄 char depart[max]; //系 char classs[max]; ...
学生成绩管理系统 C语言程序设计 急!
答:学生成绩管理系统是一个非常实用的程序,如果能够把用户输入的数据存盘,下次运行时读出,就更有用了。某班有最多不超过30人(具体人数由键盘输入)参加期末考试,考试科目为数学(MT... 学生成绩管理系统是一个非常实用的程序,如果能够把用户输入的数据存盘,下次运行时读出,就更有用了。某班有最多不超过30人(具体人数...
编写一个c程序,对一个班(不多于35人)的学生成绩进行管理,其中:每个学生...
答:这个要求比较多,我先给你个我以前写的,只有一部分的功能,你参考下吧 运行界面如下://2.C++学生成绩管理系统 include <iostream> include <string> include <fstream> using namespace std;define F "e:\\a.txt"define N 5 /*本程序需要在E盘根目录下创建一个a.txt的文件,文件内容格式为:...
用C语言编写一个简单的学生成绩管理的程序
答:start: printf("\n\t\t\t欢迎使用学生成绩管理系统\n");/*一下为功能选择模块*/ do { printf("\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员信息\n\t\t\t\t3.成绩排序信息\n\t\t\t\t4.添加学员信息\n\t\t\t\t5.删除学员信息\n\t\t\t\t6.修改学员信息\n\t\t\t\t...