一、语言和环境 |
||
A、实现语言 |
||
C语言 |
||
B、环境要求 |
||
VC++ 6.0 C、时间 120分钟 |
||
二、要求 |
||
|
请编写一个C语言程序,完成学生的注册功能。 程序的功能要求如下: 1) 启动程序,首先进入欢迎界面和主界面,且主界面能够循环显示
2) 选择1,程序提示输入学生信息(学号,姓名,性别,年龄,入学成绩),输入完毕后屏幕打印当前学生信息,并将学生信息保存到文件
3) 选择2,屏幕打印所有注册的学生信息
4) 选择 3,退出程序
|
|
三、算法说明 |
||
|
用结构体数组保存学员信息,用fscanf();fprintf();实现文件读写 |
|
四、推荐实现步骤 |
||
|
1、全局变量 |
|
|
1) 定义一个用于存放学生信息的结构体数组: struct student{ int sno; //学号 char name[10]; //姓名 char sex[4]; //性别 int age; //年龄 float score; //入学成绩 }; struct student students[100]; //可容纳100个学生的数组 2)定义一个全局变量int maxTag =-1,存放最后一个学员的下标(初值为-1)。 3) 声明文件指针FILE *fp 2、 函数声明 void addStu(); //添加学生信息 void readData(); //读文件 void writeData(); //写文件 void displayCurrent(int index); //显示当前信息 void displayAll(); //显示全部信息 3、编写main函数 1) 调用maxTag = readData()函数, 把数据从文件读到结构体数组中。 2) 调用addStu()函数,增加学生信息,并显示该学员信息。 3) 在addStu()中调用writeData()函数, 把每增加一个新学员的结构体数组重新写入文件中。 4、编写addStu函数 1)定义是否继续变量 char answer; 2 ) 在循环中输入学生信息 3)输入结束后提示是否继续,如果继续continue 否则调用writeData(),退出循环 |
|
|
5、编写readData()子函数 (返回值为最后一个元素的下标) 1) 打开文件student.txt,以r+的方式打开 |
|
|
2) 用while循环,和fscanf()读取文件信息,退出循环的循环条件是feof(fp),如果文件为空(fp==NULL)则返回-1,否则返回i-2(i为循环变量,表示元素下标,从0开始) 3) 关闭文件 fclose(fp); |
|
|
6、编写writeData()子函数 |
|
|
1) 打开文件student.txt,以w+的方式打开 2) 用for循环,和fprintf()写入文件,循环条件是i<=end,如果文件指针为空(fp==NULL)则报错,并退出整个程序(exit(0);注意头文件的引入 #include <stdlib.h>) 3)关闭文件 fclose(fp); |