(语法)一个学生成绩录入程序分

这是我看了邵发的教程以后跟着做的,下面这个小程序代码主要知识点有:

1、定义结构体

2、用数组存数据

3、用每个函数实现一个功能,合理调配调用

4、字符串判断语句

#include<iostream>
using namespace std;
struct student							//定义类型为student的一个结构体
{
	int id;
	char name[16];
	int scores[3];
};
student dota[100];						//定义全局数组,作为存储数据源
int chu = 0;
int input(student *s)					//用户输入信息函数
{
	printf("请输入学生ID:");
	cin >> s->id;
	printf("请输入学生姓名:");
	cin >> s->name;
	printf("请输入学生语文成绩:");
	cin >> s->scores[0];
	printf("请输入学生数学成绩:");
	cin >> s->scores[1];
	printf("请输入学生英语成绩:");
	cin >> s->scores[2];
	return 0;
}
int add(student* p)						//数据存储函数
{
	dota[chu] = *p;
	chu++;
	return 0;
}
void list_all()							//显示输出函数
{
	printf("********************************************\n");
	printf("学生ID\t学生姓名\t语文\t数学\t英语\n");
	for (int i = 0; i < chu; i++)
	{
		student* p = &dota[i];
		printf("  %d  \t  %s\t\t%d\t%d\t%d\n",
			p->id,
			p->name,
			p->scores[0],
			p->scores[1],
			p->scores[2]);
	}
	printf("********************************************\n");
}
int main()								//主函数
{
	printf("***************************************************************\n");
	printf("*********************学生成绩录入查询系统**********************\n");
	printf("***************************************************************\n");
	printf("add:新建数据,list:查看数据,cout:查看人数,exit:退出系统\n");
	char cmdline[128];
	while (1)
	{
		printf(">>");
		cin >> cmdline;
		if (strcmp(cmdline, "exit") == 0)
		{
			printf("系统退出...\n");
			break;
		}

		else if (strcmp(cmdline, "add") == 0)
		{
			student a;
			input(&a);
			add(&a);
			continue;
		}

		else if (strcmp(cmdline, "list") == 0)
		{
			list_all();
			continue;
		}

		else if (strcmp(cmdline, "cout") == 0)
		{
			printf("现在录入有%d个学生\n", chu);
			continue;
		}
	}
	system("pause");
	return 0;
}


 
     
分析:首先程序用struct定义了一个结构变量student,这个结构体内拥有3个变量,int(整形)的变量id,char(字符型)的数组name,int(整形)的数组scores。 

    紧接着在下面定义了一个student型数组dota,有100个元素。以上,我们用结构体student分别表示学生的id,姓名(name),考试成绩(语文,数学,英语)3个元素的数组scores。下面定义的dota数组作为数据源存储用户录入的学生信息。


    下面开始定义函数(每个函数都有自己的作用):

    input(student *s)函数:这个函数的形参是定义了一个指针s,在主函数调用这个函数时实参会传入一个内存地址给指针s,指针s就可以把下面用户输入的信息指向传递给主函数中的内存地址。这个函数的作用是让用户输入信息的,并将值传递给实参内存中。

    add(student* p)函数:这个函数的作用是将用户输入到结构体中的值传递一份给数组dota,从dota[0]开始传递,在将用户每一次录入的信息存完后就会chu++,即从dota[0]变成dota[1]。

    list_all()函数:这是一个void型没有返回值的函数,里面代码意思即将用户录入的信息打印到屏幕上,这里面需要注意的是这里利用了一个for循环,循环的参数里面它首先座条件限制i<chu,即用户录入了多少次数据就循环几次。这里每次循环都会i++,即会一次调用dota数组中的信息,直至达到chu这个上限。

    主函数main():主函数主要是将各功能函数进行调用,并设置了一个条件判断循环,在while中,while参数为1,即一直有效,在下面的执行语句中,先让用户输入字符串,然后判断用户输入的是不是我规定的,如果是,就执行下面的内容,这里下面的内容包含很多,比如输入add就调用input()函数和add()函数,等等。

知识点:1、结构体用struct声明.  

        2、数组用来存数据

        3、指针的->用法,当指针代表某个结构体时,可以直接用->加元素来直接访问

        4、字符串判断(strcmp(变量,"字符")==0),这个条件返回值要么是要么不是,是一个true型。

程序运行效果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值