您的位置:首页 > 其它

课程设计-学生成绩系统

2015-12-24 12:19 309 查看
程序代码:

/**********************************************
*版权所有 (C)2015,wangxiao
*
*文件名称:chengjixitong.cpp
*文件标识:无
*内容摘要:实现学成成绩的输入、插入、删除、修改、统计和输出
*其他内容:无
*当前版本:V1.0
*作者:王晓
*完成日期:20151224
*
*修改记录:
*修改日期:20151224
*版本号:V1.0
*修改人:王晓
*修改内容:创建
*************************************************/

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

typedef struct STUDENT
{

char   name[20];//名字
char    num[10];//学号
int    score;//成绩
struct STUDENT *next;
}STUDENT, *StudentList;
void Create(StudentList &H);//输入学生成绩
void Insert(StudentList &H);//插入学生成绩
void Delete(StudentList &H);//删除学生成绩
void Locate(StudentList H);//查找学生成绩
void Modify(StudentList H);//修改学生信息
void Sum(StudentList H);//统计学生成绩
void PrintList(StudentList H);//输出学生成绩

/******************************
*功能描述:建立链表,输入并存储数据
*输入参数:姓名、学号、成绩
********************************/
void Create(StudentList &H)
{
int a,i;

system("cls");//清屏
printf("\t\t**************************************************\n");
printf("\t\t-------------------成绩链表的输入-------------------\n");

printf("输入学生的个数:\n");
scanf("%d",&a);

StudentList q=H;

for (i=0;i<a;i++)
{
StudentList p;
p= (StudentList )malloc(sizeof(STUDENT));
printf("输入第%d个学生的信息:\n",i+1);
printf("\n输入姓名:\t学号:\t成绩:\n");
scanf("%s %s %d",p->name,p->num,&p->score);
p->next=NULL;
q->next=p;
q=q->next;
}

PrintList(H);

printf("按任意键返回主菜单\n");
getch();
}
/******************************
*功能描述:插入学生成绩
*输入参数:所要插入的位置
********************************/
void Insert(StudentList &H)

{
system("cls");//清屏
printf("\t\t**************************************************\n");
printf("\t\t-------------------学生信息插入操作-------------------\n");
if(!H->next)
{
printf("错误:链表未创建!\n");
printf("按任意键返回主菜单\n");
getchar();
return ;
}
int i;
printf("插入的位置:");
scanf("%d",&i);
StudentList p = H;
int j = 0;
while (p && j < i-1)
{
p = p->next;
++j;
}
if (!p || j > i-1)
{
printf("输入位置错误!") ;
printf("按任意键返回主菜单\n");
getch();
return;
}
StudentList s = (StudentList )malloc(sizeof(STUDENT));
printf("\n输入姓名:\t学号:\t成绩:\n");
scanf("%s %s %d",s->name,s->num,&s->score);
s->next = p->next;
p->next = s;

PrintList(H);
printf("按任意键返回主菜单\n");
getchar();
}
/******************************
*功能描述:删除学生成绩
*输入参数:所要删除的位置
********************************/
void Delete(StudentList &H)                                          //删除节点

{
system("cls");//清屏
printf("\t\t**************************************************\n");
printf("\t\t-------------------学生信息删除操作-------------------\n");
if(!H->next)
{
printf("错误:链表未创建!\n");
printf("按任意键返回主菜单\n");
getchar();
return ;
}
int i;
printf("输入要删除的位置:");
scanf("%d",&i);
StudentList p = H;
int j = 0;
while (p->next && j < i-1)
{
p = p->next;
++j;
}
if (!p->next || j > i-1)
{
printf("输入位置错误!") ;
printf("按任意键返回主菜单\n");
getch();
return;
}
StudentList q=p->next;
p->next=q->next;
free(q);

PrintList(H);
printf("按任意键返回主菜单\n");
getchar();

}
/******************************
*功能描述:查找学生成绩
*输入参数:学号
********************************/
void Locate(StudentList H)

