當前位置:首頁 » 考試成績 » 學生成績管理系統程序設計

學生成績管理系統程序設計

發布時間: 2021-01-04 17:05:11

⑴ 簡單學生成績管理系統程序設計

看可以不咯?
#include<stdio.h>
int avgGrade(int a[50])
{
int i,sum=0,max=0,min=0;
double avg=0.0;

max=a[0];
min=a[0];

for(i=0;i<50;i++)
{
sum+=a[i];
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
}
avg=(double)sum/50;

printf("平均成績為%lf,最高成績為%d,最低成績為%d\n",avg,max,min);

return 0;
}
int compositor(int a[50])
{
int i,j,n,temp=0;

printf("請輸入您要排序的方式(0:升序,1:降序):\n");
scanf("%d",&n);

for(i=0;i<50;i++)
{
for(j=0;j<i;j++)
{
if(n==0)
{
if(a[j]>a[i])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
else
{
if(a[j]<a[i])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
for(i=0;i<50;i++)
{
printf("%d",a[i]);
}
}
int insertGrade(int a[50])
{
int i,n;
printf("請輸入你要插入的成績:\n");
scanf("%d",&n);
for(i=0;i<50;i++)
if(n>a[i])
{
for(s=49;s>=i;s--)
a[s+1]=a[s];
break;
}
a[i]=n;
}
int deleteGrade(int a[50])
{
int x,i,j;
printf("請輸入你要刪除的成績:\n");
scanf("%d",&x);
for(i=0;i<10;i++)
{
if(a[i]==x)
for(j=i+1;j<10;j++)
a[i]=a[j];
a[j]='\0';
}
}
void main()
{
int n,i,a[50];

printf("請輸入50個學生的成績:\n");
for(i=0;i<50;i++)
{
scanf("%d",&a[i]);
}

while(1)
{
printf ("--------------------------\n");
printf ("請選擇您的功能:\n\n");
printf (" 0 錄入成績\n");
printf (" 1 輸出成績\n");
printf (" 2 輸出平均分、最高分、最低分\n");
printf (" 3 成績降序或升序排列\n");
printf (" 4 插入一個成績\n");
printf (" 5 刪除用戶給定的成績\n");
printf (" 6 退出\n\n");
printf ("--------------------------\n");
scanf("%d",n);

switch(n)
{
case 0:
printf("請輸入50個學生的成績:\n");
for(i=0;i<50;i++)
{
scanf("%d",&a[i]);
}
break;
case 1:
for(i=0;i<50;i++)
{
printf("%d",a[i]);
}
break;
case 2:
avgGrade(a);
break;
case 3:
compositor(a);
break;
case 4:
insertGrade(a);
break;
case 5:
deleteGrade(a);
break;
case 6:
exit (0);
}
}
return 0;
}

⑵ c語言學生成績管理系統程序設計涉及的知識點

知識點很多啊,我隨便列幾個吧:
1、文件讀取、寫入
2、循環控制
3、遍歷數據

⑶ C語言程序設計學生成績管理系統

#include
"stdio.h"
/*定義學生結構體*/
struct
Student
{
char
ID[20];
char
Name[20];
float
Mark1;
float
Mark2;
float
Mark3;
float
Average;
};
/*聲明學生數組及學生數量*/
struct
Student
students[1000];
int
num=0;
/*求平均值*/
float
Avg(struct
Student
stu)
{
return
(stu.Mark1+stu.Mark2+stu.Mark3)/3;
}
/*通過學號返回數組下標*/
int
Student_SearchByIndex(char
id[])
{
int
i;
for
(i=0;i<num;i++)
{
if
(strcmp(students[i].ID,id)==0)
{
return
i;
}
}
return
-1;
}
/*通過姓名返回數組下標*/
int
Student_SearchByName(char
name[])
{
int
i;
for
(i=0;i<num;i++)
{
if
(strcmp(students[i].Name,name)==0)
{
return
i;
}
}
return
-1;
}
/*顯示單條學生記錄*/
void
Student_DisplaySingle(int
index)
{
printf("%10s%10s%8s%8s%8s%10s\n","學號","姓名","成績","成績","成績","平均成績");
printf("-------------------------------------------------------------\n");
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[index].ID,students[index].Name,
students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);
}
/*插入學生信息*/
void
Student_Insert()
{
while(1)
{
printf("請輸入學號:");
scanf("%s",&students[num].ID);
getchar();
printf("請輸入姓名:");
scanf("%s",&students[num].Name);
getchar();
printf("請輸入成績:");
scanf("%f",&students[num].Mark1);
getchar();
printf("請輸入成績:");
scanf("%f",&students[num].Mark2);
getchar();
printf("請輸入成績:");
scanf("%f",&students[num].Mark3);
getchar();
students[num].Average=Avg(students[num]);
num++;
printf("是否繼續?(y/n)");
if
(getchar()=='n')
{
break;
}
}
}
/*修改學生信息*/
void
Student_Modify()
{
float
mark1,mark2,mark3;
while(1)
{
char
id[20];
int
index;
printf("請輸入要修改的學生的學號:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if
(index==-1)
{
printf("學生不存在!\n");
}
else
{
printf("你要修改的學生信息為:\n");
Student_DisplaySingle(index);
printf("--
請輸入新值--\n");
printf("請輸入學號:");
scanf("%s",&students[index].ID);
getchar();
printf("請輸入姓名:");
scanf("%s",&students[index].Name);
getchar();
printf("請輸入成績:");
scanf("%f",&students[index].Mark1);
getchar();
printf("請輸入成績:");
scanf("%f",&students[index].Mark2);
getchar();
printf("請輸入成績:");
scanf("%f",&students[index].Mark3);
getchar();
students[index].Average=Avg(students[index]);
}
printf("是否繼續?(y/n)");
if
(getchar()=='n')
{
break;
}
}
}
/*刪除學生信息*/
void
Student_Delete()
{
int
i;
while(1)
{
char
id[20];
int
index;
printf("請輸入要刪除的學生的學號:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if
(index==-1)
{
printf("學生不存在!\n");
}
else
{
printf("你要刪除的學生信息為:\n");
Student_DisplaySingle(index);
printf("是否真的要刪除?(y/n)");
if
(getchar()=='y')
{
for
(i=index;i<num-1;i++)
{
students[i]=students[i+1];
}
num--;
}
getchar();
}
printf("是否繼續?(y/n)");
if
(getchar()=='n')
{
break;
}
}
}
/*按姓名查詢*/
void
Student_Select()
{
while(1)
{
char
name[20];
int
index;
printf("請輸入要查詢的學生的姓名:");
scanf("%s",&name);
getchar();
index=Student_SearchByName(name);
if
(index==-1)
{
printf("學生不存在!\n");
}
else
{
printf("你要查詢的學生信息為:\n");
Student_DisplaySingle(index);
}
printf("是否繼續?(y/n)");
if
(getchar()=='n')
{
break;
}
}
}
/*按平均值排序*/
void
Student_SortByAverage()
{
int
i,j;
struct
Student
tmp;
for
(i=0;i<num;i++)
{
for
(j=1;j<num-i;j++)
{
if
(students[j-1].Average<students[j].Average)
{
tmp=students[j-1];
students[j-1]=students[j];
students[j]=tmp;
}
}
}
}
/*顯示學生信息*/
void
Student_Display()
{
int
i;
printf("%10s%10s%8s%8s%8s%10s\n","學號","姓名","成績","成績","成績","平均成績");
printf("-------------------------------------------------------------\n");
for
(i=0;i<num;i++)
{
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[i].ID,students[i].Name,
students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);
}
}
/*將學生信息從文件讀出*/
void
IO_ReadInfo()
{
FILE
*fp;
int
i;
if
((fp=fopen("Database.txt","rb"))==NULL)
{
printf("不能打開文件!\n");
return;
}
if
(fread(&num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;i<num;i++)
{
fread(&students[i],sizeof(struct
Student),1,fp);
}
}
fclose(fp);
}
/*將學生信息寫入文件*/
void
IO_WriteInfo()
{
FILE
*fp;
int
i;
if
((fp=fopen("Database.txt","wb"))==NULL)
{
printf("不能打開文件!\n");
return;
}
if
(fwrite(&num,sizeof(int),1,fp)!=1)
{
printf("寫入文件錯誤!\n");
}
for
(i=0;i<num;i++)
{
if
(fwrite(&students[i],sizeof(struct
Student),1,fp)!=1)
{
printf("寫入文件錯誤!\n");
}
}
fclose(fp);
}
/*主程序*/
main()
{
int
choice;
IO_ReadInfo();
while(1)
{
/*主菜單*/
printf("\n------
學生成績管理系統------\n");
printf("1.
增加學生記錄\n");
printf("2.
修改學生記錄\n");
printf("3.
刪除學生記錄\n");
printf("4.
按姓名查詢學生記錄\n");
printf("5.
按平均成績排序\n");
printf("6.
退出\n");
printf("請選擇(1-6):");
scanf("%d",&choice);
getchar();
switch(choice)
{
case
1:
Student_Insert();
break;
case
2:
Student_Modify();
break;
case
3:
Student_Delete();
break;
case
4:
Student_Select();
break;
case
5:
Student_SortByAverage();
Student_Display();
break;
case
6:
exit();
break;
}
IO_WriteInfo();
}
}
你的串號我已經記下,採納後我會幫你製作

⑷ C++程序設計,學生成績管理系統

  • 學UI前景較好,培訓機構很多,可能當地選擇進行實地參觀了解,看學校的真實師資力量和教育實力再做選擇。分享UI的大概發展情況,希望對你有用。 UI即用戶界面設計行業剛剛在全球軟體業興起,屬於高薪技術設計產業,與國外在同步發展水平。其次國...

⑸ C語言程序設計——學生成績管理系統設計的編程

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int shoudsave=0; //
struct student
{
char num[10];//學號
char name[20];
char sex[4];
int cgrade;
int mgrade;
int egrade;
int totle;
int ave;
char neartime[10];//最近更新時間
};
typedef struct node
{
struct student data;
struct node *next;
}Node,*Link;
void menu()
{
printf("********************************************************************************");
printf("\t1輸入學生資料\t\t\t\t\t2刪除學生資料\n");
printf("\t3查詢學生資料\t\t\t\t\t4修改學生資料\n");
printf("\t5顯示學生資料\t\t\t\t\t6統計學生成績\n");
printf("\t7排序學生成績\t\t\t\t\t8保存學生資料\n");
printf("\t9獲取幫助信息\t\t\t\t\t0退出系統\n");
printf("********************************************************************************\n");
}
void printstart()
{
printf("-----------------------------------------------------------------------\n");
}
void Wrong()
{
printf("\n=====>提示:輸入錯誤!\n");
}
void Nofind()
{
printf("\n=====>提示:沒有找到該學生!\n");
}
void printc() // 本函數用於輸出中文
{
printf(" 學號\t 姓名 性別 英語成績 數學成績 C語言成績 總分 平均分\n");
}
void printe(Node *p)//本函數用於輸出英文
{
printf("%-12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p->data.num,p->data.name,p->data.sex,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.ave);
}
Node* Locate(Link l,char findmess[],char nameornum[]) //該函數用於定位連表中符合要求的接點,並返回該指針
{
Node *r;
if(strcmp(nameornum,"num")==0) //按學號查詢
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.num,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0) //按姓名查詢
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.name,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}
void Add(Link l) //增加學生
{
Node *p,*r,*s;
char num[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; //將指針置於最末尾
while(1)
{
printf("請你輸入學號(以'0'返回上一級菜單:)");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>提示:學號為'%s'的學生已經存在,若要修改請你選擇'4 修改'!\n",num);
printstart();
printc();
printe(s);
printstart();
printf("\n");
return;
}
s=s->next;
}

p=(Node *)malloc(sizeof(Node));

strcpy(p->data.num,num);
printf("請你輸入姓名:");
scanf("%s",p->data.name);
getchar();
printf("請你輸入性別:");
scanf("%s",p->data.sex);
getchar();
printf("請你輸入c語言成績:");
scanf("%d",&p->data.cgrade);
getchar();
printf("請你輸入數學成績:");
scanf("%d",&p->data.mgrade);
getchar();
printf("請你輸入英語成績:");
scanf("%d",&p->data.egrade);
getchar();
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle / 3;
//信息輸入已經完成
p->next=NULL;
r->next=p;
r=p;
shoudsave=1;

}
}
void Qur(Link l) //查詢學生
{
int sel;
char findmess[20];
Node *p;
if(!l->next)
{
printf("\n=====>提示:沒有資料可以查詢!\n");
return;
}
printf("\n=====>1按學號查找\n=====>2按姓名查找\n");
scanf("%d",&sel);
if(sel==1)//學號
{
printf("請你輸入要查找的學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("\t\t\t\t查找結果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else if(sel==2) //姓名
{
printf("請你輸入要查找的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
printf("\t\t\t\t查找結果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else
Wrong();

}
void Del(Link l) //刪除
{
int sel;
Node *p,*r;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:沒有資料可以刪除!\n");
return;
}
printf("\n=====>1按學號刪除\n=====>2按姓名刪除\n");
scanf("%d",&sel);
if(sel==1)
{
printf("請你輸入要刪除的學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:該學生已經成功刪除!\n");
shoudsave=1;
}
else
Nofind();
}
else if(sel==2)
{
printf("請你輸入要刪除的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:該學生已經成功刪除!\n");
shoudsave=1;
}
else
Nofind();
}
else
Wrong();
}
void Modify(Link l)
{
Node *p;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:沒有資料可以修改!\n");
return;
}
printf("請你輸入要修改的學生學號:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("請你輸入新學號(原來是%s):",p->data.num);
scanf("%s",p->data.num);
printf("請你輸入新姓名(原來是%s):",p->data.name);
scanf("%s",p->data.name);
getchar();
printf("請你輸入新性別(原來是%s):",p->data.sex);
scanf("%s",p->data.sex);
printf("請你輸入新的c語言成績(原來是%d分):",p->data.cgrade);
scanf("%d",&p->data.cgrade);
getchar();
printf("請你輸入新的數學成績(原來是%d分):",p->data.mgrade);
scanf("%d",&p->data.mgrade);
getchar();
printf("請你輸入新的英語成績(原來是%d分):",p->data.egrade);
scanf("%d",&p->data.egrade);
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle/3;
printf("\n=====>提示:資料修改成功!\n");
shoudsave=1;
}
else
Nofind();
}
void Disp(Link l)
{
int count=0;
Node *p;
p=l->next;
if(!p)
{
printf("\n=====>提示:沒有資料可以顯示!\n");
return;
}
printf("\t\t\t\t顯示結果\n");
printstart();
printc();
printf("\n");
while(p)
{
printe(p);
p=p->next;
}
printstart();
printf("\n");
}
void Tongji(Link l)
{
Node *pm,*pe,*pc,*pt,*pa; //用於指向分數最高的接點
Node *r=l->next;
if(!r)
{
printf("\n=====>提示:沒有資料可以統計!\n");
return ;
}
pm=pe=pc=pt=pa=r;
while(r!=NULL)
{
if(r->data.cgrade>=pc->data.cgrade)
pc=r;
if(r->data.mgrade>=pm->data.mgrade)
pm=r;
if(r->data.egrade>=pe->data.egrade)
pe=r;
if(r->data.totle>=pt->data.totle)
pt=r;
if(r->data.ave>=pa->data.ave)
pa=r;
r=r->next;
}
printf("------------------------------統計結果--------------------------------\n");
printf("總分最高者:\t%s %d分\n",pt->data.name,pt->data.totle);
printf("平均分最高者:\t%s %d分\n",pa->data.name,pa->data.ave);
printf("英語最高者:\t%s %d分\n",pe->data.name,pe->data.egrade);
printf("數學最高者:\t%s %d分\n",pm->data.name,pm->data.mgrade);
printf("c語言最高者:\t%s %d分\n",pc->data.name,pc->data.cgrade);
printstart();
}
void Sort(Link l)
{
Link ll;
Node *p,*rr,*s;
ll=(Link)malloc(sizeof(Node)); //用於做新的連表
ll->next=NULL;
if(l->next==NULL)
{
printf("\n=====>提示:沒有資料可以排序!\n");
return ;
}
p=l->next;
while(p)
{
s=(Node*)malloc(sizeof(Node)); //新建接點用於保存信息
s->data=p->data;
s->next=NULL;
rr=ll;
while(rr->next!=NULL && rr->next->data.totle>=p->data.totle)
rr=rr->next;
if(rr->next==NULL)
rr->next=s;
else
{
s->next=rr->next;
rr->next=s;
}
p=p->next;
}
free(l);
l->next=ll->next;
printf("\n=====>提示:排序已經完成!\n");
}
void Save(Link l)
{
FILE* fp;
Node *p;
int flag=1,count=0;
fp=fopen("c:\\student","wb");
if(fp==NULL)
{
printf("\n=====>提示:重新打開文件時發生錯誤!\n");
exit(1);
}
p=l->next;
while(p)
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("\n=====>提示:文件保存成功.(有%d條記錄已經保存.)\n",count);
shoudsave=0;
}
fclose(fp);
}
void main()
{
Link l;//連表
FILE *fp; //文件指針
int sel;
char ch;
char jian;
int count=0;
Node *p,*r;
printf("\t\t\t\t學生成績管理系統\n\t\t\t\t-------07康尼學院 張丹(240072507)\n");
l=(Node*)malloc(sizeof(Node));
l->next=NULL;
r=l;
fp=fopen("C:\\student","rb");
if(fp==NULL)
{
printf("\n=====>提示:文件還不存在,是否創建?(y/n)\n");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("C:\\student","wb");
else
exit(0);
}
printf("\n=====>提示:文件已經打開,正在導入記錄......\n");
while(!feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp)) //將文件的內容放入接點中
{
p->next=NULL;
r->next=p;
r=p; //將該接點掛入連中
count++;
}
}
fclose(fp); //關閉文件
printf("\n=====>提示:記錄導入完畢,共導入%d條記錄.\n",count);
while(1)
{
menu();
printf("請你選擇操作:");
scanf("%d",&sel);
if(sel==0)
{
if(shoudsave==1)
{ getchar();
printf("\n=====>提示:資料已經改動,是否將改動保存到文件中(y/n)?\n");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(l);
}
printf("\n=====>提示:你已經退出系統,再見!\n");
break;
}
switch(sel)
{
case 1:Add(l);break; //增加學生
case 2:Del(l);break;//刪除學生
case 3:Qur(l);break;//查詢學生
case 4:Modify(l);break;//修改學生
case 5:Disp(l);break;//顯示學生
case 6:Tongji(l);break;//統計學生
case 7:Sort(l);break;//排序學生
case 8:Save(l);break;//保存學生
case 9:printf("\t\t\t==========幫助信息==========\n");break;
default: Wrong();getchar();break;
}
}
}
//

⑹ 學生成績管理系統(用C語言編程)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define t 100
void fun(struct student *s);
void fun1(struct student *s);
void fun2(struct student *s);
void fun3(struct student *s);
void fun4(struct student *s);
void fun5(struct student *s);
void fun6(struct student *s);
struct student
{
char no[20];
char name[20];
char spec[20];
int grade;
char sex[20];
};
void main()
{
struct student s[t]={{"10001","zhang","chinese",12,"male"},
{"10002","wang","math",13,"fale"},
{"10003","lisi","chemsi",12,"male"},
{"10004","ma","english",13,"fale"},
{"10005","kuko","math",14,"male"}};

fun(s);
}
void fun(struct student *s)
{
int n;
printf("\n\n\t\t學生檔案管理系統");
printf("\n\n\t----------------------------------------");
printf("\n\n\t\t1:錄入學生信息系統");
printf("\n\n\t\t2:修改學生信息系統");
printf("\n\n\t\t3:刪除學生信息系統");
printf("\n\n\t\t4:查詢學生信息系統");
printf("\n\n\t\t5:輸出學生信息系統");
printf("\n\n\t\t6:退出系統");
printf("\n\n\t----------------------------------------");
printf("\n\n請選擇你要的服務(按數字1~6進入):");
scanf("%d",&n);
system("cls");
if(n==1)
{
printf("\n\n\t\t歡迎進入錄入學生系統");
fun1(s);
}
else if(n==2)
{
printf("\n\n\t\t歡迎進入修改學生系統");
fun5(s);
}
else if(n==3)
{
printf("\n\n\t\t歡迎進入刪除學生系統");
fun6(s);
}
else if(n==4)
{
printf("\n\n\t\t歡迎進入查詢學生系統");
printf("\n\n\t----------------------------------------");
printf("\n\n\t\t1:按學號查詢學生信息系統");
printf("\n\n\t\t2:按班級查詢學生信息系統");
printf("\n\n\t----------------------------------------");
printf("\n\n請選擇你要的服務(按數字1~2進入):");
scanf("%d",&n);
system("cls");
if(n==1)
{
printf("\n\n\t\t1:按學號查詢學生信息系統");
fun2(s);
}
else if(n==2)
{
printf("\n\n\t\t1:按班級查詢學生信息系統");
fun3(s);
}
else
{
printf("\n\n\t\t數據錯誤");
}
}
else if(n==5)
{
printf("\n\n\t\t歡迎進入輸出學生系統");
fun4(s);

} else if(n==6)
{
printf("\n\n\t\t謝謝使用學生管理系統!\n");
printf("\n\n\t\t請雙擊Enter鍵退出系統:");
getchar();
getchar();
exit(0);
}
else
printf("\n\n\t\t數據錯誤");
}
void fun1(struct student *s)
{
int n,i;
char d;
printf("\n\n\t請輸入學生的數量:");
scanf("%d",&n);
for(i=5;i<n+5;i++)
{
printf("\n\t\t請輸入學生學號:");
scanf("%s",s[i].no);
printf("\n\t\t請輸入學生姓名:");
scanf("%s",s[i].name);
printf("\n\t\t請輸入學生專業:");
scanf("%s",s[i].spec);
printf("\n\t\t請輸入學生年級:");
scanf("%d",&s[i].grade);
printf("\n\t\t請輸入學生性別:");
scanf("%s",s[i].sex);
getchar('\n');
system("cls");
}
printf("\n\n\t\t學號\t姓名\t專業\t年級\t性別");
printf("\n\t---------------------------------------------------");
for(i=0;i<n+5;i++)
{
printf("\n\n\t\t%-8s%-8s%-8s%-8d%-8s",s[i].no,s[i].name,s[i].spec,s[i].grade,s[i].sex);
}
printf("\n\t---------------------------------------------------\n");
printf("返回首頁(請按任意鍵):");
scanf("%c",&d);
system("cls");
fun(s);
}
void fun2(struct student *s)
{
char a[20],d;
int i;
printf("\n\n\t請輸入要查詢學生的學號(10001~10005):");
scanf("%s",a);
for(i=0;i<5;i++)
{
if(!strcmp(s[i].no,a))
{
printf("\n\t此學生的信息:");
printf("\n\n\t\t學號\t姓名\t專業\t年級\t性別");
printf("\n\t---------------------------------------------------");
printf("\n\n\t\t%-8s%-8s%-8s%-8d%-8s\n",s[i].no,s[i].name,s[i].spec,s[i].grade,s[i].sex);
printf("\n\t---------------------------------------------------");
}

if(i==4&&s[i].no!="10005")
{
printf("\n\t\t查無此人!");

}
}
printf("\n\n返回首頁(請按任意鍵):");
getchar();
scanf("%c",&d);
system("cls");
fun(s);
}
void fun3(struct student *s)
{
int i,a;
char d;
printf("\n\n\t請輸入要查詢學生的班級(12~14):");
scanf("%d",&a);
for(i=0;i<5;i++)
{
if(a==s[i].grade)
{
printf("\n\t此學生的信息:");
printf("\n\n\t\t學號\t姓名\t專業\t年級\t性別");
printf("\n\t---------------------------------------------------");
printf("\n\n\t\t%-8s%-8s%-8s%-8d%-8s\n",s[i].no,s[i].name,s[i].spec,s[i].grade,s[i].sex);
printf("\n\t---------------------------------------------------");
}
if(i==4&&s[i].grade!=a)
{
printf("\n\t\t查無此人!");

}
}
printf("\n\n返回首頁(請按任意鍵):");
getchar();
scanf("%c",&d);
system("cls");
fun(s);
}
void fun4(struct student *s)
{
int i;
char d;
printf("\n\n\t\t學號\t姓名\t專業\t年級\t性別");
printf("\n\t---------------------------------------------------");
for(i=0;i<5;i++)
{
printf("\n\n\t\t%-8s%-8s%-8s%-8d%-8s",s[i].no,s[i].name,s[i].spec,s[i].grade,s[i].sex);
}
printf("\n\t---------------------------------------------------\n");
printf("返回首頁(請按任意鍵):");
scanf("%c",&d);
getchar();
system("cls");
fun(s);
}
void fun5(struct student *s)
{
char a[20],d;
int i;
printf("\n\n\t請輸入要修改學生的姓名:");
scanf("%s",a);
for(i=0;i<5;i++)
{
if(!strcmp(s[i].name,a))
{ printf("\n\t\t請輸入修改學號:");
scanf("%s",s[i].no);
printf("\n\t\t請輸入修改專業:");
scanf("%s",s[i].spec);
printf("\n\t\t請輸入修改年級:");
scanf("%d",&s[i].grade);
printf("\n\t\t請輸入修改性別:");
scanf("%s",s[i].sex);
getchar('\n');
system("cls");
}
}
printf("\n\n\t\t學號\t姓名\t專業\t年級\t性別");
printf("\n\t---------------------------------------------------");
for(i=0;i<5;i++)
{
printf("\n\n\t\t%-8s%-8s%-8s%-8d%-8s",s[i].no,s[i].name,s[i].spec,s[i].grade,s[i].sex);
}
printf("\n\t---------------------------------------------------\n");
printf("返回首頁(請按任意鍵):");
scanf("%c",&d);
system("cls");
fun(s);
}
void fun6(struct student *s)
{
char a[20],d;
int i,k;
printf("\n\n\t請輸入要刪除學生的姓名:");
scanf("%s",a);
for(i=0;i<5;i++)
{
if(!strcmp(s[i].name,a))
{
s[i]=s[i+1];
printf("\n\t此學生的信息:");
printf("\n\n\t\t學號\t姓名\t專業\t年級\t性別");
printf("\n\t---------------------------------------------------");
for(k=0;k<4;k++)
{
printf("\n\n\t\t%-8s%-8s%-8s%-8d%-8s\n",s[k].no,s[k].name,s[k].spec,s[k].grade,s[k].sex);
}
printf("\n\t---------------------------------------------------");
}
if(i==4)
{
printf("沒有此人!");
}
}
printf("返回首頁(請按任意鍵):");
getchar();
scanf("%c",&d);
system("cls");
fun(s);
}

⑺ C語言程序設計 班級學生成績管理系統

#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <conio.h>

#define ADDRFILE "c:\\addrlist.txt"

typedef struct tagLinkedList
{
char name[30];
char tel[30];
char addr[100];

struct tagLinkedList *prev;
struct tagLinkedLIst *next;
}ADDR;

ADDR *g_pAddrHead = NULL;
ADDR *g_pFind;
int g_bSaved = 1;

void get_addrlist(void);
int add_list(const ADDR *addr);
int find_list(const char *name);
void SetHeadPosition(void);
void SetTailPosition(void);

void Add_addr(void);
void Find_addr(void);
void Modify_addr(void);
void Delete_addr(void);
void Print_addr(void);
void Save_addr(void);
void Remove_addr(void);

void main(void)
{

int ch;

get_addrlist();

puts("通訊錄程序 Version 1.0");

while(1)
{
printf("\n[1]新增 [2]搜索 [3]修改 [4]刪除 [5]輸出 [S]儲存 [Q]退出");

ch = getch();

switch(ch)
{
case '1': Add_addr();break;
case '2': Find_addr();break;
case '3': Modify_addr();break;
case '4': Delete_addr();break;
case '5': Print_addr();break;
case 's':
case 'S': Save_addr();break;
case 'q':
case 'Q':
if(g_bSaved == 0)
{
printf("\n\n修改後的數據需要儲存嗎?(y/n)?");
ch = getchar();
if(ch == 'Y' || ch == 'y') Save_addr();
}

Remove_addr(); exit(1);
default : printf("\n\n 請按1~5或S/Q健.\n\n");break;
}
}
}

void get_addrlist(void)
{
ADDR addr;
FILE *fp;

fp = fopen(ADDRFILE,"rb");

if(fp == NULL)
{
perror("open file error;");
return;
}

while(!feof(fp))
{
fread(&addr,1,sizeof(ADDR),fp);

if(ferror(fp))
{
fclose(fp);
perror("file read error;");
return;
}

if(feof(fp))break;

if(add_list(&addr) == 0)
{
printf(".\n");
}
}

fclose(fp);
}

int add_list(const ADDR *addr)
{
ADDR *plocal,*pn = g_pAddrHead;

SetHeadPosition();

if(g_pAddrHead == NULL)
{
plocal = malloc(sizeof(ADDR));
memset(plocal,0,sizeof(ADDR));

if(plocal == NULL)
{
return 0;
}

g_pAddrHead = plocal;
g_pAddrHead->prev = NULL;
g_pAddrHead->next = NULL;
}
else
{
plocal = malloc(sizeof(ADDR));
memset(plocal,0,sizeof(ADDR));

if(plocal == NULL)
{
return 0;
}

while(pn->next)
{
pn = pn->next;
}

pn->next = plocal;
plocal->prev = pn;
plocal->next = NULL;

}

strcpy(plocal->name,addr->name);
strcpy(plocal->tel,addr->tel);
strcpy(plocal->addr,addr->addr);

return 1;
}

int find_list(const char *name)
{
ADDR *plocal;

SetHeadPosition();

plocal = g_pAddrHead;

while(plocal)
{
if(strstr(plocal->name,name))
{
g_pFind = plocal;
return 1;
}
plocal = plocal->next;
}

return 0;
}

void SetHeadPosition(void)
{
if(g_pAddrHead == NULL) return;

while(g_pAddrHead->prev)
{
g_pAddrHead = g_pAddrHead->prev;
}
}

void SetTailPosition(void)
{
if(g_pAddrHead == NULL) return;

while(g_pAddrHead->next)
{
g_pAddrHead = g_pAddrHead->next;
}
}

void Remove_addr(void)
{
ADDR *plocal;

if(g_pAddrHead == NULL) return;

SetHeadPosition();

while(g_pAddrHead)
{
plocal = g_pAddrHead->next;

free(g_pAddrHead);

g_pAddrHead = plocal;
}

g_pAddrHead = NULL;

}

void Add_addr(void)
{
ADDR addr;

memset(&addr,0,sizeof(ADDR));

printf("\n\nName: ");gets(addr.name);
if(strlen(addr.name) == 0) return;

printf("TEL: ");gets(addr.tel);
printf("ADDR: ");gets(addr.addr);

if(find_list(addr.name) == 1)
{
printf("\n已經存在的姓名.\n\n");
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
return;
}

if(add_list(&addr))
{
g_bSaved = 0;
printf("\n儲存完畢.\n\n");
}
}

void Find_addr(void)
{
char buff[100] ={0,};
ADDR *plocal;

printf("\n\n請輸入要查找的姓名/電話/地址.\n");
printf("姓名/電話/地址 :");gets(buff);

if(strlen(buff) == 0) return;

SetHeadPosition();

plocal = g_pAddrHead;
g_pFind = NULL;

while(plocal)
{
if(strstr(plocal->name,buff))
{
g_pFind = plocal;
break;
}

if(strstr(plocal->tel,buff))
{
g_pFind = plocal;
break;
}

if(strstr(plocal->addr,buff))
{
g_pFind = plocal;
break;
}
plocal = plocal->next;
}

if(g_pFind)
{
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
}
else
{
printf("\n\n搜索不到要找的%s.\n\n",buff);
}
}

void Modify_addr(void)
{
char name[100] = {0,};
ADDR addr;

while(1)
{
printf("\n\n要修改的姓名: ");gets(name);

if(strlen(name) == 0) return;

if(find_list(name) == 0)
{
puts("輸入的姓名不存在.");
continue;
}
break;
}

printf("\n%s的通訊錄如下:\n\n",name);
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);

printf("\n輸入要修改的姓名/電話/地址.\n\n");

printf("NAME: ");gets(addr.name);
printf("TEL : ");gets(addr.tel);
printf("ADDR: ");gets(addr.addr);

if(strlen(addr.name)==0) strcpy(addr.name,name);

strcpy(g_pFind->name,addr.name);
strcpy(g_pFind->tel,addr.tel);
strcpy(g_pFind->addr,addr.addr);

g_bSaved = 0;

printf("%s的通訊錄修改成功.\n",name);
}

void Delete_addr(void)
{
char name[100] ={0,};
ADDR *plocal;
int ch;

while(1)
{
printf("\n\n要刪除的姓名: ");gets(name);

if(strlen(name)==0) return;

if(find_list(name) == 0)
{
puts("要刪除的通訊錄不存在.");
continue;
}
break;
}

puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);

printf("確定要刪除%s的通訊錄嗎(y/n)?",name);
ch = getch();
fflush(stdin);

if(ch == 'Y'||ch == 'y')
{
if(g_pFind->prev == NULL)
{
if(g_pFind->next == NULL)
{
free(g_pFind);
g_pAddrHead = NULL;
}
else
{
plocal = g_pFind->next;
free(g_pFind);
plocal->prev =NULL;
g_pAddrHead = plocal;
}
}
else if(g_pFind->next == NULL)
{
plocal = g_pFind->prev;
free(g_pFind);
plocal->next =NULL;
g_pAddrHead = plocal;
}
else
{
plocal = g_pFind->prev;
plocal->next = g_pFind->next;

plocal = g_pFind->next;
plocal->prev = g_pFind->prev;

free(g_pFind);
g_pAddrHead = plocal;
}

g_bSaved = 0;
printf("\n\n刪除完畢.\n\n");
}
}

void Print_addr(void)
{
int count = 1;
ADDR *plocal;

SetHeadPosition();

if(g_pAddrHead == NULL)
{
printf("\n\n無任何數據\n");
return;
}

plocal = g_pAddrHead;
while(plocal->prev)
{
plocal=plocal->prev;
}

printf("\n\n");

while(plocal)
{
printf("NO.%d\n",count++);
puts(plocal->name);
puts(plocal->tel);
printf("%s\n\n",plocal->addr);

printf("請按任意一健(結束:q)\n\n");
getch();
if(getch() == 'q')return;

plocal=plocal->next;
}
}

void Save_addr(void)
{
ADDR *plocal, *pn;
FILE *fp;

if(g_pAddrHead == NULL) return;

fp = fopen(ADDRFILE,"w+b");

if(fp == NULL)
{
perror("file open error;");
return;
}

SetHeadPosition();

plocal = g_pAddrHead;

while(plocal)
{
pn = plocal->next;

plocal = pn;
}

printf("\n所有數據已經儲存完畢.");
g_bSaved = 1;

fclose(fp);
}

⑻ 用C語言編程實現一個簡單的學生成績管理系統

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<memory.h>

typedefstructstudent
{
charnum[16];
charname[20];
floatscore[4];
structstudent*next;
}stu;

stu*head; //鏈頭指針

stu*create() //創建鏈表,從文件讀取信息
{
printf("Readingstudentinformation: ");
stu*p=NULL; //指針,指向個待插入的結點
stu*q=NULL; //指針,用於在其後插入結點
head=NULL; //一開始鏈表為空
FILE*r=fopen("input.dat","r");
p=(stu*)malloc(sizeof(stu));
while(fscanf(r,"%s%s%f%f%f",p->num,p->name,&p->score[0],&p->score[1],&p->score[2])!=EOF)
{
p->score[3]=(p->score[0]+p->score[1]+p->score[2])/3.0;
fprintf(stdout,"%s %s %g %g %g %.2f ",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3]);
p->next=NULL;
if(head==NULL) //head為空,要插入第一個
{
head=p;
} //結點,讓頭指針指向結點p
else
{ //否則不是頭結點,應將p結點
q->next=p; //插入到q結點的後面
}
q=p; //q指向當前最後一個結點
p=(stu*)malloc(sizeof(stu));
}
fclose(r);
if(head!=NULL)
{
q->next=NULL; //讓q所指的最後一個結點的指針域為空說明這已是鏈尾了
}
returnhead; //返回頭指針
}

voidsort(stu**head,intn)
{
FILE*w=NULL;
if(n==0)
{
w=fopen("sortByMath.dat","w");
}
elseif(n==1)
{
w=fopen("sortByEnglish.dat","w");
}
elseif(n==2)
{
w=fopen("sortByComputer.dat","w");
}
elseif(n==3)
{
w=fopen("sortByAvg.dat","w");
}
stu*q,*t,*p;
stu*new_head=newstu;
new_head->next=*head;
p=new_head;
t=NULL;
while(t!=new_head->next)
{
p=new_head;
q=p->next;
while(q->next!=t)
{
if((p->next->score[n])<(q->next->score[n]))
{
p->next=q->next;
q->next=q->next->next;
p->next->next=q;
}
p=p->next;
q=p->next;
}
t=q;
}
*head=new_head->next;


p=*head;
q=p->next;
printf("學號 姓名 數學 英語 計算機 平均成績 ");
intgrade=1;
while(p!=NULL)
{
fprintf(w,"%s %s %g %g %g %.2f %d ",
p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],grade);
fprintf(stdout,"%s %s %g %g %g %.2f %d ",
p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],grade);
if(q!=NULL&&q->score[3]<p->score[3])grade+=1;
p=p->next;
if(q!=NULL)q=q->next;
}
printf(" ");
fclose(w);
}

voidcount(stu*head)
{
floatcnt[4][8];
inti,j;
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
if(j!=2)cnt[i][j]=0;
elsecnt[i][j]=100;
}
}
stu*r=head;
while(r!=NULL)
{
r=r->next;
}
}
intmain()
{
head=create();
printf("Sortingbyaveragescore: ");
sort(&head,3);

system("pause");
return0;
}

⑼ 面向對象程序設計編寫一個簡單的學生成績管理系統

#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct scorenode)
#define DEBUG
#include <string.h>
struct scorenode
{int number;/*學號*/
char name[10];/*姓名*/
float computer;/*計算機 成績*/
float english;/*英語成績*/
float math;/*數學成績 */
struct scorenode *next;
};
typedef struct scorenode score;
int n,k;/*n,k為全局變數,本程序中的函數均可以使用它*/
/*==============================================================================================*/
score *creat(void)/*函數creat,功能:創建鏈表,此函數帶回一個指向鏈表頭的指針*/
{
score*head;
score *p1,*p2,*p3,*max;
int i,j;
float fen;
char t[10];
n=0;
p1=p2=p3=(score *)malloc(LEN);head=p3; /*開辟一個新單元輸入學生相關資料*/
printf("請輸入學生資料,輸0退出!\n");
repeat1: printf("請輸入學生學號(學號應大於0):");
scanf("%d",&p1->number);
while(p1->number<0)
{getchar();
printf("輸入錯誤,請重新輸入學生學號:");
scanf("%d",&p1->number);}
if(p1->number==0)
goto end;
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(p1->number!=p3->number)
p3=p3->next;
else
{printf("學號重復,請重輸!\n");
goto repeat1;
}
}
}
}
printf("請輸入學生姓名:");
scanf("%s",&p1->name);
printf("請輸入計算機 成績(0~100):");
scanf("%f",&p1->computer);
while(p1->computer<0||p1->computer>100)
{getchar();
printf("輸入錯誤,請重新輸入計算機 成績");
scanf("%f",&p1->computer);}
printf("請輸入英語成績(0~100):");
scanf("%f",&p1->english);
while(p1->english<0||p1->english>100)
{getchar();
printf("輸入錯誤,請重新輸入英語成績");
scanf("%f",&p1->english);}
printf("請輸入數學成績(0~100):");
scanf("%f",&p1->math);
while(p1->math<0||p1->math>100)
{getchar();
printf("輸入錯誤,請重新輸入數學成績");
scanf("%f",&p1->math);}
head=NULL;
while(p1->number!=0)
{
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(score *)malloc(LEN);
printf("請輸入學生資料,輸0退出!\n");
repeat2:printf("請輸入學生學號(學號應大於0):");
scanf("%d",&p1->number);
while(p1->number<0)
{getchar();
printf("輸入錯誤,請重新輸入學生學號:");
scanf("%d",&p1->number);}
if(p1->number==0)
goto end;
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(p1->number!=p3->number)
p3=p3->next;
else
{printf("學號重復,請重輸!\n");
goto repeat2;
}
}
}
}
printf("請輸入學生姓名:");
scanf("%s",&p1->name);
printf("請輸入計算機 成績(0~100):");
scanf("%f",&p1->computer);
while(p1->computer<0||p1->computer>100)
{getchar();
printf("輸入錯誤,請重新輸入計算機 成績");
scanf("%f",&p1->computer);}
printf("請輸入英語成績(0~100):");
scanf("%f",&p1->english);
while(p1->english<0||p1->english>100)
{getchar();
printf("輸入錯誤,請重新輸入英語成績");
scanf("%f",&p1->english);}
printf("請輸入數學成績(0~100):");
scanf("%f",&p1->math);
while(p1->math<0||p1->math>100)
{getchar();
printf("輸入錯誤,請重新輸入數學成績");
scanf("%f",&p1->math);}
}
end: p1=head;
p3=p1;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p1;
p1=p1->next;
if(max->number>p1->number)
{
k=max->number;
max->number=p1->number;
p1->number=k;
strcpy(t,max->name);
strcpy(max->name,p1->name);
strcpy(p1->name,t);
fen=max->computer;
max->computer=p1->computer;
p1->computer=fen;
fen=max->english;
max->english=p1->english;
p1->english=fen;
fen=max->math;
max->math=p1->math;
p1->math=fen;
}
}
max=head;p1=head;/*重新使max,p指向鏈表頭*/
}
p2->next=NULL;/*鏈表結尾*/
printf("輸入的學生數為:%d個!\n",n);
return(head);
}
/*==============================================================================================*/
score *add2311(score *head,score *stu)/*函數add2311,功能將所有學生資料按學號排序*/
{
score *p0,*p1,*p2,*p3,*max;
int i,j;
float fen;
char t[10];
p3=stu=(score *)malloc(LEN);/*開辟一個新單元*/
printf("\n輸入要增加的學生的資料!");
repeat4: printf("請輸入學生學號(學號應大於0):");
scanf("%d",&stu->number);
/*輸入學號,學號應大於0*/
while(stu->number<0)
{getchar();
printf("輸入錯誤,請重新輸入學生學號:");
scanf("%d",&stu->number);}/*輸入錯誤,重新輸入學號*/
if(stu->number==0)
goto end2;/*當輸入的學號為0時,轉到末尾,結束追加*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(stu->number!=p3->number)
p3=p3->next;
else
{printf("學號重復,請重輸!\n");
goto repeat4;
}
}
}
}
/******************************************************/
printf("輸入學生姓名:");
scanf("%s",stu->name);
printf("請輸入計算機 成績(0~100):");
scanf("%f",&stu->computer);
while(stu->computer<0||stu->computer>100)
{getchar();
printf("輸入錯誤,請重新輸入計算機 成績");
scanf("%f",&stu->computer);}
printf("請輸入英語成績(0~100):");
scanf("%f",&stu->english);
while(stu->english<0||stu->english>100)
{getchar();
printf("輸入錯誤,請重新輸入英語成績");
scanf("%f",&stu->english);}
printf("請輸入數學成績(0~100):");
scanf("%f",&stu->math);
while(stu->math<0||stu->math>100)
{getchar();
printf("輸入錯誤,請重新輸入數學成績");
scanf("%f",&stu->math);}
p1=head;
p0=stu;
if(head==NULL)
{head=p0;p0->next=NULL;}/*當原來鏈表為空時,從首結點開始存放資料*/
else
{
if(p1->next==NULL)
{
p1->next=p0;
p0->next=NULL;
}
else
{
while(p1->next!=NULL)
{
p2=p1;p1=p1->next;
}
p1->next=p0;
p0->next=NULL;
}
}
n=n+1;
p1=head;
p0=stu;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p1;
p1=p1->next;
if(max->number>p1->number)
{
k=max->number;
max->number=p1->number;
p1->number=k;
strcpy(t,max->name);
strcpy(max->name,p1->name);
strcpy(p1->name,t);/*交換前後結點中的姓名,使之與學號相匹配*/
fen=max->computer;
max->computer=p1->computer;
p1->computer=fen;
fen=max->english;
max->english=p1->english;
p1->english=fen;
fen=max->math;
max->math=p1->math;
p1->math=fen;

}
}
max=head;p1=head;
} end2:
printf("現在的學生數為:%d個!\n",n);
return(head);
}
score *search(score *head)
/*函數search,功能:查詢學生成績*/
{int number;
score *p1,*p2;
printf("輸入要查詢的學生的學號,");
scanf("%d",&number);
while(number!=0)
{
if(head==NULL)
{printf("\n沒有任何學生資料!\n");return(head);}
printf("-----------------------------------------\n");
printf("|學號\t|姓名\t|計算機\t|英語\t|數學\t|\n");
printf("-----------------------------------------\n");
p1=head;
while(number!=p1->number&&p1->next!=NULL)
{p2=p1;p1=p1->next;}
if(number==p1->number)
{printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->computer,p1->english,p1->math);
printf("-----------------------------------------\n");}
else
printf("%d不存在此學生!\n",number);
printf("輸入要查詢的學生的學號,");
scanf("%d",&number);
}
printf("已經退出了!\n");
return(head);}
/*==============================================================================================*/
score *del(score *head)/*函數del,功能:刪除學生資料*/
{
score *p1,*p2;
int number;
printf("輸入要刪除的學生的學號(輸入0時退出):");
scanf("%d",&number);
getchar();
while(number!=0)/*輸入學號為0時退出*/
{
if(head==NULL)
{
printf("\n沒有任何學生資料!\n");
return(head);
}
p1=head;
while(number!=p1->number&&p1->next!=NULL)
{
p2=p1;p1=p1->next;
}
if(number==p1->number)
{
if(p1==head)
head=p1->next;
/*若p1指向的是首結點,把地二個結點地址賦予head*/
else
p2->next=p1->next;
printf("刪除:%d\n",number);n=n-1;
}
else
printf("%d不存在此學生!\n",number);
printf("輸入要刪除的學生的學號:");
scanf("%d",&number);
getchar();
}
#ifdef DEBUG
printf("已經退出了!\n");
#endif
printf("現在的學生數為:%d個!\n",n);
return(head);
}
/*==============================================================================================*/
void print(score *head)/*函數print,功能:顯示學生成績*/
{
score *p;
if(head==NULL)
{printf("\n沒有任何學生資料!\n");}
else
{printf("%d\n",n);
printf("-----------------------------------------\n");
printf("|學號\t|姓名\t|計算機\t|英語\t|數學\t|\n");
printf("-----------------------------------------\n");
p=head;
do
{printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->computer,p->english,p->math);
printf("-----------------------------------------\n");
p=p->next;}while (p!=NULL);
}
}
/*==============================================================================================*/
score *tongji(score *head)
/*函數tongji,功能:統計學生成績*/
{
float sum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0,max=0,min;
score *p;
int x,y=0,i=0;
p=head;
printf("1個人總分和平均分\t2單科平均分\t3總分最高分\t4總分最低分\n");
scanf("%d",&x);
getchar();
switch(x)
{
case 1: if(head==NULL)
{printf("\n沒有任何學生資料!\n");return(head);}
else
{
printf("---------------------------------------------------------\n");
printf("|學號\t|姓名\t|計算機\t|英語\t|數學\t|總分\t|平均分\t|\n");
printf("---------------------------------------------------------\n");
while(p!=NULL)
{
sum1=p->computer+p->english+p->math;
ave1=sum1/3;
printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->computer,p->english,p->math,sum1,ave1);
printf("---------------------------------------------------------\n");/*列印表格域*/
p=p->next;}
}
return(head); break;
case 2: if(head==NULL)
{printf("\n沒有任何學生資料!\n");return(head);}
while(p!=NULL)
{
sum1=sum1+p->computer;
sum2=sum2+p->english;
sum3=sum3+p->math;/*計算總分*/
y=y+1;
ave1=sum1/y;
ave2=sum2/y;
ave3=sum3/y;
p=p->next;
}
printf("計算機 平均分是%.1f\n",ave1);
printf("英語平均分是%.1f\n",ave2);
printf("數學平均分是%.1f\n",ave3);
return(head); break;
case 3:
if(head==NULL)
{printf("\n沒有任何學生資料!\n");return(head);}
max=p->computer+p->english+p->math;
while(i<n)
{
i=i+1;
sum1=p->computer+p->english+p->math;
if(max<sum1)
max=sum1;
p=p->next;
}
printf("總分最高分:%.1f",max);
printf("\n");
return(head); break;
case 4: if(head==NULL)
{printf("\n沒有任何學生資料!\n");return(head);}
while(p!=NULL)
{
min=p->computer+p->english+p->math;
while(p!=NULL)
{sum2=p->computer+p->english+p->math;
if(min>sum2)
min=sum2;
p=p->next;
}
}
printf("總分最低分:%.1f",min);
printf("\n");
return(head); break;
default :printf("輸入錯誤,請重試!\n");
}
return(head);
}
/*==============================================================================================*/
save(score *p1)
/*函數save,功能:保存學生的資料*/
{
FILE *fp;
char filepn[20];/*用來存放文件保存路徑以及文件名*/
printf("請輸入文件路徑及文件名:");
scanf("%s",filepn);
if((fp=fopen(filepn,"w+"))==NULL)
{
printf("不能打開文件!\n");
return 0;
}
fprintf(fp,"|學號\t|姓名\t|計算機\t|英語\t|數學\t|\n");
fprintf(fp,"-----------------------------------------\n");
while(p1!=NULL)
{
fprintf(fp,"%d\t%s\t%.1f\t%.1f\t%.1f\t\n",p1->number,p1->name,p1->computer,p1->english,p1->math);
p1=p1->next;
}
fclose(fp);
printf("文件已經保存!\n");
return 0;
}
/*==============================================================================================*/
score *paixu(score *head) /*定義排序函數。此函數帶回一個指向鏈表頭的指針*/
{ score *p,*max;
int i,j,x;
float fen;
char t[10];
if(head==NULL)
{printf("\n沒有任何學生資料,請先建立鏈表!\n");return(head);}/*鏈表為空*/
max=p=head;
for(i=0;i<80;i++)
printf("*");
printf("1按學生學號排序\t2按學生姓名排序\t3按計算機 成績排序\n");
printf("4按英語成績排序\t5按數學成績排序\t\n");
for(i=0;i<80;i++)
printf("*");
printf("請選擇操作:");
scanf("%d",&x);/*選擇操作*/
getchar();
switch(x)
{case 1 :
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p;
p=p->next;

if(max->number>p->number)
{
k=max->number;
max->number=p->number;
p->number=k;
strcpy(t,max->name);
strcpy(max->name,p->name);
strcpy(p->name,t);
fen=max->computer;
max->computer=p->computer;
p->computer=fen;
fen=max->english;
max->english=p->english;
p->english=fen;
fen=max->math;
max->math=p->math;
p->math=fen;
}
}
max=head;p=head;/*重新使max,p指向鏈表頭*/
}
print(head);break;
case 2 : for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p;
p=p->next;
if(strcmp(max->name,p->name)>0)/*字元串比較*/
{
strcpy(t,max->name);/*字元串復制*/
strcpy(max->name,p->name);
strcpy(p->name,t);
k=max->number;
max->number=p->number;
p->number=k;
fen=max->computer;
max->computer=p->computer;
p->computer=fen;
fen=max->english;
max->english=p->english;
p->english=fen;
fen=max->math;
max->math=p->math;
p->math=fen;
/*交換前後結點中的數學成績,使之與姓名相匹配*/
}
}
p=head;
max=head;
}
print(head);
break;

