ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

学生成绩信息管理系统

2021-06-10 20:33:04  阅读:175  来源: 互联网

标签:int choice sp 学生 --- printf 信息管理系统 成绩 scanf



学生成绩信息管理系统


  1. 存储结构设计
    设计 学生结构体 。
  2. 编程要求
    (1) 结构体设计
    1----------学生信息录入
    2---------- 学生信息浏览
    3---------- 学生信息查询
    4---------- 学生信息删除
    5---------- 学生成绩统计
    0---------- 退出系统
  3. 功能和函数设计要求
    任务
    通过函数完成各个菜单模块的功能, 要求合理设计主函数和各个子函数, 合理设计各个
    函数之间的调用关系。
    编程要求
  4. 主函数:显示主菜单。
  5. 如果设计并编写登陆菜单,要求合理设计登陆界面,要求用户输入用户名和密码,如果
    全都正确则进入主菜单,如果有一项不对,系统再提供两次机会输入,三次都错退出系
    统。编写函数完成 “学生录入” 功能, 要求能将用户由键盘输入的若干学生信息追加到
    student.txt 或 student.dat 中, 存储结构可以使用数组,也可以使用链表 。
  6. 编写函数完成 “学生浏览” 功能, 要求能将 student.txt 或 student.dat 文件中的全部
    学生信息显示出来, 存储结构 可以使用数组,也可以使用链表 。
  7. 编写函数完成 “学生查询” 功能, 要求能按照学号或姓名对学生进行查询。
  8. 编写函数完成 “学生删除” 功能, 要求按照学号或姓名将某个学生删除,并将删除后的
    结果写回到文件中,此功能要求存储结构 必须使用链表 。
  9. 设计并编写编写函数完成 “成绩统计” 功能,可以对“英语成绩” 、“C 语言成绩”进行
    单科浏览(降序排列) ,按某个学生统计总分和平均分,按英语和 C 语言两科成绩对学
    生进行排序。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct stdent{
	char num[20];
	char name[20];
	char sex;
	int escore;
	int cscore;
	int sum;
};
void login();
void input(struct stdent *sp,int n);
void output(struct stdent *sp,int n);
void find(struct stdent *sp,int n);
int dele(struct stdent *sp,int n);
void sort(struct stdent *sp,int n);
int main(){
    int choice,n;
    struct stdent stu[20];
	login();
	while(1){
		printf("**********************\n");
		printf("   1---学生信息录入\n");
		printf("   2---学生信息浏览\n");
		printf("   3---学生信息查询\n");
		printf("   4---学生信息删除\n");
		printf("   5---学生信息统计\n");
		printf("   0---退出系统\n");
		printf("**********************\n");
		scanf("%d",&choice);
		switch(choice){
			case 1:
			    scanf("%d",&n);
			    input(stu,n);
			    break;
			case 2:
			    output(stu,n);
			    break;
			case 3:
				find(stu,n);
				break;
			case 4:
				n=dele(stu,n);
				break;
			case 5:
				sort(stu,n);
				break;
			case 0:
			    exit(0);
				break;
			default:printf("输入有误,请重新输入!\n");
		}	 
	}
}
void login(){
	system("cls");
	int choice,i;
	char username[20];
	char password[20];
	while(1){
		printf("**********************\n");
		printf("   1---学生信息录入\n");
		printf("   0---退出系统\n");
		printf("**********************\n");
		scanf("%d",&choice);
		if(choice==0)
		    exit(0);
		else if(choice==1){
			for(i=0;i<3;i++){
				printf("输入用户名:\n");
				scanf("%s",username);
				printf("输入密码:\n");
				scanf("%s",password);
				getchar();
				if(strcmp(username,"gy")==0&&strcmp(password,"123456")==0){
				    printf("欢迎光临\n");
					break;	
				}
				else
					printf("你还有%d次机会\n",3-i-1);
			}
			if(i==3)
			    exit(0);
			break;
		}
		else
		    printf("输入有误\n");	 
	}
}
void input(struct student *sp,int n){
	system("cls");
	int i;
	for(i=0;i<n;i++){
		printf("请输入学号:\n");
		scanf("%s",sp[i].num);
		printf("请输入姓名:\n");
		scanf("%s",sp[i].name);
		getcher();
		printf("请输入性别:\n");
		scanf("%",sp[i].sex);
		printf("请输入英语成绩:\n");
		scanf("%s",sp[i].escore);
		printf("请输入C语言成绩:\n");
		scanf("%s",sp[i].cscore);
		sp[i].sum=sp[i].escore+sp[i].cscore;
	}
	getchar();
}
void output(struct student *sp,int n){
	system("cls");
	int i;
	printf("序号 学号  姓名 性别  英语成绩  C语言成绩 总成绩\n");
	for(i=0;i<n;i++){
		printf("%d\t",i+1);
		printf("%s\t",sp[i].num);
		printf("%s\t",sp[i].name);
		printf("%c\t",sp[i].sex);
		printf("%d\t",sp[i].escore);
		printf("%d\t",sp[i].cscore);
		printf("%d\t",sp[i].sum);
	}
}
viod find(struct student *sp,int n){
	system("cls");
	int choice,i,fn=0;
	char findnum[20],findname[20];
	printf("**********************\n");
	printf("   1---按学号查询\n");
	printf("   2---按姓名查询\n");
	printf("**********************\n");
	scanf("%d",&choice);
	if(choice==1){
		printf("请输入查询的学号:\n");
		scanf("%s",findnum);
		for(i=0;i<n;i++){
			if(strcmp(findnum,sp[i].num)==0){
				fn++;
				if(fn==1)
				    printf("序号 学号  姓名 性别  英语成绩  C语言成绩\n");
				printf("%s\t",sp[i].num);
		        printf("%s\t",sp[i].name);
	        	printf("%c\t",sp[i].sex);
		        printf("%d\t",sp[i].escore);
		        printf("%d\t",sp[i].cscore);
			}
		}
		if(fn==0)
		printf("没有该学生\n");
	}
	else if(choice==2){
		printf("请输入查询的姓名:\n");
		scanf("%s",findname);
		for(i=0;i<n;i++){
			if(strcmp(findnum,sp[i].num)==0){
				fn++;
				if(fn==1)
				    printf("序号 学号  姓名 性别  英语成绩  C语言成绩\n");
				printf("%s\t",sp[i].num);
		        printf("%s\t",sp[i].name);
	        	printf("%c\t",sp[i].sex);
		        printf("%d\t",sp[i].escore);
		        printf("%d\t",sp[i].cscore);
			}
		}
		if(fn==0)
		printf("没有该学生\n");
	}
	else
	    printf("输入有误\n");
}
int dele(struct student *sp,int n){
	system("cls");
	int choice,i,j,fn=0;
	char delenum[20],delename[20];
	printf("**********************\n");
	printf("   1---按学号删除\n");
	printf("   2---按姓名删除\n");
	printf("**********************\n");
	scanf("%d",&choice);
	if(choice==1){
		printf("请输入删除的学号:\n");
		scanf("%d",&delenum);
		for(i=0;i<n;){
			if(strcmp(delenum,sp[i].num)==0){
				fn++;
				for(j=i;j<n-1;j++){
					sp[j]=sp[j+1];
				}
				n--; 
			}
			else
			    i++;
		}
		if(fn==0)
		    printf("没有该学生\n"); 
	}
	else if(choice==2){
		printf("输入删除的姓名:\n");
		scanf("%s",delename);
		for(i=0;i<n;){
			if(strcmp(delename,sp[i].name)==0){
				fn++;
				for(j=i;j<n-1;j++){
					sp[j]=sp[j+1]
				}
				n--;
			}
			else
			    i++;
		}
		if(fn==0)
		    printf("没有该学生\n"); 
	}
	else
	    printf("输入有误\n");
	return n;	
}
void sort(struct student *sp,int n){
	system("cls");
	int cjoice,i,j;
	struct student temp;
	char delenum[20],delename[20];
	printf("**********************\n");
	printf("   1---按英语成绩排序\n");
	printf("   2---按C语言成绩排序\n");
	printf("   3---按总成绩排序\n");
	printf("**********************\n");
	scanf("%d",&choice);
	if(choice==1){
		for(i=0;i<n-1;i++){
			for(j=0;j<n-i-1;j++){
				if(sp[j].escore<sp[j+1].escore){
					temp=sp[j];
					sp[j]=sp[j+1];
					sp[j+1]=temp;
				}
			}
		}
	}
	else if(choice==2){
		for(i=0;i<n-1;i++){
			for(j=0;j<n-i-1;j++){
				if(sp[j].cscore<sp[j+1].cscore){
					temp=sp[j];
					sp[j]=sp[j+1];
					sp[j+1]=temp;
				}
			}
		}
	}
	else if(choice==3){
		for(i=0;i<n-1;i++){
			for(j=0;j<n-i-1;j++){
				if(sp[j].sum<sp[j+1].sum){
					temp=sp[j];
					sp[j]=sp[j+1];
					sp[j+1]=temp;
				}
			}
		}
	}
	else
	    printf("输入有误\n");
}

标签:int,choice,sp,学生,---,printf,信息管理系统,成绩,scanf
来源: https://blog.csdn.net/weixin_50616646/article/details/117790472

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有