{
system("cls");//清屏
printf("\t\t**************************************************\n");
printf("\t\t-------------------学生信息查询操作-------------------\n");
if(!H->next)
{
printf("错误:链表未创建!\n");
printf("按任意键返回主菜单\n");
getchar();
return ;
}

char num[10];
printf("\n输入要查询的学号:");
scanf("%s",num);
StudentList p=H->next;
int i=1;

while(p)
{
if(!strcmp(num,p->num))

{
printf("找到了,它是链表的第%d个元素\n",i);
printf("\n姓名\t学号\t成绩\n");

printf("%s\t%s\t%d\t\n",p->name,p->num,p->score);
getchar();
break;
}
p=p->next;
i++;

}
if (!p)
{
printf("你要查询的学号不存在!!\n");
getchar();
}
printf("按任意键返回主菜单\n");
getchar();
}
/******************************
*功能描述:修改学生成绩
*输入参数:要修改的位置
********************************/
void Modify(StudentList H)
{

system("cls");//清屏
printf("\t\t**************************************************\n");
printf("\t\t-------------------学生信息修改操作-------------------\n");
if(!H->next)
{
printf("错误:链表未创建!\n");
printf("按任意键返回主菜单\n");
getchar();
return ;
}

int i;
printf("输入要修改的位置:");
scanf("%d",&i);
StudentList p = H;
int j = 0;
while (p->next && j < i-1)
{
p = p->next;
++j;
}
if (!p->next || j > i-1)
{
printf("输入位置错误!") ;
printf("按任意键返回主菜单\n");
getch();
return;
}

StudentList q=p->next;

char name[20];char num[10];int score;
printf("\n输入更改的 姓名\t学号\t成绩:\n");
scanf("%s %s %d",name,num,&score);
strcpy(q->name,name);
strcpy(q->num,num);
q->score=score;
PrintList(H);
printf("按任意键返回主菜单\n");
getchar();

}
/******************************
*功能描述:统计学生成绩
*输入参数:无
********************************/
void Sum(StudentList H)
{

system("cls");//清屏
printf("\t\t**************************************************\n");
printf("\t\t-------------------学生成绩统计-------------------\n");
StudentList t=H->next;
if(!t)
{
printf("信息系统空,请添加!\n");
return ;
}
printf("不及格的学生是:\r\n");
printf("姓名\t学号\t成绩:\n");
while(t)
{
if (t->score<60)
{
printf("%s\t%s\t%d\t\n",t->name,t->num,t->score);
}
t=t->next;
}

t=H->next;
printf("\n成绩为“及格”的学生是:\r\n");
printf("姓名\t学号\t成绩:\n");
while(t)
{
if (t->score>=60&&t->score<=70)
{
printf("%s\t%s\t%d\t\n",t->name,t->num,t->score);
}
t=t->next;
}

t=H->next;
printf("\n成绩为“中”的学生是:\r\n");
printf("姓名\t学号\t成绩:\n");
while(t)
{
if (t->score>=70&&t->score<80)
{
printf("%s\t%s\t%d\t\n",t->name,t->num,t->score);
}
t=t->next;
}

t=H->next;
printf("\n成绩为“良”的学生是:\r\n");
printf("姓名\t学号\t成绩:\n");
while(t)
{
if (t->score>=80&&t->score<90)
{
printf("%s\t%s\t%d\t\n",t->name,t->num,t->score);
}
t=t->next;
}

t=H->next;
printf("\n成绩为“优”的学生是:\r\n");
printf("姓名\t学号\t成绩:\n");
while(t)
{
if (t->score>=90)
{
printf("%s\t%s\t%d\t\n",t->name,t->num,t->score);
}
t=t->next;
}
printf("按任意键返回主菜单\n");
getchar();

}
/******************************
*功能描述:输出学生成绩
*输出参数:姓名、学号、成绩
********************************/
void PrintList(StudentList H)                                             //输出链表
{

StudentList t=H->next;

if(!t)
{
printf("信息系统空,请添加!\n");
return ;
}
printf("\n姓名\t学号\t成绩\n");

while(t)
{

printf("%s\t%s\t%d\t\n",t->name,t->num,t->score);
t=t->next;
}

printf("\n");
getchar();
}

void main()
{
StudentList  H;
H = (StudentList )malloc(sizeof(STUDENT));  //分配头结点的空间
H->next = NULL;
while(1)
{
system("cls");//清屏
printf("======================学生成绩管理系统======================\n");
printf("\n");
printf("          1.建立成绩链表\n          2.插入\n          3.删除\n");
printf("          4.查询\n          5.修改\n          6.统计\n          0.退出\n");

printf("请选择:");
switch(getch())
{
case '1':
Create(H);
break;
case '2':
Insert(H);
break;
case '3':
Delete(H);
break;
case '4':
Locate(H);
break;
case '5':
Modify(H);
break;
case '6':
Sum(H);
break;
case '0':
exit(0);
}
}

}


 

运行结果:



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: