學生成績管理系統源代碼
1. 學生成績管理系統源代碼 SQL+JAVA
應該是課程設計吧。
網上有源代碼,去下載吧。
2. 想求java學生成績管理系統的源代碼
需要的 直接我頭像個人簡介,發給你一份就是了
3. 求學生成績管理系統的源代碼
#include<stdio.h>
#include<stdlib.h>
#defineFILENAME"student.dat"
typedefenum{MAN,WOMAN}SEX;
typedefstructtagStudent
{
intnum; //學生的編號
charname[20]; //學生的姓名
SEX sex; //學生的性別
intage; //學生的年齡
charmajor[20]; //學生的專業
structtagStudent*next;//下一個節點的指針
}STUDENT,*PSTUDENT;
STUDENTg_head; //頭節點
//1.顯示菜單
voidShowMenu();
//2.獲取用戶選擇的菜單的編號
intGetMenuChoose();
//3.創建一個節點,它會返回一個新創建的學生信息節點的指針
PSTUDENTCreateStudent();
//4.把學生信息節點加入到鏈表中
intAddStudent(PSTUDENTpstu);
//5.返回指定編號學生節點的上一個節點的指針
PSTUDENTGetPrevAddr(intnum);
//6.顯示所有學生信息
voidShowAll();
//7.顯示信息數量
intShowStudentCount();
//8.修改學生信息,參數為要修改的學生的編號
voidModityStudent(intnum);
//9.獲取用戶的選擇
intQuestion(constchar*pstr);
//10.獲取用戶輸入的學生的編號
intGetInputNum();
//11.刪除編號為num的學生信息
voidDelStudent(intnum);
//12.刪除所有的學生信息
voidDelAll();
//13.把學生信息保存到文件當中
voidSaveToFile();
//14.從文件中讀取學生信息
voidLoadFromFile();
intmain()
{
intrunning=1;
while(running)
{
switch(GetMenuChoose())
{
case0:
running=0;
break;
case1:
// printf("你選擇了菜單1 ");
AddStudent(CreateStudent());
break;
case2:
// printf("你選擇了菜單2 ");
DelStudent(GetInputNum());
break;
case3:
printf("你選擇了菜單3 ");
break;
case4:
// printf("你選擇了菜單4 ");
ModityStudent(GetInputNum());
break;
case5:
// printf("你選擇了菜單5 ");
DelAll();
break;
case6:
// printf("你選擇了菜單6 ");
ShowAll();
break;
case7:
// printf("你選擇了菜單7 ");
ShowStudentCount();
break;
case8:
// printf("你選擇了菜單8 ");
LoadFromFile();
break;
case9:
// printf("你選擇了菜單9 ");
SaveToFile();
break;
}
system("pause");
}
return0;
}
//1.顯示菜單
voidShowMenu()
{
system("cls");
printf("-----------------------------學生管理系統-------------------------------- ");
printf(" 1.添加學生信息2.刪除某個學生信息3.顯示某個學生信息 ");
printf(" 4.修改學生信息5.刪除所有學生信息6.顯示所有學生信息 ");
printf(" 7.顯示信息數量8.讀取文件學生信息9.保存學生信息至文件 ");
printf(" 0.退出系統 ");
printf(" ------------------------------------------------------------------------- ");
}
//2.獲取用戶選擇的菜單的編號
intGetMenuChoose()
{
intnum;//保存用戶選擇的菜單編號
ShowMenu();
printf("請選擇菜單(0~9):");
while(1!=scanf("%d",&num)||num<0||num>9)
{
ShowMenu();
printf("選擇菜單錯誤,請重新選擇(0~9):");
fflush(stdin);//清空輸入緩沖區
}
returnnum;
}
//3.創建一個節點,它會返回一個新創建的學生信息節點的指針
PSTUDENTCreateStudent()
{
intsex;
PSTUDENTpstu=(PSTUDENT)malloc(sizeof(STUDENT));//在堆內存申請空間,存儲學生信息
if(!pstu)
{
printf("申請內存空間失敗! ");
returnNULL;
}
printf("請輸入學生的編號(整型):");
while(1!=scanf("%d",&pstu->num)||GetPrevAddr(pstu->num))
{
printf("學生編號輸入錯誤或已經存在,請重新輸入學生的編號(整型):");
fflush(stdin);
}
printf("請輸入學生的姓名(小於20字元):");
scanf("%20s",pstu->name);//(*pstu).name
printf("請選擇學生的性別(1.男2.女):");
while(1!=scanf("%d",&sex)||sex<1||sex>2)
{
printf("性別選擇錯誤,請重新選擇學生的性別(1.男2.女):");
fflush(stdin);
}
if(1==sex)
pstu->sex=MAN;
else
pstu->sex=WOMAN;
printf("請輸入學生的年齡(10~40):");
while(1!=scanf("%d",&pstu->age)||pstu->age<10||pstu->age>40)
{
printf("年齡輸入錯誤!請重新輸入學生的年齡(10~40):");
fflush(stdin);
}
printf("請輸入學生的專業(小於20字元):");
scanf("%20s",pstu->major);
pstu->next=NULL;
returnpstu;
}
//4.把學生信息節點加入到鏈表中
intAddStudent(PSTUDENTpstu)
{
PSTUDENTps=&g_head;
if(!pstu)
{
return0;
}
//判斷一下該學生信息是不是已經存在
if(GetPrevAddr(pstu->num))
{
printf("編號為%d的學生信息已經存在! ",pstu->num);
free(pstu);//釋放該節點內存空間
return0;
}
//while循環的作用是找到當前鏈表的最後一個節點
while(ps->next)
ps=ps->next;
//把新節點加入到最後那個節點的後面
ps->next=pstu;
pstu->next=NULL;
return1;
}
//5.返回指定編號學生節點的上一個節點的指針
PSTUDENTGetPrevAddr(intnum)
{
PSTUDENTpstu=&g_head;
while(pstu->next)
{
if(pstu->next->num==num)
returnpstu;
pstu=pstu->next;
}
returnNULL;
}
//6.顯示所有學生信息
voidShowAll()
{
PSTUDENTpstu=&g_head;
printf("-------------------------------------------------------------------- ");
printf("編號姓名性別年齡專業 ");
printf("-------------------------------------------------------------------- ");
while(pstu->next)
{
printf("%-8d",pstu->next->num);
printf("%-20s",pstu->next->name);
printf("%-6s",pstu->next->sex==MAN?"男":"女");
printf("%4d",pstu->next->age);
printf("%20s ",pstu->next->major);
pstu=pstu->next;//讓指針指向下一個節點
}
printf("-------------------------------------------------------------------- ");
}
//7.顯示信息數量
intShowStudentCount()
{
intcount=0;
PSTUDENTpstu=&g_head;
while(pstu->next)
{
++count;
pstu=pstu->next;
}
printf(" 當前共有%d位學生信息。 ",count);
returncount;
}
//8.修改學生信息,參數為要修改的學生的編號
voidModityStudent(intnum)
{
PSTUDENTpstu=GetPrevAddr(num);//獲取要修改的學生節點的上一個節點
intchoose;
if(!pstu)
{
printf("沒有編號為%d的學生信息。 ",num);
return;
}
pstu=pstu->next;//將要修改的學員節點的指針改為指向自己的
printf("當前學生的姓名為%s,",pstu->name);
if(Question("確定要修改嗎?"))
{
printf("請輸入學生的姓名(小於20字元):");
scanf("%20s",pstu->name);
}
printf("當前學生的性別為%s,",pstu->sex==MAN?"男":"女");
if(Question("確定要修改嗎?"))
{
printf("請輸入學生的性別(1.男2.女):");
while(1!=scanf("%d",&choose)||choose<1||choose>2)
{
printf("輸入錯誤,請重新輸入學生的性別(1.男2.女):");
fflush(stdin);
}
if(1==choose)
pstu->sex=MAN;
else
pstu->sex=WOMAN;
}
printf("當前學生的年齡為%d,",pstu->age);
if(Question("確定要修改嗎?"))
{
printf("請輸入學生的年齡(10~40):");
while(1!=scanf("%d",&pstu->age)||pstu->age<10||pstu->age>40)
{
printf("年齡輸入錯誤!請重新輸入學生的年齡(10~40):");
fflush(stdin);
}
}
printf("當前學生的專業為%s,",pstu->major);
if(Question("確定要修改嗎?"))
{
printf("請輸入學生的專業(小於20字元):");
scanf("%20s",pstu->major);
}
printf("修改完畢! ");
}
//9.獲取用戶的選擇
intQuestion(constchar*pstr)
{
charanswer;
printf("%s請選擇(yorn):",pstr);
while(1!=scanf("%c",&answer)||(answer!='y'&&answer!='n'))
{
printf("輸入錯誤!%s請重新選擇(yorn):",pstr);
fflush(stdin);//清空輸入緩沖區,C庫函數
}
if('y'==answer)
return1;
else
return0;
}
//10.獲取用戶輸入的學生的編號
intGetInputNum()
{
intnum;
printf("請輸入學生的編號(整型):");
while(1!=scanf("%d",&num))
{
printf("編號輸入錯誤!請重新輸入學生的編號(整型):");
fflush(stdin);
}
returnnum;
}
//11.刪除編號為num的學生信息
voidDelStudent(intnum)
{
PSTUDENTpstu,ptmp;
if(pstu=GetPrevAddr(num))
{
if(!Question("確定要刪除該學生信息嗎?"))
{
return;
}
ptmp=pstu->next;
pstu->next=ptmp->next;
free(ptmp);
printf("刪除了編號為%d的學生信息。 ",num);
}
else
{
printf("沒有找到編號為%d的學生信息。 ",num);
}
}
//12.刪除所有的學生信息
voidDelAll()
{
PSTUDENTpstu=g_head.next,ptmp;
intcount=0;
if(!Question("確定要刪除當前所有的學生信息嗎?"))
{
return;
}
while(pstu)
{
ptmp=pstu;
pstu=pstu->next;
free(ptmp);
++count;
}
printf("共刪除了%d位學生信息。 ",count);
g_head.next=NULL;
}
//13.把學生信息保存到文件當中
voidSaveToFile()
{
FILE*pf=fopen(FILENAME,"wb");
PSTUDENTpstu=&g_head;
inti=0,count=ShowStudentCount();
if(!pf)
{
printf("打開待寫入的文件失敗! ");
return;
}
if(!Question("確定要將當前學生信息保存到文件中嗎?"))
{
fclose(pf);
return;
}
fwrite(&count,1,sizeof(count),pf);//把學生信息的數量先寫入到文件頭
while(pstu->next)
{
fwrite(pstu->next,1,sizeof(STUDENT),pf);//把每位學生信息寫入文件
++i;
pstu=pstu->next;
}
fclose(pf);
if(i==count)
{
printf("成功的寫入了%d條學生信息。 ",count);
}
else
{
printf("應寫入%d條學生信息,實際寫入%d條學生信息。 ",count,i);
}
}
//14.從文件中讀取學生信息
voidLoadFromFile()
{
inti,count=0,repeat=0;
FILE*pf;
PSTUDENTpstu;
printf("提示:從文件中讀取學生信息會詢問是否清空當前學生信息(不清空表示合並所有信息)。 ");
if((pf=fopen(FILENAME,"rb"))==NULL)
{
printf("文件還沒有創建,請手工輸入學生信息並保存吧! ");
return;
}
DelAll();//刪除之前的所有學生信息,然後從文件中讀取
fread(&count,1,sizeofcount,pf);//獲取學生信息的數量
for(i=0;i<count;++i)
{
pstu=(PSTUDENT)malloc(sizeof(STUDENT));
fread(pstu,1,sizeof(STUDENT),pf);
if(!AddStudent(pstu))
{
++repeat;//保持有多少個和當前鏈表中相重復的學生信息
}
}
fclose(pf);
printf("文件讀取完畢!新增學生信息%d條。 ",count-repeat);
}
這個累死我了,我要財富值。。。為了這個不容易啊
4. 跪求學生成績管理系統源代碼及詳細的設計過程和截圖
我要是最加,我就告訴你.
5. c++編程學生成績管理系統源代碼
我有一個,不過稍微有點不一樣,是回答以前的一個同學的問題給編的,
等會回我宿舍給你傳過去,你自己改改
模塊都構建好了是類結構的,不知道你要不???
哎!!好像不可以存文件里,不合要求哦。。。。。
以下是代碼:
c++ vc6.0或7.0下代碼是
#include <iostream>
#include <string.h>
using namespace std;
//構造學生類 屬性有:學號,姓名,年齡,性別,班級號
class CStudent
{
public: //公有類型聲明
char strName[12]; //姓名
char strStuNO[9]; //學號
unsigned int age; //年齡
bool isman; //性別
void SetScore(float s1,float s2,float s3)
//成員函數,設置三門課成績
{
fScore[0]=s1;
fScore[1]=s2;
fScore[2]=s3;
}
float GetAverage(); //均分
CStudent(char str[9]) //第一個構造函數
{
strcpy(strStuNO,str);
}
CStudent(char str[9],char Name[12]) //第二個構造函數
{
strcpy(strStuNO,str);
strcpy(strName,Name);
}
//利用下面構造函數初始化年齡為18
CStudent(unsigned int IN_age) //第三個構造函數,
{
age=IN_age;
}
friend unsigned long int CIn(CStudent &CStu );
private:
float fScore[3];
enum{ClassNum = 20080715 };
//static const unsigned long int ClassNum=20080715;
//班級號:你可以自己修改2008級07系15班,嘎嘎
//將上面數字改一下
};
float CStudent::GetAverage()
{
return (float)((fScore[0]+fScore[1]+fScore[2])/3.0);
}
unsigned long int CIn(CStudent &CStu )
{unsigned long int n;
n=CStu.ClassNum;
return n;
}
void main()
{
const unsigned long int ClassNum=20080715;
unsigned long int n;
int AgeIn;
char str1[9];
char str2[9],strN[12];
cout<<"*****************************************************"<<endl;
cout<<"** C++學生類的構造 **"<<endl;
cout<<"*****************************************************"<<endl;
//以下是調用,為簡化問題,只輸入三個同學
cout<<"調用一個參數的構造函數,請輸入學號:"<<endl;
cin>>str1;
CStudent Onestu(str1);
cout<<"你輸入的學號為:"<<str1<<endl;
cout<<"第一位同學信息建立啦!"<<endl;
system("pause");
//第二個同學信息
cout<<"調用兩個參數的構造函數,請輸入學號:"<<endl;
cin>>str2;
cout<<"請輸入姓名:"<<endl;
cin>>strN;
CStudent Twostu(str2,strN);
cout<<"你輸入的學號為:"<<str2<<endl;
cout<<"你輸入的姓名為:"<<strN<<endl;
cout<<"第二位同學信息建立啦!"<<endl;
system("pause");
//初始化年齡為18
cout<<"你可以輸入年齡,建立以年齡為參數的對象:"<<endl;
cout<<"請輸入年齡(比如18歲):";
cin>>AgeIn;
CStudent Thrstu(AgeIn);
cout<<"第三位同學信息建立啦!"<<endl;
cout<<"他(她)的年齡為:"<<Thrstu.age<<"歲"<<endl;
n=CIn(Onestu);
cout<<"友元函數聲明他們的班級為:"<<n<<endl;
cout<<"*****************************************************"<<endl;
cout<<"** 謝謝使用 **"<<endl;
cout<<"*****************************************************"<<endl;
system("pause");
}
vc2005版本稍微有些不同:
#include <iostream>
#include <string.h>
using namespace std;
//構造學生類 屬性有:學號,姓名,年齡,性別,班級號
class CStudent
{
public: //公有類型聲明
char strName[12]; //姓名
char strStuNO[9]; //學號
unsigned int age; //年齡
bool isman; //性別
void SetScore(float s1,float s2,float s3)
//成員函數,設置三門課成績
{
fScore[0]=s1;
fScore[1]=s2;
fScore[2]=s3;
}
float GetAverage(); //均分
CStudent(char str[9]) //第一個構造函數
{
strcpy_s(strStuNO,str);
}
CStudent(char str[9],char Name[12]) //第二個構造函數
{
strcpy_s(strStuNO,str);
strcpy_s(strName,Name);
}
//利用下面構造函數初始化年齡為18
CStudent(unsigned int IN_age) //第三個構造函數,
{
age=IN_age;
}
friend unsigned long int CIn(CStudent &CStu );
private:
float fScore[3];
static const unsigned long int ClassNum=20080715;
//班級號:你可以自己修改2008級07系15班,嘎嘎
//將上面數字改一下
};
float CStudent::GetAverage()
{
return (float)((fScore[0]+fScore[1]+fScore[2])/3.0);
}
unsigned long int CIn(CStudent &CStu )
{unsigned long int n;
n=CStu.ClassNum;
return n;
}
void main()
{
unsigned long int n;
int AgeIn;
char str1[9];
char str2[9],strN[12];
cout<<"*****************************************************"<<endl;
cout<<"** C++學生類的構造 **"<<endl;
cout<<"*****************************************************"<<endl;
//以下是調用,為簡化問題,只輸入三個同學
cout<<"調用一個參數的構造函數,請輸入學號:"<<endl;
cin>>str1;
CStudent Onestu(str1);
cout<<"你輸入的學號為:"<<str1<<endl;
cout<<"第一位同學信息建立啦!"<<endl;
system("pause");
//第二個同學信息
cout<<"調用兩個參數的構造函數,請輸入學號:"<<endl;
cin>>str2;
cout<<"請輸入姓名:"<<endl;
cin>>strN;
CStudent Twostu(str2,strN);
cout<<"你輸入的學號為:"<<str2<<endl;
cout<<"你輸入的姓名為:"<<strN<<endl;
cout<<"第二位同學信息建立啦!"<<endl;
system("pause");
//初始化年齡為18
cout<<"你可以輸入年齡,建立以年齡為參數的對象:"<<endl;
cout<<"請輸入年齡(比如18歲):";
cin>>AgeIn;
CStudent Thrstu(AgeIn);
cout<<"第三位同學信息建立啦!"<<endl;
cout<<"他(她)的年齡為:"<<Thrstu.age<<"歲"<<endl;
n=CIn(Onestu);
cout<<"友元函數聲明他們的班級為:"<<n<<endl;
cout<<"*****************************************************"<<endl;
cout<<"** 謝謝使用 **"<<endl;
cout<<"*****************************************************"<<endl;
system("pause");
}
以下是運行結果:
*****************************************************
** C++學生類的構造 **
*****************************************************
調用一個參數的構造函數,請輸入學號:
0803
你輸入的學號為:0803
第一位同學信息建立啦!
請按任意鍵繼續. . .
調用兩個參數的構造函數,請輸入學號:
0802
請輸入姓名:
liming
你輸入的學號為:0802
你輸入的姓名為:liming
第二位同學信息建立啦!
請按任意鍵繼續. . .
你可以輸入年齡,建立以年齡為參數的對象:
請輸入年齡(比如18歲):18
第三位同學信息建立啦!
他(她)的年齡為:18歲
友元函數聲明他們的班級為:20080715
*****************************************************
** 謝謝使用 **
*****************************************************
6. c語言學生成績管理系統1000行源代碼
/*首次使用,新建score.in文件,在裡面打入0
可用程序
#include<stdio.h>
FILE *fin
main()
{
fin=fopen("score.in","r");
fprintf(fin,"0");
return 0;
}
完成
*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<time.h>
#define n 999
FILE *fin;
main()
{
int a[n]={0},ori=0,i=0,b=0,add[n]={0},con=0,orix[n]={0},t=0,te[n]={0},TRUEt,ixi,fx,abc=0,sum,TURE,xx;
long long f[n]={0},tex[n]={0};
printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t學生成績管理系統\n\t\t\t\t\t\t Please wait...");
Sleep(2000);system("cls");
int xp,xi;
fin=fopen("score.in","r+");
fscanf(fin,"%d",&xp);
i=xp;
for(xi=1;xi<=xp;xi++)
{fscanf(fin,"%d%d%d",&f[xi],&a[xi],&te[xi]);te[xi]--;
printf("Id:%lld score:%d ranking:%d\n",f[xi],a[xi],te[xi]+1);
add[xi]=xi;orix[xi]=a[xi];
}
fclose(fin);
int TRUE1;
pe:
while(1)
{ TRUE1=1;i++;
printf("Id(輸入-1:刪除,輸入-2:修改成績,輸入-3:刪除所有內容,輸入-4:保存到score.in並退出):");
scanf("%lld",&f[i]);
for(sum=1;sum<i;sum++)
if(f[sum]==f[i])
{system("cls");for(con=1;con<=i;con++) {if(a[con]==0)continue;printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}TRUE1=0;i--;printf("Error with two same id.\n");continue;}
if(TRUE1==0)
continue;
if(f[i]==-3)
{int r;
for(r=0;r<n;r++)
{
a[r]=0;ori=0;i=0;b=0;add[r]=0;con=0;orix[r]=0;t=0;te[r]=0;abc=0;
f[r]=0;tex[r]=0;
}
system("cls");
goto pe;
}
if(f[i]==-2)
{TURE=0;i--;
system("cls");
for(con=1;con<=i;con++)
{if(a[con]==0)continue; printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}
printf("修改學號_____________號的分數.\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b",f[con],a[con],te[con]+1);
scanf("%d",&xx);
for(sum=1;sum<=i;sum++)
if(f[sum]==xx)
{
TURE=1;
printf("\n修改為___________.\b\b\b\b\b\b\b\b\b\b\b\b");
scanf("%d",&a[sum]);
printf("\n修改成功!將在下一次輸入後更新名次。\n\n");
continue;
}
if(TURE==0)
printf("No id is %d\n",xx);
continue;
}
if(f[i]==-4)
{
i--;
fin=fopen("score.in","r+");
fprintf(fin,"%d\n",i);
for(xi=1;xi<=i;xi++)fprintf(fin,"%d %d %d\n",f[xi],a[xi],te[xi]+1);
for(xi=i+1;xi<=xp;xi++)fprintf(fin," \n");
fclose(fin);
return 0;
}
if(f[i]==-1)
{TRUEt=0;
system("cls");
i--;
for(con=1;con<=i;con++){if(a[con]==0)continue;printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}
printf("刪除學號_____________號.\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
scanf("%lld",&fx);
for(con=1;con<=i;con++)
if(f[con]==fx)
{TRUEt=1;abc++;
f[con]=0;
a[con]=0;
tex[abc]=te[con];
for(ixi=1;ixi<=i;ixi++)
if(te[ixi]>te[con])
te[ixi]--;
te[con]=0;
break;}
system("cls");
for(con=1;con<=i;con++){
if(a[con]==0)continue;
printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}
if(TRUE==0)
printf("No Id is %lld\n",fx);
continue;
}
system("cls");
for(con=1;con<i;con++)
{if(a[con]==0)continue; printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}
printf("Id:%lld score:",f[i]);
scanf("%d",&ori);system("cls");
a[i]=ori;add[i]=i;orix[i]=a[i];
system("cls");
for(b=1;b<=i;b++)
for(con=i;con>=b;con--)
if(orix[con]>orix[con-1])
{t=orix[con];orix[con]=orix[con-1];orix[con-1]=t;
t=add[con];add[con]=add[con-1];add[con-1]=t;}
for(con=1;con<=i;con++) te[add[con]]=con;
for(con=1;con<=abc;con++)
for(ixi=1;ixi<=i;ixi++)
if(te[ixi]>tex[con])
te[ixi]--;
if(te[i]==te[i-1])te[i]=0;
for(con=1;con<=i;con++)
{if(a[con]==0)continue;printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}
}
return 0;
}
//求採納
7. 學生信息管理系統最簡單源代碼。
方法一:
1、創建抄一個c語言項目。然後右鍵頭文件,創建一個Stu的頭文件。
8. 求簡單一點的學生成績管理系統源代碼,謝謝
已經算是很簡單的了
#include <time.h>
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#include<string.h>
#define MAX 80
void input();
void sort();
void average();
void find();
void total();
int now_no=0;
struct student
{
int no;
char name[20];
char sex[4];
float score1;
float score2;
float score3;
float sort;
float sum;
};
struct student stu[MAX],*p;
void main()/*主函數*/
{
int as;
/*一下為功能選擇模塊*/
do
{
printf("\n\t\t\t歡迎使用學生成績管理系統\n");
printf("\n\t\t\t\t1.信息輸入(INPUT)\n\t\t\t\t2.總分統計(COUNT)\n\t\t\t\t3.總分排序(SORT)\n\t\t\t\t4.查詢(QUERY)\n");
printf("\t\t\t\t選擇功能選項:");
fflush(stdin);
scanf("%d",&as);
switch(as)
{
case 1:system("cls");input();break;
case 2:system("cls");total();break;
case 3:system("cls");sort();break;
case 4:system("cls");find();break;
default:break;
}
}while(1);
/*至此功能選擇結束*/
}
void input()/*原始數據錄入模塊*/
{
int i=0;
char ch;
do
{
printf("\t\t\t\t1.錄入學員信息\n輸入第%d個學員的信息\n",i+1);
printf("\n輸入學生學號:");
scanf("%d",&stu[i].no);
fflush(stdin);
printf("\n輸入學員姓名:");
fflush(stdin);
gets(stu[i].name);
printf("\n輸入學員性別:");
fflush(stdin);
gets(stu[i].sex);
printf("\n輸入學員成績(FOX):");
fflush(stdin);
scanf("%f",&stu[i].score1);
printf("\n輸入學員成績(C):");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n輸入學員成績(ENGLISH):");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("\n\n");
i++;
now_no=i;
printf("是否繼續輸入?(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
system("cls");
}
void sort()/*排序數據函數*/
{
struct student temp;
int i,j;
char as;
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
}
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].sum<stu[j].sum)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
do{
for(i=0;i<now_no;i++)
{
printf("\t\t\t班級學員信息列表\n");
printf("\t學號\t姓名\t性別\tFOX成績\tC成績\tENG成績\t總分\n");
for(i=0;i<now_no&&stu[i].name[0];i++)
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum);
}
printf("\t\t按任意鍵返回主菜單.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void find()/*查詢函數*/
{
int i,str;
char as;
do
{
printf("輸入要查詢的學生學號:");
fflush(stdin);
scanf("%d",&str);
for(i=0;i<now_no;i++)
if(stu[i].no==str)
{
printf("\t學號\t姓名\t性別\tFOX成績\tC成績\tENG成績\n");
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3);
}
printf("\t\t按任意鍵返回主菜單.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void total()/*求總分*/
{
int i;
char as;
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
}
do{
for(i=0;i<now_no;i++)
{
printf("\t\t\t班級學員信息列表\n");
printf("\t學號\t姓名\t性別\tFOX成績\tC成績\tENG成績\t總分\n");
for(i=0;i<now_no&&stu[i].name[0];i++)
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum);
}
printf("\t\t按任意鍵返回主菜單.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
9. 求「學生成績管理系統」源代碼
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 50 /*定義符號常量,代表學生人數最大值*/
int count=0; /*全局變數,用於記錄數組的當前位置*/
struct student /*定義結構體類型,代表學生信息*/
{
char name[9]; /*學生姓名*/
char number[10]; /*學生學號*/
float math; /*數學成績*/
float english; /*英語成績*/
};
void input(struct student *arr); /*函數聲明,輸入學生信息*/
void sort(struct student *arr); /*函數聲明,按總分排序*/
void find(struct student *arr); /*函數聲明,查找某位學生信息*/
void main()
{
char selmenu; /*定義局部變數,用於記錄用戶選擇的功能編號*/
struct student stud[N]; /*定義結構體數組,用於記錄學生信息*/
do /*利用循環顯示界面*/
{
system("cls"); /*清屏函數*/
printf("\n\n");
printf("\t\t\t\t 學生成績管理系統 \n\n");
printf("\t\t\t\t1.輸入學生成績\n");
printf("\t\t\t\t2.按總分排榜\n");
printf("\t\t\t\t3.查找學生信息\n");
printf("\t\t\t\t4.退出\n\n");
printf("\t\t\t請輸入功能選擇編號(1-4):");
fflush(stdin); /*清空輸入緩沖區*/
scanf("%c",&selmenu); /*接受用戶選擇的功能編號*/
switch(selmenu) /*輸入不同功能編號調用相應函數來完成功能*/
{
case'1':
input(stud); /*調用輸入學生信息函數,參數為學生信息數組名*/
break;
case'2':
sort(stud); /*調用按總分排榜函數,參數是數組名*/
break;
case'3':
find(stud); /*調用按學號和姓名查找學生信息函數*/
break;
}
}while(selmenu!='4'); /*判斷是否退出*/
printf("\n\n\t\t\t----------------謝謝使用----------------\n\n"); /*輸出告別詞*/
}
void input(struct student *arr) /*定義輸入學生信息函數*/
{
char ch; /*用於接收用戶指令*/
do /*利用循環,由用戶控制輸入學生成績*/
{
system("cls");
printf("\n輸入第%d個學生的信息:\n輸入學生姓名:",count+1);
scanf("%s",arr[count].name);
printf("\n輸入學生學號:");
scanf("%s",arr[count].number);
printf("\n輸入數學成績:");
scanf("%f",&arr[count].math);
printf("\n輸入英語成績:");
scanf("%f",&arr[count].english);
count++; /*記錄當前輸入的學生資料的個數*/
printf("\n是否繼續輸入(y/n)\n");
fflush(stdin); /*清空輸入緩沖區*/
ch=getchar();
}while(ch=='y'||ch=='Y'); /*判斷用戶指令,是否繼續輸入*/
}
void sort(struct student *arr) /*定義按總分排榜函數*/
{
int i,j,k; /*定義循環變數i,j,最小數位置k*/
struct student t; /*定義交換臨時變數*/
if(count==0) /*判斷數組中學生成績是否存在*/
printf("無學生成績,請先錄入學生信息\n");
else
{
for(i=0;i<count-1;i++) /*用選擇法按總分對學生成績排序*/
{
k=i;
for(j=i+1;j<count;j++) /*k為arr[i]到arr[count-1]中最小數的位置*/
if((arr[k].math+arr[k].english)<(arr[j].math+arr[j].english))
k=j;
if(k!=i) /*如果最小數不是比較數列中第一個,對調*/
{
t=arr[k];
arr[k]=arr[i];
arr[i]=t;
}
}
printf("\n總分排榜:\n\n");
printf("\t姓名\t學號\t數學\t英語\t總分\t名次\n");
for(j=0;j<count;j++) /*輸出按總分排榜後的學生成績和名次*/
printf("\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\t%-5d\n",
arr[j].name,arr[j].number,arr[j].math,arr[j].english,arr[j].math+arr[j].english,
j+1);
}
printf("\n回車鍵返回主程序\n");
fflush(stdin);
getchar();
}
void find(struct student *arr) /*定義查找函數*/
{
int j;
char name[9]; /*用於接收用戶輸入的學生姓名*/
char number[10]; /*用於接收用戶輸入的學生學號*/
system("cls"); /*清屏函數*/
printf("\n請輸入要查找的學生資料:\n");
printf("\n學生姓名:");
scanf("%s",name);
printf("\n學生學號:");
scanf("%s",number);
for(j=0;j<count;j++) /*使用字元串比較函數查找兵書出符合條件的學生成績*/
{
if((strcmp(name,arr[j].name)==0)&&(strcmp(number,arr[j].number)==0))
{
printf("\n\t姓名\t學號\t數學\t英語\t總分\n");
printf("\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%-6.1f\n",
arr[j].name,arr[j].number,arr[j].math,arr[j].english,arr[j].math+arr[j].english);
break;
}
}
if(j>=count) /*如果沒找到,會從循環條件退出*/
printf("\n未找到該學生紀錄,請核對後重新查找!\n");
fflush(stdin); /*清空輸入緩沖區*/
printf("\n回車鍵返回上一功能菜單\n");
getchar();
}