概述
C语言-学生成绩管理系统
C语言应该是绝大多数初学者必备的技能之一,下面展示的是一个以C语言编写的学生成绩管理系统,希望对各位有所帮助。
程序部分代码如下:
定义一个学生的结构体:
typedef struct student
{
int number;
char name[20];
char major[10];
int math;
int English;
int cyy;
struct student *next;//指向下一个节点的指针}student,*pstudent;
//定义结构体指针
}student,*pstudent;
菜单函数:
void menu()
{
system("cls");
printf("----------------------------学生管理系统---------------------------n");
printf("nt 1:新建学生信息 n");
printf("nt 2:查询学生信息 n");
printf("nt 3:修改学生信息 n");
printf("nt 4:删除学生信息 n");
printf("nt 5:显示学生信息 n");
printf("nt 6:显示学生信息的数量 n");
printf("nt 7:保存数据 n");
printf("nt 8:读取数据 n");
printf("nt 0:退出系统 n");
printf("-------------------------------------------------------------------n");
}
新建学生信息,创建一个节点,它会返回一个新学生的指针:
pstudent CreateStudent ()
{
pstudent pstu =(pstudent)malloc (sizeof (student));//申请内存
if (!pstu)
{
printf ("申请内存失败!n");
return NULL;
}
printf("请输入学生的编号(正整数!):");
while(1!=scanf("%d",&pstu->number)||getaddr(pstu->number))//1!=("%d",&pstu->number)这是判断所输入的是否为数字
{ printf("n学生编号错误或已经有这个编号,重新输入学生的编号(整数):");
fflush(stdin);
}
printf("请输入学生的姓名:");
scanf("%s",pstu->name);
printf("请输入学生的专业:");
scanf("%s",pstu->major);
printf("请输入学生的高数成绩:");
scanf("%d",&pstu->math);
printf("请输入学生的英语成绩:");
scanf("%d",&pstu->English);
printf("请输入学生的C语言成绩:");
scanf("%d",&pstu->cyy);
printf("学生信息新建成功!n按任意键继续");
pstu->next=NULL;
getch();
return pstu;
}
把学生节点加入链表中:
int AddStudent(pstudent pstu)
{
pstudent ps=&head;
if (!pstu)
{
return 0;
}
//判断该学生信息是否重复
if (getaddr(pstu->number))
{ printf("编号为%d的学生信息已经存在!n",pstu->number);
free(pstu);//释放该内存的空间
return 0;//表示没有成功加入
}
//while循环的作用是找到当前链表的最后一个节点
while (ps->next)
ps=ps->next ;
//把新节点加入到最后那个节点的后面
ps->next =pstu;
pstu->next =NULL;
return 1; //表示成功加入
}
返回指定学生节点上一个节点的指针:
pstudent getaddr(int number)
{
pstudent pstu=&head;
while (pstu->next)//如果这个节点有下一个节点,一直遍历到最后。
{
if (pstu->next->number==number)
return pstu;
pstu=pstu->next ;
}
return NULL;
}
显示所有学生信息:
void ShowAll()
{
system("cls");
pstudent pstu = &head;
printf("------------------------------------------------------------------n");
printf("编号 姓名 专业 高数 英语 C语言 n");
printf("------------------------------------------------------------------n");
while (pstu->next)
{
printf("%-10d",pstu->next->number);
printf("%-10s",pstu->next->name);
printf("%10s",pstu->next->major);
printf("%10d",pstu->next->math);
printf("%10d",pstu->next->English);
printf("%10dn",pstu->next->cyy);
pstu=pstu->next;//让指针指向下一个节点
}
printf("n------------------------------------------------------------------n");
getch();
}
显示学生信息的数量:
int showcount()
{
pstudent pstu=&head;
int count =0;
while (pstu->next)
{
count++;
pstu=pstu->next;
}
printf("n学生信息数量为%d",count);
getch();
getch();
return count;
}
修改学生信息:
void xiugai(int number)
{
pstudent pstu=getaddr(number);//获取要修改的学生信息节点的上一个节点
if (pstu==NULL)
{
printf("没有编号为%d的学生信息",number);
getch();
getch();
return;
}
pstu=pstu->next;//让指针指向自己
printf("请修改学生的姓名:");
scanf("%s",pstu->name);
printf("请修改学生的专业:");
scanf("%10s",pstu->major);
printf("请修改学生的高数成绩:");
scanf("%10d",&pstu->math);
printf("请修改学生的英语成绩:");
scanf("%10d",&pstu->English);
printf("请修改学生的C语言成绩:");
scanf("%10d",&pstu->cyy);
printf("修改完毕!请指示!");
getch();
}
获取学生编号:
int getnumber()
{
int number;
printf("请输入学生的编号:");
while (1!=scanf("%d",&number))
{
printf("编号不存在,请重新输入:");
fflush(stdin);
}
return number;
}
删除学生信息:
void Deletestudent(int number)
{
pstudent pstu,p; pstu=getaddr(number);//获取要修改的学生信息节点的上一个节点
if (pstu==NULL)
{
printf("没有编号为%d的学生信息",number);
getch();
getch();
return;
}
p =pstu->next;
pstu->next=p->next;
free (p); printf("已删除编号为%d的学生信息!n",number);
getch();
getch();
}
文件等功能就不一一上传了,有兴趣可以去文章最下方下载源码。
相关实现效果:
如有错误之处,欢迎指出,万分感谢!
源码链接:https://download.csdn.net/download/qq_37430108/12339347
最后
以上就是感动香菇为你收集整理的C语言(链表)-学生成绩管理系统(简要描述)的全部内容,希望文章能够帮你解决C语言(链表)-学生成绩管理系统(简要描述)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复