C语言程序设计的小型教务系统

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;                    //count2用来计算名次的
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];			//str0存储账号  str2存储输入的密码
	char str1[10]="abc123";         //str1用户固定密码
	char arr1[10]="hee154";			//arr1用户固定密码
	char *p0,*p1,*p2;				//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");
}



运行结果

  • 7
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值