文档库 最新最全的文档下载
当前位置:文档库 › C语言写的实例,案例,学生成绩管理系统

C语言写的实例,案例,学生成绩管理系统

#include
#include

int Judge();
void menu();
int* Input(int *len);
void Output(int *p ,int length);
void Search(int *p,int length);
int* Insert (int *p,int *len);
void Exchange(int *p,int length);
int* Delete(int *p,int *len);
void sort(int *p,int length);

void main()
{
int select;
int length;
int *score,*len;
len = &length;
do
{
menu();
printf("******提示:请输入你的选择:******");
scanf("%d",&select);
switch(select)
{
case 0 : printf("******提示:欢迎使用该系统,谢谢!******\n");
exit(0);
case 1 : score = Input(len);
break;
case 2 : Output(score,length);
break;
case 3 : Search(score,length);
break;
case 4 : score = Insert(score,len);
break;
case 5 : Exchange(score,length);
break;
case 6 : score = Delete(score,len);
break;
default: printf("******提示:你输入的选项不存在,请认真输入******\n");
}
system("pause");
system("cls");
}while(1);
}

//主菜单

void menu()
{
printf("******************学生成绩管理系统******************\n");
printf("*********************1.成绩录入*********************\n");
printf("*********************2.打印成绩*********************\n");
printf("*********************3.查找成绩*********************\n");
printf("*********************4.增加成绩*********************\n");
printf("*********************5.修改成绩*********************\n");
printf("*********************6.删除成绩*********************\n");
printf("*********************0.退出系统*********************\n");
}

// 录入成绩

int* Input (int *len)
{
int i;
int *p;
do
{
printf("*******提示:请输入学生人数:******");
scanf("%d",len);
if(*len>0){
break;
}
else
{
printf("******提示: 你输入的学生人数不正确,请重新输入:*****\n");
}
} while(1);
p = (int* )malloc((*len)*sizeof(int));
for (i = 0;i<*len;i++)
{
printf("******提示: 请输入第%d个学生的成绩:****\n",i+1);
scanf("%d",p+i);
}
printf("\n******提示:录入学生成绩完成:*******\n");
// 排序
sort(p,*len);
return p;
}

// 打印成绩

void Output(int *p ,int length)
{
int *q;
q = p;

for (q ;q{
printf("%4d",*q);
}
}

//查找成绩

void Search(int *p,int length)
{
int i;
int num ;
int m ;
do
{
printf("******提示:请输入要查询的分数:******");
scanf("%d",&num);
m = -1;
for (i = 0;i{
if (*(p+i) == num)
{
m = i;
break;
}
}
if (m == -1)
{
printf("******提示:对不起,你输入的数没有找到:******\n");
}
else
{
printf("******提示,你好,你要查找的数在第%d位:******\n",i+1);
}
} while(Judge());


}

// 增加成绩

int* Insert (int *p,int *len)
{
int scores;
int insertIndex;
int *q;
int i,j;
do
{
printf("******请输入你要插入的数:******");
fflush(stdin);
scanf("%d",&scores);
q = (int *)realloc(p,++*len*sizeof(int));
if (q == NULL)
{
printf("******对不起,开辟空间失败!******\n");
q = p;
break;
}
p = q;
insertIndex = *len-1;
for (i = 0;i<*len;i++)
{
if (*(q+i){
for (j = *len-1;j>i;j--)
{
*(q+j) = *(q+j-1);
}
insertIndex = i;
break;
}
}
*(q+insertIndex) = scores;
} while(Judge());
return q;
}

// 修改成绩

void Exchange(int *p,int length)
{
int oldnum,newnum;
int i;
int index;
do
{
printf("*******提示:请输入要修改的成绩:******");
fflush(stdin);
scanf("%d",&oldnum);
printf("*******提示:请输入修改后的成绩:******");
fflush(stdin);
scanf("%d",&newnum);
index = oldnum;
for(i = 0;i{
if(*(p+i) == oldnum)
{
*(p+i) =newnum;
index = newnum;
printf("******提示:恭喜修改成绩成功!******\n");
break;
}
}
if(index == oldnum&&oldnum!=newnum)
{
printf("******提示:对不起,你此次修改失败:******\n");
}
}while(Judge());
sort(p,length);
}

// 删除成绩

int* Delete(int *p,int *len)
{
int *q;
int delenum;
int temp;
int i,j;

do
{
printf("******提示:请输入要删除的数:******");
fflush(stdin);
scanf("%d",&delenum);
temp = delenum;
for(i = 0;i<*len;i++)
{
if(*(p+i) == delenum)
{
for(j = i;j<*len-1;j++)
{
*(p+j) = *(p+j+1);
}
q = (int*)realloc(p,(--*len)*sizeof(int));
p = q;
temp = temp+1;
printf("*******提示,恭喜你删除%d成功!******\n",delenum);
break;
}
}
if(temp == delenum)
{
printf("******提示:对不起,删除%d失败!******\n",delenum);
q = p;
}
}while(Judge());
return q;
}




int* Delete(int *p,int *len,int deleteScore)
{
int *q;
int delenum;
int temp;
int i,j;
temp = deleteScore;
for(i = 0;i<*len;i++)
{
if(*(p+i) == deleteScore)
{
for(j = i;j<*len-1;j++)
{
*(p+j) = *(p+j+1);
}
q = (int*)realloc(p,(--*len)*sizeof(int));
p = q;
temp = temp+1;
printf("*******提示,恭喜你删除%d成功!******\n",delenum);
break;
}
}
if(temp == deleteScore)
{
printf("******提示:对不起,删除%d失败!******\n",delenum);
q = p;
}

return q;
}

//排序

void sort(int *p,int length)
{
int i,j;
int maxIndex;
int temp;
for (i = 0;i{
maxIndex = i;
for (j = i+1;j{
if (*(p+j)>*(p+maxIndex))
{
maxIndex = j;
}
}
if (maxIndex != i)
{
temp = *(p+i);
*(p+i) = *(p+maxIndex);
*(p+maxIndex) = temp;
}
}
}



//判断输入是否正确

int Judge()
{
c

har c;
do
{
printf("******你是否还要继续此操作:(y/n)******");
fflush(stdin);
scanf("%c",&c);
if (c =='y'||c == 'Y'||c == 'N'||c == 'n')
{
break;
}
printf("******你的输入有误,请重新输入:******\n");
} while(1);
if (c == 'N'||c == 'n')
{
return 0;
}
else
{
return 1;
}
}

相关文档
相关文档 最新文档