数据结构课程设计——学生成绩管理系统

数据结构课程设计——学生成绩管理系统,第1张

数据结构课程设计——学生成绩管理系统

本程序是对学生的成绩管理做一个简单的模拟,用菜单选择方式完成下列功能:   登记学生成绩;查询学生成绩;插入学生成绩;删除学生成绩。把问题看作对线性表的 *** 作来完成。

 

#include 
#include 
#include 
#include 
#define MAXSIZE 100
int renshu;
int true=1;
int error=0;


typedef struct Student{           //存放学生姓名的表
	char name[20];      //姓名
	int num;	//学号
	int math;
	int chinese;
	int sum;         //总成绩
}Student;

typedef struct{
	Student elem[MAXSIZE];         //线性表占用的数组空间
	int last;                     //最后一个元素的下标
}SeqList;

     //顺序表的输入    
void InList(SeqList *L,int i){       //逐个输入学生信息
	int x;
	printf("请输入学生数量:");
	scanf("%d",&x);
	renshu=x;
	for(i=1;i<=x;i++){
		printf("第%d位学生信息n",i);
		printf("———————————————n");
		printf("姓名:");
		scanf("%s",&L->elem[i].name);
		printf("———————————————n");
		printf("学号:");
		scanf("%d",&L->elem[i].num);
		printf("———————————————n");
		printf("数学成绩:");
		scanf("%d",&L->elem[i].math);
		printf("———————————————n");
		printf("语文成绩:");
		scanf("%d",&L->elem[i].chinese);
		printf("———————————————n");
		L->elem[i].sum=L->elem[i].chinese+L->elem[i].math;     //计算总成绩
	}
	L->last=x;
	printf("n");
}

     //输出顺序表 
void OutList(SeqList *L,int i){                    //输出总成绩
	for(i=1;i<=L->last;i++){
		printf("姓名:%s 学号:%d 语文:%d 数学:%d 总分:%dn",L->elem[i].name,L->elem[i].num,L->elem[i].chinese,L->elem[i].math,L->elem[i].sum);
	}
	printf("n");
}

     //顺序表的查询 
void Find(SeqList *L){                        //顺序表的查询,按照学号查询该学生成绩
	int i=1;
	int n;
	if(L->last<1){                            //判断是否为空表 
		printf("没有成绩表n");
		return;
	}
	printf("输入要查找学生的学号n");
	scanf("%d",&n);
	while(i<=L->last && L->elem[i].num!=n){         //循环查找对应学号的下标 
		i++;
	}
	if(i<=L->last){
		printf("该学生姓名为:%s 学号为:%d 语文成绩为:%d 数学成绩为:%d 总分为:%dn",L->elem[i].name,L->elem[i].num,L->elem[i].chinese,L->elem[i].math,L->elem[i].sum);
		return;
	}
	if(i>L->last){
		printf("学号错误,未查询到该学生n");
		return;
		}
}

            //顺序表的删除
int Delete(SeqList *L, int i){                  //从L中删除指定位序i的元素,该元素数组下标为i
	int j;
	int k;
	printf("请输入要删除的学生学号:");
	scanf("%d",&i);
	if(L->last<1){                 //检查是否为空表
		printf("空表!");
		return error;
	}
	for(k=1;k<=L->last;k++){
		if(L->elem[k].num==i)
		break;
	}
	if(k>L->last){
		printf("未找到该学生!n");
		return error;
	} else{
		for(j=k;j<=L->last;j++)
			L->elem[j]=L->elem[j+1];            //将位序j+1及以后的元素前移
		L->last--;                               //last仍指向最后元素
		return true;
	}
}

                    //顺序表的插入
int Insert(SeqList *L,int i,Student e){      //在L的指定位序i中插入一个新元素e;位序i元素的数组位置下表是i
	int j;
	if(L->last==MAXSIZE){         //表空间已满,不能插入
		printf("表满n");
		return 0;
	}
	if(i<1 || i>L->last+2){            //检查插入位序的合法性:是否在1~n。n为当前元素个数,即last
		printf("位序不合法n");
		return 0;
	}
	for(j=L->last;j>=i-1;j--)         //last指向序列最后元素
		L->elem[j+1]=L->elem[j];
	L->elem[i]=e;
	L->last++;
	return 1;
}


int main(){
	int N=1,i,j;
	SeqList L;
	Student e,g;
	int renshu,a;
	printf("**********************n");
	printf("*------选择 *** 作------*n");
	printf("*------1 登记--------*n");
	printf("*------2 输出--------*n");
	printf("*------3 查询--------*n");
	printf("*------4 删除--------*n");
	printf("*------5 插入--------*n");
	printf("*------0 退出--------*n");
	printf("**********************n");
	while(N){
		printf("请选择 *** 作n");
		scanf("%d",&N);
		if(N==1){            //登记成绩
			InList(&L,i);
		}
		else if(N==2){                 //输出成绩
			OutList(&L,i);
		}
		else if(N==3){                 //查询
			Find(&L);
		}
		else if(N==4){                   //删除
			if(Delete(&L,j)){
				renshu--;
				printf("删除成功n");
			}else {
				printf("删除失败n");
			}
		}
		else if(N==5){             //插入
			printf("请输入要插入的位置:");
			scanf("%d",&a);
			printf("请输入学生姓名:");
			scanf("%s",&g.name);
			printf("请输入学生学号:");
			scanf("%d",&g.num);
			printf("请输入学生数学成绩:");
			scanf("%d",&g.math);
			printf("请输入学生语文成绩:");
			scanf("%d",&g.chinese);
			g.sum=g.math+g.chinese;
			if(Insert(&L,a,g)){
				renshu++;
				printf("插入成功n");
			}else {
				printf("插入失败n");
			}
		}else if(N==0){
			printf("退出成功,按任意键结束n");
			exit(0);
		}
	}
	return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5657720.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存