#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
struct student
{
int xh;
char xm[30];
float kc1;
float kc2;
float kc3;
float zf;
};
struct student cj[30];
int main()
{
void cjsr();
void cjtj();
void cjpx();
void cjcx();
int ch;
while(1)
{system("cls");
printf(" 學生成績管理系統\n");
printf(" -----------------------\n");
printf(" 1---學生成績輸入\n");
printf(" 2---學生成績統計\n");
printf(" 3---學生成績排序\n");
printf(" 4---學生成績查詢\n");
printf(" 0---退出系統\n");
printf(" -----------------------\n");
printf(" 請選擇0--4:");
scanf("%d",&ch);
switch(ch)
{
case 0:printf("退出系統!\n"); exit(0);
case 1:cjsr();break;
case 2:cjtj();break;
case 3:cjpx();break;
case 4:cjcx();break;
default: printf("選單選擇錯誤!\n");
}
printf("按任意鍵繼續...");
}
}
void cjsr()
{
int i;
FILE *fp;
fp=fopen("cj.txt","r");
for(i=0;i<10;i++)
{
fscanf(fp,"%d%s%f%f%f",&cj[i].xh,cj[i].xm,&cj[i].kc1,&cj[i].kc2,&cj[i].kc3);
}
fclose(fp);
printf("學號 姓名 語文 數學 英語\n");
for(i=0;i<=9;i++)
{
printf("%03d ",cj[i].xh);
printf("%8s",cj[i].xm);
printf("%7.1f",cj[i].kc1);
printf("%7.1f",cj[i].kc2);
printf("%7.1f",cj[i].kc3);
printf("\n");
}
}
void cjtj()
{
void xmtj();
void kctj();
int ch;
while(1)
{system("cls");
printf(" 學生成績統計\n");
printf(" ----------------------\n");
printf(" 1---按學生統計\n");
printf(" 2---按課程統計\n");
printf(" 0---退出統計\n");
printf(" ----------------------\n");
printf(" 請選擇0--2:");
scanf("%d",&ch);
switch(ch)
{
case 0:printf("退出統計!\n"); return;
case 1:xmtj();break;
case 2:kctj();break;
default: printf("選單選擇錯誤!\n");
}
printf("按任意鍵繼續...");
getch();
}
}
void xmtj()
{
int i;
for(i=0;i<=9;i++)
cj[i].zf=cj[i].kc1+cj[i].kc2+cj[i].kc3;
printf("學號 姓名 語文 數學 英語 總分\n");
for(i=0;i<=9;i++)
{
printf("%03d ",cj[i].xh);
printf("%8s",cj[i].xm);
printf("%7.1f",cj[i].kc1);
printf("%7.1f",cj[i].kc2);
printf("%7.1f",cj[i].kc3);
printf("%7.1f",cj[i].zf);
printf("\n");
}
}
void kctj()
{
float kczf[3]={0};
int i;
for(i=0;i<=9;i++)
{
kczf[0]=kczf[0]+cj[i].kc1;
kczf[1]=kczf[1]+cj[i].kc2;
kczf[2]=kczf[2]+cj[i].kc3;
}
printf(" 語文 數學 英語 \n");
printf("總分:%7.1f%7.1f%7.1f",kczf[0],kczf[1],kczf[2]);
printf("\n");
}
void cjpx()
{
void zfpx();
void ywpx();
int ch;
while(1)
{system("cls");
printf(" 學生成績排序\n");
printf(" ----------------------\n");
printf(" 1---按總分排序\n");
printf(" 2---按語文排序\n");
printf(" 0---退出排序\n");
printf(" ----------------------\n");
printf(" 請選擇0--2:");
scanf("%d",&ch);
switch(ch)
{
case 0:printf("退出排序!\n"); return;
case 1:zfpx();break;
case 2:ywpx();break;
default: printf("選單選擇錯誤!\n");
}
printf("按任意鍵繼續...");
getch();
}
}
void zfpx()
{
struct student s;
int i,j;
for(i=0;i<=9;i++)
{
cj[i].zf=cj[i].kc1+cj[i].kc2+cj[i].kc3;
}
for(i=0;i<10;i++)
{
for(j=i;j<10;j++)
{
if(cj[i].zf<cj[j].zf)
{
s=cj[i];
cj[i]=cj[j];
cj[j]=s;
}
}
}
printf("學號 姓名 語文 數學 英語 總分\n");
for(i=0;i<=9;i++)
{
printf("%03d ",cj[i].xh);
printf("%8s",cj[i].xm);
printf("%7.1f",cj[i].kc1);
printf("%7.1f",cj[i].kc2);
printf("%7.1f",cj[i].kc3);
printf("%7.1f",cj[i].zf);
printf("\n");
}
}
void ywpx()
{
struct student s;
int i,j;
for(i=0;i<10;i++)
{
for(j=i;j<10;j++)
{
if(cj[i].kc1<cj[j].kc1)
{
s=cj[i];
cj[i]=cj[j];
cj[j]=s;
}
}
}
printf("學號 姓名 語文 數學 英語\n");
for(i=0;i<=9;i++)
{
printf("%03d ",cj[i].xh);
printf("%8s",cj[i].xm);
printf("%7.1f",cj[i].kc1);
printf("%7.1f",cj[i].kc2);
printf("%7.1f",cj[i].kc3);
printf("\n");
}
}
void cjcx()
{
void xhcx();
void xmcx();
int ch;
while(1)
{system("cls");
printf(" 學生成績查詢\n");
printf(" ----------------------\n");
printf(" 1---按學號查詢\n");
printf(" 2---按姓名查詢\n");
printf(" 0---退出查詢\n");
printf(" ----------------------\n");
printf(" 請選擇0--2:");
scanf("%d",&ch);
switch(ch)
{
case 0:printf("退出查詢!\n"); return;
case 1:xhcx();break;
case 2:xmcx();break;
default: printf("選單選擇錯誤!\n");
}
printf("按任意鍵繼續...");
getch();
}
}
void xhcx()
{
int i;
while(1)
{
system("cls");
printf("請輸入學號(001<=num<=010):");
scanf("%d",&i);
if( i >= 001 && i <= 010 )
{
i--;
printf("學號 姓名 語文 數學 英語\n");
printf("%03d ",cj[i].xh);
printf("%8s",cj[i].xm);
printf("%7.1f",cj[i].kc1);
printf("%7.1f",cj[i].kc2);
printf("%7.1f",cj[i].kc3);
printf("\n");
break;
}else
{
printf("學號輸入錯誤!\n");
printf("按任意鍵繼續...");
getch();
}
}
}
void xmcx()
{
int i=0,m=0;
struct student s;
while(1)
{
system("cls");
printf("請輸入學生姓名:");
scanf("%s",&s.xm);
for(i=0;i<10;i++)
{
if(strcmp(s.xm,cj[i].xm)==0)
{
m=1;
break;
}
}
if(m==1)
{
printf("學號 姓名 語文 數學 英語\n");
printf("%03d ",cj[i].xh);
printf("%8s",cj[i].xm);
printf("%7.1f",cj[i].kc1);
printf("%7.1f",cj[i].kc2);
printf("%7.1f",cj[i].kc3);
printf("\n");
break;
}else if(m==0)
{
printf("姓名輸入錯誤!\n");
printf("按任意鍵繼續...");
getch();
}
}
}
uj5u.com熱心網友回復:
要讀取的檔案是否存在?加個判斷陳述句uj5u.com熱心網友回復:
void cjsr()
{
int i;
FILE *fp;
fp=fopen("cj.txt","r");
if (!fp) {
fprintf(stderr, "open file erro!\n");
return;
}
for(i=0;i<10;i++)
{
fscanf(fp,"%d%s%f%f%f",&cj[i].xh,cj[i].xm,&cj[i].kc1,&cj[i].kc2,&cj[i].kc3);
}
fclose(fp);
printf("學號 姓名 語文 數學 英語\n");
for(i=0;i<=9;i++)
{
printf("%03d ",cj[i].xh);
printf("%8s",cj[i].xm);
printf("%7.1f",cj[i].kc1);
printf("%7.1f",cj[i].kc2);
printf("%7.1f",cj[i].kc3);
printf("\n");
}
}
判斷一下檔案打開是否成功
void xmcx()
{
int i=0,m=0;
struct student s;
while(1)
{
system("cls");
printf("請輸入學生姓名:");
//scanf("%s",&s.xm);
scanf("%s", s.xm);
for(i=0;i<10;i++)
{
if(strcmp(s.xm,cj[i].xm)==0)
{
m=1;
break;
}
}
if(m==1)
{
printf("學號 姓名 語文 數學 英語\n");
printf("%03d ",cj[i].xh);
printf("%8s",cj[i].xm);
printf("%7.1f",cj[i].kc1);
printf("%7.1f",cj[i].kc2);
printf("%7.1f",cj[i].kc3);
printf("\n");
break;
}else if(m==0)
{
printf("姓名輸入錯誤!\n");
printf("按任意鍵繼續...");
getch();
}
}
}
去掉&
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/44269.html
標籤:C語言
上一篇:go 編譯成庫供C++呼叫
下一篇:Qt交叉編譯的問題,需要高手
