西安理工C语言课程设计学生成绩管理系统

题目:学生成绩管理系统
功能:学生成绩管理系统,每个学生信息为一个记录,包括学号,姓名,性别,3门课程成绩。
系统要求实现以下功能:
1、信息录入:录入成绩学生信息(包括学生学号、姓名、性别、3门课程的成绩等);
2、信息查询:可以按照姓名或学号查询学生各门课程的成绩,并显示。
3、排序:按平均成绩或各门课程成绩按由高到低进行排序,并显示。
4、信息删除与修改——输入学号,可删除或修改该学生的成绩信息。
5、保存:将相关数据写入磁盘文件,便于存、取操作。
分步实施:
1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。
2、完成信息的录入和显示(即通过编程创建文件,输入学生信息并可将文件内容显示出来)
3、完成上述信息查询、排序、信息删除与修改功能。
要求:1、用C语言实现程序设计;
2、利用结构体数组实现学生信息的数据结构设计;
3、系统的各个功能模块要求用函数的形式实现;
4、界面友好(良好的人机交互),程序要有必要的注释。
课程设计实验报告要求:

#include<stdio.h>
#include<stdlib.h>/*系统标准输出函数,如system()*/
#include<string.h>
#include <conio.h>/*键盘输入函数getch()*/
#define N 3/*定义总人数*/
#define size 10 /*定义学号的个数*/

struct student /*定义结构体*/
{ char xuehao[15];/*学号*/
char xingming[20];/*姓名*/
char xingbie[10];/*性别*/
int math;/*数学成绩*/

int chinese;/*语文成绩*/

int english;/*英语成绩*/

}stu[N];

int cnt=1;/*定义变量cnt存放通讯录中总人数*/
void shuru();/*输入功能函数*/
void xianshi();/*显示功能函数*/
int chazhao();/*查找功能函数*/
int xiugai();/*修改功能函数*/
void xmchazhao();/*按姓名查找*/
void xhchazhao();/*按学号查找*/
void tuichu();/*退出函数*/
void xuehao();/*学号修改信息函数*/
void save();/*保存函数*/

void main()
{ int a;

while(1)
{printf("\n\n\n\n");
printf("\t\t ****----欢迎进入学生管理系统----****\n");
printf("\t\t ****----------1 输入信息--------****\n");
printf("\t\t ****----------2 显示信息--------****\n");
printf("\t\t ****----------3 查找信息--------****\n");
printf("\t\t ****----------4 修改信息--------****\n");
printf("\t\t ****----------5 退出系统--------****\n\n\n");
printf("\t\t\t请输入选择菜单: ");
scanf("%d",&a);
switch(a)
{
case 1:
shuru();
break;
case 2:
xianshi();
break;
case 3:
chazhao();
break;
case 4:
xuehao();
break;
case 5:
tuichu();

}
}
}

