//综合实践七:学生成绩管理系统指针应用设计
#include<stdio.h>
#define N 5
int login(char *name,char *psw){
if(strcmp(name,"admin")==0 &&strcmp(psw,"123456")==0)
return 1;
else return 0;
}
void input(float *score,int num){
int i;
printf("输入%d个成绩:",num);
for(i=0;i<num;i++){
scanf("%f",score++);
}
}
void output(float *score,int num){
int i;
printf("输出%d个成绩:\n",num);
for(i=0;i<num;i++){
printf("%5.1f",*score++);
}
printf("\n");
}
int insert(float *score,int num,float x){
int i;
i=num-1;
while(i>=0&&*(score+i)<x){
*(score+i+1)=*(score+i);
i--;
}
*(score+i+1)=x;
num++;
return num;
}
int find(float *score,int num,float x){
int i,k=-1;
for(i=0;i<num;i++){
if(x==*(score+i)){
k=i;
break;
}
}
return k;
}
void sort(float *score,int num){
int i,j,k;
float x;
for(i=0;i<num-1;i++){
k=i;
for(j=i+1;j<num;j++){
if(*(score+k)<*(score+j))
k=j;
}
x=*(score+i);
*(score+i)=*(score+k);
*(score+k)=x;
}
printf("降序排序完成!\n");
}
int dele(float *score,int num,float x){
int i=0;
while(i<num&&*(score+i)!=x){
i++;
}
if(i<num){
while(i<num-1){
*(score+i)=*(score+i+1);
i++;
}
num--;
}
return num;
}
main(){
float score[N],max,s,x,ave;
int i,j,k,n,num,m;
char name[10],psw[10];
printf("用户名:");
gets(name);
printf("密码:");
gets(psw);
if(login(name,psw)==1){
while(1){
printf("******学生成绩管理系统********\n");
printf("*** 1 --------- 成绩输入 **\n" );
printf("*** 2 ----------成绩插入 **\n ");
printf("*** 3 ---------成绩查询 **\n ");
printf("*** 4 ---------成绩排序 **\n ");
printf("*** 5 ---------成绩删除 **\n ");
printf("*** 6 ---------成绩输出 **\n ");
printf("*** 0 ---------退出 **\n ");
printf("*****************************\n");
printf("请输入你的选择:");
scanf("%d",&n);
switch(n){
case 1:printf("输入成绩个数(<%d):",N);
scanf("%d",&num);
input(score,num);
break;
case 2:printf("输入要插入的成绩:");
scanf("%f",&x);
num=insert(score,num,x);
break;
case 3:printf("输入要查询的成绩:");
scanf("%f",&x);
m=find(score,num,x);
if(m!=-1)
printf("序号:%d\n",m+1);
else printf("成绩不存在!\n");
break;
case 4:sort(score,num);
break;
case 5:printf("输入要删除的成绩:");
scanf("%f",&x);
m=num;
num=dele(score,num,x);
if(m!=num)
printf("成绩删除成功!\n");
else printf("成绩不存在!\n");
break;
case 6:printf("成绩输出:");
output(score,num);
break;
case 0:return;
default:printf("选择错误!\n");
}}}
else printf("用户名或密码错误!\n");
}