C语言程序编写的小型教务系统
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<iostream>
void password(void);
void display(void);
char choose(void);
void key_scan(char x);
void write_score(struct student *q);
void read_score(struct student *k);
struct student
{
char name[10];
char num[20];
float score1;
float score2;
float score3;
};
float aver[10];
int i,j,count2=0;
int people;
int end=0;
void main()
{
char temp;
puts("\t\t\t\t登录界面");
password();
display();
while(1)
{
temp=choose();
key_scan(temp);
if(end)
break;
}
system("pause");
}
void password(void)
{
char str0[15],str2[10];
char str1[10]="abc123";
char arr1[10]="hee154";
char *p0,*p1,*p2;
int flag=1;
int count1;
mal:puts("请输入账号(10位阿拉伯数字):");
count1=0;
p0=gets(str0);
while((*p0!=0))
{
if((*p0)<'0'||(*p0)>'9')
{
printf("账号输入格式错误!\n");
goto mal;
}
p0++;
count1++;
}
if(count1!=10)
{
printf("账号位数错误!\n");
goto mal;
}
lab:puts("请输入密码");
p0=str0;
if(!strcmp(p0,"2018148206"))
p1=str1;
else if(!strcmp(p0,"2018148280"))
p1=arr1;
else
{
printf("警告:数据库无个人信息\n");
printf("\n");
goto mal;
}
p2=gets(str2);
while((*p1!=0)||(*p2!=0))
{
if(*p1!=*p2)
{
flag=0;
break;
}
p1++;
p2++;
}
if(flag)
puts("密码正确!登录成功!");
else
{
puts("密码错误");
flag=1;
goto lab;
}
}
void display(void)
{
puts("-------------------------------------------------------------");
puts("| 小型教务系统 |");
puts("|【1】录入学生成绩 【2】查询学生成绩 【3】退出系统 |");
puts("-------------------------------------------------------------");
}
char choose(void)
{
char key;
puts("请选择功能");
hh: scanf(" %c",&key);
if(key!='1'&&key!='2'&&key!='3')
{
printf("输入有误,请重新输入\n");
goto hh;
}
return key;
}
void key_scan(char x)
{
static struct student std[10];
switch(x)
{
case '1':write_score(std);break;
case '2':read_score(std);break;
case '3':end=1;break;
}
}
void write_score(struct student *q)
{
puts("请输入学生人数");
scanf("%d",&people);
puts("请输入学生姓名");
for(i=0;i<people;i++)
scanf("%s",(q+i)->name);
puts("请输入学生学号");
for(i=0;i<people;i++)
scanf("%s",(q+i)->num);
puts("请输入学生分数(三科)");
for(i=0;i<people;i++)
{
scanf("%f %f %f",&(q+i)->score1,&(q+i)->score2,&(q+i)->score3);
aver[i]=((q+i)->score1+(q+i)->score2+(q+i)->score3)/3;
}
printf("\n");
}
void read_score(struct student *k)
{
puts("-------------------------------------------------------------");
puts("学生成绩查询如下:");
i=0;
while(i<people)
{
printf("%s",(k+i)->name);
printf("\t%s",(k+i)->num);
printf("\t%0.2f %0.2f %0.2f",(k+i)->score1,(k+i)->score2,(k+i)->score3);
printf("\t平均分:%f",aver[i]);
for(j=0;j<people;j++)
{
if(aver[i]>aver[j])
count2++;
}
count2=people-count2;
printf("\t排名:%d",count2);
count2=0;
i++;
printf("\n");
}
printf("\n");
}