建材秒知道
登录
建材号 > 设计 > 正文

如何制作学生成绩查询系统

糊涂的乌冬面
纯情的鞋垫
2023-03-09 06:05:14

如何制作学生成绩查询系统

最佳答案
从容的白昼
舒适的中心
2025-06-24 22:20:37

制作查询系统步骤1:首先来看一下小编设计的查询界面如图所示。学生成绩表的原始数据在sheet2工作表中。小编这里就选了12名同学成绩作为示例。

制作查询系统步骤2:单击选中B9单元格,依次单击“插入”--“函数…”。

制作查询系统步骤3:在“全部”函数中找到“vlookup”,单击“确定”按钮。红圈中提示该函数的功能(对于该函数还不太了解的童鞋可以参看小编的有关vlookup函数的经验)。

制作查询系统步骤4:第一个参数“Lookup_value”处我们单击“B3”单元格,当然也可以直接输入“B3”。

制作查询系统步骤5:第二个参数“Table_array”,我们单击sheet2工作表,选中数据区域,如图所示。

制作查询系统步骤6:第三个参数“Col_index_num”,这是满足条件单元格的列序号,我们这里要查询考试名称,当然填“2”,即第二列。其它字段的列序号如图所示。

制作查询系统步骤7:第四个参数是“Range_lookup”,即要求精确匹配还是模糊匹配。这里我们填“0”,要求精确匹配。

制作查询系统步骤8:单击“确定”以后,我们对函数修改一下,如图中红框处所示。这样修改便于我们后面的函数填充。

制作查询系统步骤9:修改好了直接回车,然后用填充柄直接填充函数。后面我们做一些小的修改。比如,要查询“姓名”,当然是第三列,所以这里修改为3即可。

制作查询系统步骤10:以此类推,修改其它字段的函数。例如排名处我们修改函数如图中红框处所示即可。

制作查询系统步骤11:测试一下,输入学号1101,回车后,查询结果全部返回正确,即我们的函数使用正确。

制作查询系统步骤12:下面我们对输入的学号进行约束。单击B2单元格,依次单击“数据”--“有效性…”。

最新回答
风趣的含羞草
冷酷的大树
2025-06-24 22:20:37

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#define MAX 1000

struct stu

{

char id[8]

char name[8]

扩展资料:

short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)

long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)

long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)

signed:修饰整型数据,有符号数据类型。(C89标准新增)

unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)

restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。(C99标准新增)

复杂类型关键字

struct:结构体声明。(K&R时期引入)

union:联合体声明。(K&R时期引入)

enum:枚举声明。(C89标准新增)

typedef:声明类型别名。(K&R时期引入)

sizeof:得到特定类型或特定类型变量的大小。(K&R时期引入)

inline:内联函数用于取代宏定义,会在任何调用它的地方展开。(C99标准新增)

参考资料来源:百度百科-c语言

开放的蜻蜓
犹豫的寒风
2025-06-24 22:20:37
#include "stdio.h"

struct Student

{

char ID[20]

char Name[20]

float Mark1

float Mark2

float Mark3

float Average

}

struct Student students[1000]

int num=0

float Avg(struct Student stu)

{

return (stu.Mark1+stu.Mark2+stu.Mark3)/3

}

int Student_SearchByIndex(char id[])

{

int i

for (i=0i<numi++)

{

if (strcmp(students[i].ID,id)==0)

{

return i

}

}

return -1

}

int Student_SearchByName(char name[])

{

int i

for (i=0i<numi++)

{

if (strcmp(students[i].Name,name)==0)

{

return i

}

}

return -1

}

void Student_DisplaySingle(int index)

{

printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩")

printf("-------------------------------------------------------------\n")

printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[index].ID,students[index].Name,

students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average)

}

void Student_Insert()

