当前位置:编程学习 > C/C++ >>

c++编程问题 学生成绩查询系统

使用C语言建立一个学生成绩管理系统,实现学生对成绩的查询功能,下面是利用C语言建立的结构体类型Student和Course,分别表示学生和课程的信息,一个学生可以选修多门课程,同时一门课程有多名学生选修。

具体要求如下:

(1)在主函数中实现学生的登录功能。

(2)登录成功后,提供学生功能选择,1为查询所有成绩;2为查询某一门课程成绩;3为查询不及格课程的课程名称和成绩;4为查询学生所有课程的平均成绩。如果登录失败,则给出提示。

参考代码:

#include <stdio.h>

#include <string.h>

#include <conio.h>

#define SN 8 //表示学生学号为7位

#define SNAME 30 //表示学生的姓名最长运行29个字符

#define PN 7 //表示学生的登录密码为6位

#define CN 7 //表示课程编号为6位

#define CNAME 30 //表示课程名称最多29个字符

#define SCN 3 //表示每个学生选修3门课程

#define STN 3 //表示有3个学生

struct Course

{

char coursenumber[CN]; //表示课程编号

char coursename[CNAME]; //表示课程名称

int score; //表示课程成绩

};

struct Student

{

char studentnumber[SN]; //表示学号

char studentname[SNAME]; //表示学生姓名

char password[PN]; //表示密码

Course courses[SCN]; //表示学生选修课程的信息

};

Student st[STN]={{"0921001","张一","123456",{{"000001","C语言程序设计",78},{"000002","高等数学",56},{"000003","计算机基础",98}}},{"0921002","张二","123456",{{"000001","C语言程序设计",88},{"000002","高等数学",56},{"000003","计算机基础",94}}},{"0921003","张三","123456",{{"000001","C语言程序设计",88},{"000002","高等数学",66},{"000003","计算机基础",77}}}};

int login(char *sn,char *psd)

{

int i;

for(i=0;i<STN;i++)

{

if(strcmp(st[i].studentnumber,sn)==0 && strcmp(st[i].password,psd)==0)

return 1;

}

return 0;

}

void printAllScore(char *sn)

{

int i,j;

for(i=0;i<STN;i++)

{

if(strcmp(st[i].studentnumber,sn)==0)

{

for(j=0;j<SCN;j++)

printf("%s %d\n",st[i].courses[j].coursename,st[i].courses[j].score);

}

}

}

void printFailure(char *sn)

{

}

int getScore(char *sn,char *cn)

{

}

int getAver(char *sn)

{

int i,j,sum=0;

for(i=0;i<STN;i++)

{

if(strcmp(st[i].studentnumber,sn)==0)

{

for(j=0;j<SCN;j++)

sum+=st[i].courses[j].score;

}

}

return sum/SCN;

}

void main()

{

char tempt1[SN]={'\0'};

char tempt2[PN]={'\0'};

int i;

printf("请输入您的学号:");

for(i=0;i<7;i++)

tempt1[i]=getche();

printf("\n请输入您的密码:");

for(i=0;i<6;i++)

{

tempt2[i]=getch();

putchar('*');

}

if(login(tempt1,tempt2)==1)

{

printf("\n登录成功,请选择服务:1、查询所有课程成绩;2、查询某一门课程成绩;3、查询不及格课程名称和成绩;4、查询平均成绩\n");

int tag;

scanf("%d",&tag);

switch(tag)

{

case 1:

printAllScore(tempt1);

break;

case 2:

break;

case 3:

break;

case 4:

printf("您的平均成绩为%d\n",getAver(tempt1));

break;

default:

printf("输入选择错误!\n");

}

}

else

printf("登录失败");

}

希望有高手尽快帮我填补上缺少的部分 谢谢谢谢~~~~~~~~

答案:

#include <stdio.h>
#include <string.h>
#include <conio.h>
#define SN 8 //表示学生学号为7位
#define SNAME 30 //表示学生的姓名最长运行29个字符
#define PN 7 //表示学生的登录密码为6位
#define CN 7 //表示课程编号为6位
#define CNAME 30 //表示课程名称最多29个字符
#define SCN 3 //表示每个学生选修3门课程
#define STN 3 //表示有3个学生
struct Course
{
char coursenumber[CN]; //表示课程编号
char coursename[CNAME]; //表示课程名称
int score; //表示课程成绩
};
struct Student
{
char studentnumber[SN]; //表示学号
char studentname[SNAME]; //表示学生姓名
char password[PN]; //表示密码
Course courses[SCN]; //表示学生选修课程的信息
};
Student st[STN]={{"0921001","张一","123456",{{"000001","C语言程序设计",78},{"000002","高等数学",56},{"000003","计算机基础",98}}},{"0921002","张二","123456",{{"000001","C语言程序设计",88},{"000002","高等数学",56},{"000003","计算机基础",94}}},{"0921003","张三","123456",{{"000001","C语言程序设计",88},{"000002","高等数学",66},{"000003","计算机基础",77}}}};
int login(char *sn,char *psd)
{
int i;
for(i=0;i<STN;i++)
{
if(strcmp(st[i].studentnumber,sn)==0 && strcmp(st[i].password,psd)==0)
return 1;
}
return 0;
}
void printAllScore(char *sn)
{
int i,j;
for(i=0;i<STN;i++)
{
if(strcmp(st[i].studentnumber,sn)==0)
{
for(j=0;j<SCN;j++)
printf("%s %d\n",st[i].courses[j].coursename,st[i].courses[j].score);
}
}
}
void printFailure(char *sn)
{
}
int getScore(char *sn,char *cn)
{
int i,j;
for(i=0;i<STN;i++)
{
if(strcmp(st[i].studentnumber,sn)==0)
{
for(j=0;j<SCN;j++)
if(strcmp(st[i].courses[j].coursename,cn)==0)
return st[i].courses[j].score;
}
}

}
int getAver(char *sn)
{
int i,j,sum=0;
for(i=0;i<STN;i++)
{
if(strcmp(st[i].studentnumber,sn)==0)
{
for(j=0;j<SCN;j++)
sum+=st[i].courses[j].score;
}
}
return sum/SCN;
}
void main()
{
char tempt1[SN]={'\0'};
char tempt2[PN]={'\0'};
int i;
printf("请输入您的学号:");
for(i=0;i<7;i++)
tempt1[i]=getche();
printf("\n请输入您的密码:");
for(i=0;i<6;i++)
{
tempt2[i]=getch();
putchar('*');
}
if(login(tempt1,tempt2)==1)
{
printf("\n登录成功,请选择服务:1、查询所有课程成绩;2、查询某一门课程成绩;3、查询不及格课程名称和成绩;4、查询平均成绩\n");
int tag;
scanf("%d",&tag);
switch(tag)
{
case 1:
printAllScore(tempt1);
break;
case 2:
printf("请输入您要查询的课程名称\n");
char num[20];
scanf("%s",&num);
printf("您该门成绩是%d\n",getScore(tempt1,num));
break;
case 3:
break;
case 4:
printf("您的平均成绩为%d\n",getAver(tempt1));
break;
default:
printf("输入选择错误!\n");
}
}
else
printf("登录失败");
}

太抱歉了,只给你写了一个子函数,还有一个没写。实在是忙,有空再看。

上一个:C++编程,高手进
下一个:C++编程,两题,求解?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,