學生成績管理系統
- 簡介
- 此學生成績管理系統是用工具codeblock開發的,語言類型c語言,實現功能:1、創建學生成績庫 2、學生信息顯示 3、學生學號排序 4、學生成績排序 5、添加學生信息 6、根據學號刪除學生信息 7、查找學生信息 、8退出程序。
本次實驗實現了c語言座標顯示和window窗體顯示 - 先上一下試驗界面圖
歡迎關注博主,博主會不定時更新學習的知識和大家共享
想要源代碼的可以關注微信公衆號回覆:c學生成績管理系統
實驗代碼解析
運行程序
出現窗體程序,點擊是進入成績管理系統,點擊否退出
窗體代碼
SetConsoleTitle("學生英語成績管理系統");//窗口名稱
IDYES== MessageBox(NULL,"歡迎進入學生管理系統","半熟的瓜",MB_YESNO)
顯示界面的代碼
int showlist(student *head,int x,int y)
{
int i;
int out;
char str[10][40]={
"**************************************",
"***********1.創建學生成績庫***********",
"***********2.學生學號排序*************",
"***********3.學生成績排序*************",
"***********4.添加學生信息*************",
"***********5.根據學號刪除學生信息*****",
"***********6.修改學生信息*************",
"***********7.查找學生信息*************",
"***********8.退出程序*****************",
"**************************************"
};
system("cls");//清屏函數
for(i=0;i<10;i++)
{
gotoxy(30,i);
printf("%s\n",str[i]);
}
Dayinlist(head,x,y);//每個選擇執行完輸出新的學生信息
printf("\n請輸入你的選擇(1-8):");
scanf("%d",&out);
return out;
}
座標的代碼
void gotoxy(int x,int y)
{
COORD pos;
pos.X=x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
創建學生鏈表的代碼
void Createlist(int n,student *head)
{
student *p,*pre,*q;
pre=head;
q=head;
int i;
for(i=0;i<n;i++)
{
p=(student *)malloc(sizeof(student));
printf("學號 成績:");
scanf("%lf%lf",&p->sno,&p->Escore);
q=head->next;
while(q)
{
if(q->sno==p->sno)
{
printf("添加錯誤,已經有此學生的信息!!\n請重新輸入!\n");
i--;
free(p);//釋放空間
break;
}
else
q=q->next;
}
if(q==NULL)
{
pre->next=p;//插入鏈表
p->number=pre->number+1;
pre=p;
pre->next=NULL;
}
}
printf("創建成功!");
system("pause");
}
輸出學生信息
void Dayinlist(student *h,int x,int y)
{
student *p;
p=h->next;
if(p==NULL)
{
gotoxy(x,y);
printf("沒有學生信息!!\n");
}
else
{
gotoxy(x-1,y);
printf("-------------------");
gotoxy(x,++y);
printf("序號");
gotoxy(x+5,y);
printf("|");
gotoxy(x+6,y);
printf("學號");
gotoxy(x+11,y);
printf("|");
gotoxy(x+12,y);
printf("英語成績");
while(p)
{
gotoxy(x,++y);
printf("%d",p->number);
gotoxy(x+5,y);
printf("|");
gotoxy(x+6,y);
printf("%.lf",p->sno);
gotoxy(x+11,y);
printf("|");
gotoxy(x+12,y);
printf("%.2lf",p->Escore);
//printf("%d\t%.2lf\n",p->sno,p->Escore);
p=p->next;
}
gotoxy(x-1,++y);
printf("-------------------\n");
}
//system("pause");//光標等待
}
學生學號選擇排序
//學生學號,選擇排序
void Sno_paixu(student *h,int n)
{
int i,j;
double temp;
student *p,*q;
p=h->next;
if(p==NULL)
printf("沒有學生信息!!\n");
else
{
for(i=0;i<n-1;i++)
{
q=p->next;
for(j=i+1;j<n;j++)
{
if(q->sno<p->sno)
{
temp=p->sno;
p->sno=q->sno;
q->sno=temp;
temp=p->Escore;
p->Escore=q->Escore;
q->Escore=temp;
}
q=q->next;
}
p=p->next;
}
printf("排序成功!\n");
}
system("pause");
}
學生成績冒泡排序
//學生成績排序,冒泡排序
void Escore_list(student *h,int n)
{
int i,j;
double temp;
student *p,*q;
p=h->next;
if(p==NULL)
printf("沒有學生信息!!\n");
else
{
for(i=0;i<n-1;i++)
{
p=h->next;
for(j=0;j<n-i-1;j++)
{
q=p->next;
if(q->Escore<p->Escore)
{
temp=p->sno;
p->sno=q->sno;
q->sno=temp;
temp=p->Escore;
p->Escore=q->Escore;
q->Escore=temp;
}
p=p->next;
}
}
printf("排序成功!\n");
}
system("pause");
}
添加學生的信息
//添加學生的信息
void add_list(student *h,int *n)
{
int a,i;
student *en,*p,*pre;
pre=h;
printf("請輸入添加學生的個數:");
scanf("%d",&a);
*n+=a;//學生人數添加
for(i=0;i<a;i++)
{
printf("學號 英語成績:");
en=(student *)malloc(sizeof(student));
scanf("%lf%lf",&en->sno,&en->Escore);
p=h->next;
//判斷添加的是否已存在
while(p)
{
if(p->sno==en->sno)
{
printf("添加錯誤,已經有此學生的信息!!\n請重新輸入!\n");
i--;
free(en);//釋放空間
break;
}
pre=p;
p=p->next;
}
//當p==NULL說明沒有此學生的信息
if(p==NULL)
{
pre->next=en;
en->number=pre->number+1;
pre=en;
pre->next=NULL;
}
}
printf("添加完畢!!!\n");
system("pause");
}
根據學號刪除學生的信息
//根據學號刪除學生的信息
void delete_list(student *h)
{
double s;
student *p,*pre;
pre=h;
p=pre->next;
printf("請輸入所要刪除的學生的學號:");
scanf("%lf",&s);
while(p)
{
//找到刪除學生的學號
if(p->sno==s)
{
pre->next=p->next;
free(p);
pre=pre->next;
while(pre)
{
pre->number--;
pre=pre->next;
}
break;
}
pre=p;
p=p->next;
}
//沒有找到所刪除學生的信息
if(p==NULL)
printf("沒有找到該學生的學號!\n");
else
printf("刪除成功!\n");
system("pause");
}
修改學生的信息
//修改學生的信息
void revise_list(student *h)
{
student *p;
p=h->next;
int a;
double s;
printf("請輸入所要修改信息的學生的學號:");
scanf("%lf",&s);
while(p)
{
//找所要修改的學生信息
if(p->sno==s)
{
printf("1、修改學號的信息\n");
printf("2、修改成績的信息\n請輸入做要修改的屬性序號:");
while(1)
{
scanf("%d",&a);
if(a==1)
{
printf("學號修改爲:");
scanf("%lf",&p->sno);
break;
}
else if(a==2)
{
printf("成績修改爲:");
scanf("%lf",&p->Escore);
break;
}
else
printf("沒有該屬性的序號,請再輸入一次:");
}
break;
}
p=p->next;
}
if(p==NULL)
printf("沒有該學號!\n");
else
printf("修改成功!\n");
system("pause");
}
查找學生信息
//查找學生信息
void Select_list(student *h)
{
double s;
int t,c=0;//c是標誌位
student *p;
p=h->next;
printf("1.學號查找\n");
printf("2.成績查找\n請輸入你們所要查找的序號:");
while(1)
{
scanf("%d",&t);
if(t==1||t==2)
break;
else
printf("選擇錯誤,請再輸入一次:");
}
if(t==1)
{
printf("請輸入學號:");
scanf("%lf",&s);
while(p)
{
if(p->sno==s)
{
printf("學號:%.lf成績:%.2lf\n",p->sno,p->Escore);
c=1;
}
p=p->next;
}
}
else
{
printf("請輸入成績:");
scanf("%lf",&s);
while(p)
{
if(p->Escore==s)
{
printf("學號:%.lf成績:%.2lf\n",p->sno,p->Escore);
c=1;
}
p=p->next;
}
}
if(c==0)
printf("沒有此學生信息!!");
system("pause");
}