C语言课程设计作业
发布网友
发布时间:2022-08-29 01:02
我来回答
共1个回答
热心网友
时间:2024-12-15 04:15
/*******************************************************************
* 名 称:学生成绩管理系统1.0 *
* 创建日期:2007-4-3 *
* 最后修改:2007-4-18 *
* 版 权:东软SE教研室C课程小组 *
* 版 本 号:1.0 *
*******************************************************************/
#include "stdio.h"
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define N 20 //数组的长度
/*******************************************************
功能:显示菜单
参数:无
返回值:无
*******************************************************/
void displayMenu()
{
printf("\n++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("+ 学生成绩管理系统 +\n");
printf("+ +\n");
printf("+ 1. 录入 +\n");
printf("+ 2. 输出 +\n");
printf("+ 3. 查询 +\n");
printf("+ 4. 排序 +\n");
printf("+ 5. 结束 +\n");
printf("+ +\n");
printf("++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
}
/*******************************************************
功能:登陆函数,验证口令
参数:
参数1:n
类型:char []
说明:用户输入口令
返回值:1或0
类型:int
说明:1表示通过验证;0表示没有通过
*******************************************************/
int login(char password[])
{
static char key[10]="123";
if(strcmp(password,key)==0)
return 1;
else
return 0;
}
/*******************************************************
功能:输入学生成绩到数组中
参数:
参数1:score[]
类型:int []
说明:学生成绩数组
参数2:length
类型:int
说明:要输入的学生成绩数组的长度
返回值:i
类型:int
说明:实际成绩数组的有效值个数
*******************************************************/
int inputScore(int score[],int length)
{
int i=0;
int tmp;
printf("请输入学生的成绩(以-1结束输入):\n");
do{
printf("第%d个学生:",i+1);
scanf("%d",&tmp);
if(tmp>=0&&tmp<=100)
{
score[i]=tmp;
i++;
}
}while(tmp!=-1 && i<length);
return i;
}
/*******************************************************
功能:输出数组中的学生成绩
参数:
参数1:score[]
类型:int []
说明:学生成绩数组
参数2:length
类型:int
说明:要输出的成绩数组的长度
返回值:无
类型:void
说明:
*******************************************************/
void outputScore(int score[],int length)
{
int i=0;
printf("学生成绩如下:\n");
for(i=0;i<length;i++)
printf("%d %-3d\n",i+1,score[i]);
printf("\n");
}
/*******************************************************
功能:查找某个学生成绩是否在数组中,如果找到,则输出下标,
否则,显示没有找到。
参数:
参数1:score[]
类型:int []
说明:学生成绩数组
参数2:length
类型:int
说明:要输入的学生成绩数组的长度
参数2:xScore
类型:int
说明:要查找的学生成绩
返回值:无
类型:void
说明:
*******************************************************/
void queryScore(int score[],int length,int xScore)
{
int i=0;
for(i=0;i<length;i++)
{
if(xScore==score[i])
{
printf("它在数组中的下标是 :%d\n", i);
break;
}
}
if(i>=length)
printf("没有找到!\n");
}
/*******************************************************
功能:排序学生的成绩,按照从大到小排序。
参数:
参数1:score[]
类型:int []
说明:学生成绩数组
参数2:length
类型:int
说明:要输入的学生成绩数组的长度
返回值:无
类型:void
说明:
*******************************************************/
void sortScore(int score[],int length)
{
int i=0,j=0,k=0,t;
printf("成绩排序如下:\n");
for(i=0;i<length-1;i++)
{
k=i;
for(j=i+1;j<length;j++)
if(score[j]>score[k])
k=j;
t=score[i];
score[i]=score[k];
score[k]=t;
}
for(i=0;i<length;i++)
printf("%4d",score[i]);
printf("\n");
}
/*******************************************************
功能:主函数
参数:无
返回值:无
*******************************************************/
main()
{
int choice = 0; /*代表用户选择的操作数字 */
int s=0,datalen=0,x;
int score[N]={-1};/*初始化数组的元素为-1*/
char password[10];/*用户输入的口令*/
/*====验证用户的口令,直到正确为止====*/
do{
printf("请输入口令:");
scanf("%s",password);
s=login(password);
}while(s==0);
/*====根据用户的选择,执行相应的操作.====*/
while(1)
{
displayMenu();
printf("\n 请选择您的操作(1,2,3,4,5):\n");
scanf("%d",&choice);
//system("cls");
switch(choice)
{
case 1:
datalen=inputScore(score,N);
break;
case 2:
outputScore(score,datalen);
break;
case 3:
printf("\n 请输入要查找的成绩:");
scanf("%d",&x);
queryScore(score,datalen,x);
break;
case 4:
sortScore(score,datalen);
break;
case 5:
exit(0);
break;
}
}
}