C语言学生成绩查询系统.docx

上传人:b****6 文档编号:13050832 上传时间:2023-06-10 格式:DOCX 页数:52 大小:239.59KB
下载 相关 举报
C语言学生成绩查询系统.docx_第1页
第1页 / 共52页
C语言学生成绩查询系统.docx_第2页
第2页 / 共52页
C语言学生成绩查询系统.docx_第3页
第3页 / 共52页
C语言学生成绩查询系统.docx_第4页
第4页 / 共52页
C语言学生成绩查询系统.docx_第5页
第5页 / 共52页
C语言学生成绩查询系统.docx_第6页
第6页 / 共52页
C语言学生成绩查询系统.docx_第7页
第7页 / 共52页
C语言学生成绩查询系统.docx_第8页
第8页 / 共52页
C语言学生成绩查询系统.docx_第9页
第9页 / 共52页
C语言学生成绩查询系统.docx_第10页
第10页 / 共52页
C语言学生成绩查询系统.docx_第11页
第11页 / 共52页
C语言学生成绩查询系统.docx_第12页
第12页 / 共52页
C语言学生成绩查询系统.docx_第13页
第13页 / 共52页
C语言学生成绩查询系统.docx_第14页
第14页 / 共52页
C语言学生成绩查询系统.docx_第15页
第15页 / 共52页
C语言学生成绩查询系统.docx_第16页
第16页 / 共52页
C语言学生成绩查询系统.docx_第17页
第17页 / 共52页
C语言学生成绩查询系统.docx_第18页
第18页 / 共52页
C语言学生成绩查询系统.docx_第19页
第19页 / 共52页
C语言学生成绩查询系统.docx_第20页
第20页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言学生成绩查询系统.docx

《C语言学生成绩查询系统.docx》由会员分享,可在线阅读,更多相关《C语言学生成绩查询系统.docx(52页珍藏版)》请在冰点文库上搜索。

C语言学生成绩查询系统.docx

C语言学生成绩查询系统

.

 

实训目的能力目标

 

全面熟悉、掌握C语言基本知识,掌握C程序设计中数组、函数、指针

 

的操作,把编程和实际结合起来,增强对不同的问题运用和灵活选择合

 

适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握

 

分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机

 

解决实际问题的能力,规范编程思想,为以后在专业课程中应用计算机

 

系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。

 

实训要求:

 

(1)掌握C语言中的基本数据输入、输出;

 

(2)熟练使用C语言中的数组;

 

(3)熟练使用C语言中的函数;

 

(4)熟练使用C语言中的指针;

 

(5)熟练使用C语言中的结构体。

 

实训内容(过程及步骤)

 

设计题目:

学生成绩查询系统

1、基本思路:

以数组为基础,加以函数和结构体。

然后程序分由“输入学生成绩”,“输出学生成绩”,

“查询学生成绩”,“修改学生成绩”,“查看成绩排序”,“查看成绩统计保存数据”,

“读取数据”等等这几大部分组成。

这五部分各自用一个程序列出,然后在用其他函数将他们连接起来。

 

2、程序:

#include

 

.

.

 

#include

#include

#include

#include

#defineN10

/*****

定义结构体*****/

typedef

struct

students

/*标记为students*/

{

char

num[10];

/*

学生学号*/

char

name[10];

/*

学生姓名*/

int

age;

/*年龄*/

char

sex[10];

/*

性别*/

float

cyy;

/*C语言成绩*/

float

computer;

/*

计算机成绩*/

float

english;

/*

英语成绩*/

float

pj;

/*

平均成绩*/

}STU;

STUtemp;

voidsort(STUstudents[],intn);//排序

voidsave(STUstudents[],intn);//导出

intLocate(STUstudents[],intn);//查询

/*--------------显示菜单--------------------*/

chardisplaymenu()

