完成学生信息系统的项目开发,要求实现学生信息的录入、查询、修改、排序和统计等主要功能。

用C语言实现啊用数组指针来实现~~完成好的追加分啊.......这两天有效完成可发到我邮箱:no._23@163.com111.obj-1error(s),0warnin... 用C语言实现啊

用数组 指针来实现~~
完成好的追加分啊.......
这两天有效
完成可发到我邮箱:no._23@163.com
111.obj - 1 error(s), 0 warning(s)
展开
 我来答
希声和寡
2008-12-26 · TA获得超过2.6万个赞
知道大有可为答主
回答量:6437
采纳率:0%
帮助的人:3522万
展开全部
已经编译运行通过:

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "conio.h"

struct subject{ //科目信息结构体
float Chinese; //语文
float Math; //数学
float English; //英语
};

struct student{
int no; //学号
char name[20]; //姓名
char sex; //性别
char address[20]; //地址
char telephone[20];//电话
subject score; //3门科目的成绩
float avg; //3门平均成绩
}stud[50]; //结构体数组

int count=0; //计数变量,记录学生人数

void add(){ //增加学生信息函数
student a; //临时结构体变量a
char x,j; //Yes or No输入字符变量

//循环输入学生信息
for(int i=0;i<50;i++){
system("cls"); //清屏函数
int t=0;
printf("请输入学生的学号:");
scanf("%d",&a.no);

//寻找学号是否已存在
for(int k=0;k<count;k++){
if(stud[k].no==a.no){
t=1;
}
}

//存在与否,分别输出
if(t==1)
printf("输入的学号已存在,请重新输入\n");
else{
printf("请输入学生的姓名:");
scanf("%s",a.name);
printf("请输入学生的性别(m代表男,f代表女):");
scanf("%c",&a.sex);
scanf("%c",&a.sex);
printf("请输入学生的地址:");
scanf("%s",a.address);
printf("请输入学生的电话:");
scanf("%s",a.telephone);
printf("请输入学生的语文成绩:");
scanf("%f",&a.score.Chinese);
printf("请输入学生的数学成绩:");
scanf("%f",&a.score.Math);
printf("请输入学生的英语成绩:");
scanf("%f",&a.score.English);
a.avg=(a.score.Chinese+a.score.English+a.score.Math)/3;

//判定是否要增加该记录
printf("确定要增加该记录吗?(y/n)");
scanf("%c",&x);
scanf("%c",&x);
if(x=='y'){
stud[count]=a;
count++;
}
}

//判定是否要继续增加记录
printf("要继续增加记录吗?(y/n)");
scanf("%c",&j);
scanf("%c",&j);
if(j=='n')
break;
}
printf("\n按任意键返回主菜单:");
getch(); //从键盘接收任意一个字符就返回
}

