设计目标
1.掌握用c语言进行程序设计的基本方法。
2.熟悉运用windows对文本进行的加工。
3.初步完成一个应用程序的设计和编码,以及编码的调试,了解程序设计的过程,锻炼个人的逻辑思维和程序设计能力。
通过c语言设计一个系统,实现学生成绩的查询和添加,在查询模块可以分别按学号查询和以班级查询,并且当输入一个课程名时可以查询并显示出不及格学生的成绩。
课题分析与设计
1、课题分析
(1)主函数模块,实现结构体数字组的定义,函数的声明,用二进制数据文件存放学生成绩信息,同时实现操作的选择。
(2)菜单显示模块,通过设计程序实现提示用户要查询的信息
(3)成绩添加模块,通过设计实现学生成绩的手动添加
(4)成绩查询模块,可分为三个函数实现,在一个函数中调用其他两个函数,分别实现按学号查询和按班级查询的目标
(5)课程不及格模块,输入课程名,查询并显示不及格学生的成绩
详细设计
(1)主函数模块,定义头文件,定义结构体类型,结构体数字组,通过
(2)菜单显示模块,通过输出函数printf提示用户可以进行那些选择。
(3)成绩添加模块,定义指向文件型数据的指针变量,分别用fopen函数和 fclose函数打开和关闭数据文件,实现成绩的添加。
(4)成绩显示模块,利用for循环和fopen函数实现文件里数据的输出,输出全部学生的成绩。
(5)成绩查询模块,运用switch语句实现按学号查询和按班级查询的功能,
在两个被调函数中运用strcmp函数实现成绩的输出。
(6)课程不及格模块,运用switch语句实现课程的选择,在被调函数中运用if语句实现不及格成绩的输出
程序清单
#include
#include
#include
struct student
{
char num[12];
char name[60];
char banji[60];
char term[60];
float English;
float math;
float cyvyan;
};int dq(struct student stu[]);//
void showmenu();
void add();
void xianshi();
void chaxun();
void xhcz();
void bjcz();
void bujige();
void yy();
void gs();
void cyy();
int number=0;//记录总的学生人数即文件里面的学生人数
struct student stu[1000];//该数组用来保存所有学生的成绩信息
void main()
{
int choose=0;
showmenu();
printf(“请输入要进行的操作步骤”);
scanf(“%d”,&choose);
switch(choose)
{
case 1:break;//退出系统
case 2:add();//添加学生成绩
case 3:xianshi();break;//输出所有学生的成绩
case 4:chaxun();break;//根据学号或班级查询该生或该班级的成绩
case 5:bujige();break;//根据课程名查询并输出该课程所有不及格成绩
default:printf(“输入错误\n”);break;
}
}
void showmenu()
{
printf(“**************************************************\n”);
printf(“欢迎使用成绩查询系统!\n”);
printf(“请输入要进行的操作:\n”);
printf(“1.退出系统\n”);
printf(“2.添加学生成绩\n”);
printf(“3.输出所有学生的成绩\n”);
printf(“4.查询成绩\n”);
printf(“5.输入课程名查询并输出该课程所有不及格成绩\n”);
printf(“谢谢使用本系统,下次再见!\n”);
printf(“***************************************************\n”);
}
void add()//向文件c:\stu.dat中追加一条成绩信息,成绩信息可以分多次录入
{
int i=0;
char ch;
FILE *fp;//定义一个指向文件型数据的指针变量
struct student stu; //struct student为自己声明的结构体类型,可以表示成绩信息
fp=fopen(“c:\\stu.dat”,”ab+”); //以ab+(读写)的方式打开数据文件c:\stu.dat
if(fp==NULL)
{
printf(“打开文件失败!\n”);
exit(0);
}
do
{
printf(“请输入第%d个学生的成绩:学号,姓名,班级,学期,英语成绩,高数成绩,c语言成绩\n”,i+1);
scanf(“%s%s%s%s%f%f%f”,stu.num,stu.name,stu.banji,stu.term,&stu.English,&stu.math,&stu.cyvyan);
fwrite(&stu,sizeof(struct student),1,fp);
number++; //全局变量,用来统计成绩总数
printf(“继续输入吗?继续输入请按y,结束输入请按n\n”);
ch=getchar();
i++;
}
while(ch==’y’);
fclose(fp);
}
void xianshi() //逐条输出二进制数据文件c:\stu.dat中的成绩信息
{
FILE *fp;
struct student stu;
fp=fopen(“c:\\stu.dat”,”rb”);
//打开保存成绩信息的数据文件c:\stu.dat,打开方式为rb(只读)
if(fp==NULL)
{
printf(“打开文件失败!\n”);
exit(0);
}
printf(“全体学生的成绩为:\n”);
fread(&stu,sizeof(struct
student),1,fp); //先读一条成绩信息,保存到结构体变量xj中
while(!feof(fp)) //判断文件是否结束
{
//若文件没结束,则输出刚读到的成绩信息
printf(“%s\t%s\t%s\t%s\t%f\t%f\t%f\n”,stu.num, stu.name, stu.banji,
stu.term, stu.English, stu.math, stu.cyvyan);
fread(&stu,sizeof(struct
student),1,fp); //继续读下一条成绩信息
}
fclose(fp);
}
void chaxun()//查找学生成绩
{
int n=0;
printf(“1.按学号查找\n”);
printf(“2.按班级查找\n”);
scanf(“%d”,&n);
switch(n)
{
case 1:xhcz();break;
case 2:bjcz();break;
default :printf(“输入有误,结束!\n”);break;
}
}
void xhcz()//按学号查找学生成绩
{
char num[12];
int i=0;
printf(“请输入要查找学生的学号:\n”);
scanf(“%s”,num);
system(“cls”);//清楚屏幕先前的显示内容
printf(“\t姓名\t学号\t英语成绩\t高数成绩\tc语言成绩\n”);
for(i=0;i
{
if(strcmp(num,stu[i].num)==0)//字符串比较函数,如果输入的学号与数组中的学号一致
//则输出该学号对应的成绩
{
printf(“\t%s\t%s\t%f\t%f\t%f\n”,stu[i].name,stu[i].num,stu[i].English,stu[i].math,stu[i].cyvyan);
}
}
void bjcz() //按班级查询成绩
{
char banji[60];
int i=0;
printf(“请输入查询的班级:\n”);
scanf(“%s”,banji);
for(i=0;i
{
if(strcmp(banji,stu[i].banji)==0)
{
printf(“\t%s\t%s\t%f\t%f\t%f\n”,stu[i].banji,stu[i].name,stu[i].English,stu[i].math,stu[i].cyvyan);
}
}
}
void bujige()//输入课程名,查询并显示该课程所有不及格成绩
{
int m=0;
printf(“1.英语课程\n”);
printf(“2.高数课程\n”);
printf(“3.c语言课程\n”);
scanf(“%d”,&m);
switch(m)
{
case 1:yy();break;
case 2:gs();break;
case 3:cyy();break;
default:printf(“输入错误\n”);break;
}
}
void yy() //输出英语不及格的成绩
{
int i=0;
printf(“以下是不及格\n”);
printf(“\t姓名\t学号\t成绩\n”);
for(i=0;i
{
if(stu[i].English<60)
{
printf(“\t%s\t%s\t%f\n”,stu[i].name,stu[i].num,stu[i].English);
}
}
}
void gs() //输出高数不及格的成绩
{
int i=0;
printf(“以下是不及格\n”);
printf(“\t姓名\t学号\t成绩\n”);
for(i=0;i
{
if(stu[i].math<60)
{
printf(“\t%s\t%s\t%f\n”,stu[i].name,stu[i].num,stu[i].math);
}
}
}
void cyy() //输出c语言成绩不及格的成绩
{
int i=0;
printf(“以下是不及格\n”);
printf(“\t姓名\t学号\t成绩\n”);
for(i=0;i
{
if(stu[i].cyvyan<60)
{
printf(“\t%s\t%s\t%f\n”,stu[i].name,stu[i].num,stu[i].cyvyan);
}
}
}
今天的文章C语言的成绩查询系统,c语言 成绩查询系统分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/25789.html