学生成绩查询系统.docx
《学生成绩查询系统.docx》由会员分享,可在线阅读,更多相关《学生成绩查询系统.docx(28页珍藏版)》请在冰豆网上搜索。
学生成绩查询系统
《程序设计基础》课程设计
设计题目:
_学生成绩查询系统_______
专业:
班级:
___
姓名:
__
学号:
指导老师:
________
一、课程设计目的与要求
1.课程设计目的
(1)综合运用之前所学知识(选择控制,循环控制,数组,函数,指针,结构体和文件等)来完成一个简单的信息管理程序的设计。
(2)充分体现和体会函数在程序设计中的必要性和实用性,并反映主函数main()在程序设计中的实现思路和方法。
2.课程设计要求
设计一个简易学生成绩记录簿设计,其中包括:
姓名,学号,C语言成绩;
具体功能:
1.系统以菜单方式工作
2.创建学生成绩信息并以磁盘文件保存;
3.读取磁盘文件并显示输出所有学生的成绩;
4.查询学生成绩
(1)按学号查询成绩
(2)学号姓名查询成绩
5.添加成绩记录;
6.修改指定姓名或学号的学生的成绩并可存盘;
7.显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。
二、详细设计
1、数据结构设计
#include
#include
#include
#include
intn=4;
structstudent
{
intnum;/*学号*/
charname[10];/*姓名*/
floatscore[3];/*成绩*/
}
2.函数说明
1.主函数
main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。
2.其他部分功能函数包括
(1)将学生成绩信息保存为文件voidsave();
算法思想:
①定义指向文件的指针变量;
②输入保存路径及文件名,打开文件,若不能打开文件给出提示信息;
③将存有学生成绩信息的结构体数组信息依次保存到文件中。
(2)学生成绩信息录入函数voidinput()
算法思想:
①依次录入结构体数组中所包含的各个成员;
②直到输入的结构体成员中信息为4,数据输入结束;
③返回实际录入的学生成绩信息数。
(3)从文件中读出学生成绩信息voidoutput();
算法思想:
①定义指向结构体变量的指针和指向文件的指针;
②输入文件的路径,打开文件,若不能打开文件给出提示信息;
③将文件中的信息依次读出,最后结构体的指针为NULL。
3.函数设计
(1)主菜单函数main()
功能:
函数返回值为整数,代表所选的菜单项
intmain()
{
printf("*********************************************************\n");
printf("§§\n");
printf("§<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>§\n");
printf("§>>欢迎进入学生成绩记录系统<<§\n");
printf("§>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<§\n");
printf("§§\n");
printf("§【1】--------------------------创建学生成绩信息§\n");
printf("§§\n");
printf("§【2】--------------------------显示所有学生成绩信息§\n");
printf("§§\n");
printf("§【3】--------------------------添加学生成绩信息§\n");
printf("§§\n");
printf("§【4】--------------------------查询学生成绩信息§\n");
printf("§§\n");
printf("§【5】--------------------------修改学生的信息§\n");
printf("§§\n");
printf("§【6】--------------------------按分数段显示学生的信息§\n");
printf("§§\n");
printf("§【0】--------------------------退出§\n");
printf("§§\n");
printf("*********************************************************\n");
printf("请输入相应菜单编号:
");
}
(2)我负责编写的程序
A.添加学生信息
voidAddstudent()
{
FILE*fp;
structstudents;
fp=fopen("stu.dat","ab");
if((fp=fopen("stu.dat","ab"))==NULL)
printf("Fileopenerror!
\n");
else
{
printf("请输入所增加学生的学号姓名c语言成绩:
\n");
scanf("%d",&s.num);
scanf("%s",s.name);
scanf("%f",&s.score[0]);
fwrite(&s,sizeof(structstudent),1,fp);
fclose(fp);/*关闭文件*/
}
printf("写入成功!
\n");
}//endfunctionAddstudent;
B.修改学生成绩
voidmodify()
{
intnumber,i;
printf("请输入要修改信息的学生学号:
");
scanf("%d",&number);
for(i=0;iif(number==stud[i].num)
break;/*查找判断*/
if(i{
printf("请输入修改后的学生的信息:
");
printf("\n请输入学生的c语言成绩:
");
scanf("%f",&stud[i].score[0]);
save();
}
else
printf("没找到该学生的信息\n");
system("paues");system("cls");
}
C.查询学生成绩
voidnamecheck(void);
voidscorecheck(void);
voidsearchmenu()
{printf("*****欢迎进入学生成绩查询系统******\n");
printf("*1------------------按姓名查询成绩*\n");
printf("*2-----------------按学号查询成绩*\n");
printf("*3-----------------返回上一层*\n");
printf("*4------------------退出*\n");
printf("*************************************\n");
printf("请输入相应菜单编号:
");
intm;
scanf("%d",&m);
switch(m)
{
case1:
namecheck();
printf("\n");
system("PAUSE");
system("CLS");
break;
case2:
scorecheck();
printf("\n");
system("PAUSE");
system("CLS");
break;
case3:
main();break;
case4:
exit(0);break;
}
}
voidnamecheck()
{
charname[10];
printf("按照姓名查询请按\n");
printf("\n请输入姓名:
");
scanf("%s",&name);
printf("查询结果\n");
printf("学号姓名c语言成绩\n");
if(strcpy(stud[i].name,name))
{
printf("%d%s%.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
}
}
voidscorecheck()
{
intb;
printf("按照学号查询请按\n");
{
printf("\n请输入学号:
");
scanf("%d",&b);
printf("查询结果\n");
printf("学号姓名c语言成绩\n");
for(i=0;iif(stud[i].num==b)
{
printf("%d%s%.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
}
}
三、程序清单和执行结果
1.头文件
#include
#include
#include
#include
intn=4;
structstudent
{
intnum;/*学号*/
charname[10];/*姓名*/
floatscore[3];/*成绩*/
/******以下是函数原型*******/
voidsave(void);
voidinput(void);
voidoutput(void);
voidmodify();/*修改信息*/
voidsearchmenu(void);/*查询信息*/
voidnamecheck(void);/*按姓名查询*/
voidscorecheck(void);/*按学号查询*/
voidAddstudent();/*添加信息*/
voidsclsearch();/*成绩按分数段显示*/
2.函数源程序代码与运行结果
[1]函数源程序代码
#include
#include
#include
#include
intn=4;
structstudent
{
intnum;
charname[10];
floatscore[3];
}stud[100];
inti,choose,a,t=0;
longintnum;
intmain()
{
voidsave(void);
voidinput(void);
voidoutput(void);
voidmodify();
voidsearchmenu(void);
voidAddstudent();
voidsclsearch();
while
(1)
{
printf("*********************************************************\n");
printf("§§\n");
printf("§<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>§\n");
printf("§>>欢迎进入学生成绩记录系统<<§\n");
printf("§>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<§\n");
printf("§§\n");
printf("§【1】--------------------------创建学生成绩信息§\n");
printf("§§\n");
printf("§【2】--------------------------显示所有学生成绩信息§\n");
printf("§§\n");
printf("§【3】--------------------------添加学生成绩信息§\n");
printf("§§\n");
printf("§【4】--------------------------查询学生成绩信息§\n");
printf("§§\n");
printf("§【5】--------------------------修改学生的信息§\n");
printf("§§\n");
printf("§【6】--------------------------按分数段显示学生的信息§\n");
printf("§§\n");
printf("§【0】--------------------------退出§\n");
printf("§§\n");
printf("*********************************************************\n");
printf("请输入相应菜单编号:
");
scanf("%d",&a);
switch(a)
{
case1:
input();
save();
break;
case2:
output();
printf("\n");
system("PAUSE");
system("CLS");
break;
case3:
Addstudent();
printf("\n");
system("PAUSE");
system("CLS");
break;
case4:
searchmenu();
printf("\n");
system("PAUSE");
system("CLS");
break;
case5:
modify();
printf("\n");
system("PAUSE");
system("CLS");
break;
case6:
sclsearch();
printf("\n");
system("PAUSE");
system("CLS");
break;
case0:
exit(0);
default:
;
}
}
return0;
}
voidsave()
{
FILE*fp;
if((fp=fopen("stu.dat","wb"))==NULL)/*以只写的方式打开文件*/
{
printf("无法打开文件!
\n");
return;
}
for(i=0;iif(fwrite(&stud[i],sizeof(structstudent),1,fp)!
=1)/*写入字节为1的信息在文件中*/
printf("文件写入错误!
\n");
fclose(fp);/*关闭文件*/
}
voidinput()//录入学生成绩
{
inti;
chara;
for(i=0;i{
printf("\n请输入学生成绩信息:
\n");
printf("\n请依次输入学号、姓名、c语言成绩:
\n");
scanf("%d%s%f",&stud[i].num,stud[i].name,&stud[i].score[0]);
printf("输入:
y(继续),n(终止)!
\n");
fflush(stdin);
scanf("%c",&a);
if(a=='n'||a=='N')
break;
}
n=i+1;
}
voidAddstudent()
{
FILE*fp;
structstudents;
fp=fopen("stu.dat","ab");
if((fp=fopen("stu.dat","ab"))==NULL)
printf("Fileopenerror!
\n");
else
{
printf("请输入所增加学生的学号姓名c语言成绩:
\n");
scanf("%d",&s.num);
scanf("%s",s.name);
scanf("%f",&s.score[0]);
fwrite(&s,sizeof(structstudent),1,fp);
fclose(fp);/*关闭文件*/
}
printf("写入成功!
\n");
}//endfunctionAddstudent;
voidoutput()
{
inti;
//floats;
FILE*fp;
if((fp=fopen("stu.dat","rb"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
printf("\n学号姓名c语言成绩\n");
for(i=0;fread(&stud[i],sizeof(structstudent),1,fp)==1;i++)
{
printf("%d%10s%10.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
}
fclose(fp);
n=i;
}
voidmodify()
{
intnumber,i;
printf("请输入要修改信息的学生学号:
");
scanf("%d",&number);
for(i=0;iif(number==stud[i].num)
break;/*查找判断*/
if(i{
printf("请输入修改后的学生的信息:
");
printf("\n请输入学生的c语言成绩:
");
scanf("%f",&stud[i].score[0]);
save();
}
else
printf("没找到该学生的信息\n");
system("paues");system("cls");
}
voidnamecheck(void);
voidscorecheck(void);
voidsearchmenu()
{printf("*****欢迎进入学生成绩查询系统******\n");
printf("*1------------------按姓名查询成绩*\n");
printf("*2-----------------按学号查询成绩*\n");
printf("*3-----------------返回上一层*\n");
printf("*4------------------退出*\n");
printf("*************************************\n");
printf("请输入相应菜单编号:
");
intm;
scanf("%d",&m);
switch(m)
{
case1:
namecheck();
printf("\n");
system("PAUSE");
system("CLS");
break;
case2:
scorecheck();
printf("\n");
system("PAUSE");
system("CLS");
break;
case3:
main();break;
case4:
exit(0);break;
}
}
voidnamecheck()
{
charname[10];
printf("按照姓名查询请按\n");
printf("\n请输入姓名:
");
scanf("%s",&name);
printf("查询结果\n");
printf("学号姓名c语言成绩\n");
if(strcpy(stud[i].name,name))
{
printf("%d%s%.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
}
}
voidscorecheck()
{
intb;
printf("按照学号查询请按\n");
{
printf("\n请输入学号:
");
scanf("%d",&b);
printf("查询结果\n");
printf("学号姓名c语言成绩\n");
for(i=0;iif(stud[i].num==b)
{
printf("%d%s%.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
}
}
}
voidsclsearch()
{
inti;
printf("90分以上:
\n");
printf("学号姓名c语言成绩\n");
for(i=0;i{
if(stud[i].score[0]>=90)
printf("%d%s%.2f\n",stud[i].num,stud[i].name,stud[i].score[0]);
}
printf("80~89:
\n");
printf("学号姓名c语言成绩\n");
for(i=0;i{
if(stud[i].score[0]>=80&&stud[i].score[0]<90)
printf("%d%s%.2f\n",stud[i].num,stud