其他分享
首页 > 其他分享> > C语言学生管理系统(将数据保存至TXT文档)

C语言学生管理系统(将数据保存至TXT文档)

作者:互联网

C语言学生管理系统(将数据保存至TXT文档)

在大一学习完C语言之后,回家遇到疫情,便有了用C语言写一个学生管理系统的想法,在家花费了一些时间,刚开始写了一点,后来可能是因为学艺不精就没写完,开学到现在突然记起这个项目,便用了两天写了一下

主要功能

  1. 学生成绩信息的写入
  2. 学生成绩信息的删除
  3. 学生信息的更改
  4. 学生信息的查询
  5. 学生信息的保存(保存信息至自己电脑的一个txt文档中)

文档结构见下图
文档结构
图片中的information.txt便是保存学生信息的TXT文档

功能界面见下图
功能界面
通过输入不同的数来选择功能

代码如下(代码中有详细的注释)
有些地方为了装逼加了延时哈哈哈哈哈

#include<stdio.h>//标准输入输出头文件
#include<string.h>//strcmp函数所需头文件
#include<stdlib.h>//FILE所需头文件

void delay(unsigned int z);

#define PATH "information.txt"//宏定义	学生信息存储目录

char information[1024][20];//中间数组

void Connection_Library();//连接数据库
void Menu();//菜单
void Preservation();//存档

FILE *fp;
char chaxun[1][20];//查询时所需数组
char shanchu[1];//删除时所需数组
int i,j;//循环变量
int num=0;//录入学生信息时才会改变默认为0,也就相当于录入的学生人数
int Number_of_Student;//记录有多少个学生的
int NUM;//读取时读到的字符串数
int k;//key选择变量
int Comprehensive_results = 0;
char Total_score = 0;

int adds;

void main()
{
	printf("连接数据库中,请稍后···\n");
	delay(1553600);
	Connection_Library();//连接数据库
	delay(1553600);
	system("cls");//清屏
	Menu();//调用菜单

									//	for(i=0;i<16;i++)
									//	{
									//		printf("%s\t",information[i]);	
									//	}
									//	printf("%d", NUM);

	while(1)
	{
		printf("\n请输入选择功能的序号:");
		scanf("%d",&k);
		switch(k)
		{
			case 0://退出程序
					exit(0);
			case 1://录入
			{
				printf("请输入所要录入的学生人数:");
				scanf("%d",&num);
				printf("学号\t姓名\t语文\t数学\t英语\t物理\t化学\t生物\t\n");
				for(i=(Number_of_Student*8);i<((num*8)+(Number_of_Student*8));i++)
				{
					scanf("%s",&information[i]);
				}
				Number_of_Student = ((num*8)+(NUM-1))/8;
				Preservation();

			}
			break;
			case 2://查询
			{
				printf("请输入所查询学生学号或姓名:");
				scanf("%s",&chaxun[0]);
					for(i=0;i<1024;i++)
					{
						if((strcmp(chaxun[0],information[i])==0)&&(i%8)==0)
						{
							printf("学号\t姓名\t语文\t数学\t英语\t物理\t化学\t生物\t\n");
							printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n",information[i],information[i+1],information[i+2],information[i+3],information[i+4],information[i+5],information[i+6],information[i+7]);
							break;
						}
									
					}
					if(i<1024)
						break;

					for(i=0;i<1024;i++)
					{
						if(strcmp(chaxun[0],information[i])==0&&((i%8)==1))
						{
							printf("学号\t姓名\t语文\t数学\t英语\t物理\t化学\t生物\t\n");
							printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n",information[i-1],information[i],information[i+1],information[i+2],information[i+3],information[i+4],information[i+5],information[i+6],information[i+7]);
							break;
						}
					}
					if(i<1024)				
						break;
					if(i==1024)
					{				
						printf("查询无果!!!\n");
						delay(3000000);
						system("cls");
						Menu();
						break;
					}
							
			}
			break;
			case 3://修改
			{
				printf("\n");
				printf("------成绩修改界面------\n");
				printf("请输入要修改的成绩同学的姓名或学号:");
				scanf("%s",&chaxun[0]);
				for(i=0;i<1024;i++)
				{
					if((strcmp(chaxun[0],information[i])==0)&&(i%8)==0)
					{
						printf("当前该生成绩:\n");
						printf("学号\t姓名\t语文\t数学\t英语\t物理\t化学\t生物\t\n");
						printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n",information[i],information[i+1],information[i+2],information[i+3],information[i+4],information[j+5],information[i+6],information[i+7]);
						printf("请输入该生成绩:\n");
						printf("学号\t姓名\t语文\t数学\t英语\t物理\t化学\t生物\t\n");
						for(i;i<8;i++)
						{
							scanf("%s",&information[i]);
						}
						Preservation();
						break;
					}				
				}
				if(i<1024)
				{				
					break;
				}
				
				for(i=0;i<1024;i++)
				{
					if(strcmp(chaxun[0],information[i])==0&&((i%8)==1))
					{
						printf("当前该生成绩:\n");
						printf("学号\t姓名\t语文\t数学\t英语\t物理\t化学\t生物\t理综合\t总分\t\n");
						printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n",information[i-1],information[i],information[i+1],information[i+2],information[i+3],information[i+4],information[i+5],information[i+6],information[i+7]);
						printf("请输入该生成绩:\n");
						printf("学号\t姓名\t语文\t数学\t英语\t物理\t化学\t生物\t\n");
						for(i;i<9;i++)
						{
							scanf("%s",&information[i-1]);
						}
						Preservation();
						break;
					}
				}
				if(i<1024)
					break;
				if(i==1024)
				{				
					printf("查询无果!!!\n");
					delay(3000000);
					system("cls");
					Menu();
					break;
				}
				
			}
			case 4://打印ALL
			{
				printf("学号\t姓名\t语文\t数学\t英语\t物理\t化学\t生物\t\n");
				for(i=1;i<=Number_of_Student*8;i++)
				{
					printf("%s\t",information[i-1]);
					if(i%8==0)
					printf("\n");
				}
			}
			break;
			case 5://删除指定同学成绩信息
			{
				printf("------成绩删除界面------\n");
				printf("请输入所要删除学生信息的学号或姓名:");
				scanf("%s",&chaxun[0]);
				for(i=0;i<1024;i++)
				{
					if((strcmp(chaxun[0],information[i])==0)&&(i%8)==0)
					{
						printf("当前该生成绩:\n");
						printf("学号\t姓名\t语文\t数学\t英语\t物理\t化学\t生物\t\n");
						printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n",information[i],information[i+1],information[i+2],information[i+3],information[i+4],information[j+5],information[i+6],information[i+7]);
						//以下是删除操作
						printf("提示:确定要删除该生成绩?(Y or N)\n");
						scanf("%s",&shanchu[0]);
						if(shanchu[0]=='Y')
						{
							for(i;i<Number_of_Student*8;i++)
							{
								for(j=0;j<20;j++)
								{
										information[i][j]=information[i+8][j];	
								}
							
							}
							Number_of_Student = Number_of_Student-1;
						}
						Preservation();
						printf("删除成功!!!\n");
						delay(3000000);
						break;
					}				
				}
				if(i<1024)
				{				
					break;
				}
				
				for(i=0;i<1024;i++)
				{
					if(strcmp(chaxun[0],information[i])==0&&((i%8)==1))
					{
						printf("当前该生成绩:\n");
						printf("学号\t姓名\t语文\t数学\t英语\t物理\t化学\t生物\t理综合\t总分\t\n");
						printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n",information[i-1],information[i],information[i+1],information[i+2],information[i+3],information[i+4],information[i+5],information[i+6],information[i+7]);
						//以下是删除操作
						printf("提示:确定要删除该生成绩?(Y or N)\n");
						scanf("%s",&shanchu[0]);
						if(shanchu[0]=='Y')
						{
							for(i;i<Number_of_Student*8;i++)
							{
								for(j=0;j<20;j++)
								{
										information[i-1][j]=information[i+7][j];	
								}
							
							}
							Number_of_Student = Number_of_Student-1;
						}


						Preservation();
						printf("删除成功!!!\n");
						delay(3000000);
						break;
					}
				}
				if(i<1024)				
					break;
				if(i==1024)
				{				
					printf("查询无果!!!\n");
					delay(3000000);
					system("cls");
					Menu();
					break;
				}

			}

			case 6://清屏
			{
				system("cls");
				//----由于已经清屏为了简单直接清除全部所以需重新输出功能选择区----//
				Menu();
			}
			break;
		}



	}
								

}


