国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

學(xué)生成績(jī)管理系統(tǒng)(C語(yǔ)言)(數(shù)組結(jié)構(gòu)體)

這篇具有很好參考價(jià)值的文章主要介紹了學(xué)生成績(jī)管理系統(tǒng)(C語(yǔ)言)(數(shù)組結(jié)構(gòu)體)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、設(shè)計(jì)目標(biāo):

學(xué)生成績(jī)管理系統(tǒng)

利用結(jié)構(gòu)體、排序查找算法以及模塊化程序設(shè)計(jì)實(shí)現(xiàn)如下菜單驅(qū)動(dòng)的學(xué)生成績(jī)管理系統(tǒng):

1)?首次批量輸入每個(gè)學(xué)生的學(xué)號(hào)、姓名、和各科考試成績(jī)。

2)?增添一個(gè)新學(xué)生的信息。

3)?增添一門新的學(xué)科的信息。

4)?按學(xué)生姓名或?qū)W號(hào)查詢、修改、刪除學(xué)生信息。

5)?計(jì)算每門課程的總分和平均分。

6)?計(jì)算每個(gè)學(xué)生的總分、平均分以及排名。

7)?按總分從高到低(從低到高)排名并輸出。

8)?按學(xué)號(hào)大小排名并輸出。

9)?按學(xué)生姓名首字母排名并輸出。

10)?按優(yōu)秀(90-100分)、良好(80-90分)、中等(70-80分)、及格(60-70分)、不及格(0-60分)5個(gè)類別,對(duì)每門課程分別統(tǒng)計(jì)每個(gè)類別的人數(shù)以及所占百分比。

11)?輸出每個(gè)學(xué)生的學(xué)號(hào)、姓名、各科考試成績(jī)。

12)?將每個(gè)學(xué)生的成績(jī)寫入文件。

13)?從文件讀取學(xué)生成績(jī)并顯示。

學(xué)生成績(jī)管理系統(tǒng)(C語(yǔ)言)(數(shù)組結(jié)構(gòu)體)

二、設(shè)計(jì)思路

本程序主要采用了、for循環(huán)完成錄入、排序以及成績(jī)篩選、函數(shù)、switch實(shí)現(xiàn)功能選擇等方法。

學(xué)生成績(jī)管理系統(tǒng)(C語(yǔ)言)(數(shù)組結(jié)構(gòu)體)

??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?程序流程圖

學(xué)生成績(jī)管理系統(tǒng)(C語(yǔ)言)(數(shù)組結(jié)構(gòu)體)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-491959.html

三.代碼部分

/*
Student scores mangement system V1.0
C Programming Final-examination
Written by Charles 
2022.5.27 - 6.7
*/

#include<stdio.h>
#include<windows.h> 
#include<stdlib.h>
#include<string.h> 


int n = 0, course = 0;         //The number of students; The number of courses


struct student         
{
	char id[18];        //student id
	char name[10];      //student name 
	float score[6];    //student score
	float sum;         //student sum score
	float ave_stu;     //student course average course
} stu[30], temp;


void welcome();           //The start page
void inputinfo();         //Input student`s information 
void addinfo();           //Add student`s information
void deleteinfo();        //Delete student`s information
void changeinfo();        //Change student`s information
void searchinfo();        //Search student`s information
void infocount();         //Information count
void quitapp();           //Quit the application
void output(char name[]); //Output the information
void outtxt();            //Output text 

void showinfo(char str[4]);          //Show student`s information on display
int findstu(char a[2]);              //Find student`s information
void ave();                          //Course average score      
void sum();                          //Course sum score          
void max_();                         //Each courses` highest score  
void htl();                          //High score to low score      
void lth();                          //Low score to high score 
void full();                         //Full student information
void eachcour();                     //Each student`s new score     
void namesort();                     //Studet`s name sort
void idsort();                       //student`s id sort
void presents();                     //Each courses` each scores` present 

void readfile();                     //Readfile
void save();                        //Save the information

 
int main()                                           // main
{
    int choice = 0, re;
    begin: welcome();
    scanf("%d", & choice);
    switch(choice)
    {
    	case 0 : inputinfo();    //Input student information
    		break;
    	case 1 : addinfo();      //Add student information    
    	    break;
    	case 2 : deleteinfo();   //Delete student information
    		break;
    	case 3 : changeinfo();   //Change student information
    		break;
    	case 4 : searchinfo();   //Search student information 
    		break;
    	case 5 : infocount();    //Information count
    		break;
    	case 6 : outtxt();                  //Output txt
    		break;	
    	case 7 : readfile();
		         showinfo("全班信息");      //Show classmates information
    		break;			
    	case 8 : quitapp();                 //Quit the application
    		break;	
	}
	printf("-------------------------------------\n");
    printf("        操作成功,是否繼續(xù)操作       \n");
    printf("-------------------------------------\n");	
    printf("        是:1            否:0       \n"); 
    scanf("%d", &re); 
    switch(re)
    {
    	case 1: goto begin;
    		break;
    	case 0: quitapp();
    	    break;
	}
    return 0;
}