case 3 : for(i=1;i<n;i++)
{for(j=i+1;j<=n;j++)
{max=p;
p=p->next;
if(max->computer>p->computer)
{
fen=max->computer;
max->computer=p->computer;
p->computer=fen;
k=max->number;
max->number=p->number;
p->number=k;
strcpy(t,max->name);
strcpy(max->name,p->name);
strcpy(p->name,t);
fen=max->english;
max->english=p->english;
p->english=fen;
fen=max->math;
max->math=p->math;
p->math=fen;
}
}
p=head;
max=head;
}
print(head);
break;

case 4 : for(i=1;i<n;i++)
{for(j=i+1;j<=n;j++)
{max=p;
p=p->next;
if(max->english>p->english)
{
fen=max->english;
max->english=p->english;
p->english=fen;
k=max->number;
max->number=p->number;
p->number=k;
strcpy(t,max->name);
strcpy(max->name,p->name);
strcpy(p->name,t);
fen=max->computer;
max->computer=p->computer;
p->computer=fen;
fen=max->math;
max->math=p->math;
p->math=fen;
}
}
p=head;
max=head;
}
print(head);
break;
case 5 : for(i=1;i<n;i++)
{for(j=i+1;j<=n;j++)
{max=p;
p=p->next;
if(max->math>p->math)
{
fen=max->math;
max->math=p->math;
p->math=fen;
k=max->number;
max->number=p->number;
p->number=k;
strcpy(t,max->name);
strcpy(max->name,p->name);
strcpy(p->name,t);
fen=max->computer;
max->computer=p->computer;
p->computer=fen;
fen=max->english;
max->english=p->english;
p->english=fen;
}
}
p=head;
max=head;
}
print(head);
break;
default :printf("輸入錯誤,請重試! \n");
}
return (0);}
/*==============================================================================================*/
int menu(k)/*函數menu,功能:菜單選擇界面*/
{
int i;
printf("\t\t\t\t學生信息管理系統\n");
for(i=0;i<80;i++)
printf("*");
printf(" \t\t\t1添加學生記錄\t\t\t \n");
printf(" \t\t\t2.顯示學生記錄\t\t\t \n");
printf(" \t\t\t3.刪除學生記錄\t\t\t \n");
printf(" \t\t\t4.查詢學生記錄\t\t\t \n");
printf(" \t\t\t5.統計學生記錄\t\t\t \n");
printf(" \t\t\t6.排序\t\t\t \n");
printf(" \t\t\t7.保存學生記錄\t\t\t \n");
/*菜單選擇界面*/
for(i=0;i<80;i++)
printf("*");
printf("請選擇您所要的操作(選擇(0)退出):");
scanf("%d",&k);/*選擇操作*/
getchar();
return (k);}
main()
{score *head=0,*stu=0;
while(1)
{k=menu(k);
switch(k)/*用switch語句實現功能選擇*/
{case 1: head=creat();break;/*調用創建鏈表函數*/
case 2: print(head); break;/*調用顯示學生信息函數*/
case 3: head=del(head); break;/*調用刪除學生信息函數*/
case 4: head=search(head);break;/*調用成績查詢函數*/
case 5: tongji(head); break;/*調用統計函數*/
case 6: paixu(head);break;/*調用排序函數*/
case 7: save(head);break;/*調用保存函數*/
case 0: exit(0);/*退出系統,返回主界面*/
default: printf("輸入錯誤,請重試!\n"); }
}

自己套了修改!

熱點內容
武漢大學學生會輔導員寄語 發布:2021-03-16 21:44:16 瀏覽:612
七年級學生作文輔導學案 發布:2021-03-16 21:42:09 瀏覽:1
不屑弟高考成績 發布:2021-03-16 21:40:59 瀏覽:754
大學畢業證會有成績單 發布:2021-03-16 21:40:07 瀏覽:756
2017信陽學院輔導員招聘名單 發布:2021-03-16 21:40:02 瀏覽:800
查詢重慶2018中考成績查詢 發布:2021-03-16 21:39:58 瀏覽:21
結業考試成績怎麼查詢 發布:2021-03-16 21:28:40 瀏覽:679
14中醫醫師資格筆試考試成績查分 發布:2021-03-16 21:28:39 瀏覽:655
名著賞析課程標准 發布:2021-03-16 21:27:57 瀏覽:881
北京大學商業領袖高端培訓課程 發布:2021-03-16 21:27:41 瀏覽:919