void save()/*保存函数*/
{
FILE *fp;
int i;
if((fp=fopen("stu_list","wb"))==NULL)
{
printf("cannot open file\n");
return;
}
for(i=0;i<N;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}

void xuehao()/*输入学号修改信息函数*/
{ char num[size];
char array[size]={'3','1','0','0','4','3','2','0','3','1'};
int i,count=0,n;//n为最多允许输入错误次数
system("cls");
printf("\n\n\n\n\n\n\n\n\n\t\t\t请输入你的学号:\n\n\t\t\t");
for(n=0;n<3;n++)
{for(i=0;i<size;i++)//输入学号
{
num[i]=getch();

if(num[i]==8)//使用退格键消除错误输入,重新输入
{
if(num[i]!=13&&num[i]!=8)//当输入的不是回车键和退格键的时候,输出*号
printf("*");//用*号代替输入的信息

printf("\b");//退格,当前位置移到前一列
i--;
printf(" ");
printf("\b");
i--;

}

}

for(i=0;i<size;i++)//比较学号
{
if(num[i]==array[i]) count++;}//count 为对比记数器,用于判断输入学号是否存在.

if(count==size)
{
system("cls");
printf("\n\n\n\n\n\n\n\t\t\t学号正确!\n\n\t\t\t按任意键修改信息\n\t\t\t");
getch();
system("cls");
xiugai();
}
else

{
system("cls");
printf("\n\n\n\n\n\n\n\n\t\t\t学号错误!\n\n\t\t\t请重新输入\n\n\t\t\t");
}
}
if(n==3)
{
printf("您已经输错三次,按任意键退出\n\t\t\t");
getch();
exit(0);
}
}

void shuru()/*输入函数*/
{system("cls");
printf("\n");
printf("请输入学生的姓名:");
scanf (" %s",stu[cnt].xingming);
printf("\n请输入学生的性别:");
scanf (" %s",stu[cnt].xingbie);
printf("\n请输入学生的学号:");
scanf (" %s",stu[cnt].xuehao);

printf("\n请输入学生的数学成绩:");
scanf (" %d",&stu[cnt].math);

printf("\n请输入学生的语文成绩:");
scanf (" %d",&stu[cnt].chinese);
printf("\n请输入学生的英语成绩:");
scanf (" %d",&stu[cnt].english);

cnt++;
system("cls");
printf("\n\n\n\n\n\n\t\t***************保存成功!*****************\n");
printf("\n\t\t*****是否继续添加?(不区分大小写 Y/N)*****\n\n\t\t\t");
if(getch()=='y'||getch()=='Y')
shuru();
else
{ getch();
system("cls");
return;
}
save();
}

void xianshi()/*显示函数*/
{
int i; system("cls");

if(cnt!=1)
{
printf("以下为通讯录所有成员信息\n");
for(i=1;i<cnt;i++)
{
printf(" 姓名:%s\n",stu[i].xingming);
printf(" 学号:%s\n",stu[i].xuehao);

printf(" 性别:%s\n",stu[i].xingbie);
printf(" 数学成绩:%d\n",stu[i].math);
printf(" 语文成绩:%d\n",stu[i].chinese);
printf(" 英语成绩:%d\n",stu[i].english);

} printf("\n\t\t************************************************\n");
printf("\n\t\t\t按任意键返回主菜单: \n\t\t\t");
getch(); system("cls");
main();

}
else
{
system("cls");
printf("\n\n\n\n\n\n\n\n");
printf("\t\t\t通讯录中无任何纪录!");
printf("\n\n\t\t\t按任意键返回主菜单! ");
getch(); system("cls");
main();
}

}

int chazhao()/*查找函数*/
{

int a;
system("cls");
printf("\n\n\n\n\n\n");
printf("\t**********************查询菜单************************\n");
printf("\t********************1-按姓名查询**********************\n");
printf("\t********************2-按学号查询**********************\n");
printf("\t********************3-返回主菜单**********************\n");
printf("\n\t\t\t 请按数字键选择:");
getchar();
scanf("%d",&a);
switch(a)
{
case 1:xmchazhao(); break;
case 2:xhchazhao();break;
case 3:system("cls");
}
return 0;system("cls");
}

void xmchazhao()/*姓名查找函数*/
{
char b[20];int i=1;
system("cls");
printf(" \n\n请输入您要查找的学生姓名:\n");
getchar();
scanf("%s",b);
while(strcmp(stu[i].xingming,b)!=0&&i<N)
i++;
if(i==N)
{ system("cls");
printf("\n\n\n\n\n\n\n\n");
printf("\t\t\t没有您要找的学生信息!\n");
printf("\n\t\t\t按任意键返回查找菜单:");
getch(); chazhao();system("cls");

}
else
{ system("cls");
printf(" 姓名:%s\n",stu[i].xingming);
printf(" 学号:%s\n",stu[i].xuehao);

printf(" 性别:%s\n",stu[i].xingbie);
printf(" 数学成绩:%d\n",stu[i].math);
printf(" 语文成绩 :%d\n",stu[i].chinese);
printf(" 英语成绩:%d\n",stu[i].english);

}
printf("\n\t******是否继续查找(不区分大小写 <Y/N>)******?\n\n");
if(getch()=='y'||getch()=='Y')
chazhao();
save();
system("cls");
}

void xhchazhao()/*学号查找函数*/
{
char b[20];int i=1;
system("cls");
printf(" \n\n请输入您要查找的学生学号:\n");
getchar();
scanf("%s",b);
while(strcmp(stu[i].xuehao,b)!=0&&i<N)
i++;
if(i==N)
{ system("cls");
printf("\t\t\t没有您要找的学生信息!\n");
printf("\n\t\t\t按任意键返回查找菜单:");
getch(); chazhao();system("cls");

}
else
{ system("cls");
printf(" 姓名:%s\n",stu[i].xingming);
printf(" 学号:%s\n",stu[i].xuehao);

printf(" 性别:%s\n",stu[i].xingbie);

printf(" 数学成绩:%d\n",stu[i].math);
printf(" 语文成绩:%d\n",stu[i].chinese);
printf(" 英语成绩:%d\n",stu[i].english);

}
printf("\n\t******是否继续查找(不区分大小写 Y/N)******?\n\n");
if(getch()=='y'||getch()=='Y')
chazhao();
save();
system("cls");
}

int xiugai()/*修改函数*/
{
int b,d,i,e,f,g,h;char s[20],s1[10],s2[20],s3[50],c[15];system("cls");
for(i=0;i<N;i++)
{

system("cls");
printf("\n\n\n\n\n\n\n\t\t\t请输入要修改的学生姓名: ");
getchar();
scanf("%s",s);
while(strcmp(stu[i].xingming,s)!=0&&i<N)
i++;
if(i==N)
{ system("cls");
printf("\n\n\n\n\n\n\n\n\n\t\t\t没有您要找的学生信息\n\n");
printf("\t\t\t是否继续修改?<Y/N>\n\n\t\t\t");
if(getch()=='y'||getch()=='Y')
xiugai();
system("cls");
main();
}
system("cls");
printf("\n\n\n\n");
printf("\t\t\t\t1 改姓名\n");
printf("\t\t\t\t2 改学号\n");
printf("\t\t\t\t3 改性别\n");

printf("\t\t\t\t4 改数学成绩\n");
printf("\t\t\t\t5 语文成绩\n");
printf("\t\t\t\t6英语成绩\n");
printf("\t\t\t\t0 返回主菜单\n");
printf("\t\t\t\t请输入您的选择: ");
getchar();
scanf("%d",&b);
switch(b)
{
case 1:system("cls");printf("请输入修改后的姓名:\n");
getchar();
scanf("%s",s);
strcpy(stu[i].xingming,s);
save();system("cls");
printf("\n\n\n\n\n\n\n\n\t\t\t是否继续修改?\n\t\t\t是请输入1 否请输入2\n\t\t\t");
scanf("%d",&h);
switch(h)
{
case 1:xiugai();
case 2:system("cls");main();
}
case 2:system("cls");printf("请输入修改后的学号:\n");
getchar();
scanf("%s",c);
strcpy(stu[i].xuehao,c);
save();system("cls");
printf("\n\n\n\n\n\n\n\n\t\t\t是否继续修改?\n\t\t\t是请输入1 否请输入2\n\t\t\t");
scanf("%d",&h);
switch(h)
{
case 1:xiugai();
case 2:system("cls");main();
}
case 3:system("cls");printf("请输入修改后的性别:\n");
getchar();
scanf("%s",s1);
strcpy(stu[i].xingbie,s1);
save();system("cls");
printf("\n\n\n\n\n\n\n\n\t\t\t是否继续修改?\n\t\t\t是请输入1 否请输入2\n\t\t\t");
scanf("%d",&h);
switch(h)
{
case 1:xiugai();
case 2:system("cls");main();
}

case 4:system("cls");printf("请输入修改后的数学成绩:\n");
getchar();
scanf("%d",&e);
stu[i].math=e;
save();system("cls");
printf("\n\n\n\n\n\n\n\n\t\t\t是否继续修改?\n\t\t\t是请输入1 否请输入2\n\t\t\t");
scanf("%d",&h);
switch(h)
{
case 1:xiugai();
case 2:system("cls");main();
}
case 5:system("cls");printf("请输入修改后的语文成绩:\n");
getchar();
scanf("%d",&f);
stu[i].chinese=f;
save();system("cls");
printf("\n\n\n\n\n\n\n\n\t\t\t是否继续修改?\n\t\t\t是请输入1 否请输入2\n\t\t\t");
scanf("%d",&h);
switch(h)
{
case 1:xiugai();
case 2:system("cls");main();
}
case 6:system("cls");printf("请输入修改后的英语成绩:\n");
getchar();
scanf("%d",&g);
stu[i].english=g;
save();system("cls");
printf("\n\n\n\n\n\n\n\n\t\t\t是否继续修改?\n\t\t\t是请输入1 否请输入2\n\t\t\t");
scanf("%d",&h);
switch(h)
{
case 1:xiugai();
case 2:system("cls");main();
}
case 0:getch();system("cls");main(); }
}

return 0;
}

void tuichu()
{
system("cls");
printf("\n\n\n\n\n\n\n\n\t\t\t是否退出系统?<y/n>\n\n\t\t\t");
if(getch()=='y'||getch()=='Y')
{exit(0);}
else
{system("cls");
main();}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-27
不用限制编多少行程序,实现功能就行,要有创新,得分就会高!
这个C语言的课程设计很重要的,请学弟认真对待,我西安理工2010届的,毕业了啊。祝你学业有成!好运!呵呵
第2个回答  2011-06-27
你好 我是负责课程设计的老师 所有任务请独立完成 不要尝试抄袭 一经发现 一律不及格
第3个回答  2011-06-28
哈哈!!! 哈哈!!!
我有,你们老师好逗啊....
相似回答