⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 610672.txt

📁 简单的学籍管理
💻 TXT
字号:
//简单学籍管理程序
#include <stdio.h>
#include <math.h>
#include <string.h>

//学生姓名、成绩都采用数组存放。学号为数组下标
//定义学生姓名长度为8以下,学生数不超过250
char name[250][8];
float score[20][250];

/////////////////////////////////////////////////////////////////////
//程序入口,接收所有用户的指令
main()
{
int i,command;
//程序采用指令式,设指令不超过255个字节
//姓名第一个字节为"&"刚表示该记录已删
for(i=1;i<=250;i++)
	name[i][0]='&';//初始化所有记录
printf("简单学籍管理程序 Ver 1.0 CopyRight 雪原\n");
	start:;
	{
	printf("\n请输入指令,?取得帮助:==>");
	command=getch();
	switch (command)
		{
		case 63:{printf("帮助\n");help();}break;//?帮助
		case 97:{printf("增加记录\n");add();}break;//a增加记录
		case 100:{printf("删除记录\n");dele();}break;//d删除记录
		case 102:{printf("查找记录\n");search();}break;//f查找记录
		case 108:{printf("读盘\n");loadfile();}break;//l读盘
		case 112:{printf("列出记录\n");list();}break;//p列出记录
		case 27:{printf("退出\n");quit();}break;//q退出
		case 115:{printf("存盘\n");savefile();}break;//s存盘
		default:printf("错误的命令!\n\n");//报错
		}
	}
	goto start;
}

