基于d14海峰教务系统升级1.0版本,增添了注册和登录两种功能,制作了注册和登录的初始界面,并与添加成绩、修改成绩等功能界面链接。
代码如下:
//海峰考务系统
//students[学生数量][2] 第一列保存学号,第二列保存成绩
#include<stdio.h>
#define INCREASE_SCORE 1
#define SEARCH_ALL 2
#define SEARCH_SCORE 3
#define MAX_SCORE 4
#define MIN_SCORE 5
#define AVE_SCORE 6
#define MODIFY_SCORE 7
#define EXIT 8
#define ENROLL 9
#define LOGIN 10
//定义全局变量
int students[10][2]={0};
int index = 0; //表示当前学生个数
int account_max = 10;//表示最大注册账户数量;
int acc_passwd[10][2];
//打印系统菜单函数
int menu_0();
int menu();
void increase_score();
void print_score();
int search_score();
int max_score();
int min_score();
float ave_score();
int modify_score();
int exit();
int enroll();
int login();
int main()
{
int option;
char ch;
while(1)
{
option=menu_0();
switch(option)
{
case 1:
enroll();
break;
case 2:
login();
break;
default:
printf("输入错误\n");
break;
}
}
while(1)
{
option=menu();
switch(option)
{
case INCREASE_SCORE:
increase_score();
print_score();
break;
case SEARCH_ALL:
print_score();
break;
case SEARCH_SCORE:
search_score();
break;
case MAX_SCORE:
max_score();
break;
case MIN_SCORE:
min_score();
break;
case AVE_SCORE:
ave_score();
break;
case MODIFY_SCORE:
modify_score();
break;
case EXIT:
break;
default:
printf("输入错误\n");
break;
}
printf("是否继续?(y/n):");
getchar();
scanf("%c",&ch) ;
if(ch=='y')
{
continue;
}
else
{
printf("感谢使用,再见");
break;
}
}
return 0;
}
int menu_0()
{
int option;
printf("*************************************************\n");
printf(" 1.注册\n");
printf(" 2.登录\n");
printf("*************************************************\n");
printf("请选择:");
scanf("%d",&option);
return option;
}
int menu()
{
int option;
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("*************************************************\n");
printf("请选择:");
scanf("%d",&option);
return option;
}
void increase_score()
{
long long id;
int score;
printf("请输入学生的学号:");
scanf("%d",&id);
printf("请输入学生的成绩:");
scanf("%d",&score);
if(index>10)
{
printf("数组已满");
}
else
{
students[index][0]=id;
students[index][1]=score;
index++;
printf("添加成功\n");
}
}
void print_score()
{
int i;
for(i=0;i<index;i++)
{
printf("学生的学号:%d,学生的成绩%d\n",students[i][0],students[i][1]);
}
}
int search_score()
{
int i;
long long id;
printf("请输入学号:");
scanf("%d",&id) ;
for(i=0;i<index;i++)
if(students[i][0]==id)
{
printf("查找到了\n");
printf("该学号的学生成绩是%d",students[i][1]);
}
else
{
continue;
printf("找不到");
}
}
int max_score()
{
int i;
int id;
int max_score=students[0][1];
for(i=0;i<index;i++)
{
if(max_score<students[i][1])
{
max_score=students[i][1];
id = i;
}
}
printf("成绩最高的学生是%d\n",max_score);
printf("成绩最高的学生学号是%d\n",students[id][0]);
}
int min_score()
{
int i;
int id;
int min_score=students[0][1];
for(i=0;i<index;i++)
{
if(min_score>students[i][1])
{
min_score=students[i][1];
id=i;
}
}
printf("成绩最低的学生是%d\n",min_score);
printf("成绩最低的学生学号是%d\n",students[id][0]);
}
float ave_score()
{
int i;
float sum =0;
for(i=0;i<index;i++)
{
sum=students[i][1]+sum;
}
printf("平均值为%.1f",sum/index);
}
int modify_score()
{
int i;
long long id;
int new_score;
printf("请输入学号:");
scanf("%d",&id) ;
printf("请输入修改的成绩:");
scanf("%d",&new_score) ;
for(i=0;i<index;i++)
{
if(students[i][0]==id)
{
students[i][1]=new_score;
return 0;
}
else
{
continue;
}
}
printf("未找到该学号\n");
return -1;
}
int exit()
{
return 0;
}
int enroll()
{
long long user;
long long passwd;
printf("请输入注册名:");
scanf("%d",&user);
printf("请输入密码:");
scanf("%d",&passwd);
if(index>10)
{
printf("注册最大人数超限");
}
else
{
acc_passwd[index][0]=user;
acc_passwd[index][1]=passwd;
index++;
printf("success\n");
}
return 0;
}
int login()
{
int i;
long long user;
long long passwd;
printf("请输入账号:");
scanf("%d",&user);
printf("请输入密码:");
scanf("%d",&passwd);
for(i=0;i<account_max;i++)
{
if(acc_passwd[i][0]==user&&acc_passwd[i][1]==passwd)
{
printf("登陆成功");
return 0;
}
else
{
continue;
}
printf("账号或者密码不对");
}
return 0;
}
·指针
每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访问的地址,它表示了在内存中的一个地址。
指针也就是内存地址,指针变量是用来存放内存地址的变量。就像其他变量或常量一样,必须在使用指针存储其他变量地址之前,对其进行声明。
使用指针时会频繁进行以下几个操作:定义一个指针变量、把变量地址赋值给指针、访问指针变量中可用地址的值。这些是通过使用一元运算符 * 来返回位于操作数所指定地址的变量的值。
程序->使用指针寻找数组中的最大元素和最小元素
#define N 10
void max_min(int a[],int n,int *max,int *min);
int main(void)
{
int b[N],i,big,small;
printf("Enter %d numbers:",N);
for(i=0;i<N;i++)
{
scanf("%d",&b[i]);
}
max_min(b,N,&big,&small);
printf("Largest:%d\n",big);
printf("Smallest:%d\n",small);
return 0;
}
void max_min(int a[],int n,int *max,int *min)
{
int i;
*max = *min =a[0];
for(i=1;i<n;i++)
{
if(a[i]>*max)
{
*max = a[i];
}
else if(a[i]<*min)
{
*min = a[i];
}
}
}