C语言课程设计 学生成绩管理系统
1、用C语言实现系统;
2、对学生信息(包括学号、姓名、语文、数学、英语、平均分、总分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出。
3、要求设计的管理系统能够完成以下功能:
(1) 每一条记录包括一个学生的学号、姓名、3门课成绩、平均分、总分
(2) 学生信息录入功能:完成学生记录的添加。
(3) 学生信息显示浏览功能:完成全部学生记录的显示。
(4) 查询功能:完成按姓名查找学生记录,并显示。
(5) 成绩信息的删除:按学号进行删除某学生的成绩.
(6) 排序功能:按学生平均成绩进行排序。
(7) 统计功能:能进行成绩统计。 、
(8) 应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!
急急急 vc++6.0可运行
注意:是C程序,不是C++
补充:功能要全,符合题意最佳答案
#include "stdio.h"
#include "conio.h"
#define M 100
#define N 10
#define NU 20
#include<stdio.h>
#include<string.h>
typedef struct stu
{ int xuehao;
char name[N];
char sex[N];
int eng,math,ds;
char jianjie[NU];
}stu;
typedef struct student
{stu data[M];
int len;
}student;
/*1信息输入*/
student createdatabase( )
{ student L;
int i;
printf("请输入要创建的学生总数\n");
scanf("%d",&L.len);
for(i=1;i<=L.len;i++)
{ printf("第 %d 个学生的基本信息\n",i);
printf("请输入学号\n");
scanf("%d",&L.data[i-1].xuehao);
printf("请输入姓名\n");
scanf("%s",L.data[i-1].name);
printf("请输入性别\n");
scanf("%s",L.data[i-1].sex);
printf("请输入英语成绩\n");
scanf("%d",&L.data[i-1].eng);
printf("请输入数学成绩\n");
scanf("%d",&L.data[i-1].math);
printf("请输入数据结构成绩\n");
scanf("%d",&L.data[i-1].ds);
printf("请输入注释\n");
scanf("%s",L.data[i-1].jianjie);
}
return L;
}
/*2信息输出*/
void out(student L)
{int i;
printf(" 学号 姓名 性别 英语 数学 数据结构 注释 \n");
for(i=1;i<=L.len;i++)
{printf(" %d\t ",L.data[i-1].xuehao);
printf("%s\t ",L.data[i-1].name);
printf("%s\t",L.data[i-1].sex);
printf("%d\t",L.data[i-1].eng);
printf("%d\t",L.data[i-1].math);
printf("%d\t ",L.data[i-1].ds);
printf("%s \n",L.data[i-1].jianjie);
}
}
/*3按照姓名查找学生*/
void search_name(student L)
{
int j=1;
char n[N];
printf("输入要查询的姓名:\n");
scanf("%s",n);
while(strcmp(L.data[j-1].name,n)&&j<=L.len)
j++;
if(strcmp(L.data[j-1].name,n)==0)
{
printf("%d ",L.data[j-1].xuehao);
printf("%s ",L.data[j-1].name);
printf("%s ",L.data[j-1].sex);
printf("%d ",L.data[j-1].eng);
printf("%d ",L.data[j-1].math);
printf("%d ",L.data[j-1].ds);
printf("%s \n",L.data[j-1].jianjie);
}
else
printf("没有此学生!");
}
/*4按照学号查找学生*/
void search_no(student L)
{
int j=1;
int n;
printf("输入要查询的学号:\n");
scanf("%d",&n);
while(L.data[j-1].xuehao!=n&&j<=L.len)
j++;
if(L.data[j-1].xuehao==n)
{
printf("%d ",L.data[j-1].xuehao);
printf("%s ",L.data[j-1].name);
printf("%s ",L.data[j-1].sex);
printf("%d ",L.data[j-1].eng);
printf("%d ",L.data[j-1].math);
printf("%d ",L.data[j-1].ds);
printf("%s \n",L.data[j-1].jianjie);
}
else
printf("没有此学生!");
}
void search(student L)
{
int c;
printf("\n1:查询学号 ");
printf("2:查询姓名 ");
printf("3:退出\n");
printf("\n选择:");
scanf("\n%d",&c);
switch(c)
{
case 1:search_no(L);break;
case 2:search_name(L);break;
case 3:break;
default:printf("输入有错!\n");
}
}
/*5按照学号更新学生信息*/
student update_no(student L)
{
int i=1;
int n;
printf("输入要更新的学生的学号:\n");
scanf("%d",&n);
while(L.data[i-1].xuehao!=n&&i<=L.len)
i++;
if(L.data[i-1].xuehao==n)
{printf("请输入要修改的学生的基本信息\n");
printf("请输入英语成绩\n");
scanf("%d",&L.data[i-1].eng);
printf("请输入数学成绩\n");
scanf("%d",&L.data[i-1].math);
printf("请输入数据结构成绩\n");
scanf("%d",&L.data[i-1].ds);
printf("请输入注释\n");
scanf("%s",L.data[i-1].jianjie);
}
return L;
}
/*6按照姓名更新学生信息*/
student update_name(student L)
{
int i=1;
char n[N];
printf("输入要更新的姓名:\n");
scanf("%s",n);
while(strcmp(L.data[i-1].name,n)&&i<=L.len)
i++;
if(strcmp(L.data[i-1].name,n)==0)
{ printf("请输入要修改的学生的基本信息\n");
printf("请输入英语成绩\n");
scanf("%d",&L.data[i-1].eng);
printf("请输入数学成绩\n");
scanf("%d",&L.data[i-1].math);
printf("请输入数据结构成绩\n");
scanf("%d",&L.data[i-1].ds);
printf("请输入注释\n");
scanf("%s",L.data[i-1].jianjie);
}
return L;
}
student update(student L)
{
int c;
printf("\n1:按照学号查找并更新学生成绩 ");
printf("2:按照姓名查找并更新学生成绩 ");
printf("3:退出\n");
printf("\n选择:");
scanf("\n%d",&c);
switch(c)
{
case 1:L=update_no(L);break;
case 2:L=update_name(L);break;
case 3:break;
default:printf("输入有错!\n");
}
return L;
}
/*7学号是否存,寻找插入位置 */
int isnu(student L,int n)
{ int i=1;
while(L.data[i-1].xuehao!=n&&i<=L.len)
i++;
if(i>L.len)
return L.len;
else
return -1;
}
/*8插入一个新学生的信息*/
student insert(student L)
{ int n,x;
printf("请输入该学生的学号:\n");
scanf("%d",&n);
x=isnu(L,n);
if(x>0)
{ L.data[x].xuehao=n;
printf("请输入学生的基本信息\n");
printf("请输入姓名\n");
scanf("%s",L.data[x].name);
printf("请输入性别\n");
scanf("%s",L.data[x].sex);
printf("请输入英语成绩\n");
scanf("%d",&L.data[x].eng);
printf("请输入数学成绩\n");
scanf("%d",&L.data[x].math);
printf("请输入数据结构成绩\n");
scanf("%d",&L.data[x].ds);
printf("请输入注释\n");
scanf("%s",L.data[x].jianjie);
L.len++;}
else
printf("请重新输入该学生的学号:\n");
return L;
}
/*9查找要删畴的学生的学号*/
int isnuo(student L,int n)
{ int i=1;
while(L.data[i-1].xuehao!=n&&i<=L.len)
i++;
if(i>L.len)
return -1;
else
return i;
}
/*9删畴一个学生的信息*/
student delete1(student L)
{ int n,x,j;
printf("请输入要删除该学生的学号:\n");
scanf("%d",&n);
x=isnuo(L,n);
if(x>0)
{ for(j=x+1;j<=L.len;j++)
{ L.data[j-2].xuehao=L.data[j-1].xuehao;
strcpy(L.data[j-2].name,L.data[j-1].name);
strcpy(L.data[j-2].sex,L.data[j-1].sex);
L.data[j-2].eng=L.data[j-1].eng;
L.data[j-2].math=L.data[j-1].math;
L.data[j-2].ds=L.data[j-1].ds;
strcpy(L.data[j-2].jianjie,L.data[j-1].jianjie);
}
L.len--;}
return L;
}
/*10将学生按照科目进行排序*/
student sort1(student L)
{ int j; stu x; int i;
for(j=2;j<=L.len;j++)
{ x.xuehao=L.data[j-1].xuehao;
strcpy(x.name,L.data[j-1].name);
strcpy(x.sex,L.data[j-1].sex);
x.eng=L.data[j-1].eng;
x.math=L.data[j-1].math;
x.ds=L.data[j-1].ds;
strcpy(x.jianjie,L.data[j-1].jianjie);
i=j-1;
while((i>=1)&&(L.data[i-1].eng>=x.eng))
{L.data[i].xuehao=L.data[i-1].xuehao;
strcpy(L.data[i].name,L.data[i-1].name);
strcpy(L.data[i].sex,L.data[i-1].sex);
L.data[i].eng=L.data[i-1].eng;
L.data[i].math=L.data[i-1].math;
L.data[i].ds=L.data[i-1].ds;
strcpy(L.data[i].jianjie,L.data[i-1].jianjie);
i--;
}
L.data[i].xuehao=x.xuehao;
strcpy(L.data[i].name,x.name);
strcpy(L.data[i].sex,x.sex);
L.data[i].eng=x.eng;
L.data[i].math=x.math;
L.data[i].ds=x.ds;
strcpy(L.data[i].jianjie,x.jianjie);
}
return L;
}
student sort2(student L )
{ int j; stu x; int i;
for(j=2;j<=L.len;j++)
{ x.xuehao=L.data[j-1].xuehao;
strcpy(x.name,L.data[j-1].name);
strcpy(x.sex,L.data[j-1].sex);
x.eng=L.data[j-1].eng;
x.math=L.data[j-1].math;
x.ds=L.data[j-1].ds;
strcpy(x.jianjie,L.data[j-1].jianjie);
i=j-1;
while((i>=1)&&(L.data[i-1].math>=x.math))
{L.data[i].xuehao=L.data[i-1].xuehao;
strcpy(L.data[i].name,L.data[i-1].name);
strcpy(L.data[i].sex,L.data[i-1].sex);
L.data[i].eng=L.data[i-1].eng;
L.data[i].math=L.data[i-1].math;
L.data[i].ds=L.data[i-1].ds;
strcpy(L.data[i].jianjie,L.data[i-1].jianjie);
i--;
}
L.data[i].xuehao=x.xuehao;
strcpy(L.data[i].name,x.name);
strcpy(L.data[i].sex,x.sex);
L.data[i].eng=x.eng;
L.data[i].math=x.math;
L.data[i].ds=x.ds;
strcpy(L.data[i].jianjie,x.jianjie);
}
return L;
}
student sort3(student L)
{ int j; stu x; int i;
for(j=2;j<=L.len;j++)
{ x.xuehao=L.data[j-1].xuehao;
strcpy(x.name,L.data[j-1].name);
strcpy(x.sex,L.data[j-1].sex);
x.eng=L.data[j-1].eng;
x.math=L.data[j-1].math;
x.ds=L.data[j-1].ds;
strcpy(x.jianjie,L.data[j-1].jianjie);
i=j-1;
while((i>=1)&&(L.data[i-1].ds>=x.ds))
{
L.data[i].xuehao=L.data[i-1].xuehao;
strcpy(L.data[i].name,L.data[i-1].name);
strcpy(L.data[i].sex,L.data[i-1].sex);
L.data[i].eng=L.data[i-1].eng;
L.data[i].math=L.data[i-1].math;
L.data[i].ds=L.data[i-1].ds;
strcpy(L.data[i].jianjie,L.data[i-1].jianjie);
i--;
}
L.data[i].xuehao=x.xuehao;
strcpy(L.data[i].name,x.name);
strcpy(L.data[i].sex,x.sex);
L.data[i].eng=x.eng;
L.data[i].math=x.math;
L.data[i].ds=x.ds;
strcpy(L.data[i].jianjie,x.jianjie);
}
return L;
}
/*11选择科目排序*/
choice(student L)
{ int n; student L1;
printf("请输入要选择的科目序号:\n");
printf("1. 英语\t 2. 数学 \t 3.数据结构 \t 4.退出\n");
scanf("\n%d",&n);
switch(n)
{ case 1:L1=sort1(L);out(L1);break;
case 2:L1=sort2(L);out(L1);break;
case 3:L1=sort3(L);out(L1);break;
case 4:break;
default:printf("输入有错!\n");
}
}
void main()
{ student L,L1,L2,L3; int n;
L=createdatabase( );
out( L);
search(L);
choice(L);
L1=delete1(L);
out(L1);
L2=insert(L);
out(L2);
L3=update(L);
out( L3);
getch();
}
追问:
这个程序并不符合题意 追答:
把数据结构改为语文即可,修改量不大,你自己修改吧
追问:
平均分,排序,统计功能都没有
没看完程序吧,怎说没有排序?至于平均分在结构里增加一个域即可。 /*10将学生按照科目进行排序*//*11选择科目排序*/"1. 英语\t 2. 数学 \t 3.数据结构
其他回答
暂无其它回答!