100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 数据结构--学生成绩管理系统(顺序表)

数据结构--学生成绩管理系统(顺序表)

时间:2022-10-10 22:46:02

相关推荐

数据结构--学生成绩管理系统(顺序表)

一、 实验目的:

1.通过此次课程设计学生成绩管理系统的题目,掌握链表等数据结构的基本操作方面的知识,并能灵活的解决一些基本的问题,加深对其性质及各项操作的理解;

2. 将所学数据结构方面的知识与具体的语言来进行实现,感受数据结构的强大作用,加深理解。

二、实验内容:

编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。建立一个学生的信息登记表,每个学生的信息包括:学号,姓名和课程的成绩。

程序运行时显示一个简单的菜单,例如:

(1)添加记录

(2)显示记录

(3)修改记录

(4)删除记录

(0)退出系统

其中:

(1)添加记录是对学生的信息进行输入,要求输入学号、姓名、学科成绩,其中学号设定为唯一标识码,即学号不能重复;

(2)显示记录除了显示添加记录的信息外,还需要显示对每个学生的课程统计总分;

(3)修改记录按照唯一标识码进行学生数据的修改;

(4)删除记录按照唯一标识码进行学生数据的删除;

三、程序如下

#include<iostream>#include<string.h>using namespace std;struct student{int num;char name[10];float ch;float ma;};static int length=0;//申请一个静态变量,表示顺序表的长度int Create(student *stu)//添加记录{int i=length;printf("\n请输入学号:");scanf("%d",&stu[i].num);for(int j =0 ;j<length;j++)//判断该学号是否已经存在{if(stu[i].num==stu[j].num){printf("该学号已存在!\n");return 0;}}printf("请输入姓名:");scanf("%s",&stu[i].name);printf("请输入语文成绩:");scanf("%f",&stu[i].ch);printf("请输入数学成绩:");scanf("%f",&stu[i].ma);length ++;}void Display(student *stu)//显示记录{int x;int n=0;printf("请输入学号:");scanf("%d",&x);for(int i=0;i<length;i++){if(x==stu[i].num){n=1;printf("\n学号姓名语文成绩数学成绩\n");printf("%d",stu[i].num);printf("\t\t%s",stu[i].name);printf("\t\t%.2f",stu[i].ch);printf("\t\t\t%.2f",stu[i].ma);printf("\n");break;}}if(n!=1)printf("无该生信息!\n");}void Gange(student *stu)//修改记录{int num;int n=0;printf("请输入需要修改信息的学号:");scanf("%d",&num);for(int i=0;i<length;i++){if(num==stu[i].num){n=1;printf("请输入新姓名:");scanf("%s",&stu[i].name );printf("请输入新语文成绩:");scanf("%f",&stu[i].ch );printf("请输入新数学成绩:");scanf("%f",&stu[i].ma );printf("修改成功!\n");break;}}if(n!=1)printf("无该生信息!\n");}void Delete(student *stu)//删除记录{int num;int i;int n=0;printf("请输入要删除信息的学号:");scanf("%d",&num);for(i=0;i<length;i++){if(num==stu[i].num){n=1;break;}}int c=length-i;//需要覆盖的次数if(n==1)//进行循环覆盖,若不满足判断,则不进入此循环{for(int j=0;j<c;j++){stu[i].num=stu[i+1].num;strcpy(stu[i].name,stu[i+1].name); stu[i].ch=stu[i+1].ch;stu[i].ma=stu[i+1].ma;i++;}printf("已删除该生信息!\n");}if(n!=1)printf("无该生信息!\n");length--;}void Menu()//菜单图形{printf("\n\t\t------------------------------------");printf("\n\t\t|学生成绩管理系统 |");printf("\n\t\t|(1)添加记录 |");printf("\n\t\t|(2)显示记录 |");printf("\n\t\t|(3)修改记录 |");printf("\n\t\t|(4)删除记录 |");printf("\n\t\t|(5)退出系统 |");printf("\n\t\t------------------------------------");}void Option(student *stu)//用户选择系统{while(1){system("cls");Menu();printf("\n\t\t请输入选项(1-5):");int x;char opt;scanf("%d",&x);switch(x){case 1:{Create(stu);break;}case 2:{Display(stu);break;}case 3:{Gange(stu);break;}case 4:{Delete(stu);break;}default:{printf("请输入正确数字!\n");break;}}printf("是否继续操作(y/n): ");cin>>opt;if(opt=='y'){continue;}break;}}int main(){struct student stu[50];//Init(stu);Option(stu);return 0;}

这只是一个简单的示例,还有很多地方可以完善,如在输入数字时如何判断用户不会输入其他字符(设置int型变量在接收中文字符,字母等就会报错),还有设置一些控制(成绩不能超过100等…),这些就由各位自己完善。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。