学生信息管理系统(C语言数组版)

****#学生信息管理系统

这个我们是当作一个实践课作业独立完成的。老师就给了几个选题,作为小白,我就选了最简单的。我们没有上课,就老师拉了个群,发个文件,就没了。
要知道,当时我看到都懵了。想着啥都没讲,就让我做个系统,我哪里会。我当时就真以为是我们存款机那种的一个系统。后来,我就报着试一试的心理,去百度看看。毕竟都是个大学生了,什么东西都要自己解决,不会就百度。后来,真的就有,看了人家做出来的东西发现,是我想的深奥了,原来做出来的系统还是个黑框。然后我就自己写了一个。自己也不算厉害那种,然后就都是用很简单的语句。
**

##

**功能主要是对学生信息进行添加、删除、查找、显示信息、排序、存档。
实现代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void creat();
void info();
void add();
void shanchu();
void search();
void charge();
void show();
void sort();
void save();
int count=0;
struct  Student{
	int num;
	char name[20];
	int English;
	int math;
	int chinese;
	int ave;
	int total;
}student[60],stemp;//结构体,学生信息
int main(){
	creat();
	return 0;
}
void creat(){
	int a=0;
	info();
		printf("当前文件中有%d条数据\n", count);
	printf("\t\t\t欢迎使用学生成绩管理系统\n");
	printf("1:添加一条学生数据\n");
	printf("2:删除一条学生数据\n");
	printf("3:查找一条学生数据\n");
	printf("4:修改一条学生数据\n");
	printf("5:显示所有学生数据\n");
	printf("6:按照学生成绩排序\n");
	printf("7:学生数据存档并退出\n");
	while(1){
	scanf("%d",&a);
	switch(a){
		case 1:add();break;
		case 2:shanchu();break;
		case 3:search();break;
		case 4:charge();break;
		case 5:show();break;
		case 6:sort();break;
	    case 7:save();
	
	}}
}
void info(){
	FILE*fp=NULL;
	fp=fopen("student.txt","r");
	if(!fp){
		printf("打开文件失败\n");
		exit(0);
	}
	while(1){
		fscanf(fp,"%d%s%f%f%f%f",&student[count].num,&student[count].name,&student[count].English,&student[count].math,
		&student[count].chinese,&student[count].ave,&student[count].total);
		if(feof(fp)){
			break;
		}
		count++;
	}
}//打开文件
void add(){
	int num=0;
	printf("请输入学号\n");
	scanf("%d",&num);
    student[count].num=num;
	printf("请输入姓名\n") ;
	scanf("%s",student[count].name);
    printf("请输入英语成绩\n");
	scanf("%d",&student[count].English);
	student[count].total+=student[count].English;
	printf("请输入数学成绩\n");
	scanf("%d",&student[count].math);
	student[count].total+=student[count].math;
	printf("请输入语文成绩\n");
	scanf("%d",&student[count].chinese);
	student[count].total+=student[count].chinese;
	student[count].ave=student[count].total/3.0;
	printf("%s同学的成绩添加完成\n",student[count].name);
	count++;
	}//输入结构体数值进行添加学生的信息
	void shanchu(){
     int num=0;int k=0;int j=0;
	printf("请输入你想删除的学生的学号\n");
	scanf("%d",&num);
	
	for(int i=0;i<count;i++){
		if(student[i].num==num){
			student[i]=student[i+1];
			printf("删除成功\n");
			k=i;j=1;
			count--;
		for(int i=k+1;i<count;i++)
		student[i]=student[i+1];}}
		if(j!=1)
		printf("查无此人\n");
	}//删除学生的信息
	void search(){
	int num=0;
    int k=0;
	printf("请输入你想查找的学生的学号\n");
	scanf("%d",&num);
	for(int i=0;i<count;i++){
		if(student[i].num==num){
			printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
		printf("学号:%d   姓名:%s 英语:%d 数学:%d 语文:%d 总分:%d 平均分:%d\n",student[i].num,student[i].name,
		student[i].English,student[i].math,student[i].chinese,student[i].total,student[i].ave);
		printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");k=1;}
		if(k!=1)
		printf("查无此学生\n") ;
	}
	
}//查找学生的信息
void charge(){
	int num=0;
	printf("请输入你想修改的学生的学号\n");
	scanf("%d",&num);
	for(int i=0;i<count;i++){
	if(student[i].num==num){
     student[i].total=0;student[i].ave=0;
	 printf("请输入该学生的学号\n");
	 scanf("%d",&student[i].num);
	 printf("请输入该学生的姓名\n");
	 scanf("%s",student[i].name);
	 printf("请输入该学生的英语成绩\n");
	 scanf("%d",&student[i].English);
	  student[i].total+=student[i].English;
	 printf("请输入该学生的数学成绩\n");
	 student[i].total+=student[i].math;
	 scanf("%d",&student[i].math);
	 printf("请输入该学生的语文成绩\n");
	 scanf("%d",&student[i].chinese);
	  student[i].total+=student[i].chinese;
	  student[i].ave=student[i].total/3.0;
printf("修改成功\n");
	  	 printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
	 printf("学号:%d   姓名:%s 英语:%d 数学:%d 语文:%d 总分:%d 平均分:%d\n",student[i].num,student[i].name,
		student[i].English,student[i].math,student[i].chinese,student[i].total,student[i].ave);
     printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
}
     else
     printf("查无此学生\n");
	}
}//找到该学生进行新的赋值达到修改学生的信息的目的
void show(){
		if(count==0)
		printf("无信息\n");
		else{
			for(int i=0;i<count;i++){
	 printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
	 printf("学号:%d   姓名:%s 英语:%d 数学:%d 语文:%d 总分:%d 平均分:%d\n",student[i].num,student[i].name,
		student[i].English,student[i].math,student[i].chinese,student[i].total,student[i].ave);
     printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");//显示所有学生的信息
		}
	}
}
void sort(){
	if(count<1)
	printf("无学生信息\n");
	else{
	for(int i=0;i<count-1;i++){
		for(int j=0;j<count-1-i;j++){
			if(student[j].total>student[j+1].total){
				stemp=student[j];
				student[j]=student[j+1];
				student[j+1]=stemp;}}}
	printf("排序完成\n");	
}}//通过冒泡排序法把所有学生成绩按总分进行排序

void save(){
	FILE * fp = NULL;
	fp = fopen("student.txt", "w");
	for (int i = 0; i < count; i++){
		fprintf(fp, "%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", student[i].num, student[i].name, student[i].English, student[i].math,
		 student[i].chinese, student[i].ave, student[i].total);
	}
	printf("数据保存成功,程序已退出\n");
	exit(0);}//保存数据到student.txt中

输出如下:在这里插入图片描述

我觉得我的代码是最简单的了,就感觉简单的不能再简单了,根本没有任何复杂的语句,一看就能看懂吧。
多看代码呀!!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黑最白了

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值