void welcome()                                       // The start page
{
	system("cls");
    printf("-------------------------------------\n");
    printf("          學(xué)生成績(jī)管理系統(tǒng)           \n");
    printf("-------------------------------------\n");
    printf("請(qǐng)輸入數(shù)字序列號(hào),選擇您要執(zhí)行的操作\n");
    printf("0.錄入學(xué)生信息\n");
    printf("1.添加學(xué)生信息\n");
    printf("2.刪除學(xué)生信息\n");
    printf("3.修改學(xué)生信息\n");
    printf("4.查詢學(xué)生信息\n");
    printf("5.成績(jī)分析\n");
    printf("6.輸出全班同學(xué)信息\n");
    printf("7.顯示全班同學(xué)信息\n");
    printf("8.退出學(xué)生管理系統(tǒng)\n");
    printf("-------------------------------------\n");
}


void inputinfo()                                       // Input students` information 
{
	int i, j, re;
	system("cls");
	printf("-------------------------------------\n");
    printf("           0.學(xué)生信息錄入            \n");
    printf("-------------------------------------\n");
	printf("輸入學(xué)生個(gè)數(shù):\n"); 
	scanf("%d", &n);
	printf("輸入考試科目個(gè)數(shù):\n");
	scanf("%d", &course);
	printf("輸入學(xué)生信息:\n");
	printf("(eg:XXXXXXX(學(xué)號(hào)) XXXXXXXXX(姓名) XXX XXX XXX XXX(各科成績(jī)) )\n");  
	for(i = 0; i < n; i++)
	{
	    for(j = 0; j < 18; j++)
	    {
	    	scanf("%c", &stu[i].id[j]);
	    	if(stu[i].id[j] == ' ')
			{
				stu[i].id[j] = '\0';
				break;	
			} 
		}                                     
		for(j = 0; j < 10; j++)
	    {
	    	scanf("%c", &stu[i].name[j]);
	    	if(stu[i].name[j] == ' ')
			{
				stu[i].name[j] = '\0';
				break;	
			} 
		}
		stu[i].sum = 0;
		for(j = 0; j < course; j++)
		{
			scanf("%f", &stu[i].score[j]);
			stu[i].sum = stu[i].sum	+ stu[i].score[j];
		}
		stu[i].ave_stu = stu[i].sum / course;	
	} 
	save();
}  


void addinfo()                                       // Add students` information  
{
	int j, choice;
	readfile();
    system("cls");
	printf("-------------------------------------\n");
    printf("           1.學(xué)生信息增添            \n");
    printf("-------------------------------------\n"); 
    printf("    請(qǐng)輸入需要添加學(xué)生信息的類型:\n");
    printf("一個(gè)新的學(xué)生(1) 一門新的科目(2)\n");
    printf("-------------------------------------\n"); 
    scanf("%d", &choice);
    switch(choice)
    {
    	case 1 : full();
    		break;
    	case 2 : eachcour();
    		break;
    }
    save();
    printf("-------------------------------------\n"); 
	printf("   是否輸出數(shù)據(jù):是(1)     否(0)\n");
	printf("-------------------------------------\n"); 
	scanf("%d", &choice); 
	switch(choice)
	{
		case 1 : output("學(xué)生成績(jī)表.txt"); 
			break; 
		case 0 : break;
	}
}
 
 
void deleteinfo()                                   // Delete information from the file      
{
	int s, i, j, choise;
	char name[30] = {'\0'};
    readfile();
    system("cls");
    printf("-------------------------------------\n");
    printf("           2.學(xué)生信息刪除            \n");
    printf("-------------------------------------\n");
    s = findstu("刪除");
    strcpy(name, stu[s].name);
    printf("-------------------------------------\n");
    printf(" 是否將%s的信息刪除:是(1)  否(0) \n", name);
	printf("-------------------------------------\n");
	scanf("%d", &choise); 
	switch(choise)
	{
		case 1 : for(i = s;i < n - 1; i++)
				{
					stu[i] = stu[i + 1];
				}
				n--;
				save(); 
				printf("-------------------------------------\n"); 
				printf("        已將%s的信息刪除\n", name);
				printf("-------------------------------------\n");  
				printf("   是否輸出數(shù)據(jù):是(1)     否(0)\n");
				printf("-------------------------------------\n"); 
				scanf("%d", &choise); 
				switch(choise)
				{
					case 1 : output("學(xué)生成績(jī)表.txt"); 
						break; 
					case 0 : break;
				}
		case 0 : break;
	}
}   


void changeinfo()                                   // Change the information from the file     
{
	int i, j, s, choice;
	char change[30] = {'\0'};
	float ch = 0.00;
	readfile();
	system("cls");
	printf("-------------------------------------\n");
    printf("           3.學(xué)生信息修改            \n");
    printf("-------------------------------------\n");
    s = findstu("修改");
	printf("-------------------------------------\n"); 
    printf("請(qǐng)選擇需要修改%s的信息選項(xiàng):\n", stu[s].name);
    printf("學(xué)號(hào)(1), 姓名(2),成績(jī)(3)\n");
    printf("-------------------------------------\n"); 
    scanf("%d", &choice);
    switch(choice)
    {
    	case 1:printf("請(qǐng)輸入新的學(xué)號(hào):\n");
    	    scanf("%s", &stu[s].id);
    	    printf("-------------------------------------\n"); 
    	    printf("         已成功修改%s同學(xué)學(xué)號(hào)\n", stu[s].name); 
    	    printf("-------------------------------------\n"); 
    		break;
    	case 2:printf("請(qǐng)輸入修改后的姓名:\n");
    		scanf("%s", &stu[s].name);
    	    printf("-------------------------------------\n"); 
    	    printf("         已成功修改%s同學(xué)姓名\n", stu[s].name); 
    	    printf("-------------------------------------\n"); 
    		break;
    	case 3:printf("請(qǐng)輸入想要修改的科目位號(hào):(eg:科目一:1)\n");
    	       scanf("%d", &choice);
			   printf("請(qǐng)輸入修改后科目%d的分?jǐn)?shù):\n", choice);
			   stu[s].sum = stu[s].sum - stu[s].score[choice - 1];
			   scanf("%f", &stu[s].score[choice - 1]);
			   stu[s].sum = stu[s].sum + stu[s].score[choice - 1];
			   stu[s].ave_stu = stu[s].sum / course;
    }
    save();
    printf("-------------------------------------\n"); 
	printf("   是否輸出數(shù)據(jù):是(1)     否(0)\n");
	printf("-------------------------------------\n"); 
	scanf("%d", &choice); 
	switch(choice)
	{
		case 1 : output("學(xué)生成績(jī)表.txt"); 
			break; 
		case 0 : break;
	}
}   


void searchinfo()                                    // Search information            
{
	int i, j; 
	readfile();
	system("cls");
	printf("-------------------------------------\n");
    printf("           4.學(xué)生信息查詢            \n");
    printf("-------------------------------------\n");
    i = findstu("查詢");
    printf("-------------------------------------\n");
    printf("總排名    學(xué)號(hào)        姓名");
	for(j = 1; j < course; j++)
	{
		printf("%5d  ", j);
	} 
	printf("%5d", course);
    printf("   總分  平均分\n");
	printf("-------------------------------------\n"); 
    printf("\n%3d、", i + 1);
	printf(" %10s ", stu[i].id);
    printf("%10s ", stu[i].name);
    for(j = 0; j < course; j++)
    {
    	printf("%5.2f ", stu[i].score[j]);
    } 
    printf("%5.2f %5.2f\n", stu[i].sum, stu[i].ave_stu);   
}


void infocount()                                    // Information count             
{
	system("cls");
	readfile();
	printf("-------------------------------------\n");
    printf("           5.學(xué)生成績(jī)分析            \n");
    printf("-------------------------------------\n");
	int i, j, n, m, choice; 
	printf("選擇您需要的信息:(請(qǐng)輸入數(shù)字)\n");
	printf("1. 各個(gè)學(xué)科的成績(jī)總和\n"); 
	printf("2. 各個(gè)學(xué)科的平均分\n"); 
	printf("3. 各個(gè)學(xué)科的最高分\n");
	printf("4. 將成績(jī)從低到高排序\n");
	printf("5. 將成績(jī)從高到低排序\n");
	printf("6. 各科各個(gè)分?jǐn)?shù)段組成占比\n");
	printf("-------------------------------------\n"); 
	scanf("%d", &choice);
	switch(choice)
	{
		case 1 : sum();
			break;
		case 2 : ave(); 
			break; 
		case 3 : max_(); 
			break; 
		case 4 : lth();
			break;
		case 5 : htl();
			break;
		case 6 : presents();
			break;
	}
	if(choice == 4 || choice == 5)
	{
		printf("-------------------------------------\n"); 
		printf("   是否顯示信息:是(1)    否(0)\n");
		printf("-------------------------------------\n"); 
		scanf("%d", &n);
		switch(n)
		{
			case 1 : switch(choice)
					{
						case 4 : showinfo("從低到高");
							break; 
						case 5 : showinfo("從高到低");
							break;
					}			
			case 0 : break;
		}
		printf("-------------------------------------\n"); 
		printf("   是否輸出數(shù)據(jù):是(1)     否(0)\n");
		printf("-------------------------------------\n"); 
		scanf("%d", &n); 
		switch(n)
		{
			case 1 : switch(choice)
					{
						case 4 : output("從低到高排序的成績(jī)單.txt");
							break; 
						case 5 : output("從高到低排序的成績(jī)單.txt");
							break;
					}   			
			case 0 : break;
		}
	}
	
}   


void outtxt()                                    // Output information            
{
	int choice; 
	readfile();
	system("cls");
	printf("-------------------------------------\n");
    printf("           6.學(xué)生信息輸出            \n");
    printf("-------------------------------------\n");
    printf("請(qǐng)輸入輸出模式:(填寫數(shù)字)\n"); 
    printf("1.成績(jī)從高到低\n"); 
    printf("2.成績(jī)從低到高\(yùn)n");
    printf("3.按姓名首字母排序\n");
    printf("4.按學(xué)號(hào)大小排序\n");
    printf("-------------------------------------\n");
    scanf("%d", &choice);
    
	switch(choice)
	{
		case 1 : htl();
			output("從高到低排序的成績(jī)單.txt");
			break;
		case 2 : lth();
			output("從低到高排序的成績(jī)單.txt");
			break;
		case 3 : namesort();
			output("按名稱首字母排序的成績(jī)單.txt");
			break;
		case 4 : idsort(); 
			output("按學(xué)號(hào)排序的成績(jī)單.txt");
			break;				
	} 
}


void quitapp()                                      // Quitapp                     
{
	system("cls");
	printf("\n\n\n\n-------------------------------------\n");
    printf("       歡迎下次使用( ̄︶ ̄)↗      \n") ;
    printf("-------------------------------------\n\n\n\n"); 
	system("pause"); 
	exit(0);	
}   


void full()                                        // Add a new student
{
	int j;
	printf("(eg:XXXXXXX(學(xué)號(hào)) XXXXXXXXX(姓名) XXX XXX XXX XXX(各科成績(jī)) )\n");  
    printf("注意:當(dāng)前可以輸入的科目個(gè)數(shù)數(shù)為%d\n", course); 
    for(j = 0; j < 18; j++)
	{
	    scanf("%c", &stu[n].id[j]);
	    if(stu[n].id[j] == ' ')
		{
			stu[n].id[j] = '\0';
			break;	
		} 
	}                                     
	for(j = 0; j < 10; j++)
	{
	    scanf("%c", &stu[n].name[j]);
	    if(stu[n].name[j] == ' ')
		{
			stu[n].name[j] = '\0';
			break;	
		} 
	}
	stu[n].sum = 0;
	for(j = 0; j < course; j++)
	{
		scanf("%f", &stu[n].score[j]);
		stu[n].sum = stu[n].sum	+ stu[n].score[j];
		stu[n].ave_stu = stu[n].sum / course;
	}
	n++; 
	printf("-------------------------------------\n"); 
    printf("      已將該同學(xué)信息增加到程序中     \n");
	printf("-------------------------------------\n");  
}


void eachcour()                                    // Add a new course                        
{
	printf("-------------------------------------\n"); 
	printf("      請(qǐng)?jiān)诔霈F(xiàn)的名字后面填寫\n      該同學(xué)的新增科目的成績(jī)\n");	               
	printf("-------------------------------------\n"); 
	int i;
	for(i = 0; i < n;i++)
	{
		printf("%s ", stu[i].name);
		scanf("%f", &stu[i].score[course]);
		stu[i].sum = stu[i].sum	+ stu[i].score[course];
		stu[i].ave_stu = stu[i].sum / (course + 1); 
	}
	course++;
}


void showinfo(char str[4])                         // Show student information
{
	int i, j; 
	printf("-------------------------------------\n");
    printf("          學(xué)生成績(jī)信息顯示           \n");
    printf("-------------------------------------\n");
    printf("當(dāng)前顯示模式為%s\n", str); 
	printf("總排名    學(xué)號(hào)        姓名");
	for(j = 1; j < course; j++)
	{
		printf("%6d  ", j);
	} 
	printf("%6d", course);
    printf("      總分   平均分\n");
	printf("-------------------------------------\n"); 
    for(i = 0;i < n;i++)
    {
    	printf("\n%3d、", i + 1);
		printf(" %10s ", stu[i].id);
    	printf("%10s  ", stu[i].name);
    	for(j = 0; j < course; j++)
    	{
    		printf("%-7.2f ", stu[i].score[j]);
    	} 
    	printf("%-7.2f %-7.2f\n", stu[i].sum, stu[i].ave_stu);
    }
}


