未提示输入学生人数;反复重复功能1
代码如下:#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define len sizeof (struct student)
#define N 30
typedef struct student
{
char number;
char name[20];
int score[10];
int total;
}student;
void menu();
void add(student stu[],int i,int m); //添加
void output(student stu[],int i,int m); //浏览
void search_by_number(student stu[],int i,int m); //按学号查询信息
void search_by_name(student stu[],int i,int m); //按姓名查询信息
void sortjiang_by_total(student stu[],int i,int m); //按总分降序
void sort_by_name(student stu[],int i,int m); //按姓名排序
void deleted_by_number(student stu[],int i,int m); //给定学号,删除该学生信息
void change_by_number(student stu[],int i,int m); //给定学号,修改该学生信息
void sortsheng_by_total(student stu[],int i,int m); //按总分升序
//主函数
int main()
{
int q,w,m; //记录用户输入的功能选项,人数,科目数量
student stu[w];
int i,j,s; ////i、j作为学生人数和科目门数的循环变量,s为标记变量
P:menu();
printf ("请选择您所需要的功能:");
scanf ("%d",&q);
//查错
if (q<0||q>10)
{
do{
printf ("请输入正确的功能序号:") ;
scanf ("%d",&q);
}while (q<0||q>10);
}
if (q!=1)
{
do{
printf ("请先选择功能1录入学生信息:");
scanf ("%d",&q);
}while (q!=1);
}
if (q==0)
{
printf ("感谢您使用本系统!再见!");
exit(0);
}
switch (q)
{
case 0:
break;
case 1:
if(s==1) //首次录入信息
printf("请输入学生人数:");
scanf("%d",&w);
printf("请输入科目门数:");
scanf("%d",&m);
for(i=0;i<w;i++)
{ //循环录入学号和姓名
printf("请请输入学号,姓名,各科成绩:\n");
scanf("%d",&stu[i].number);
scanf("%s",stu[i].name);
for(j=0;j<m;j++)
{ //循环录入各科成绩
scanf("%d",&stu[i].score[j]);
}
}
printf("\n \n");
s=0; //记录首次录入信息完毕
goto P; //回到功能菜单
if(s==0)
{ //防止用户重复录入
do
{
printf("您已经录入过学生信息啦!\n");
printf("如想增加学生信息,请选择功能2!");
printf("\n \n");
}while(s!=1);
goto P;
}
case 2:
add(stu,i,m); //添加
i++;
printf ("\n \n");
goto P;
case 3:
output(stu,i,m); //浏览
printf ("\n \n");
goto P;
case 4:
search_by_number(stu,i,m); //按学号查询
printf ("\n \n");
goto P;
case 5:
search_by_name(stu,i,m); //按姓名查询
printf ("\n \n");
goto P;
case 6:
sortjiang_by_total(stu,i,m); //按总分降序
printf ("\n \n");
goto P;
case 7:
sort_by_name(stu,i,m); //按姓名排序
printf ("\n \n");
goto P;
case 8:
deleted_by_number(stu,i,m); //给定学号,删除该学生信息
printf ("\n \n");
goto P;
case 9:
change_by_number(stu,i,m); //给定学号,修改该学生信息
printf ("\n \n");
goto P;
case 10:
sortsheng_by_total(stu,i,m); //按总分升序
printf ("\n \n");
goto P;
}
return 0;
}
void menu()
{
printf("欢迎登录学生信息管理系统,请选择:\n");
printf("1.初次录入学生信息\n");
printf("2.增加一名学生的信息\n");
printf("3.学生信息浏览\n");
printf("4.信息查询(按学号查)\n");
printf("5.信息查询(按姓名查)\n");
printf("6.信息排序(按总分降序)\n");
printf("7。信息排序(按姓名排序) \n");
printf("8.信息删除(给定学号,删除该学生信息)\n");
printf("9.信息修改(给定学号,修改该学生信息)\n");
printf("10.信息排序(按学号升序)\n");
printf("0.退出\n");
}
void add(student stu[],int i,int m) //添加
{
int j;
printf("请输入所添加学生的学号,姓名,各科成绩:\n");
scanf ("%d",&stu[i].number);
scanf ("%s",&stu[i].name);
for(j=0;j<m;j++)
{
scanf ("%f",&stu[i].score[j]);
}
system("pause");
}
void output(student stu[],int i,int m) //浏览
{
int j,r;
for (j=0;j<i;j++)
{
printf ("%d %s",&stu[j].number,&stu[j].name);
for (r=0;r<m;r++)
{
printf ("%d",&stu[j].score[r]);
}
printf ("\n");
}
system("pause");
}
void search_by_number(student stu[],int i,int m) //按学号查询信息
{
int t,j,y=1;
int number;
printf ("请输入您所要查询的学号:");
scanf ("%d",&number);
for (t=0;t<i;t++)
{
if (number==stu[t].number)
{
y=0;
printf ("%d %s",&stu[t].number,&stu[t].name);
for (j=0;j<m;j++)
{
printf ("%d",&stu[t].score[j]);
}
printf ("\n");
}
}
if (y==1)
{
printf ("查无信息!");
}
system("pause");
}
void search_by_name(student stu[],int i,int m) //按姓名查询信息
{
int t,j,y=1;
char name;
printf ("请输入您所要查询的姓名:");
scanf ("%d",&name);
for (t=0;t<i;t++)
{
if (name==stu[t].name[i])
{
y=0;
printf ("%d %s",&stu[t].number,&stu[t].name);
for (j=0;j<m;j++)
{
printf ("%d",&stu[t].score[j]);
}
printf ("\n");
}
}
if (y==1)
{
printf ("查无此人!");
}
system("pause");
}
void sortjiang_by_total(student stu[],int i,int m) //按总分降序
{
student temp;
int o,k;
if(m==-1)
{
for(o=0;o<i;o++)
{
for(k=o+1;k<i;k++)
{
if(stu[k].total>stu[o].total)
{
temp=stu[k];
stu[k]=stu[o];
stu[o]=temp;
}
}
}
for(o=0;o<i;o++)
{
printf("%s ",stu[o].name);
printf("%d\n",stu[o].total);
}
}
else
{
for(o=0;o<i;o++)
{
for(k=o+1;k<i;k++)
{
if(stu[k].number>stu[o].number)
{
temp=stu[k];
stu[k]=stu[o];
stu[o]=temp;
}
}
}
for(o=0;o<i;o++)
{
printf("%s ",stu[o].name);
printf("%d\n",stu[o].number);
}
}
system("pause");
}
void sort_by_name(student stu[],int i,int m) //按姓名排序
{
int j,h,w;
char k[20];
for(i=0; i<w; i++)
{
scanf("%d\t\t%s\t\t",&stu[i].number,&stu[i].name);
for (h=0;h<m;h++)
{
scanf ("%d",&stu[i].score[j]);
}
}
strcpy(k,stu[0].name);
for(i=1; i<w; i++)
{
if(strcmp(k,stu[i].name)<0)
strcpy(k,stu[i].name);
}
j=k[i];
printf("%d\t\t%s\t\t",stu[j].number,stu[j].name);
for (h=0;h<m;h++)
{
scanf ("%d",&stu[j].score[h]);
}
system("pause");
}
void deleted_by_number(student stu[],int i,int m) //给定学号,删除该学生信息
{
int j,h,w,temp=0;
int c;
printf("请输入需要删除的学生信息的学号:\n");
scanf("%d",&c);
for(i=0; i<=w; i++)
{
if(stu[i].number==c)
{
temp=1;
for(j=i; j<w-1; j++)
{
stu[j]=stu[j+1];
}
}
}
if(temp==0)
printf("该学生不存在\n");
if(temp==1)
{
printf("删除成功\n");
w--;
for(i=0; i<w; i++)
{
printf("%d\t\t%s\t\t",stu[j].number,stu[j].name);
for (h=0;h<m;h++)
{
scanf ("%d",&stu[j].score[h]);
}
}
}
system("pause");
}
void change_by_number(student stu[],int i,int m) //给定学号,修改该学生信息
{
int c,h,w;
printf("请输入你要修改的学生的学号:");
scanf("%d",&c);
for(i=0;i<w;i++)
{
if(c==stu[i].number)
{
printf("请重新录入该学生信息\n");
scanf("%d\t\t%s\t\t",&stu[i].number,&stu[i].name);
for (h=0;h<m;h++)
{
scanf ("%d",&stu[i].score[h]);
}
}
}
system("pause");
}
void sortsheng_by_total(student stu[],int i,int m)
{
int a,c,j,n,z,k,S;
int sum[S];
int v;
student temp;
for(j=0;j<i;j++){
for(c=0;c<m;c++){
sum[j]+=stu[j].score[c];
}
}
for(n=0;n<i-1;n++){
for(k=n+1;k<i;k++){
if(sum[k]<sum[n]){
temp=stu[k];
stu[k]=stu[n];
stu[n]=temp;
v=sum[k];
sum[k]=sum[n];
sum[n]=v;
}
}
}
for(a=0;a<i;a++){
printf("%d\t\t%s\t\t",stu[a].number,stu[a].name);
for(z=0;z<m;z++){
printf("%d\t",stu[a].score[z]);
}
printf("总分%d\t\t",sum[a]);
printf("\n");
}
}
源代码有问题,死雄环。
给你修改位置,有问题可以问。
运行报了什么错误?没有正确输入功能号吗?