C语言不用指针写一个学生管理系统,全部都是基础知识,通俗易懂(我的“毕业”答辩)

原本想着只用一个头文件,但是操作字符串自己写一个函数不好弄,就加了一个#include<string.h>的头文件[笑哭],要不然标题就是一个头文件,不用指针,教你写一个学生管理系统,有点像营销号哈。。。

以下是耗时半天编写的代码,累~~~~

还有一件事,没有写判断输入类型的函数(其实是懒,没有写),例如:不要在输入学号ID,int类型的地方输入字符或者是符号。否则你可以试一下。
对应着类型输入就可以。

/********************************************************************* 
		文件名称:
		文件描述:
		编写时间:2020年6月1日 
		创建工程:韩法旭 
***********************************************************************/ 
#include<stdio.h>
#include<string.h> 
typedef struct stu{
int  ID;		//学号 
char name[15];	//名字 
char sex[10];	//性别
int grade;		//成绩 
int num;		//代号 
}student;


int temp=1; //菜单结束判断
int str=0; //结构体编号 

student s[100];
int ji;//记录值 
int dh=1;	//学生代号 
void list(){
	printf("代号----------名字---------学号---------性别---------成绩\n");
	for(int i=0;s[i].num!=0;i++){
		printf("%d            %s        %d           %s           %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
		printf("\n");
	}
	printf("\n");
	printf("==-------------==------------==------------==------------==\n");
	printf("\n");
	printf("\n");
} 
//============↓↓↓↓↓↓↓====输入函数(能力不够,数量来凑)============↓↓↓↓↓↓=========== 
void inquID(){	//输入学号 
	int t;
	scanf("%d",&t);
	s[str].ID=t;
} 
void inquName(){	//输入名字 
	char cha[15];
	scanf("%s",cha);
	for(int i=0;i<15;i++){
	s[str].name[i]=cha[i];
	}
} 
void inquSex(){	//输入性别 
	char cha[10];
	scanf("%s",cha);
	for(int i=0;i<15;i++){
	s[str].sex[i]=cha[i];
	}
} 
void inquGrade(){	//输入成绩 
	int g;
	scanf("%d",&g);
	s[str].grade=g; 
	s[str].num=dh++;
	str++;
}
//===========↑↑↑↑↑↑↑↑↑========输入函数(能力不够,数量来凑)======↑↑↑↑↑↑↑================




//============↓↓↓↓↓↓↓=========删除函数(能力不够,数量来凑)============↓↓↓↓↓↓===========  
void delID(){//通过 ID 删除学生成绩 
	printf("请输入要删除成绩学生的学号\n");
	int inID;
	int ty=0;
	scanf("%d",&inID);
	for(int i=0;i<=dh;i++){
		if(s[i].ID==inID){
		printf("删除结果为:\n");
		s[i].grade=-1; 
		printf("代号----------名字---------学号---------性别---------成绩\n");
		printf("%d            %s        %d           %s           %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
		printf("\n");
		ty=1;
		}
	}
	if(ty==0){
		printf("该学生不存在\n"); 
	}
} 

void delName(){
	printf("请输入要删除成绩学生的名字\n");
	char inName[15];
	int ty=0;
	scanf("%s",&inName);
	
	for(int i=0;i<dh;i++){
		if(strcmp(s[i].name,inName)==0){
		printf("删除结果为:\n");
		s[i].grade=-1; 
		printf("代号----------名字---------学号---------性别---------成绩\n");
		printf("%d            %s        %d           %s           %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
		printf("\n");
		ty=1;
		}
	}
	if(ty==0){
		printf("该学生不存在\n"); 
	}
	
}
//===========↑↑↑↑↑↑↑↑↑========删除函数(能力不够,数量来凑)======↑↑↑↑↑↑↑================




//============↓↓↓↓↓↓↓=========查询函数(能力不够,数量来凑)============↓↓↓↓↓↓=========== 
void inqID(){//根据 学号 查询 
	printf("请输入学号\n");
	int inID;
	int ty=0;
	scanf("%d",&inID);
	for(int i=0;i<=dh;i++){
		if(s[i].ID==inID){
		printf("查询结果为:\n");
		printf("代号----------名字---------学号---------性别---------成绩\n");
		printf("%d            %s        %d           %s           %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
		printf("\n");
		ty=1;
		}
	}
	if(ty==0){
		printf("该学生不存在\n"); 
	}
	
}

void inqName(){//根据 名字 查询 
		printf("请输入名字\n");
	char inName[15];
	int ty=0;
	scanf("%s",&inName);
	
	for(int i=0;i<dh;i++){
		if(strcmp(s[i].name,inName)==0){
		printf("查询结果为:\n");
		printf("代号----------名字---------学号---------性别---------成绩\n");
		printf("%d            %s        %d           %s           %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);
		printf("\n");
		ty=1;
		}
	}
	if(ty==0){
		printf("该学生不存在\n"); 
	}
} 
//===========↑↑↑↑↑↑↑↑↑========查询函数(能力不够,数量来凑)======↑↑↑↑↑↑↑================


//============↓↓↓↓↓↓↓=========修改函数(能力不够,数量来凑)============↓↓↓↓↓↓===========
void reID(){
	int inID;
	printf("请输入要修改的值-学号\n"); 
	scanf("%d",&inID);
	printf("修改结果为:\n");
	s[ji].ID=inID;
	printf("代号----------名字---------学号---------性别---------成绩\n");
	printf("%d            %s        %d           %s           %d",s[ji].num,s[ji].name,s[ji].ID,s[ji].sex,s[ji].grade);
	printf("\n");
}

void reName(){
	char inName[15];
	printf("请输入要修改的值-名字\n"); 
	scanf("%s",&inName);
	printf("修改结果为:\n");
	strcpy(s[ji].name,inName);
	printf("代号----------名字---------学号---------性别---------成绩\n");
	printf("%d            %s        %d           %s           %d",s[ji].num,s[ji].name,s[ji].ID,s[ji].sex,s[ji].grade);
	printf("\n");
}

void reSex(){
	char inSex[10];
	printf("请输入要修改的值-性别\n"); 
	scanf("%s",&inSex);
	printf("修改结果为:\n");
	strcpy(s[ji].sex,inSex);
	printf("代号----------名字---------学号---------性别---------成绩\n");
	printf("%d            %s        %d           %s           %d",s[ji].num,s[ji].name,s[ji].ID,s[ji].sex,s[ji].grade);
	printf("\n");
}


void reGrade(){
	int inGrade;
	printf("请输入要修改的值-成绩\n"); 
	scanf("%d",&inGrade);
	printf("修改结果为:\n");
	s[ji].grade=inGrade;
	printf("代号----------名字---------学号---------性别---------成绩\n");
	printf("%d            %s        %d           %s           %d",s[ji].num,s[ji].name,s[ji].ID,s[ji].sex,s[ji].grade);
	printf("\n");
}

void renum(){
	list(); 
	printf("请输入要修改学生的代号\n");
	int inNum;
	int ty=0;
	scanf("%d",&inNum);
	for(int i=0;i<=dh;i++){
		if(s[i].num==inNum){
		printf("\n");
		printf("你要修改的学生是:");
		printf("\n");
		printf("代号----------名字---------学号---------性别---------成绩\n");
		printf("%d            %s        %d           %s           %d",s[i].num,s[i].name,s[i].ID,s[i].sex,s[i].grade);	
		printf("\n");
		printf("1.修改学号 2.修改名字 3.修改性别 4.修改成绩\n");
		ji=i; 
		int x;
		scanf("%d",&x);
		switch(x){
			case 1:
				reID();
				break;
			case 2:
				reName();
				break;
			case 3:
				reSex();
				break;
			case 4: 
				reGrade();
		} 
		printf("\n");
		ty=1;
		}
	}
	if(ty==0){
		printf("该学生不存在\n"); 
	}
	
} 


//===========↑↑↑↑↑↑↑↑↑========修改函数(能力不够,数量来凑)======↑↑↑↑↑↑↑================




//============↓↓↓↓↓↓↓=========冒泡排序函数(能力不够,数量来凑)============↓↓↓↓↓↓===========  
void sort(){
	int n= sizeof(s)/sizeof(s[0]);
	for (int i=0; i<n-1; ++i)  //比较n-1轮
    {
        for (int j=0; j<n-1-i; ++j)  //每轮比较n-1-i次,
        {
            if (s[j].grade < s[j+1].grade)
            {
                int t = s[j].num;
                s[j].num = s[j+1].num;
                s[j+1].num= t;
                student t1 = s[j];
                s[j]= s[j+1];
                s[j+1]= t1;
            }
        }
    }
	list();
} 
//===========↑↑↑↑↑↑↑↑↑========冒泡排序函数(能力不够,咳)======↑↑↑↑↑↑↑================

void menu(){
	while(temp){
	printf("\t\t》》》学生管理系统《《《\n");
	printf("=========================================================\n");
	printf("*\t1.输入学生成绩\t\t2.删除学生成绩\t\t*\n");
	printf("*\t3.查询学生成绩\t\t4.修改学生成绩\t\t*\n");
	printf("*\t5.排序学生成绩\t\t6.列出所有学生\t\t*\n");
	printf("*\t\t\t8.退出系统\t\t\t*\n");
	printf("=========================================================\n");
	int i; 
	scanf("%d",&i); 
	switch(i){
		case 1 :								/已实现 
			printf("请输入学生学号\n");
			inquID();//输入学号 
			printf("请输入学生名字\n");
			inquName();//输入名字 
			printf("请输入学生性别\n");
			inquSex(); //输入性别 
			printf("请输入学生成绩\n");
			inquGrade();//输入成绩 
			break;
		case 2 :								//已实现 
			int x; 
			printf("++++++++++删除学生成绩++++++++++++\n");
			printf("==================================\n");
			printf("--------1.输入学号删除------------\n");
			printf("--------2.输入名字删除------------\n");
			printf("==================================\n");
			scanf("%d",&x);
			if(x==1){
				delID(); //通过学号 删除学生成绩 
			}else if(x==2){
				delName(); //通过名字 删除学生成绩 
			}
			break;
		case 3 :								/已实现 
			int c; 
			printf("++++++++++查询学生成绩++++++++++++\n");
			printf("==================================\n");
			printf("--------1.输入学号查询------------\n");
			printf("--------2.输入名字查询------------\n");
			printf("==================================\n");
			scanf("%d",&c);
			if(c==1){
				inqID(); 	//通过 学号 查询 
			}else if(c==2){
				inqName(); 
			} 
			break;
		case 4 : 					
			int xg; 
			printf("\t\t++++++++++修改学生成绩++++++++++++\n");
			printf("\t\t以下是当前学生列表\n");
			renum();
			//修改 ;
			break;
		case 5 : 
			printf("++++++++++排序++++++++++++\n");
			printf("\n");
			sort();
			break;	
		case 6 :
			list();
			break;
		case 8:
		 temp=0;
		 printf("您已安全退出\n");
		 break;
	}
	menu();
	}
} 
int main(){
	menu();
	return 0;
}

运行结果的图片链接在这:
https://s1.ax1x.com/2020/06/01/tJCqUA.png
有些长。。

  • 11
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值