int findstu(char a[2])                             //Find student information
{
	int i, j, choise = 0, t = 0; 
	char ex[30] = {'\0'};
	printf("-------------------------------------\n"); 
	printf("  請(qǐng)選擇查詢類型:學(xué)號(hào)(1);姓名(2)\n");
	printf("-------------------------------------\n"); 
	scanf("%d", &choise);
	if(choise == 1)
	{
		again: printf("-------------------------------------\n"); 
		printf("    請(qǐng)輸入需要%s學(xué)生信息的學(xué)號(hào)\n", a);
		printf("-------------------------------------\n"); 
		scanf("%s", ex);
		for(i = 0;i < n;i++)
		{
			if(strcmp(ex, stu[i].id) == 0)
			{
				break;
			}
		}
		if(i == n)
		{
			printf("-------------------------------------\n"); 
			printf(" 輸入學(xué)生信息有誤或不存在,請(qǐng)重新輸入\n");
			goto again;
		} 
		else
		{
			return i;
		}
	}
	else if(choise == 2)
	{
		printf("-------------------------------------\n"); 
		printf("     請(qǐng)輸入需要%s學(xué)生信息的姓名\n", a);
		printf("-------------------------------------\n"); 
		scanf("%s", ex);
		for(i = 0;i < n;i++)
		{
			
			if(strcmp(ex, stu[i].name) == 0)
			{
				break;
			}
		}
		if(i == n)
		{
			printf("-------------------------------------\n"); 
			printf(" 輸入學(xué)生信息有誤或不存在,請(qǐng)重新輸入\n");
			goto again;
		} 
		else
		{
			return i;
		}
	}
}


void ave()                                        //Each courses` average score       
{
	printf("-------------------------------------\n");
	printf("         各個(gè)學(xué)科的平均分為\n"); 
	printf("-------------------------------------\n"); 
	int i, j;
	float sum[6] = {0};
	for(i = 0; i < course; i++)
	{
		for(j = 0;j < n;j++)
		{
			sum[i] = sum[i] + stu[j].score [i];
		}
	}
	for(i = 0; i < course; i++)
	{
		printf("%d.科目%d:%.2f\n", i + 1, i + 1, sum[i] / n);
	}
}


void sum()                                       // Each courses` sum    
{
	printf("-------------------------------------\n");
	printf("        各個(gè)學(xué)科的成績(jī)總和為\n"); 
	printf("-------------------------------------\n"); 
	int i, j;
	float sum[6] = {0};
	for(i = 0; i < course; i++)
	{
		for(j = 0;j < n;j++)
		{
			sum[i] = sum[i] + stu[j].score [i];
		}
	}
	for(i = 0; i < course; i++)
	{
		printf("%d.科目%d:%.2f\n", i + 1, i + 1, sum[i] );
	}
} 


void max_()                                     // Each courses` maxscore  
{
	printf("-------------------------------------\n");
	printf("        各科最高分如下:\n");
	printf("-------------------------------------\n"); 
	int i, j, max = 0;
	float t;
	for(i = 0; i < course;i++)
	{
		max = 0;
		t = stu[0].score[i];
		for(j = 0; j < n; j++)
		{
			if(t < stu[j].score[i])
			{
				t = stu[j].score[i];
				max = j;
			}
		}
		printf("%d.科目%d的最高分是:%s %.2f\n", i + 1, i + 1, stu[max].name, stu[max].score[i]);
	}	
} 


void htl()                                     //High to low
{
	int i, j;
	float a[6];
	char t[30];
	for(i = 0; i < n;i++)
	{
		for(j = 0; j < n - i; j++)
		{
			if(stu[j].sum < stu[j + 1].sum )
			{
				temp = stu[j + 1];
				stu[j + 1] = stu[j];
    			stu[j] = temp;
			}
		}
	}
	for(i = 0;i < n;i++)
	{
		for(j = 0; j < n - i - 1;j++)
		{
			if (strcmp(stu[j].name, stu[j + 1].name) > 0 && stu[j].sum == stu[j + 1].sum)
			{
				temp = stu[j + 1];
				stu[j + 1] = stu[j];
    			stu[j] = temp;
			}
		}
	}
} 


void lth()                                     //Low to high  
{
	int i, j;
	float a[6];
	char t[30];
	for(i = 0; i < n;i++)
	{
		for(j = 0; j < n - i - 1; j++)
		{
			if(stu[j].sum > stu[j + 1].sum )
			{
				temp = stu[j + 1];
				stu[j + 1] = stu[j];
    			stu[j] = temp;
			}
		}
	}
	for(i = 0;i < n;i++)
	{
		for(j = 0; j < n - i - 1;j++)
		{
			if (strcmp(stu[j].name, stu[j + 1].name) > 0 && stu[j].sum == stu[j + 1].sum)
			{
				temp = stu[j + 1];
				stu[j + 1] = stu[j];
    			stu[j] = temp;
			}
		}
	}
}


void idsort()
{
	int i, j;
	for(i = 0;i < n;i++)
	{
		for(j = 0; j < n - i - 1;j++)
		{
			if (strcmp(stu[j].id, stu[j + 1].id) > 0 )
			{
				temp = stu[j];
				stu[j] = stu[j + 1];
    			stu[j + 1] = temp;
			}
		}
	}
}   


