當前位置:成語大全網 - 書法字典 - 學生成績的數據字典

學生成績的數據字典

之前也找過,但是做完了也沒留下底子。這個之前用過,應該還可以。

# include & ltstdio.h & gt

# include & ltstdlib.h & gt

# include & ltstring.h & gt

#定義最大1000

Typedef無結構//定義課程結構。

{

int Lesson _ Num

char Lesson _ Name[50];

int Lesson _ Mark

int Lesson _ Credit

}課;

Typedef struct Student //定義學生的結構。

{

char Name[50];

int Num

int Lesson _ Count

第L課[20];

}學生;

學生S[MAX];

靜態int Student _ Count = 0;//記錄學生人數的變量

void print interface();//打印界面

int AddStudent();//Add,有返回值,表示操作成功。

int del student();//刪除,有返回值,表示操作成功。

void check student();//查看學生成績

void check class();//查看班級報告表

void WriteFile();//寫入文本文件

void ReadFile();//讀取文本文件

void main()

{

int選擇;

while (1)

{

print interface();

scanf("%d%*c ",& amp選擇);//"%*c "吸收回車,因為後面會輸入字母類型。

if(選擇& gt= 0 & amp& amp選擇& lt= 6) //選擇操作合法。

{

開關(選擇)

{

案例0:出口(1);

案例1:

{

系統(“cls”);

if(add student())printf(" \ n添加成功...按enter繼續\ n ");

elseprintf(" \ n添加失敗...回車繼續\ n ");

getchar();

getchar();

系統(“cls”);

打破;

}

案例二:

{

系統(“cls”);

if(del student())printf(" \ n刪除成功...按enter繼續\ n ");

elseprintf(" \ n刪除失敗...回車繼續\ n ");

getchar();

getchar();

系統(“cls”);

打破;

}

案例三:

{

系統(“cls”);

check student();

系統(“cls”);

打破;

}

案例4:

{

系統(“cls”);

check class();

系統(“cls”);

打破;

}

案例五:WriteFile();系統(“cls”);打破;

案例6:ReadFile();系統(“cls”);打破;

默認值:;

}

}

其他

{

Printf("沒有這個功能...重新選...回車確認\ n ");//選擇操作非法

getchar();

系統(“cls”);//清屏功能

}

}

}

void打印接口()

{

printf(" \ t-\ n ");

Printf("\t| 1,add | \ n ");

printf(" \ t | | \ n ");

Printf("\t| 2,delete | \ n ");

printf(" \ t | | \ n ");

Printf("\t| 3,檢查學生成績| \ n ");

printf(" \ t | | \ n ");

Printf("\t| 4,check class report form | \ n ");

printf(" \ t | | \ n ");

Printf("\t| 5,寫入文本文件| \ n ");

printf(" \ t | | \ n ");

Printf("\t| 6,讀取文本文件| \ n ");

printf(" \ t | | \ n ");

Printf("\t| 0,exit | \ n ");

printf(" \ t-\ n ");

printf(" \ t選擇操作:");

}

int AddStudent()

{

int S_count,I,j;

Printf("\n添加..................\ n ");

printf(" \ n添加學生人數(如1,2...999):");

scanf("%d ",& amps _ count);

if(學生人數+學生人數& gt= MAX)返回0;//超出數組的上限。

for (i =學生_計數;我& lt學生_計數+S _計數;i++)

{

Printf ("\ n \ tStudent %d: \n ",I-Student _ Count+1);

printf(" \ n \ t學生ID:");scanf("%d%*c ",& ampS[i]。num);

printf(" \ n \ t學生姓名:");獲取(S[i]。姓名);

printf(" \ n \ t該學生選修的課程數:");scanf("%d ",& ampS[i]。lesson _ Count);

for(j = 0;j & ltS[i]。Lesson _ Countj++)

{

Printf ("\ n \ tCourse %d: \n ",j+1);

printf(" \ n \ t \ t課程編號:");scanf("%d%*c ",& ampS[i]。L[j]。lesson _ Num);

printf(" \ n \ t \ t課程名稱:");獲取(S[i]。L[j]。lesson _ Name);

printf(" \ n \ t \ t課程分數:");scanf("%d ",& ampS[i]。L[j]。lesson _ Mark);

printf(" \ n \ t \ t課程學分:");scanf("%d ",& ampS[i]。L[j]。lesson _ Credit);

如果(S[i]。L[j]。Lesson _ Mark & lt60) S[i]。L[j]。lesson _ Credit = 0;//不及格的課程學分為0。

}

}

學生_計數+= S _計數;

返回1;

}

int DelStudent()