void show(){ //显示所有学生信息函数
system("cls");
//循环显示
for(int i=0;i<count;i++){
printf("学号:%-8d姓名:%-16s性别:%c\n",stud[i].no,stud[i].name,stud[i].sex);
printf("地址:%s\n电话:%s\n",stud[i].address,stud[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[i].score.Chinese,
stud[i].score.Math,stud[i].score.English,stud[i].avg);
printf("---------------------------------------------------------------------\n");
}
printf("\n按任意键返回主菜单:");
getch();
}

void sort(){ //根据学生的学号由小到大进行排序
system("cls");
//冒泡排序法
for(int i=0;i<count-1;i++){
for(int j=0;j<count-1-i;j++){
if(stud[j].no>stud[j+1].no){
student t=stud[j];
stud[j]=stud[j+1];
stud[j+1]=t;
}
}
}
printf("排序已完成,按任意键返回主菜单:");
getch();
}

void query1(){ //根据学号查询并显示单个学生信息
int x; //输入学生学号整型变量
char k; //Yes or No输入字符变量
while(true){
system("cls");
int t=-1; //要查询的学生学号所对应的数组下标,-1代表在数组中没对应下标
printf("请输入要查询的学生学号:");
scanf("%d",&x);

//循环寻找结构体数组中符合变量x的数据,并把该数据所在的下标值赋给变量t
for(int i=0;i<count;i++){
if(stud[i].no==x)
t=i;
}

//判定信息是否存在,分别输出
if(t==-1)
printf("您所查询的学生信息不存在,");
else{
printf("学号:%-8d姓名:%-16s性别:%c\n",stud[t].no,stud[t].name,stud[t].sex);
printf("地址:%s\n电话:%s\n",stud[t].address,stud[t].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[t].score.Chinese,
stud[t].score.Math,stud[t].score.English,stud[t].avg);
printf("---------------------------------------------------------------------\n");
}

//判定是否要继续查询
printf("是否继续查询?(y/n)");
scanf("%c",&k);
scanf("%c",&k);
if(k=='n')
break;
}
printf("\n按任意键返回主菜单:");
getch();
}

void query2(){ //根据姓名查询并显示单个学生信息
char x[20]; //输入学生姓名字符串变量
char k; //Yes or No输入字符变量
while(true){
system("cls");
student a[50]; //要查询的学生姓名所对应的数组下标,-1代表在数组中没对应下标
int t=0;
printf("请输入要查询的学生姓名:");
scanf("%s",x);

//循环寻找结构体数组中符合变量x的数据,并把该数据所在的下标值赋给变量t
for(int i=0;i<count;i++){
if(strcmp(stud[i].name,x)==0){
a[t]=stud[i];
t++;
}
}

//判定信息是否存在,分别输出
if(t==0)
printf("您所查询的学生信息不存在,");
else{
for(int i=0;i<t;i++){
printf("学号:%-8d姓名:%-16s性别:%c\n",a[i].no,a[i].name,a[i].sex);
printf("地址:%s\n电话:%s\n",a[i].address,a[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",a[i].score.Chinese,
a[i].score.Math,a[i].score.English,a[i].avg);
printf("---------------------------------------------------------------------\n");
}
}

//判定是否要继续查询
printf("是否继续查询?(y/n)");
scanf("%c",&k);
scanf("%c",&k);
if(k=='n')
break;
}
printf("\n按任意键返回主菜单:");
getch();
}

void good(){ //显示平均成绩和单科成绩最高的学生资料
int i=0;
system("cls");

//寻找平均成绩中的最高值
float max1=stud[0].avg;
for(i=1;i<count;i++)
if(stud[i].avg>max1)
max1=stud[i].avg;

//输出平均成绩中最高值的学生信息
for(i=0;i<count;i++){
if(max1==stud[i].avg){
printf("平均成绩最高的学生信息:\n\n");
printf("学号:%-8d姓名:%-16s性别:%c\n",stud[i].no,stud[i].name,stud[i].sex);
printf("地址:%s\n电话:%s\n",stud[i].address,stud[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[i].score.Chinese,
stud[i].score.Math,stud[i].score.English,stud[i].avg);
printf("---------------------------------------------------------------------\n");
}
}

//寻找语文成绩中的最高值
float max2=stud[0].score.Chinese;
for(i=1;i<count;i++)
if(stud[i].score.Chinese>max2)
max2=stud[i].score.Chinese;

//输出语文成绩中最高值的学生信息
for(i=0;i<count;i++){
if(max2==stud[i].score.Chinese){
printf("语文成绩最高的学生信息:\n\n");
printf("学号:%-8d姓名:%-16s性别:%c\n",stud[i].no,stud[i].name,stud[i].sex);
printf("地址:%s\n电话:%s\n",stud[i].address,stud[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[i].score.Chinese,
stud[i].score.Math,stud[i].score.English,stud[i].avg);
printf("---------------------------------------------------------------------\n");
}
}

//寻找数学成绩中的最高值
float max3=stud[0].score.Math;
for(i=1;i<count;i++)
if(stud[i].score.Math>max3)
max3=stud[i].score.Math;

//输出数学成绩中最高值的学生信息
for(i=0;i<count;i++){
if(max3==stud[i].score.Math){
printf("数学成绩最高的学生信息:\n\n");
printf("学号:%-8d姓名:%-16s性别:%c\n",stud[i].no,stud[i].name,stud[i].sex);
printf("地址:%s\n电话:%s\n",stud[i].address,stud[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[i].score.Chinese,
stud[i].score.Math,stud[i].score.English,stud[i].avg);
printf("---------------------------------------------------------------------\n");
}
}

//寻找英语成绩中的最高值
float max4=stud[0].score.English;
for(i=1;i<count;i++)
if(stud[i].score.English>max4)
max4=stud[i].score.English;

//输出英语成绩中最高值的学生信息
for(i=0;i<count;i++){
if(max4==stud[i].score.English){
printf("英语成绩最高的学生信息:\n\n");
printf("学号:%-8d姓名:%-16s性别:%c\n",stud[i].no,stud[i].name,stud[i].sex);
printf("地址:%s\n电话:%s\n",stud[i].address,stud[i].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[i].score.Chinese,
stud[i].score.Math,stud[i].score.English,stud[i].avg);
printf("---------------------------------------------------------------------\n");
}
}
printf("\n按任意键返回主菜单:");
getch();
}

void update(){
int x; //输入学生学号整型变量
student a; //临时结构体变量a
char k,j; //Yes or No输入字符变量

while(true){
system("cls");
int t=-1; //要查询的学生学号所对应的数组下标,-1代表在数组中没对应下标
printf("请输入要修改的学生学号:");
scanf("%d",&x);

//循环寻找结构体数组中符合变量x的数据,并把该数据所在的下标值赋给变量t
for(int i=0;i<count;i++){
if(stud[i].no==x)
t=i;
}

//判定信息是否存在,分别输出
if(t==-1)
printf("您所要修改的学生信息不存在,");
else{
//输出要修改学生的原信息
printf("学号:%-8d姓名:%-16s性别:%c\n",stud[t].no,stud[t].name,stud[t].sex);
printf("地址:%s\n电话:%s\n",stud[t].address,stud[t].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[t].score.Chinese,
stud[t].score.Math,stud[t].score.English,stud[t].avg);
printf("---------------------------------------------------------------------\n");

//判定是否要修改
printf("确定要修改该记录吗?(y/n)");
scanf("%c",&k);
scanf("%c",&k);

//确定要修改后,输入新信息
if(k=='y'){
printf("请输入新的学生的学号:");
scanf("%d",&a.no);
printf("请输入新的学生的姓名:");
scanf("%s",a.name);
printf("请输入新的学生的性别:");
scanf("%c",&a.sex);
scanf("%c",&a.sex);
printf("请输入新的学生的地址:");
scanf("%s",a.address);
printf("请输入新的学生的电话:");
scanf("%s",a.telephone);
printf("请输入新的学生的语文成绩:");
scanf("%f",&a.score.Chinese);
printf("请输入新的学生的数学成绩:");
scanf("%f",&a.score.Math);
printf("请输入新的学生的英语成绩:");
scanf("%f",&a.score.English);
a.avg=(a.score.Chinese+a.score.English+a.score.Math)/3;
stud[t]=a;
printf("修改成功,");
}
}

//判定是否继续
printf("是否继续修改?(y/n)");
scanf("%c",&j);
scanf("%c",&j);
if(j=='n')
break;
}
printf("\n按任意键返回主菜单:");
getch();
}

void del(){
int x; //输入学生学号整型变量
char k,j; //Yes or No输入字符变量
while(true){
system("cls");
int t=-1; //要查询的学生学号所对应的数组下标,-1代表在数组中没对应下标
printf("请输入要删除的学生学号:");
scanf("%d",&x);

//循环寻找结构体数组中符合变量x的数据,并把该数据所在的下标值赋给变量t
for(int i=0;i<count;i++){
if(stud[i].no==x)
t=i;
}

//判定信息是否存在,分别输出
if(t==-1)
printf("您所要删除的学生信息不存在,");
else{
//输出要删除学生的原信息
printf("学号:%-8d姓名:%-16s性别:%c\n",stud[t].no,stud[t].name,stud[t].sex);
printf("地址:%s\n电话:%s\n",stud[t].address,stud[t].telephone);
printf("语文成绩:%-8.1f数学成绩:%-8.1f英语成绩:%-8.1f平均成绩:%.1f\n",stud[t].score.Chinese,
stud[t].score.Math,stud[t].score.English,stud[t].avg);
printf("---------------------------------------------------------------------\n");

//判定是否删除
printf("确认要删除吗?(y/n)");
scanf("%c",&k);
scanf("%c",&k);

//确定要删除后,删除该信息
if(k=='y'){
for(int i=t;i<count-1;i++)
stud[i]=stud[i+1];
printf("删除成功,");
count--;
}
}

//判定是否继续
printf("是否继续删除?(y/n)");
scanf("%c",&j);
scanf("%c",&j);
if(j=='n')
break;
}
printf("\n按任意键返回主菜单:");
getch();
}

void grt(){
system("cls");
printf("\n按任意键返回主菜单:");
getch();
}

void grt1()
{
int choice=0; //保存用户输入的选择项
do{
system("cls"); //清屏函数
printf("\t----------------学生信息管理系统----------------\n\n");
printf("\t\t在菜单中选择以下的操作类型\n");
printf("\t\t1.增加记录\n\t\t2.显示所有学生信息\n\t\t3.信息排序\n\t\t4.根据学号查询单个学生信息\n\t\t5.根据姓名查询单个学生信息\n");
printf("\t\t6.平均成绩和单科成绩最高的学生资料\n\t\t7.修改记录\n\t\t8.删除记录\n\t\t9.退出程序\n\t\t0.制作人\n");
printf("\t\t请输入你的选择:");
scanf("%d",&choice);
switch(choice)
{
case 1:
add();
break;
case 2:
show();
break;
case 3:
sort();
break;
case 4:
query1();
break;
case 5:
query2();
break;
case 6:
good();
break;
case 7:
update();
break;
case 8:
del();
break;
case 0:
grt();
break;
}
}while(choice!=9);
}

void main()
{
char x[10];
printf("\t----------------学生信息管理系统----------------\n\n");
grt1();

}
融融果冰
2008-12-26 · TA获得超过723个赞
知道答主
回答量:189
采纳率:0%
帮助的人:0
展开全部
无聊..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式