{

while(1)

{

printf("请输入学号:")

scanf("%s",&students[num].ID)

getchar()

printf("请输入姓名:")

scanf("%s",&students[num].Name)

getchar()

printf("请输入成绩:")

scanf("%f",&students[num].Mark1)

getchar()

printf("请输入成绩:")

scanf("%f",&students[num].Mark2)

getchar()

printf("请输入成绩:")

scanf("%f",&students[num].Mark3)

getchar()

students[num].Average=Avg(students[num])

num++

printf("是否继续?(y/n)")

if (getchar()=='n')

{

break

}

}

}

void Student_Modify()

{

float mark1,mark2,mark3

while(1)

{

char id[20]

int index

printf("请输入要修改的学生的学号:")

scanf("%s",&id)

getchar()

index=Student_SearchByIndex(id)

if (index==-1)

{

printf("学生不存在!\n")

}

else

{

printf("你要修改的学生信息为:\n")

Student_DisplaySingle(index)

printf("-- 请输入新值--\n")

printf("请输入学号:")

scanf("%s",&students[index].ID)

getchar()

printf("请输入姓名:")

scanf("%s",&students[index].Name)

getchar()

printf("请输入成绩:")

scanf("%f",&students[index].Mark1)

getchar()

printf("请输入成绩:")

scanf("%f",&students[index].Mark2)

getchar()

printf("请输入成绩:")

scanf("%f",&students[index].Mark3)

getchar()

students[index].Average=Avg(students[index])

}

printf("是否继续?(y/n)")

if (getchar()=='n')

{

break

}

}

}

void Student_Delete()

{

int i

while(1)

{

char id[20]

int index

printf("请输入要删除的学生的学号:")

scanf("%s",&id)

getchar()

index=Student_SearchByIndex(id)

if (index==-1)

{

printf("学生不存在!\n")

}

else

{

printf("你要删除的学生信息为:\n")

Student_DisplaySingle(index)

printf("是否真的要删除?(y/n)")

if (getchar()=='y')

{

for (i=indexi<num-1i++)

{

students[i]=students[i+1]

}

num--

}

getchar()

}

printf("是否继续?(y/n)")

if (getchar()=='n')

{

break

}

}

}

void Student_Select()

{

while(1)

{

char name[20]

int index

printf("请输入要查询的学生的姓名:")

scanf("%s",&name)

getchar()

index=Student_SearchByName(name)

if (index==-1)

{

printf("学生不存在!\n")

}

else

{

printf("你要查询的学生信息为:\n")

Student_DisplaySingle(index)

}

printf("是否继续?(y/n)")

if (getchar()=='n')

{

break

}

}

}

void Student_SortByAverage()

{

int i,j

struct Student tmp

for (i=0i<numi++)

{

for (j=1j<num-ij++)

{

if (students[j-1].Average<students[j].Average)

{

tmp=students[j-1]

students[j-1]=students[j]

students[j]=tmp

}

}

}

}

void Student_Display()

{

int i

printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩")

printf("-------------------------------------------------------------\n")

for (i=0i<numi++)

{

printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[i].ID,students[i].Name,

students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average)

}

}

void IO_ReadInfo()

{

FILE *fp

int i

if ((fp=fopen("Database.txt","rb"))==NULL)

{

printf("不能打开文件!\n")

return

}

if (fread(&num,sizeof(int),1,fp)!=1)

{

num=-1

}

else

{

for(i=0i<numi++)

{

fread(&students[i],sizeof(struct Student),1,fp)

}

}

fclose(fp)

}

void IO_WriteInfo()

{

FILE *fp

int i

if ((fp=fopen("Database.txt","wb"))==NULL)

{

printf("不能打开文件!\n")

return

}

if (fwrite(&num,sizeof(int),1,fp)!=1)

{

printf("写入文件错误!\n")

}

for (i=0i<numi++)

{

if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1)

{

printf("写入文件错误!\n")

}

}

fclose(fp)

}

main()

