一道大一c语言课程设计的题目,求大神

功能:学生成绩管理系统,每个学生是一个记录,包括学号,姓名,性别,

3 门课程成绩。系统要求实现以下功能:

1、信息录入:录入学生成绩信息(包括学生学号、姓名、各门课

程的成绩等);

2、信息查询:输入学号,查询学生各门课程的成绩,并显示。

3、排序:按各门课程的成绩平均分进行排序,并显示。
4、信息删除与修改——输入学号,删除该学生的成绩信息。

分步实施:

1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函

数个数。

2、建立一个文件,将每位学生的信息写入文件中并能显示于屏幕

上。

3、完成上述信息查询(学生学号、姓名等)、排序、信息删除与

修改功能。

要求:1、用 C 语言实现程序设计; 2、利用结构体数组实现学生信息的保存; 3、系统的各个功能模块要求用函数的形式实现; 4、界面友好(良好的人机交互),程序加必要的注释。

课程设计烦死了,碰上个极品老师,讲的速度比别的班级要慢一半,啥都不会。网上拉也可以但是要和要求一样。求求打架了

免费给你一个,自己改改
#include <stdio.h>
#include <malloc.h>
#include <string.h>
struct Student
{
char xuehao[100];
char name[100];
char sex[100];
int age;
float score;

};
void menu(int *n)
{
printf("\t\t\t*********************************************\n");
printf("\t\t\t\t\t1.创建数据\n");
printf("\t\t\t\t\t2.添加数据\n");
printf("\t\t\t\t\t3.删除数据\n");
printf("\t\t\t\t\t4.查找数据\n");
printf("\t\t\t\t\t5.按成绩进行排序\n");
printf("\t\t\t\t\t6.退出\n");
printf("\t\t\t*********************************************\n");
printf("请输入数字1-6:");
scanf("%d",n);
}
void scanfstudent(struct Student * p,int len)//输入学生的信息 学号 姓名 性别 年龄 得分
{
int i;
for(i = 0; i < len; i++)
{
printf("请输入第%d学生的信息:\n",i+1);
printf("学号:");
scanf("%s",p[i].xuehao);
printf("姓名:");
scanf("%s",p[i].name);
printf("性别:");
scanf("%s",p[i].sex);
printf("年龄:");
scanf("%d",&p[i].age);
printf("得分:");
scanf("%f",&p[i].score);
printf("\n");
}

}

void printfstudent(struct Student *p,int len)//对学生的信息进行输出
{
int i;
printf("学号\t\t姓名\t\t性别\t\t年龄\t\t分数\n\n");

for (i = 0; i < len; i++)
{
printf("%s\t\t",p[i].xuehao);
printf("%s\t\t",p[i].name);
printf("%s\t\t",p[i].sex);
printf("%d\t\t",p[i].age);
printf("%.2f\n",p[i].score);

}
}
void createdata(struct Student *p,int *len)
{
int n;

printf("请输入要创建数组的长度:");
scanf("%d",&n);
scanfstudent(p,n);
*len = n;
printfstudent(p,*len);

}
void add(struct Student *p,int *len)//增加一个学生的信息。并且按照顺序排列
{
// int i,j;

//int pos = 0;
int c = 1;
while(c == 1)
{
int mylen = *len;
struct Student st;
printf("请输入要添加学生的信息:\n");
printf("学号:");
scanf("%s",st.xuehao);
printf("姓名:");
scanf("%s",st.name);
printf("性别:");
scanf("%s",st.sex);
printf("年龄:");
scanf("%d",&st.age);
printf("得分:");
scanf("%f",&st.score);
printf("\n");

p[mylen] = st;
*len = mylen+1;
printfstudent(p,*len);
printf("\n");
printf("是否继续添加?输入:\n1.继续\n2.退出\n");
scanf("%d",&c);
}
}
void Sort(struct Student *p,int len)//按照分数从大到小排列选择排序法
{
struct Student st;
int i,j;
for(i = 0; i < len - 1; i++)
{
for(j = i + 1 ; j < len; j++)
if(p[i].score < p[j].score)
{
st = p[i];
p[i] = p[j];
p[j] = st;

}
}
printfstudent(p,len);
}