////////////////////////////////////////////////////////////////////
int help()//帮助模块
{
printf("/---------------程序使用说明---------------\\\n");
printf("|------------------------------------------|\n");
printf("|指令|   功能   |           说明           |\n");
printf("| ?  | 取得帮助 |显示本帮助信息            |\n");
printf("| a  | 添加记录 |向表中添加一条或多条记录  |\n");
printf("| d  | 删除记录 |删除表中某条或某段记录    |\n");
printf("| f  | 查找记录 |按学号或姓名查找表中的记录|\n");
printf("| p  | 显示记录 |显示表中全部记录          |\n");
printf("| l  | 读取文件 |读入磁盘文件              |\n");
printf("| s  | 存为文件 |将当前工作保存为文件      |\n");
printf("|Esc | 退出程序 |退出本系统                |\n");
printf("\\------------------------------------------/\n");
return(0);
}
/////////////////////////////////////////////////////////////////////////
int quit()//退出模块
{
char temp;
printf("\n没有保存的数据将会丢失,您确定要退出吗?(Y/N)");
temp=getch();
if(temp == 'y' || temp == 'Y') 
	{printf("\n感谢使用,下次再见!\nCopyRight 雪原工作室\n");exit(1);}
return(0);
}
//////////////////////////////////////////////////////////////////////
int add()
{
int num,i,j;
input:;
printf("\n请输入学号,0返回:");scanf("%d",&num);
if(num==0) return(0);
if (num<=250)//若学号小于250,则允许输入
	{
	printf("\n请输入该生姓名:");
	scanf("%s",&name[num]);
	for(i=0;i<=19;i++)//输入20个成绩
		{
		printf("\n请输入该生第%d科成绩:",i+1);
		scanf("%f",&score[i][num]);	
		}
	}	
else 
	printf("对不起,该版本最多只能管理250个学生。");
goto input;
}
//////////////////////////////////////////////////////////////////////
int dele()
{
int i,begin,end;
char temp; 
printf("请问您要删除学号为多少至多少数据?(输入格式:XX-XX)");
scanf("%d-%d",&begin,&end);
printf("\n删除的数据不可恢复,是否真要删除?(Y/N)");
temp=getch();
if(temp == 'y' || temp == 'Y') 
	{
	printf("\n从%d号到%d号的数据已经删除!",begin,end);
	for(i=begin;i<=end;i++)
	name[i][0]='&';//删除记录;
}
else printf("\n取消删除!");
	return(0);
}
//////////////////////////////////////////////////////////////////////
int search()
{
char temp;
int i,n,disped=0;//定义按学号时的学号变量
char names[8];
printf("请问您要(1)按学号查找还是(2)按姓名查找?\n");
sear:;
temp=getch();
if(temp=='1') 
	{
	printf("请输入您要查找的学号:");
	scanf("%d",&n);
		if(n>=1 && n<=250 && name[n][0]!='&')
		{
		disp(n);
		return(0);	
		}
	else printf("输入有误或记录不存在!");return(0);
	}
else if(temp='2')
	{
	printf("请输入您要查找的姓名:");
	scanf("%s",&names);
	for(i=1;i<=250;i++)
		{
		if (!(strcmp(name[i],names)))disp(i);disped=1;
		}
	if(disped==0)printf("记录没找到!\n");
	return(0);
	}
goto sear;
}
//////////////////////////////////////////////////////////////////////
int loadfile()
{
int i,j,number;
FILE * fp;
char filename[100];
char temp[8];
printf("请输入你想读文件的文件名及路径(8.3格式):");
scanf("%s",filename);
fp=fopen(filename,"r");
if(fp==NULL) {printf("文件没找到!");return(0);}
reader:;
	 fscanf(fp,"%s",&temp);
	 if(!(strcmp(temp,"*#06#\0"))){fclose(fp);printf("\n文件读入成功!\n");return(0);}
	 if(strcmp(temp,"#####\0")){fclose(fp);printf("文件格式不正确,该文件不是由本程序保存的。");return(0);}
	 else
		{
		fscanf(fp,"%d",&number);
		fscanf(fp,"%s",&name[number]);
	 	for(i=0;i<=19;i++)
			{
			fscanf(fp,"%f",&score[i][number]);
			}
	 }
goto reader;
}
//////////////////////////////////////////////////////////////////////
int savefile()
{
int i,j,listed=0;
FILE * fp;
char filename[100];
save:;
printf("\n请输入你想存为文件的文件名及路径(8.3格式):");
scanf("%s",filename);
fp=fopen(filename,"w");
if(fp==NULL){printf("\n无法保存文件,请检查路径是否存在!");goto save;}
for(i=1;i<250;i++)
	{
		if(name[i][0]!='&')
		{
		fprintf(fp,"#####\n");
		fprintf(fp,"%d\n",i);
		fprintf(fp,"%s\n",name[i]);
		for(j=1;j<=19;j++)
			{
			fprintf(fp,"%5.1f\n",score[j][i]);
			}
		listed=1;//将已有记录标记置为1
		}
	}
fprintf(fp,"*#06#");
fclose(fp);
if(listed==0)printf("当前无记录!");
else printf("记录已存盘!");
return(0);
}
////////////////////////////////////////////////////////////////////////////////
int list()
{
int i,j,listed=0;
float s=0;
for(i=1;i<250;i++)
	{
		if(name[i][0]!='&')
		{
		printf("\n学号:%2d       姓名:%s         各科成绩如下:\n",i,name[i]);
		for(j=0;j<=19;j++)
			{
			printf("%2d:%5.1f  ",j+1,score[j][i]);
			s=s+score[j][i];
			}
		printf("总分:%8.1f  平均分:%5.2f",s,s/20);
		listed=1;//将已有记录标记置为1
		}
	}
if(listed==0)printf("当前无记录!");
return(0);
}

int disp(int i)
{
int j,listed=0;
float s=0;
	if(name[i][0]!='&')
		{
		printf("\n学号:%2d       姓名:%s         各科成绩如下:\n",i,name[i]);
		for(j=0;j<=19;j++)
			{
			printf("%2d:%4.1f   ",j+1,score[j][i]);
			s=s+score[j][i];
			}
		printf("总分:%6.1f  平均分:%5.2f",s,s/20);
		listed=1;//将已有记录标记置为1
		}
	if(listed==0)printf("记录不存在!");
return(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -