本文目錄一覽:
c語言編寫查詢學生成績管理程序。
#includestdio.h
#includestdlib.h
#includestring.hstruct record
{
char xuehao[10];//學號
char name[20]; //姓名
char sex[3];//性別
int ke1;//數學
int ke2 ;//語文
int ke3;//英語
int pin;
}stu[50];
int k=1,n,m;void readfile();
void seek();
void insert();
void del();
void save();
void menu();
void seek()
{int i,j,item,flag;brchar s1[20];brprintf(“——————\n”);brprintf(“1.按學號查詢\n”);brprintf(“2.退出本菜單\n”);brprintf(“——————\n”);brwhile(1)br{ printf(“請選擇子菜單編號:”);brscanf(“%d”,item);brflag=0;brswitch(item)br{brcase 1:brprintf(“請輸入要查詢的學生的學號:\n”);brscanf(“%s”,s1);brfor(i=0;in;i++)brif(strcmp(stu[i].xuehao,s1)==0)br{ flag=1;brprintf(“該學生學號,姓名,性別,數學,語文,英語 分別為:\n”);brprintf(” %s %s %s %d %d %d”,stu[i].xuehao,stu[i].name,brstu[i].sex,stu[i].ke1,stu[i].ke2,stu[i].ke3);br}
if(flag==0)
printf(“該學號不存在!\n”); break;
case 2:return;
default:printf(“請在1-2之間選擇\n”);
}
}
}
void insert()
{ int i=n,j,flag;
printf(“請輸入待增加的學生數:\n”);
scanf(“%d”,m);
do
{ flag=1;
while(flag)
{ flag=0;
printf(“請輸入第 %d 個學生的學號:\n”,i+1);
scanf(“%s”,stu[i].xuehao);
for(j=0;ji;j++)
if(strcmp(stu[i].xuehao,stu[j].xuehao)==0)
{ printf(“已有該學號,請檢查後重新錄入!\n”);
flag=1;
break;
}
}
printf(“請輸入第 %d 個學生的姓名:”,i+1);
scanf(“%s”,stu[i].name);
printf(“\n請輸入第 %d 個學生的性別:”,i+1);
scanf(“%s”,stu[i].sex);
printf(“\n請輸入第 %d 個學生的數學成績:”,i+1);
scanf(“%d”,stu[i].ke1);
printf(“\n請輸入第 %d 個學生的語文成績:”,i+1);
scanf(“%d”,stu[i].ke2);
printf(“\n請輸入第 %d 個學生的英語成績:”,i+1);
scanf(“%d”,stu[i].ke3);if(flag==0)
{ i=i;
i++;
}
}while(in+m);
n+=m;
printf(“錄入完畢!\n\n”);
}void del()
{ int i,j,flag=0;
char s1[20];
printf(“請輸入要刪除學生的學號:\n”);
scanf(“%s”,s1);
for(i=0;in;i++)
if(strcmp(stu[i].xuehao,s1)==0)
{ flag=1;
for(j=i;jn-1;j++)
stu[j]=stu[j+1];
}
if(flag==0)
printf(“該學號不存在!\n”);
if(flag==1)
{ printf(“刪除成功,顯示結果請選擇菜單6\n”);
n–;
}
}
void readfile()
{
char buf[80],*p=”student.dat”;
FILE *fp;
int i=0;
if ((fp=fopen(“student.dat”,”r”))==NULL)
{ printf(“Open file %s error! Strike any key to exit!”,p);
system(“pause”);
exit(0);
}
while(fscanf(fp,”%s%s%s%d%d%d”,stu[i].xuehao,stu[i].name,
stu[i].sex,stu[i].ke1,stu[i].ke2,stu[i].ke3)==6)
{ i++;
i=i;
}
fclose(fp);
n=i;
printf(“錄入完畢!\n”);
}void save()
{ int i,j,k,flag=0;
FILE *fp;
fp=fopen(“student.dat”,”w”);
for(i=0;im;i++)
{
fprintf(fp,”%s%s%d%d%d”,stu[i].xuehao,stu[i].name,stu[i].sex,stu[i].ke1,
stu[i].ke2,stu[i].ke3);
fclose(fp);
printf(“已儲存”);
}
}
void paixu()
{
int i,j,k,t;
for(i=0;im;i++)
{
stu[i].pin=(stu[i].ke1+stu[i].ke2+stu[i].ke3)/3;
}
for(i=0;i=m-2;i++)
{
k=i;
for(j=i+1;j=m-1;j++)
if(stu[j].pinstu[k].pin)
k=j;
if(k!=i)
{
t=stu[k].pin;
stu[k].pin=stu[i].pin;
stu[i].pin=t;
}
}
for(i=0;im;i++)
{printf(“第 %d 個學生的姓名%s:”,i+1,stu[i].name);br printf(“\n第 %d 個學生的性別:%s”,i+1,stu[i].sex);br printf(“\n第 %d 個學生的數學成績:%d”,i+1,stu[i].ke1);br printf(“\n第 %d 個學生的語文成績:%d”,i+1,stu[i].ke2);br printf(“\n第 %d 個學生的英語成績:%d”,i+1,stu[i].ke3);br printf(“\n第 %d 個學生的平均成績:%d”,i+1,stu[i].pin);br }
}
void menu()
{ int nub;
printf(” \n\n學生成績管理系統\n\n”);
printf(“*****系統功能菜單*****\n”);
printf(“———————-\n”);
printf(“1.輸入學生信息\n”);
printf(“2.查詢學生信息\n”);
printf(“3.按學號刪除信息\n”);
printf(“4.讀入學生信息\n”);
printf(“5.保存信息(要把修改保存到文件,退出程序前必須執行本項)\n”);
printf(“6.查詢學生平均成績信息\n”);
printf(“0.退出系統\n”);
printf(“———————-\n”);
printf(“請選擇菜單編號:”);
scanf(“%d”,nub);
switch(nub)
{
case 1:insert();break;
case 2:seek();break;
case 3:del();break;
case 4:readfile();break;
case 5:save();break;
case 6:paixu();break;
case 0:k=0;break;
default:printf(“請在0-6之間選擇\n”);
}}
void main()
{
while(k)
menu();
}
//平均數是排序後,輸出的,如果你不想直接輸入,那就不要對每個學生進行選擇排序了
怎樣用C語言寫學生成績管理系統?
程序如下: #includestdio.h
void main()
{
float student[100][7];
//student[][0]存放學號,student[][1]到student[][4]存放四門成績,
//student[][5]存放總分,student[][6]存放平均分,student[][7]存放排名
int n,i,j,k,p,t,count,flag;
int a[100],b[100],c[100];
//a[]存放排序後的下標,b[]存放總分(備份),c[]存放排名的數據
printf(“輸入學生的個數:\n”);
scanf(“%d”,n);
for(i=0;i=n-1;i++)
{
printf(“輸入第%d個學生的學號:”,i+1);
scanf(“%f”,student[i][0]);
for(j=0,student[i][5]=0;j=3;j++)
{
printf(“輸入第%d個學生的第%d門成績:”,i+1,j+1);
scanf(“%f”,student[i][j+1]);
student[i][5]+=student[i][j+1]; //計算總分
}
b[i]=student[i][5]; //把總分再賦給b[]數組,以後排序用
student[i][6]=student[i][5]/4; //計算平均分
}
for(i=0;i=n-2;i++) //對數組b[](即總分)進行排序
for(j=0;j=n-2-i;j++)
{
if(b[j]b[j+1])
{
t=b[j];
b[j]=b[j+1];
b[j+1]=t;
}
}
for(i=0,k=0;i=n-1;i++)//用數組a[]取得排序後總分的下標
{
for(j=0,flag=0;j=n-1;j++)
{
if(b[i]==student[j][5])
{
if(0==k) //如果數組a[]中有零個元素,就把j直接賦給a[]
{
a[k]=j;
k++;
flag=1;
}
else //如果數組a[]中有元素了,則判斷
{
for(p=0;p=k-1;p++)
if(a[p]!=j)
{
a[k]=j;
k++;
flag=1;
break;
}
}
}
if(1==flag)
break;
}
}
for(count=1,i=0;i=n-1;i++) //對c[](排名)進行處理
{
if(b[i]==b[i+1])
{
c[i]=count;
}
else
if(b[i]b[i+1])
{
c[i]=count;
count++;
}
}
printf(“\n以下是統計結果:\n”);
printf(“學號 s[1] s[2] s[3] s[4] 總分 平均分 排名\n”);
for(i=0;i=n-1;i++)
{
printf(“%.0f\t%.0f\t%.0f\t%.0f\t%.0f\t%.0f\t%f\t%d\n”,student[a[i]][0],student[a[i]][1],student[a[i]][2],student[a[i]][3],student[a[i]][4],student[a[i]][5],student[a[i]][6],c[i]);
}
} 有疑問提出
用c語言做一個學生成績管理系統。。。。。
自己製作成績查詢系統成本高昂,建議使用易查分系統,三分鐘即可搭建完成。
C語言 學生成績管理系統?
附錄* 綜合實例——學生成績查詢系統
這是一個用c語言編寫的小軟體——學生成績查詢系統,同學們可以將其作為一個綜合實例,對其進行仔細的閱讀和研究,體驗編程處理問題的過程,加深對編程語言的理解,提高處理問題的綜合能力。
1、程序的功能:
1)可以根據用戶輸入的輸入、輸出文件名,讀入學生成績,完成數據的初始化。
2)可以查詢指定學生的成績,可以是指定科目的成績,也可以是全部科目的成績。
3)友好退出。
2、使用說明:
1)將輸入文件放到指定的目錄下(即../student/)
圖1
2)啟動管理程序student.exe
3)在程序的使用界面,首先輸入輸入文件名和輸出文件名,完成程序的初始化,操作如下圖所示
圖2
然後,按照按照提示,輸入學生姓名和需要程序的成績(此軟體暫時只設置了五成成績,同學們可以按照需要擴展)科目代碼,也可以輸入查詢所有成績的代碼。程序成績,如下圖所示
圖3
4)輸入代碼「q」退出程序。
3、程序代碼
#include
#include
#include
FILE *f1,*f2;
char file1[20],file2[20],name[200][20],name1[15];
int n,m,data[200][10];
void init(){
int i,j;
char ch=’ ‘;
printf(“%20c歡迎使用班級成績管理系統\n\n”,ch);
printf(“請輸入輸入和輸出文件名(中間用一個空格隔開):\n”);
scanf(“%s %s”,file1,file2);// 1)該條語句的功能是什麼?
f1=fopen(file1,”r”);
f2=fopen(file2,”w”);
fscanf(f1,”%d%d”,n,m); // 2)該條語句的功能是什麼?
for(i=1;i=n;i++)
{
fscanf(f1,”%s”,name[i]); // 3)該條語句的功能是什麼?
data[i][0]=0; // 4)該條語句的功能是什麼?沒有這條語句可不可以?
for(j=1;j=m;j++)
{
fscanf(f1,”%d”,data[i][j]);
data[i][0]+=data[i][j]; // 5)該條語句的功能是什麼?
}
}
fprintf(f2,”name\tyuwen\tshuxue\tyingyu\twuli\thuaxue\tzongfen\n “);
for(i=1;i=n;i++)
{
fprintf(f2,”%s\t”,name[i]);
for(j=1;j=m;j++)
fprintf(f2,”%d\t”,data[i][j]);
fprintf(f2,”%d\n”,data[i][0]);
}
fclose(f1);// 6)問什麼可以在這關閉輸入文件?
fclose(f2);
}
void search(char na[],char num){
int i=1,j;
while((i=n)(strcmp(na,name[i])!=0))i++;
if(i=n){
switch(num){
case ‘1’:printf(“%s的語文成績為%d!\n”,na,data[i][1]);break;
case ‘2’:printf(“%s的數學成績為%d!\n”,na,data[i][2]);break;
case ‘3’:printf(“%s的英語成績為%d!\n”,na,data[i][3]);break;
case ‘4’:printf(“%s的物理成績為%d!\n”,na,data[i][4]);break;
case ‘5’:printf(“%s的化學成績為%d!\n”,na,data[i][5]);break;
case ‘a’:
printf(“%s的各科成績為:\n”,name[i]);
printf(“語文\t數學\t英語\t物理\t化學\t總成績\n”);
for(j=1;j=m;j++)
printf(“%d\t”,data[i][j]);
printf(“%d\n”,data[i][0]);
break;
default: printf(“沒有這種查詢方式,請確認後再次輸入!\n”);
}
}
else printf(“查無此人,請確認後再次查詢!\n”);
printf(“\n\n”);
}
main(){
init();//數據初始化
printf(“數據初始化結束!\n\n”);
printf(“————————————————\n\n”);
char na[20];
char num;
while(1){ // 7)該條語句的功能是什麼?
//scanf(“%s%c%c”,na,num,num); // 8)此處的輸入可不可以用這條語句?
printf(“請輸入學生的姓名和要查詢成績的科目代碼(中間用一個空格隔開):\n(1 語文 2 數學 3 英語 4 物理 5 化學 a 所有科目成績 q 退出)\n”);
scanf(“%s”,na);
if(strcmp(na,”q”)==0)break; // 9)問什麼要用這條語句strcmp(na,”q”)==0?
scanf(“%c%c”,num,num); // 10)為什麼用了兩次num?
search(na,num);
printf(“————————————————\n\n”);
printf(“\n請輸入新的查詢:\n\n”);
}
system(“pause”);
}
這是我以前的一個程序,你改改吧,應該很好改
如何用C語言編寫”學生成績管理系統”
#includestdio.h
#includestdlib.h
#includeconio.h
#includestring.h
struct student{
int id;
char name[10];
int age;
char sex[10];
char birthady[20];
int tel;
char nativeplace[50];
}st[50];
int i=0;
void shuru() {
char a;
do{
printf(“\n請輸入學號:”);
scanf(“%d”,st[i].id);
fflush(stdin);
printf(“\n請輸入姓名:”);
gets(st[i].name);
printf(“\n”) ;
printf(“請輸入年齡:”);
scanf(“%d”,st[i].age);
fflush(stdin);
printf(“\n請輸入姓別:”);
gets(st[i].sex);
fflush(stdin);
printf(“\n請輸入生日:”);
gets(st[i].birthady);
printf(“\n請輸入電話:”);
scanf(“%d”,st[i].tel);
fflush(stdin);
printf(“\n請輸入籍貫:”);
gets(st[i].nativeplace);
printf(“\n是否繼續輸入另外一個學生信息?(y/n)”);
fflush(stdin);
a=getchar();
i++;
}while(a==’y’ i=50);
}
void xianshi()
{
int j;
printf(“\t學號\t姓名\t年齡\t性別\t生日\t\t電話\t籍貫\n”);
for(j=0;ji;j++)
printf(“\t%d\t%s\t%d\t%s\t%s\t%d\t%s\n”,
st[j].id,st[j].name,st[j].age,st[j].sex,st[j].birthady,st[j].tel,st[j].nativeplace);
}
void paixu() //按年齡從大到小排序函數
{
int j,k;
int temp;
for(j=0;ji;j++)
{
for(k=0;ki-1-j;k++)
{
if(st[k].agest[k+1].age)
{
temp=st[k].age;
st[k].age=st[k+1].age;
st[k+1].age=temp;
}
}
}
xianshi(); //排序後輸出
}
void chazhao()
{
int m;
char name[20],b;
do
{
printf(“\n請輸入想查找的學生姓名:”);
fflush(stdin);
gets(name);
for(m=0;mi;m++)
{
if(strcmp(name,st[m].name)==0)
{
printf(“\n\t您查找的學生在第%d個位置找到了!!!\n”,m+1);
break;
}
}
if(m=20)
printf(“\n\t沒有找到這個學生!!!\n”);
else
{
printf(“\t學號\t姓名\t年齡\t性別\t生日\t\t電話\t籍貫\n”);
printf(“\t%d\t%s\t%d\t%s\t%s\t%d\t%s\n”,
st[m].id,st[m].name,st[m].age,st[m].sex,st[m].birthady,st[m].tel,st[m].nativeplace);
}
printf(“\n是否查找另一個學生的信息?(y/n)”);
fflush(stdin);
b=getchar();
}while(b==’y’);
}
void shanchu()
{
char name[20],c;
int a,b;
do
{
printf(“\n請輸入要刪除的學生姓名:\n”);
fflush(stdin);
gets(name);
for(a=0;ai;a++)
{
if(strcmp(name,st[a].name)==0)
break;
}
for(b=a;bi;b++)
st[b]=st[b+1];
if(ai)
printf(“\t沒有找到這個學生!!!\n”);
else
{
i–;
xianshi();
}
printf(“\n是否繼續刪除另一個學生信息?(y/n) “);
fflush(stdin);
c=getchar();
}while(c==’y’);
}
void charu()
{
shuru();
paixu();
}
void main() //主函數
{
int change;
do{
system(“cls”);
printf(“============================學生信息管理系統===================================\n”);
printf(“\t\t一: 輸入學生信息\n”);
printf(“\t\t二: 顯示學生信息\n”);
printf(“\t\t三: 查找學生信息\n”);
printf(“\t\t四: 刪除學生信息\n”);
printf(“\t\t五: 插入學生信息\n”);
printf(“\t\t六: 退出程序\n”);
fflush(stdin);
printf(“\t\t請輸入功能選項:”);
scanf(“%d”,change);
switch(change)
{
case 1:
shuru(); break;
case 2:
xianshi(); break;
case 3:
chazhao(); break;
case 4:
shanchu(); break;
case 5:
charu(); break;
case 6:
break;
}
getch();
}while(change!=6);
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/158093.html