这是我看了邵发的教程以后跟着做的,下面这个小程序代码主要知识点有:
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型。
程序运行效果: