学生成绩录入查询系统C语言程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#include
#define M 50
/********************************全局变量***************************/
typedef struct
{ long id; /*学号*/
char name[20]; /* 姓名 */
char sex[10];
int math; /* 数学成绩 */
int english;
int c_program;
int total;
}STUDENTS;
STUDENTS stu[M]; /* 定义学生结构体变量 */
int num=-1; /* num+1:当前学生个数*/
/* ////////////////////////函数声明////////////////////////// */
/* ////////主功能模块///////// */
void page_title(); /* 主菜单 */
void student_new(); /* 录入学生 */
void student_edit(); /* 修改学生信息 */
void student_del(); /* 删除学生信息 */
void score_search(); /* 根据学号查询学生信息 */
void id_sort(); /* 通过学号递增排序输出 */
void score_sort( ); /* 按成绩递减排序输出 */
void show(int s); /* 显示学生信息 */
/* ////////子功能模块////////// */
int find(long id); /* 通过学号查询数组下标 */
void show_one( int n); /* 显示一个学生信息 */
void input_one(int n); /* 输入一个学生信息 */
void count(int n); /* 计算总成绩 */
void into_menu(); /* 从功能模块进入主菜单 */
void left(); /* 保存退出 */
void page_head1();
void page_head2();
/* /////////文件操作//////// */
void load(); /* 读取文件 */
void save(); /* 保存文件 */
/* ////////////////////主函数/////////////////////// */
void main()
{
load();
while(1)
{
page_title();
}
}
/* ////////////////////主菜单/////////////////////////// */
void page_title()
{
char c;
system("cls"); /* 清屏 */
printf("\n\n>>>>>>>>>>>>> 学 生 成 绩 管 理 系 统 <<<<<<<<<<<<<\n\n");
printf("\t1 录入学生成绩记录\n\n");
printf("\t2 显示学生成绩记录\n\n");
printf("\t3 修改学生成绩记录\n\n");
printf("\t4 删除学生成绩记录\n\n");
printf("\t5 按学号查询学生记录\n\n");
printf("\t6 按学号显示学生记录\n\n");
printf("\t7 按总成绩递减输出\n\n");
printf("\t8 保存\n\n");
printf("\t0 退出\n\n");
printf("***************************************************\n");
printf(" 请用数字键0-8选择操作\n\n");
c=getch();
system("cls");
switch(c)
{
case '1' : student_new();break; /* 录入学生基本信息 */
case '2' : show(0);break; /* 显示所有记录 */
case '3' : student_edit();break; /* 修改记录 */
case '4' : student_del();break; /* 删除记录 */
case '5' : score_search();break; /* 查询记录 */
case '6' : id_sort();break; /* 按学号排
序显示 */
case '7' : score_sort();break; /* 按成绩递减排序显示 */
case '8' : save(); break; /* 保存 */
case '0' : left(); /* 退出 */
}
}
/* ////////////////////录入学生基本信息////////////// */
void student_new()
{
char s[3];
int n=0;
printf("\n请输入学生的个数(1-%d):",M);
scanf("%s",s); /*输入选择项 */
n=atoi(s); /* 将输入的字符串转化为整型数*/
while(!(n>0 && n<=M))
{
printf("\n请重新输入学生个数:");
scanf("%s",s); /*输入选择项*/
n=atoi(s); /*将输入的字符串转化为整型数*/
}
printf("\n");
page_head1();
while(n--)
{ num++;
input_one(num);
count(num);
}
}
/* ////////////////////删除学生基本信息////////////// */
void student_del()
{
long id;
char c;
int n;
while(1)
{
printf("请输入你要删除学生的学号:");
scanf("%ld",&id);
printf("\n");
n=find(id);
if(n!=-1)
break;
else
system("cls");
}
page_head2();
show_one(n);
printf("\n 请确认删除吗?请输入Y或者N");
c=getch();
if('Y'==c || 'y'==c)
{
stu[n].id=stu[num].id;
stu[n].math=stu[num].math;
stu[n].english=stu[num].english;
stu[n].total=stu[num].total;
strcpy(stu[n].name,stu[num].name);
strcpy(stu[n].sex,stu[num].sex);
num--;
}
}
/* //////////////////////////修改信息//////////////////////// */
void student_edit()
{
long id;
int n;
while(1)
{
printf("请输入你要修改学生的学号:");
scanf("%ld",&id);
printf("\n");
n=find(id);
if(n!=-1)
break;
else
system("cls");
}
page_head2();
show_one(n);
printf("\n请输入新的信息:\n");
page_head1();
scanf("%ld%s%s%d%d%d",&stu[n].id,stu[n].name,stu[n].sex,&stu[n].math,&stu[n].english,&stu[n].c_program);
count(n);
}
/* ////////////////////按学号查询成绩////////////////////// */
void score_search()
{
long id;
int n;
printf("请输入你要查询学生的学号:");
scanf("%ld",&id);
printf("\n");
n=find(id);
if(n!=-1)
{ page_head2();
show_one(n);
}
else
printf("不存在该学号学生信息!!");
into_menu();
}
/* ///////////////////按学号排序显示////////////////////////// */
void id_sort( )
{ int i=0;
int n;
long min=stu[0].id;
for(i=1;i<=num;i++)
{
if(stu[i].id
}
page_head2();
for(i=0;i<=num;)
{ n=find(min++);
if(n!=-1)
{
i++;
show_one(n);
}
}
into_menu(); /* 进入主菜单 */
}
/* ///////////////////按总成绩冒泡排序显示////////////////////////// */
void score_sort( )
{
STUDENTS stu1;
int i,j;
for(i=0;i
for(j=0;j
if(stu[j].total>stu[j+1].total)
{
stu1.id=stu[j].id;stu[j].id=stu[j+1].id;stu[j+1].id=stu1.id;
stu1.math=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=stu1.math;
stu1.english=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=stu1.english;
stu1.c_program=stu[j].c_program;stu[j].c_program=stu[j+1].c_program;stu[j+1].c_program=stu1.c_program;
stu1.total=stu[j].total;stu[j].total=stu[j+1].total;stu[j+1].total=stu1.total;
strcpy(,stu[j].name); strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j+1].name,);
strcpy(stu1.sex,stu[j].sex); strcpy(stu[j].sex,stu[j+1].sex); strcpy(stu[j+1].sex,stu1.sex);
}
}
}
show(-1);
}
/*******************选择排序,记录最大值的下标***************************
void score_sort( )
{
int i,j,k,max,t;
int index[M];
for(j=0;j
index[j]=j;
}
for(i=0;i
max=index[i];k=i;
for(j=i+1;j
t=index[j];
if(stu[t].total>stu[max].total)
{ max=t;
k=j;
}
}
t=index[k];index[k]=index[i];index[i]=t;
}
page_head2();
for(i=0;i
k=index[i];
show_one(k);
}
into_menu();
}
*/
/* ////////////////////显示信息/////////////////////////////// */
void show(int s)
{ int i,j;
page_head2();
for(i=0;i
if(-1==s)
j=num-i;
else
j=i;
show_one(j);
}
into_menu(); /* 进入主菜单 */
}
/* ////////////////////子功能模块/////////////////////////////////////////////////// */
int find(long id)
{
int n;
for(n=0;n<=num;n++)
{
if( stu[n].id==id )
{
return n;
}
}
return -1;
}
void input_one(int n)
{
scanf("%ld%s%s%d%d%d",&stu[n].id,stu[n].name,stu[n].sex,&stu[n].math,&stu[n].english,&stu[n].c_program);
printf("--------------------------------------------------------------\n");
}
void show_one(int n)
{
if(strlen(stu[n].name)>=8)
{
printf("%ld\t%s\t%s\t",stu[n].id,stu[n].name,stu[n].sex);
}
else
{
printf("%ld\t%s\t\t%s\t",stu[n].id,stu[n].name,stu[n].se
x);
}
printf("%3d\t%3d\t%3d\t%3d\n",stu[n].math,stu[n].english,stu[n].c_program,stu[n].total);
printf("----------------------------------------------------------------------\n");
}
void count(int n)
{
stu[n].total=stu[n].math+stu[n].english+stu[n].c_program;
}
void left()
{ char c;
printf("是否保存?是按Y,否按N\n");
c=getch();
if('Y'==c || 'y'==c)
save();
exit(0);
}
void into_menu()
{
printf("\n请按任意键进入主菜单");
getch();
}
void page_head2()
{
printf("**********************************************************************\n");
printf("学号\t\t姓名\t\t性别\t数学\t英语\tC语言\t总成绩\n");
printf("**********************************************************************\n");
}
void page_head1()
{
printf("**************************************************************\n");
printf("学号\t\t姓名\t\t性别\t数学\t英语\tC语言\n");
printf("**************************************************************\n");
}
/* ///////////////////////////文件操作//////////////////////////////////// */
void load()
{ FILE *fp;
int i;
if((fp=fopen("d:\\stu.txt","rb"))==NULL)
{
printf("cannot open file\n");
return;
}
for(i=0;i
if( fread(&stu[i],sizeof(STUDENTS),1,fp)==1) i++;
else break;
}
num=i-1;
fclose(fp);
}
void save()
{ FILE *fp;
int i;
if((fp=fopen("d:\\stu.txt","wb"))==NULL)
{ printf("cannot open file\n");
return;
}
for(i=0;i
printf("file write error\n");
fclose(fp);
}