第三次博客作业

C语言文件

根据题目要求,我做出了一个可以储存并查询多个学生的相关数据的程序,数据包括一个学生的姓名、学号、性别、所在班级、现代成绩,还设计了一些可以让程序界面比较美观的UI界面,程序的最终效果如下图:

程序初始界面:

按任意键进入应用界面,输入1、2、3将分别转到相应的功能界面,如果输入4,则程序终止:

任务一、二的实现:

选项(1)为学生信息的输入,在输入完一位同学的信息后会提示是否继续添加学生信息,输入1则继续输入,输入0则跳转到应用界面:

输入1时的效果:

在输入学生的数据时,程序会自动生成一个以该学生的姓名为名字的txt文件,其中依次记录有每个学生的学号、性别、班级、线代成绩:


程序的以上部分不仅实现了自动创建一个“姓名.txt”的文件,还实现了向这些文件写入相应数据的目的,顺利的完成了任务一和任务二。

任务三的实现:

在应用界面输入2,对应的功能是显示所有被用户输入的学生的信息:

按任意键返回应用界面,实现将学生信息用结构数组重新读取出来并显示的目的,完成任务三。

$额外功能:

在应用界面输入3,对应查找某个学生单个信息的功能:

输入数字3,系统会提示是否查找,输入1查找,输入0转到应用界面:

任务四的实现:

system函数:

system函数可以发出一个DOS命令,首先来说我在本次作业中使用到的函数, system(“cls”)的作用是可以实现清屏操作, system("pause")的作用是可以冻结屏幕,便于观察程序的运行效果, system(“color”)可以改变命令台的底色和字符颜色,具体用法为:system(“color xy”),x和y分别为窗口的 背景色和前景色,各颜色代码如下:0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色

我在网上又找到了一些system函数的具体实例(图片转自追梦小蚂蚁的CNDS博客):



在我编写的程序中,大量的穿插了 system("cls"),system("pause") ,以及system(“color”)的使用,具体请详见下面展示的此程序的源代码。

程序源代码:

主函数:

#include <stdio.h> 
#include <stdlib.h>
#include <string.h>

void UI_0(int n);
void UI_1(int n);
void UI_2(int n);
struct student {
	int id[30];
	char sex[4];      //定义结构数组 
	int Class[20];
	int linear;
};

int main ()
{
	system("color f0");							   //使用函数改变命令台的底色和字符颜色
	int j,i,k,flag=0,mark=0,decide;
	char sign;
		
	char stu[100][20],stucp[100][20],stu_dec[20]; 
	struct student students_ip[10],students_op[10];//students_ip做从用户输入中读入数据的数组,students_op做从文件中读入数据的数组 
	FILE *fp;     								   //定义文件指针 
	
	UI_0(0);					//加载初始UI 
	
	sign=getchar();				//用户输入任意字符继续 
	
	system("cls");				//清屏 
	
	for(j=0;j=4;)
	 {
	 	UI_2(1); 				//加载选择界面 
		scanf("%d",&j);
		system("cls");
		if(j==1){
				
				
				for(i=mark;i<100;i++)
				{
						system("cls");//清屏
					printf("请分别输入:姓名|学号|性别|班级|线代成绩\n");
				
					printf("\t");
					scanf("%s",stu[i]);							//输入学生姓名 
					strcpy(stucp[i],stu[i]);
					strcat(stu[i],".txt");						//将输入的名字后加上“.txt”
					mark++;						 
				if((fp=fopen(stu[i],"w+"))==NULL)				//创建以学生名字为标题的txt文件 
					{
						printf("文件打开时遇到错误!\n");
						exit (0);
					}
				scanf("%s",students_ip[i].id); 			// 输入学生信息到结构数组students_ip 
				scanf("%s",students_ip[i].sex);
				scanf("%s",students_ip[i].Class);
				scanf("%d",&students_ip[i].linear);
				
				fprintf(fp,"%s %s %s %d",students_ip[i].id,students_ip[i].sex,students_ip[i].Class,students_ip[i].linear); 		//将结构数组students_ip中的数据输入姓名.txt文件中 
				fclose(fp);
				
				printf("==是否继续录入学生信息?==\n \n  *是(1)  *否(0)\n \n");
				scanf("%d",&decide);
				if(decide==0)break;
				
			}
			
			
					for(k=0;k<i+1;k++)
			{
				if((fp=fopen(stu[k],"r"))==NULL)																			//打开以学生名字为标题的txt文件 
				{
					printf("文件打开时遇到错误!\n");
					break;
				}
			fscanf(fp,"%s %s %s %d",students_op[k].id,students_op[k].sex,students_op[k].Class,&students_op[k].linear);      // 从文件中输入学生信息到结构数组students_op
			fclose(fp);
			 } 
		}
		else if(j==2){
						system("cls");//清屏
						printf("\t姓名 \t学号        \t性别 \t班级      \t线代分数\n");
						
						for(k=0;k<mark;k++)
							printf("\t%s \t%s \t%s \t%s \t%d\n",stucp[k],students_op[k].id,students_op[k].sex,students_op[k].Class,students_op[k].linear);    //打印已输入的全部学生信息 
						system("pause"); //冻结窗口
			
		}
		else if(j==3){
				printf("==是否需要查找录入某同学的学生信息?==\n \n  *是(1)  *否(0)\n \n");
				scanf("%d",&decide); 
					if(decide==0){
					continue;
				}
				else{
					printf("请输入学生姓名:");
					scanf("%s",stu_dec);                              //接受用户需要查询的学生姓名 
					for(k=0;k<mark;k++)
					{
						if(strcmp(stu_dec,stucp[k])==0){
							flag=1;                                   //使用循环遍历查找 
							break;
						}		
					}
					
					if(flag==1){
							printf("\t姓名 \t学号        \t性别 \t班级      \t线代分数\n");
							printf("\t%s \t%s \t%s \t%s \t%d\n",stucp[k],students_op[k].id,students_op[k].sex,students_op[k].Class,students_op[k].linear); //打印该学生的信息 
							system("pause");//冻结窗口
					}else {
							printf("没有此学生的信息!\n");       //此学生的信息不存在,予以提示 
							system("pause");//冻结窗口
					}
						
					} 
		}else if(j==4)break; 
	}
	
	UI_1(1); 
	
	return 0;
 }