/*if(myp->score >= p[0].score)//
{

for(i = mylen; i > 0 ; i--)
p[i] = p[i-1];
p[0] = *myp;

}
else if(myp->score <= p[mylen-1].score)
{
p[mylen] = *myp;
}
*/
//else
//{
/*for(i = 0; i < mylen; i++)
{
if(myp->score >= p[i].score)
break;
}
pos = i;
for(j = mylen; j > pos; j--)
{
p[j] = p[j-1];
}
p[pos] = *myp;

*len = mylen+1;

}*/
void del(struct Student *p,int *len)//删除学生的信息
{
int i,j;
char p1[1024];
int c = 1;
while(c == 1)
{
int mylen=*len;
printf("请输入要删除学生的学号:");
scanf("%s",p1);
for(i = 0; i < *len; i++)
{
if(strcmp(p[i].xuehao,p1)==0)
break;
}
if(i == 0)//删除的是第一个元素
{
for(j = 0; j < (*len)-1; j++)
p[j] = p[j+1];
}
else if(i>0 && i<(*len)-1)//删除中间的元素
{

for(j = i;j<(*len) -1;j++)
p[j] = p[j+1];

}
else if(i == (*len)-1)
;
else
printf("error,学号输入有误!\n");
*len =mylen-1;//数组长度减少一个
printfstudent(p,*len);
printf("\n");
printf("是否继续删除?输入:\n1.继续\n2.退出\n");
scanf("%d",&c);
}
}

void serch(struct Student *p,int len)//按学号或者姓名查找学生信息
{

int i,j;
int flat = 0;
char num[100];
char name1[100];
printf("请输入1或2,1按学号查找,2按姓名查找:");
scanf("%d",&i);

if(i == 1)
{
printf("请输入要查找的学号:");
scanf("%s",num);
for(j = 0; j <len; j++)
{
if(strcmp(p[j].xuehao,num) == 0)

{
flat ++;

break;
}

}
if(!flat)
{
printf("学号输入有误!\n");
}
else
{
printf("学号:%s,姓名:%s,性别:%s,年龄:%d,得分:%.2f\n",p[j].xuehao,p[j].name,p[j].sex,p[j].age,p[j].score);
}
}
else if(i == 2)
{
flat = 0;
printf("请输入要查找的姓名:");
scanf("%s",name1);
for(j = 0; j <len; j++)
{
if(strcmp(p[j].name,name1) == 0)
{
flat ++;
printf("学号:%s,姓名:%s,性别:%s,年龄:%d,得分:%.2f\n",p[j].xuehao,p[j].name,p[j].sex,p[j].age,p[j].score);
break;
}

}
if(!flat)
{
printf("姓名输入有误!\n");
}
}
}
/*int main(void)
{

int len;
int c;
// char c;
// char xuehao11[1024];
// struct Student *p;
//静态构造结构数组
struct Student p[1024];

printf("请输入学生的个数:");
scanf("%d",&len);

// p = (struct Student*)malloc(sizeof(struct Student)*len);动态构造一个结构数组

scanfstudent(p,len);
Sort(p,len);
printfstudent(p,len);
do
{
struct Student st;

printf("\n请输入增加的学生的信息:\n");
printf("学号:");
scanf("%s",st.xuehao);
printf("姓名:");
scanf("%s",st.name);
printf("性别:");
scanf("%s",st.sex);
printf("年龄:");
scanf("%d",&st.age);
printf("得分:");
scanf("%f",&st.score);

// serch(p,len);

printf("\n");
//printf("请输入要删除的学生的学号:");
printf("\n");
//scanf("%s",xuehao11);
add(p,&st,&len);
// del(p,xuehao11,&len);删除一个学生的信息
printfstudent(p,len);
printf("是否继续添加?\n1:是\n2不添加\n");
scanf("%d",&c);

}
while(c==1);

}*/
int main(void)
{
int n;
struct Student p[1024];
int len = 0;
while(1)
{
menu(&n);
switch(n)
{
case 1:createdata(p,&len);break;
case 2:add(p,&len);break;
case 3:del(p,&len);break;
case 4:serch(p,len);break;
case 5:Sort(p,len);break;
case 6:printf("谢谢您的使用!\n\n");break;
default:printf("输入有误重新输入!\n\n");break;
}
if(n == 6)
break;
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-08
ok,这个我就可以写的哦,这俺会
第2个回答  2018-02-28
写c语言的来了
相似回答