C语言学生管理系统(将数据保存至TXT文档)
作者:互联网
C语言学生管理系统(将数据保存至TXT文档)
在大一学习完C语言之后,回家遇到疫情,便有了用C语言写一个学生管理系统的想法,在家花费了一些时间,刚开始写了一点,后来可能是因为学艺不精就没写完,开学到现在突然记起这个项目,便用了两天写了一下
主要功能
- 学生成绩信息的写入
- 学生成绩信息的删除
- 学生信息的更改
- 学生信息的查询
- 学生信息的保存(保存信息至自己电脑的一个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