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
有些長。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章