?? 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 + -