📄 610672.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 + -