{

chark;

system("cls");

printf("学生成绩管理

\n");

printf("-----------------------------------应用菜单

-------------------------------------\n");

printf("1输入学生成绩\n\n");

printf("2输出学生成绩\n\n");

printf("3查询学生成绩\n\n");

printf("4修改学生成绩\n\n");

printf("5查看成绩排序\n\n");

printf("6查看成绩统计\n\n");

printf("7保存数据\n\n");

printf("8读取数据\n\n");

printf("9退出系统\n\n");

printf("请选择你想进行的操作:

");

 

k=getchar();

 

.

.

 

returnk;

 

}

/*****定义输出函数*****/

 

voidprintheader()/*格式化输出表头*/

{

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

printf("|学号|姓名|年龄|性别|C语言成绩|计算机成绩|英语成绩|平均成绩|\n");

}

voidprintdata(STUpp)/*格式化输出表中数据*/

{

STU*p;

p=&pp;

printf("|%-5s|%-5s

|%-4d|%-4s|%-6.0f|%-6.0f|%-5.0f|%-6.0f|\n",p->num,p->name,p->age,p->se

x,p->cyy,p->computer,p->english,p->pj);

}

/*****添加学生信息*****/

intadd(STUstudents[],int*n)

{

inti=0;

system("cls");

printf("\n");

printf("请输入学生信息\n");

printf("退出请在学生号处输入:

0\n");

printf("请输入学生学号:

\n");

scanf("%s",students[i].num);

while(strcmp(students[i].num,"0"))//当输入的学号为时结束输入

{

printf("请输入学生姓名:

\n");

scanf("%s",students[i].name);

printf("****************\n\n\n");

printf("请输入学生年龄:

\n");

scanf("%d",&students[i].age);

printf("****************\n\n\n");

printf("请输入学生性别:

\n");

scanf("%s",students[i].sex);

printf("****************\n\n\n");

printf("请输入C语言成绩:

\n");

scanf("%f",&students[i].cyy);

printf("****************\n\n\n");

printf("请输入计算机成绩:

\n");

scanf("%f",&students[i].computer);

 

.

.

 

printf(

"****************\n\n\n"

);

printf(

"请输入英语成绩:

\n");

scanf(

"%f",&students[i].english);

printf(

"****************\n\n\n"

);

students[i].pj=(students[i].cyy+students[i].computer+students[i].english)/3;

printf("学生平均成绩:

%-8.0f\n",students[i].pj);

i++;

printf("****************\n\n\n");

printf("请输入学生学号:

\n");

scanf("%s",students[i].num);

}

*n=i;

save(students,i);

returni;

}

/*****查询学生信息函数*****/

intLocate(STUstudents[],intn)

{

intk,m=-1;

charnum[10],name[20];

inti=0;

system("cls");

printf("退出请输入:

0\n");

printf("请选择以什么方式查询:

1).按学生学号查询2).按学生姓名查询\n");

scanf("%d",&k);

if(k==1)

{

printf("请输入你要查询的学生学号:

\n");

scanf("%s",num);

while(i

{

if(strcmp(students[i].num,num)==0)/*若找到学号*/

{

printf(">>学生学号:

%s\n*学生姓名:

%s\n*学生年龄:

%d\n*学生性别:

%s\n>C语言成绩:

%-8.0f\n>计

算机成绩:

%-8.0f\n>>英语成绩:

%-8.0f\n>>平均成

绩:

%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,students[i].pj);

m=i;

getchar();break;

}

i++;

}

if(i>=n)

 

.

.

 

printf("没有所找学生信息\n");

getchar();

}

elseif(k==2)

{

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

\n");

scanf("%s",name);

while(i

{

if(strcmp(students[i].name,name)==0)/*若找到姓名*/

{printf("学生学号:

%s\n学生姓名:

%s\n学生年龄:

%d\n学生性别:

%s\n学生C语言成绩:

%-8.0f\n计算

机成绩:

%-8.0f\n英语成绩:

%-8.0f\n平均成

绩:

%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,students[i].pj);

m=i;

getchar();break;

}

i++;

}

if(i>=n)

printf("没有所找学生信息\n");

}

returnm;/*返回一个根m便于修改学生信息*/

getchar();

}

/*****显示函数*****/

voidinput(STUstudents[],intn)

{

inti;

system("cls");//清屏

if(n==0)/*表示没有学生信息记录*/

{

printf("\n没有学生记录!

\n");

}

printf("\n\n");

printheader();/*输出表格头部*/

i=0;

while(i

{

printdata(students[i]);

i++;

}

getchar();

 

.

.

 

}

/*****

修改子程序*****/

void

Modify(STUstudents[],

intn)

{

int

i;

if(n<=0)

{

system(

"cls"

);

printf(

"\n退出请输入:

0\n"

);

printf(

"\n----------notfound!

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

);

getchar();

return;

}

system(

"cls"

);

printf(

"修改学生信息");

input(students,n);

i=Locate(students,n);

/*查询到该数组元素,并返回下标值*/

if(i!

=-1)

/*若i!

=-,表明已经找到该数组元素

*/

{

printf(

"请输入新的学生信息:

\n"

);

printf(

"

学号:

"

);

scanf(

"%s",students[i].num);

printf(

"

姓名:

"

);

scanf(

"%s",students[i].name);

printf(

"

年龄:

"

);

scanf(

"%d",&students[i].age);

printf(

"

性别:

"

);

scanf(

"%s",students[i].sex);

printf(

"C语言:

"

);

scanf(

"%f",&students[i].cyy);

printf(

"

英语:

"

);

scanf(

"%f",&students[i].english);

printf(

"

计算机:

"

);

scanf("%f",&students[i].computer);students[i].pj=(students[i].cyy+students[i].english+students[i].computer)/3;

printf("平均成绩:

%-9.0f\n",students[i].pj);

save(students,n);

printf("\n-------------修改成功!

-------------\n");

 

}

else

printf("notfound!

\n");

 

.

.

 

getchar();

}

/*****学生成绩排序子程序*****/

voidsort(STUstudents[],intn)

{

inti,j,a,b,c,d,e,f,k;

floatp;

printf("\n退出请输入:

0\n");

printf("成绩排序方式选择:

1.按C语言2.按英语3.按平均\n");

scanf("%d",&k);

 

if(k==1)/*用选择法对C语言排序*/

{

for(i=0;i

for(j=0;j

{

 

if(students[i].english

{

temp=students[i];

students[i]=students[j+1];

students[j+1]=temp;

}

 

}

 

}

elseif(k==2)/*英语用冒泡法*/

{

for(a=0;a

{

c=a;

for(b=a+1;b

if(students[b].cyy>students[c].cyy)

c=b;

if(c!

=a)

{

temp=students[a];

students[a]=students[c];

students[c]=temp;

}

}

}

 

.

.

 

if(k==3)/*平均成绩用插入法*/

{

for(d=1;d

{

p=students[d].pj;

for(e=0;e

if(students[e].pj

break;

if(e==d)

continue;

for(f=d;f>e;f--)

students[f]=students[f-1];

students[e]=temp;

}

}

input(students,n);/*显示排序后的所有记录*/

save(students,n);

printf("\n排序完成!

\n");

}

 

/*****

统计学生分数在各等级的人数子程序

*****/

void

Tongji(STUstudents[],

intn)

{

int

count6085=0,count85=0,count60=0;

int

i=0;

system("cls"

);

printf(

"\n

退出请输入:

0\n");

input(students,n);

i=0;

while(i

{

if

(students[i].pj>85)

{count85++;i=i+1;

continue;}

/*平均成绩=>85*/

if

(students[i].pj>=60&&students[i].pj<=85){count6085++;i=i+1;

continue;}

/*60<平均成绩

<85*/

if

(students[i].pj<60)

{count60++;i=i+1;

continue;}

/*平均成绩

<60*/

}

printf(

"\n************统计结果************\n\n");

printf(

"平均成绩高于分的人数

:

%d\n"

count85);

printf(

"

\n"

);

printf(

"平均成绩在分和分之间的人数:

%d\n",count6085);

printf(

"

\n"

);

printf(

"平均成绩低于分的人数

:

%d\n"

count60);

printf(

"

\n"

);

 

 

.

.

 

printf("\n\n**********统计结束**********");

getchar();

}

/*****导出或保存数据*****/

voidsave(STUstudents[],intn)

{

FILE*fp;

inti=0;

fp=fopen("students","wb+");/*以读写方式打开创建一个二进制文件*/

if(fp==NULL)/*打开文件失败*/

{

printf("\n*******打开文件错误!

*******\n");

return;

}

for(i=0;i

{

if(fwrite(&students[i],sizeof(STU),1,fp)==1)/*每次写一条记录或一个结构数组元素至文件*/

{

continue;

}

else

{

break;

}

}

if(i>0)

{

getchar();

printf("\n\n*共导出%d个学生信息*\n",i);

getchar();

}

else

{

system("cls");

printf("**没有信息导出*\n");

getchar();

}

fclose(fp);/*关闭此文件*/

}

/*****导入数据*****/

voidRead(STUstudents[],int*n)

{

FILE*fp;

inti=0;

 

.

.

 

fp=fopen("students","rb");/*以只读方式打开一个已有的二进制文件*/

if(fp==NULL)/*打开文件失败*/

{

printf("\n********打开文件错误!

********\n");

exit(0);

 

}

for(i=0;i

{

if(fread(&students[i],sizeof(STU),1,fp)==1)/*每次读一条记录或一个结构数组元素至文件*/continue;

 

else

break;

}

*n=i;

if(i>0)

{

printf("\n\n************共导入:

%d个学生信息************\n",i);getchar();

 

}

else

{system("cls");

printf("************没有信息导入!

************\n");

getchar();

 

}

getchar();

fclose(fp);/*关闭此文件*/

}

 

/*****

主函数*****/

void

main()

{

STU

students[N];

int

n;

char

s1[3],s2[3]={

"1"};

int

i,k;

printf(

"\n\n");

printf(

"******************************************************\n"

);

printf(

"^

<

欢迎使用本软件>

^\n\n"

);

printf(

"^

<

版本:

修改版>

^\n\n\n"

);

printf(

"^<姓名>:

邢曾智

<

班级>:

09511002<

学号>:

0951100201^\n"

);

 

 

.

.

 

printf("^^\n");

printf("******************************************************\n");

printf("\n\n");

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

{

printf("\n请输入密码:

");

gets(s1);

 

if(strcmp(s1,s2)==0)

break;

else

printf("\n>密码错误,请重新输入");

}

if(i>2)

{

printf("\n您已连续次输错,系统将退出!

\n");

exit(0);

}

else

{

while

(1)

{

k=displaymenu();

switch(k)

{

case

'1'

:

add(students,&n);

break;

case

'2'

:

Read(students,&n);input(students,n);

break;

case

'3'

:

Read(students,&n);Locate(students,n);

break;

case

'4'

:

Read(students,&n);Modify(students,n);;

break;

case

'5'

:

Read(st

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 简洁抽象

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2