学生成绩管理系统
-
简介
-
此学生成绩管理系统是用工具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");
}