void namesort()                               // The first name sort 
{
	int i, j;
	for(i = 0;i < n;i++)
	{
		for(j = 0; j < n - i - 1;j++)
		{
			if (strcmp(stu[j].name, stu[j + 1].name) > 0 )
			{
				temp = stu[j + 1];
				stu[j + 1] = stu[j];
    			stu[j] = temp;
			}
		}
	}
}


void output(char name[])                       // Save information to file 
{
	int i, j;
	FILE *fp;
	fopen_s(&fp, name, "wt+");  
	fprintf(fp, "———————————學(xué)生成績(jī)表——————————————\n");
    fprintf(fp, "總排名       學(xué)號(hào)         姓名");
	for(j = 1; j < course; j++)
	{
		fprintf(fp, "%9d  ", j);
	} 
	fprintf(fp, "%9d", course);
    fprintf(fp, "         總分      平均分\n"); 
    fprintf(fp, "——————————————————————————————\n");
	for(i = 0; i < n; i++)           
	{
		fprintf(fp, "\n%3d、", i + 1);
		fprintf(fp, " %10s ", stu[i].id);
    	fprintf(fp, "%10s ", stu[i].name);
    	for(j = 0; j < course; j++)
    	{
    		fprintf(fp, "%7.2f ", stu[i].score[j]);
    	} 
    	fprintf(fp, "%7.2f %7.2f\n", stu[i].sum, stu[i].ave_stu);
	} 
	fclose(fp); 
	printf("-------------------------------------\n");  
	printf("已將文件存入%s\n", name);
	printf("-------------------------------------\n"); 	
}  


void presents()                                // Each course earch present 
{
	int i, j, nine, eight, seven, six, fail, t;
	for(i = 0;i < course; i++)
	{
		t = 0;
	    nine = 0;
	    eight = 0;
		seven = 0;
		six = 0;
		fail = 0;
		for(j = 0;j < course;j++)
		{
			if(stu[j].score[i] > 100.00)
			{
				t = 1;
				break;
			}		
		}
	    for(j = 0;j < n; j++)
		{
			
			if(t == 1)
			{
				stu[j].score[i] = stu[j].score[i] / 1.50;	
		    }
			if(stu[j].score[i] <= 100.00 && stu[j].score[i] >= 90.00)
			{
				nine++;
			}
			else if(stu[j].score[i] < 90.00 && stu[j].score[i] >= 80.00)
			{
				eight++;
			}
			else if(stu[j].score[i] < 80.00 && stu[j].score[i] >= 70.00)
			{
				seven++;
			}
			else if(stu[j].score[i] < 70.00 && stu[j].score[i] >= 60.00)
			{
				six++;
			}
			else if(stu[j].score[i] < 60.00)
			{
				fail++;
			}
		}
		printf("-------------------------------------\n"); 	
		printf("%d、科目%d輸出結(jié)果如下:\n", i + 1, i + 1);
		printf("90-100:優(yōu)秀的人數(shù)為%3d    占比為%.2f\n", nine,  nine  / (float)n);
		printf("80-90: 良好的人數(shù)為%3d    占比為%.2f\n", eight, eight / (float)n);
		printf("70-80: 一般的人數(shù)為%3d    占比為%.2f\n", seven, seven / (float)n);
		printf("60-70: 及格的人數(shù)為%3d    占比為%.2f\n", six,   six   / (float)n);
		printf("0-60:  不及格的人數(shù)為%3d  占比為%.2f\n", fail,  fail  / (float)n);
		printf("-------------------------------------\n"); 
	}
}

void save()                                    // Save information to file   
{
	int i, j;
	htl();
	for(i = 0; i < n; i++)
    {
    	if(stu[i].id[0] == '\n')
    	{
			for(j = 0;j < 18;j++)
			{
				stu[i].id[j] = stu[i].id[j + 1];
			}
		}
    }
	FILE *fp;
	fopen_s(&fp, "內(nèi)部文件.txt", "wt+");   
	fprintf(fp, "%d %d\n", n, course); 
	for(i = 0; i < n; i++)           
	{
		fprintf(fp, "%s %s ", stu[i].id, stu[i].name);
		for(j = 0; j < course;j++)
		{
			fprintf(fp, "%.2f ", stu[i].score[j]);	
		}
		fprintf(fp, "%.2f ", stu[i].sum);
		fprintf(fp, "%.2f\n", stu[i].ave_stu);
	}
	fclose(fp);  	
} 