{

char * D _ Name

int D _ Num

int i,j;

printf(" \ n填寫要刪除的學生信息:\ n ");

printf(" \ n學生姓名:");獲取(D _ Name);

printf(" \ n學生ID:");scanf("%d ",& ampd _ Num);

for(I = 0;我& lt學生_計數;i++)

{

如果(!strcmp(S[i].Name,D_Name)和amp& ampS[i]。數量= = D _數量)

{

printf(" \ n找到該學生,刪除......................................................................................................................................................));

for(j = I+1;j & lt學生_計數;j++)

{

S[j-1]= S[j];

}

打破;

}

}

if (i ==學生人數)

{

printf(" \ n找不到學生...請核對信息\ n \ n ");

返回0;

}

其他

{

student _ Count-;

返回1;

}

}

void CheckStudent()

{

int C _ Choice

char C _ Name[50];

int C _ Num

int i,j;

printf(" \ n輸入學生信息(1。名稱\\ 2。學生證)並選擇:“);

scanf("%d%*c ",& ampc _ Choice);

printf(" \ n查找................\ n ");

if(c _ choice = = 1 | | c _ choice = = 2)//選擇合法。

{

if (C_Choice == 1)

{

printf(" \ n name:");獲取(C _ Name);

for(I = 0;我& lt學生_計數;I++) //全部窮舉,防止重名。

{

如果(!strcmp(S[i].姓名,C_Name))

{

printf(" \ n學生ID:% d \ t姓名:%s\n ",S[i]。數字,S[i]。姓名);

printf(" \ n課程編號\ t課程名稱\ t課程分數\ t課程學分\ n ");

printf("-\ n ");

for(j = 0;j & ltS[i]。Lesson _ Countj++)

{

printf("%d\t\t%s\t\t%d\t\t%d\n ",S[i]。L[j]。Lesson_Num

S[i]。L[j]。Lesson_Name,S[i]。L[j]。第壹課馬克,

S[i]。L[j]。lesson _ Credit);

printf("-\ n ");

}

printf(" \ n \ n ");

}

}

}

其他

{

printf(" \ n學生ID:");scanf("%d%*c ",& ampc _ Num);

for(I = 0;我& lt學生_計數;I++) //不要窮舉,妳的學號是唯壹的。

{

如果(S[i]。數量= = C _數量)

{

printf(" \ n學生ID:% d \ t姓名:%s\n ",S[i]。數字,S[i]。姓名);

printf(" \ n課程編號\ t課程名稱\ t課程分數\ t課程學分\ n ");

printf("-\ n ");

for(j = 0;j & ltS[i]。Lesson _ Countj++)

{

printf("%d\t\t%s\t\t%d\t\t%d\n ",S[i]。L[j]。Lesson_Num

S[i]。L[j]。Lesson_Name,S[i]。L[j]。第壹課馬克,

S[i]。L[j]。lesson _ Credit);

printf("-\ n ");

}

printf(" \ n \ n ");

打破;

}

}

}

Printf("搜索完成...回車繼續\ n ");

getchar();

}

否則//選擇是非法的

{

Printf("錯誤選擇...回車繼續\ n ");

getchar();

返回;

}

}

void CheckClass()

{

int C _ LNum

double SSNum = 0,PassSNum = 0,SMark = 0;

int i,j;

printf(" \ n請輸入課程編號:");

scanf("%d%*c ",& ampc _ LNum);

printf(" \ n查找...................................................................................................................................................................

Printf("學號\ tname \ tname當然\ tname當然\ tname當然\ tname當然\ tname當然\ n ");

printf("-\ n ");

for(I = 0;我& lt學生_計數;i++)

{

for(j = 0;j & ltS[i]。Lesson _ Countj++)

{

如果(S[i]。L[j]。Lesson_Num == C_LNum)

{

printf(" % d \ t % S \ t % S \ t \ t % d \ t \ t % d \ n ",S[i]。數字,S[i]。姓名,S[i]。L[j]。課程名稱,

S[i]。L[j]。馬克,S[i]。L[j]。lesson _ Credit);

printf("-\ n ");

SMark += S[i]。L[j]。Lesson _ Mark

ss num++;

如果(S[i]。L[j]。Lesson _ Mark & gt= 60)passs num++;

打破;

}

}

}

Printf("\n平均分:%.2lf\t通過率:% .2lf%% \ n \ n ",smark/ssnum,passs num/ss num * 100);

printf(" \ n搜索完成...回車繼續\ n ");

getchar();

}

void WriteFile()

{

FILE * fp

int i,j;

char Adr[100];

printf(" \ n請輸入寫入文件的地址:\ n \地址輸入格式:例如d: \ \ \ student.txt (\ \ \是轉義符):");

scanf("%s%*c ",Adr);

printf(" \ n正在寫入.............\ n ");

If (fp = fopen(Adr," w ")//寫文件

{

fprintf(fp," %d\n ",Student _ Count);

for(I = 0;我& lt學生_計數;i++)

{

fprintf(fp," %d\t%s\t%d\n ",S[i]。數字,S[i]。姓名,S[i]。lesson _ Count);

for(j = 0;j & ltS[i]。Lesson _ Countj++)

{

fprintf(fp," %d\t%s\t%d\t%d\n ",S[i]。L[j]。Lesson_Num

S[i]。L[j]。Lesson_Name,S[i]。L[j]。第壹課馬克,

S[i]。L[j]。lesson _ Credit);

}

}

printf(" \ n寫入完成...回車繼續\ n ");

fclose(FP);

}

其他

{

printf(" \ n寫入失敗...回車繼續\ n ");

}

getchar();

}

void ReadFile()

{

FILE * fp

int i,j;

char Adr[100];

printf(" \ n請輸入文件地址進行讀取(為了防止讀取錯誤,希望與寫入文件的內容格式壹致):\ n \ n地址輸入格式:例如d: \ \ \ student.txt (\ \ \為轉義符):");

scanf("%s%*c ",Adr);

printf(" \ n正在閱讀...............\ n ");

if (fp = fopen(Adr," r "))

{

fscanf(fp," %d ",& amp學生_計數);

for(I = 0;我& lt學生_計數;i++)

{

fscanf(fp," %d%s%d ",& ampS[i]。數字& ampS[i]。姓名& ampS[i]。lesson _ Count);

for(j = 0;j & ltS[i]。Lesson _ Countj++)

{

fscanf(fp," %d%s%d%d ",& ampS[i]。L[j]。Lesson_Num

& ampS[i]。L[j]。課程名稱& ampS[i]。L[j]。第壹課馬克,

& ampS[i]。L[j]。lesson _ Credit);

}

}

printf(" \ n讀取成功...回車繼續\ n ");

fclose(FP);

}

其他

{

printf(" \ n讀取失敗...回車繼續\ n ");

}

getchar();

}