其他函数:

void UI_0(int n)
{
	int k;
	system("color f4");
	printf("_________________________________________________学生信息库v1.0Beta版__________________________________________________\n"); //界面 
	for(k=0;k<15;k++)printf("|                                                                                                                     |\n");
	printf("|                                                 欢迎使用本数据库!                                                  |\n") ;
	printf("|                                                                                                                     |\n");
	printf("|                                                   按任意键继续···                                                |\n");
	printf("|									 :( (  ):::::                              |\n");
	printf("|									 (_, \\ ) ,_)::       |            |       |\n");
	printf("|									 :::-'--`--:::::::: ~~|   ,    \\ _ /     |\n");
	printf("|		  __				        		 ::::::::::::::::::: ,|`-._/|  -== (_) ==- |\n");
	printf("|		>(' )							 ::::::::^^::::::::.' |  /||\\   /  \\     |\n");
	printf("|		  )/				        		 ::::::^^::::::::.'  | ./ ||`\\     |       |\n");
	printf("|		 /(							 :::::::::::::::/ `-. |/._ || \\              |\n");
	printf("|		/  `----/						 ~~=~_~^~ =~ \\~~~~~~~'~~~~'~~~~/~~`` ~=~^~    |\n");
	printf("|		\\  ~=- /						 ~^^~~-=~^~ ^ `--------------'~^~=~^~_~^=~^~  |\n");
	printf("|_____________________________________________________________________________________________________________________|\n");
	
 } 
 void UI_1(int n)
 {
 	int k;
 	for(k=0;k<17;k++)printf("|                                                                                                                     |\n");
 	printf("|                                                     感谢您的使用!                                                  |\n");
 	printf("|                                                     祝您生活愉快!                                                  |\n");
 	for(k=0;k<17;k++)printf("|                                                                                                                     |\n");
 	system("pause");
 }
 void UI_2(int n)
 {
 	int k;
 	printf("|—————————————————————————————————————————————————————————-—|\n");
 	printf("|                                             ████████████                                                |\n");
 	printf("|                                            ██   ◥██◤  ██                                               |\n");
 	printf("|                                        ◢███    ◥◤   ██◣                                             |\n");
 	printf("|                                        ▊▎██◣       ◢█▊ ▊                                            |\n");
 	printf("|                                        ▊▎██◤ ●  ●   ◥█▊ ▊                                            |\n");
 	printf("|                                        ▊ ██         █▊ ▊                                            |\n");
 	printf("|                                        ◥▇██ ▊      ▊ █▇◤                                             |\n");
 	printf("|                                            ██ ◥▆▄▄▄▆◤ █▊   ◢▇▇◣                                  |\n");
 	printf("|                                     ◢██◥◥▆▅▄▂▂▂▄▅▆███◣  ▊◢   █                                 |\n");
 	printf("|                                     █                                 █ ◥◤◢◤                                  |\n");
 	printf("|                                       █◣       ________       ◢█    ◢◤                                    |\n");
 	printf("|                                          ▊     |程序猿|       ▊     ◢◤                                      |\n");
 	printf("|                                          ▊     |______|       ▊  ◢◤                                        |\n");
 	printf("|                                           ▊       ×       █▇◤                                          |\n");
 	printf("|                                          ◢█▇▆▆▆▅▅▅▆▆▆▇█◣                                             |\n");
 	printf("|                                          ▊ ▂ ▊      ▊ ▂ ▊                                           |\n");
 	printf("|                                          ◥▆▆▆◤      ◥▆▆▆◤                                           |\n");
 	printf("|                                                                                                                     |\n");
 	printf("|                                                       功能界面                                                      |\n");
 	printf("|                                                                                                                     |\n");
 	printf("|                     ·学生信息添加(1)                                    ·学生信息一览(2)                      |\n");
 	printf("|                                                                                                                     |\n");
 	printf("|                     ·学生信息查询(3)                                    ·退出程序    (4)                      |\n");
 	for(k=0;k<4;k++)printf("|                                                                                                                     |\n");
 	printf("|_____________________________________________________________________________________________________________________|\n");
  } 
总结:

收获:通过本次作业,我又把书本上的相关知识阅读了一遍,带着问题去读书果然受益匪浅,无论是对文件的打开和关闭、文件内容的写入和读取,还是关于缓冲区、EOF函数的概念,都有了新的理解。

感受:本次作业看似都是陌生的知识,但是仔细接触后就会发现这些知识十分有趣,会让人停不下来的去试错和研究,我也是在这种心理的驱使下一口气做出了这个程序,并且加了一点私货(指附加功能)。其实通过编写附加程序也是对自己的一种挑战,成功之后就会有很大的成就感,并且在这次的程序中我将界面做成函数分别封装,使自己的主函数看起来很简洁,也是自己在编程中的又一尝试!

posted @ 2019-12-17 21:36  勤政  阅读(222)  评论(0编辑  收藏  举报