{

int choice

IO_ReadInfo()

while(1)

{

printf("\n------ 学生成绩管理系统------\n")

printf("1. 增加学生记录\n")

printf("2. 修改学生记录\n")

printf("3. 删除学生记录\n")

printf("4. 按姓名查询学生记录\n")

printf("5. 按平均成绩排序\n")

printf("6. 退出\n")

printf("请选择(1-6):")

scanf("%d",&choice)

getchar()

switch(choice)

{

case 1:

Student_Insert()

break

case 2:

Student_Modify()

break

case 3:

Student_Delete()

break

case 4:

Student_Select()

break

case 5:

Student_SortByAverage()

Student_Display()

break

case 6:

exit()

break

}

IO_WriteInfo()

}

}

安静的野狼
过时的小蜜蜂
2025-06-24 22:20:37
// Note:Your choice is C++ IDE

#include <iostream>

#include <string>

using namespace std

//N代表科目数,M代表人数

#define N 2

#define M 3

class student

{public:

float score[N]

string name

float average

float total

int rank

student()

void inscore()

void calav()

void caltt()

void show()

}

void student::inscore()

{

int i

cout<<"输入姓名:"

cin>>name

cout<<"输入成绩:"

for(i=0i<Ni++)

{

cin>>score[i]

}

caltt()

calav()

}

void student::calav()

{

average=total/N

}

void student::caltt()

{

int i

for(i=0i<Ni++)

total+=score[i]

}

void student::show()

{

int i

cout<<rank<<" "<<name<<" "

for(i=0i<Ni++)

cout<<score[i]<<" "

cout<<endl

}

void setrank(student sys[M])

{

int i,j

student tmp=sys[0]

for(i=0i<M-1i++)

{

for(j=i+1j<Mj++)

if(sys[j].average>sys[i].average)

{

tmp=sys[j]

sys[j]=sys[i]

sys[i]=tmp

}

sys[i].rank=i+1

}

sys[i].rank=i+1

}

void findsc(student sys[M])

{

string n

int i

cout<<"请输入查询的名字:"

cin>>n

cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl

for(i=0i<Mi++)

if(sys[i].name==n)

{

sys[i].show()

}

}

void findrank(student sys[M])

{

string n

int i

cout<<"请输入查询的名字:"

cin>>n

for(i=0i<Mi++)

if(sys[i].name==n) cout<<sys[i].rank

}

void find10(student sys[M])

{

int j

cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl

for(j=0j<10j++)

sys[j].show()

}

void findgrade(student sys[M])

{

int i,j

cout<<"1.>=85 2.>=753.>=604.<60"<<endl

cin>>i

switch(i)

{

case 1:

{

cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl

for(j=0j<Mj++)

sys[j].show()

}

break

case 2:

{

cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl

for(j=0j<Mj++)

if(sys[j].average>=75 &&sys[j].average<85) sys[j].show()

}

break

case 3:

{

cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl

for(j=0j<Mj++)

sys[j].show()

}

break

case 4:

{

cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl

for(j=0j<Mj++)

if(sys[j].average<60) sys[j].show()

}

break

}

}

void findbad(student sys[M])

{

int i,j,k

for(i=0i<Mi++)

{

k=0

cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl

for(j=0j<Nj++)

{

if(sys[i].score[j]<60) k++

if(k==3)

}

}

}

void pub(student sys[M])

{

int i

cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl

for(i=0i<Mi++)

sys[i].show()

}

int main()

{

student st[M]

int i,j

while(1)

{

cout<<

"-------------------------------\n"<<

"1.输入成绩\n"<<

"2.查询任一学生成绩\n"<<

"3.查询任一学生排名\n"<<

"4.查询前十的学生\n"<<

"5.查询成绩级别的情况\n"<<

"6.查询三门不及格的学生\n"<<

"7.按成绩高低,顺序输入所有学生\n"<<

"-------------------------------"<<endl

cin>>i

switch(i)

{

case 1:

for(j=0j<Mj++)

{

cout<<"输入第"<<j+1<<"个学生的成绩"<<endl

st[j].inscore()

}

setrank(st)

break

case 2:findsc(st)system("pause")break

case 3:findrank(st)system("pause")break

case 4:find10(st)system("pause")break

case 5:findgrade(st)system("pause")break

case 6:findbad(st)system("pause")break

case 7:pub(st)system("pause")break

}

}

return 0

}