void delay(unsigned int z)
{
    unsigned int x,y;
    for(x=z;x>0;x--)
    for(y=110;y>0;y--);
}

void Connection_Library()//检查是否打开文件函数并将从文本库读取出的信息存入数组information[]
{


	fp = fopen("information.txt","r");
	if (fp == NULL)
		{
			printf("连接失败\n");
		}
	else
		{
		NUM=0;
		while(!feof(fp))
				{
					fscanf(fp,"%s",information[NUM]);
					NUM++;
				}
		printf("连接成功\n");
		Number_of_Student = (NUM-1)/8;
		}
}

void Menu()//---功能选择区
{
	printf("-------菜单-------\n\n");
	printf("(1) 录入成绩\n");
	printf("(2) 查询成绩\n");
	printf("(3) 修改信息\n");
	printf("(4) 打印全部成绩\n");
	printf("(5) 删除成绩\n");
	printf("(6) 清除屏幕\n");
	printf("(0) 退出程序\n");
	printf("\n");
	printf("必须在功能界面输入(0)以退出系统 否则数据将无法保存\n");
	printf("\n");
	printf("数据库中现在共有-%d-名同学信息\n",Number_of_Student);
}

void Preservation()
{
	printf("正在存档请稍后···\n");
	//------存档学生信息------//
	fp=fopen("information.txt","w");
	for(i=0;i<Number_of_Student*8;i++)
		fprintf(fp,"%s ",information[i]);//将数组a的内容写入文件,以空格隔开
	printf("\n");
	delay(3000000);
	printf("存档完毕\n");
	delay(3000000);
}

代码简单,几乎全部就是对数组的操作

标签:information,t%,chaxun,C语言,break,文档,成绩,printf,TXT
来源: https://blog.csdn.net/ZhangDaXianc/article/details/110950802