void readfile()                                // Read file information       
{
	FILE *fpp;
    fopen_s(&fpp, "內(nèi)部文件.txt", "r+");      
    int i, j;                 
	char t;  
	while (!feof(fpp))
	{	
	    fscanf_s(fpp, "%d%d", &n, &course);
	    fscanf_s(fpp, "%c", &t);
	    for(i = 0;i < n;i++)
	    { 
	    	for(j = 0; j < 18; j++)
	    	{
	    		fscanf_s(fpp, "%c", &stu[i].id[j]);
	    		if(stu[i].id[j] == ' ')
				{
					stu[i].id[j] = '\0';
					break;	
				} 
			}                                   
			for(j = 0; j < 10; j++)
	    	{
	    		fscanf_s(fpp, "%c", &stu[i].name[j]);
	    		if(stu[i].name[j] == ' ')
				{
					stu[i].name[j] = '\0';
					break;	
				} 
			}
			for(j = 0; j < course; j++)
			{
				fscanf_s(fpp, "%f", &stu[i].score[j]);		
			}
			fscanf_s(fpp, "%f", &stu[i].sum);
			fscanf_s(fpp, "%f\n", &stu[i].ave_stu);
		}	
    }
    for(i = 0; i < n; i++)
    {
    	if(stu[i].id[0] == '\n')
    	{
			for(j = 0;j < 18;j++)
			{
				stu[i].id[j] = stu[i].id[j + 1];
			}
		}
    }
	fclose(fpp); 
} 

到了這里,關(guān)于學(xué)生成績(jī)管理系統(tǒng)(C語(yǔ)言)(數(shù)組結(jié)構(gòu)體)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 學(xué)生成績(jī)管理系統(tǒng)(C語(yǔ)言實(shí)現(xiàn))

    學(xué)生成績(jī)管理系統(tǒng)(C語(yǔ)言實(shí)現(xiàn))

    設(shè)計(jì)并實(shí)現(xiàn)一個(gè)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng) 學(xué)生成績(jī)表信息包括學(xué)號(hào)、姓名、各科課程成績(jī)(語(yǔ)文、數(shù)學(xué)、英語(yǔ)、政治)和總分。用帶頭結(jié)點(diǎn)的單鏈表管理學(xué)生成績(jī)表,每個(gè)學(xué)生的信息依次從鍵盤輸入,并根據(jù)需要進(jìn)行插入、刪除、排序、輸出等操作。 一、 實(shí)訓(xùn)環(huán)境 信息工程

    2024年02月11日
    瀏覽(25)
  • 課設(shè)——C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)

    ????????相信許多同學(xué)在大學(xué)期間,學(xué)習(xí)計(jì)算機(jī)相關(guān)課程的時(shí)候,都有一個(gè)令人頭疼的問題——課程設(shè)計(jì)。那么本片文章就詳細(xì)的分享一個(gè)用C語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單學(xué)生成績(jī)管理系統(tǒng),供同學(xué)們學(xué)習(xí)和參考(文章最后會(huì)附上源程序)。 1.建立一張學(xué)生成績(jī)表,每個(gè)學(xué)生包含 學(xué)

    2024年02月11日
    瀏覽(91)
  • C語(yǔ)言編程學(xué)生成績(jī)管理系統(tǒng)

    C語(yǔ)言編程學(xué)生成績(jī)管理系統(tǒng)

    目錄 一、介紹 二、功能 1.錄入學(xué)生 2.刪除學(xué)生信息 3.修改學(xué)生信息 4.查詢學(xué)生信息 5.所有學(xué)生信息 6.成績(jī)排序 ?7.退出程序 三、代碼 1.主函數(shù) 2.頭文件 3.函數(shù)封裝庫(kù) ? ? ? ? 利用C語(yǔ)言,運(yùn)用鏈表、指針、封裝函數(shù)等基本知識(shí)實(shí)現(xiàn)一個(gè)學(xué)生管理系統(tǒng)。通過(guò)在終端對(duì)學(xué)生信息進(jìn)

    2024年02月10日
    瀏覽(61)
  • C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)(綜合項(xiàng)目)

    C語(yǔ)言學(xué)生成績(jī)管理系統(tǒng)(綜合項(xiàng)目)

    1. 這個(gè)代碼主要實(shí)現(xiàn)以下功能: 2. 用到的主要參數(shù)有: ? ? 1.整型變量int n;用于儲(chǔ)存學(xué)生人數(shù)和之后的循環(huán)判斷。 ? ? 2.字符串char name[][];用于儲(chǔ)存姓名。 ? ? 3.浮點(diǎn)型變量float score[];用于儲(chǔ)存成績(jī)。 ? ? 4.長(zhǎng)整型變量long ID[Max];用于儲(chǔ)存學(xué)號(hào)。 3.用到的子函數(shù)有: int ?Menu(

    2024年02月11日
    瀏覽(23)
  • C語(yǔ)言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)

    C語(yǔ)言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)

    需求分析: 1.設(shè)計(jì)題目:學(xué)生成績(jī)管理系統(tǒng) 2.系統(tǒng)功能需求分析:實(shí)現(xiàn)對(duì)學(xué)生各科成績(jī)總分及平均分的排序,和成績(jī)的查找 概要設(shè)計(jì) 1. 功能模塊圖 詳細(xì)設(shè)計(jì) 1. 流程圖 測(cè)試結(jié)果 :列出所有功能的運(yùn)行界面,并作文字說(shuō)明。 1.錄入成績(jī):錄入3個(gè)人的學(xué)號(hào)和各科成績(jī) 2.每門課程

    2024年02月11日
    瀏覽(26)
  • 學(xué)生成績(jī)管理系統(tǒng)——C語(yǔ)言版(含源碼)

    學(xué)生成績(jī)管理系統(tǒng)——C語(yǔ)言版(含源碼)

    一、開發(fā)環(huán)境 操作系統(tǒng):Ununtu 16 開發(fā)環(huán)境工具:vscode 開發(fā)語(yǔ)言:C語(yǔ)言 二、功能需求 制作學(xué)生管理系統(tǒng) 在系統(tǒng)中能夠?qū)崿F(xiàn) 錄入學(xué)生信息、幫助菜單、列出學(xué)生信息、計(jì)算總成績(jī)平均值、根據(jù)總成績(jī)平均值完成排序、根據(jù)學(xué)號(hào)查詢學(xué)生信息、清屏、退出等功能。 三、功能說(shuō)

    2024年02月08日
    瀏覽(24)
  • C語(yǔ)言課程設(shè)計(jì)_學(xué)生成績(jī)管理系統(tǒng)

    C語(yǔ)言課程設(shè)計(jì)_學(xué)生成績(jī)管理系統(tǒng)

    設(shè)計(jì)一個(gè)學(xué)生成績(jī)排名系統(tǒng)。 1)? 具備對(duì)成績(jī)的管理功能(添加、刪除、排序) 2)? 具備對(duì)成績(jī)的統(tǒng)計(jì)功能(最高分,最低分,平均分,及格率等) 3)? 具備按學(xué)號(hào)、姓名、或課程名查詢成績(jī)的功能。 4)學(xué)生成績(jī)應(yīng)該保存在文件中。 備注:成績(jī)記錄以下信息:班級(jí),學(xué)號(hào),

    2024年02月11日
    瀏覽(17)
  • C語(yǔ)言學(xué)生成績(jī)信息管理系統(tǒng)(超詳細(xì)版)

    C語(yǔ)言學(xué)生成績(jī)信息管理系統(tǒng)(超詳細(xì)版)

    主題:一個(gè)簡(jiǎn)易成績(jī)管理系統(tǒng) 功能介紹: 1.以文本形式存儲(chǔ)學(xué)生信息 2.對(duì)以存信息進(jìn)行? ?1. 插入 2. 修改3. 刪除? 4.查詢? 5.成績(jī)數(shù)字特征 目錄 一:分析 二:查詢? 三:菜單 四:初始化函數(shù) 五:插入函數(shù) 六:修改函數(shù) 七:刪除函數(shù) 八:數(shù)字特征 九:顯示函數(shù) 要進(jìn)行 插入

    2024年02月12日
    瀏覽(27)
  • ChatGPT實(shí)現(xiàn)用C語(yǔ)言寫一個(gè)學(xué)生成績(jī)管理系統(tǒng)

    隨著ChatGPT爆火,大家都在使用ChatGPT來(lái)幫助自己提高效率,對(duì)于程序員來(lái)說(shuō)使用它來(lái)寫代碼怎么樣呢?今天嘗試讓ChatGPT,寫了一個(gè)學(xué)生成績(jī)管理系統(tǒng)。 問題是:使用C語(yǔ)言寫一個(gè)學(xué)生成績(jī)管理系統(tǒng),要求使用鏈表,實(shí)現(xiàn)增刪改查功能。 下面是ChatGPT寫的代碼,用時(shí)不到30秒,速

    2023年04月13日
    瀏覽(95)
  • 使用c/c++語(yǔ)言寫一個(gè)簡(jiǎn)單的學(xué)生信息管理系統(tǒng)(使用結(jié)構(gòu)體數(shù)組,包含文件儲(chǔ)存,文件讀取等)

    使用c/c++語(yǔ)言寫一個(gè)簡(jiǎn)單的學(xué)生信息管理系統(tǒng)(使用結(jié)構(gòu)體數(shù)組,包含文件儲(chǔ)存,文件讀取等)

    使用c/c++開發(fā)的一個(gè)簡(jiǎn)單學(xué)生信息管理系統(tǒng),功能如圖所示: 選擇不同的數(shù)字后可以選擇不同的功能使用 在剛開始運(yùn)行系統(tǒng)時(shí)會(huì)進(jìn)行一個(gè)系統(tǒng)暫停,使用了windows函數(shù)庫(kù)里面的system(\\\"pause\\\"),暫停系統(tǒng)有助于保護(hù)系統(tǒng)穩(wěn)定性,防止系統(tǒng)出現(xiàn)閃屏等意外情況導(dǎo)致閃退等,并且使用了

    2024年02月09日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包