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

C語言實現(xiàn)學生信息管理系統(tǒng)(附原碼)

這篇具有很好參考價值的文章主要介紹了C語言實現(xiàn)學生信息管理系統(tǒng)(附原碼)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本人的C語言學習完后,用所學的知識自己實現(xiàn)了一個學生管理系統(tǒng),新手一個,代碼還有待完善,歡迎大家在評論區(qū)指出錯誤!

一、流程圖

學生信息管理系統(tǒng)c語言程序設計,學生信息管理系統(tǒng),c語言

二、函數(shù)的目錄?

學生信息管理系統(tǒng)c語言程序設計,學生信息管理系統(tǒng),c語言

三、程序介紹?

1.主要功能:添加學生信息、打印學生信息、查找學生信息、添加學生信息、修改學生信息、計算學生成績、刪除學生信息。

2.實現(xiàn)思路:本系統(tǒng)用的是鏈表(個人感覺鏈表很好用)來實現(xiàn)添加、查找、添加等操作,沒用使用數(shù)據(jù)庫,所有數(shù)據(jù)都放在了堆區(qū)。

3.文件介紹:本系統(tǒng)中使用了三個文件 main.c、Func.c、Func.h。

四、系統(tǒng)原碼

main.c介紹

main函數(shù)這里只調(diào)用了login();這個函數(shù)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Func.h"


int main()
{
	//賬號登陸
	login();

	system("pause");
	return 0;
}

Func.h介紹

主要就是函數(shù)還有結(jié)構(gòu)體的聲明

#pragma once
#define MAX 64 //將數(shù)組大小統(tǒng)一

typedef struct user //管理員的id 和 密碼
{
	char id[MAX];
	char password[MAX];
}User;

typedef struct student
{
	char name[MAX];    //學生姓名
	char sex[MAX];     //學生性別
	char num[MAX];     //學生學號
	int Chinese;       //語文成績
	int Mathematics;   //數(shù)學成績
	int English;       //英語成績
	int Computer;      //計算機成績
}STU;

//學生鏈表
struct stu_LinkList
{
	//數(shù)據(jù)域
	STU student;
	//指針域
	struct stu_LinkList* next;
};

//主函數(shù)聲明

//登陸函數(shù)
extern void login();
//打印主界面
extern void print_manu();
//添加學生信息
extern struct stu_LinkList* input_information();
//打印學生信息
extern void print_information();
//查找學生信息
extern void search_information();
//添加學生信息
extern void increase_information();
//修改學生信息
extern void modify_information();
//計算學生成績
extern void calc();
//刪除學生信息
extern void del_information();
//退出程序
extern void exit_project();


/
//自定義函數(shù)聲明

//表頭
extern void print_table();
//總成績表頭
extern void print_table_add();
//平均數(shù)表頭
extern void print_table_ave();


/
//查詢子函數(shù)聲明

//姓名查詢
extern void search_by_name();
//性別查詢
extern void search_by_sex();
//學號查詢
extern void search_by_num();

//
//計算子函數(shù)聲明

//計算總成績
extern void calc_sum();
//計算平均數(shù)
extern void calc_ave();

//
//刪除子函數(shù)聲明

//刪除單個學生
extern void del_priv_stu();
//刪除所有學生
extern void del_all_stu();

Func.c介紹

這里主要是函數(shù)效果的實現(xiàn)

#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable : 6031) //消除c6031警告,C6031返回值被忽略:“scanf”解決辦法
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Func.h"

//學生鏈表頭節(jié)點(全局變量)
struct stu_LinkList* Header = NULL;
//登陸函數(shù)
void login()
{
	//初始化管理員的id和密碼
	User user[2] = { { "Leo", "123456" }, {"bob", "123456"} };

	char password[MAX] = {0}; //密碼
	char id[MAX] = {0}; //用戶名
	int num = 1; //記錄登錄次數(shù)
	int chance = 3; //機會次數(shù)
	while (1)
	{
		int isTrue = 0; //用來判斷是否登錄成功

		printf("----------  請輸入用戶名  ----------\n");
		scanf("%s", id);
		getchar();

		printf("----------  請輸入密碼  ----------\n");
		scanf("%s", password);
		getchar();

		if (num <= 3)
		{
			for (int i = 0; i < sizeof(user) / sizeof(user[0]); i++)
			{
				if (strcmp(user[i].id, id) == 0 && strcmp(user[i].password, password) == 0)
				{
					printf("登陸成功!\n");
					//打印界面
					print_manu();
					isTrue = 1;
				}
			}
			if (isTrue != 1)
			{
				num++;
				
				printf("輸入錯誤,您還有%d次機會\n", --chance);
				if (chance == 0)
				{
					printf("三次均輸入失敗,退出程序\n");
					break;
				}
			}
			else
			{
				break;
			}
		}
		printf("按回車重新輸入\n");
		getchar();
		system("cls");
	}
}

//打印主界面
void print_manu()
{
	
	system("cls");
	int num = 0;   //選擇要執(zhí)行的序號
	printf("**********************************************\n");
	printf("***********歡迎使用高校學生管理系統(tǒng)***********\n");
	printf("**********************************************\n");
	printf("\t\t1.輸入學生信息\t\t\n");
	printf("\t\t2.查找學生信息\t\t\n");
	printf("\t\t3.打印學生信息\t\t\n");
	printf("\t\t4.添加學生信息\t\t\n");
	printf("\t\t5.修改學生信息\t\t\n");
	printf("\t\t6.計算學生成績\t\t\n");
	printf("\t\t7.刪除學生信息\t\t\n");
	printf("\t\t8.退出系統(tǒng)\t\t\n");
	printf("**********************************************\n");
	printf("**********************************************\n");
	
	printf("請輸入您要執(zhí)行的操作序號:");
	scanf("%d", &num);
	getchar();
	switch (num)
	{
	case 1:
		//添加學生信息
		Header = input_information();
		print_manu();
		break;
	case 2:
		//查找學生信息
		search_information();
		break;
	case 3:
		//打印學生信息
		print_information(Header);
		break;
	case 4:
		//添加學生信息
		increase_information();
		break;
	case 5:
		//修改學生信息
		modify_information();
		break;
	case 6:
		//計算學生成績
		calc();
		break;
	case 7:
		//刪除學生信息
		del_information();
		break;
	case 8:
		//退出系統(tǒng)
		exit_project();
		break;
	default:
		printf("對不起,沒有該操作,按回車可以重新選擇\n");
		getchar();
		print_manu();
		break;
	}
}

//輸入學生信息
struct stu_LinkList* input_information()
{
	
	char isAgain; //用來判斷是否繼續(xù)輸入
	//創(chuàng)建一個頭節(jié)點
	struct stu_LinkList* pHeader = (struct stu_LinkList*)malloc(sizeof(struct stu_LinkList));
	if (pHeader == NULL)
	{
		printf("抱歉,創(chuàng)建失敗\n");
		return;
	}
	//初始化頭節(jié)點
	pHeader->next = NULL;
	memset(&pHeader->student, 0, sizeof(STU));

	//創(chuàng)建一個尾節(jié)點指針,用來記錄尾節(jié)點的位置,方便插尾
	struct stu_LinkList* pTail = pHeader;

	//設置一個學生結(jié)構(gòu)體來接收輸入的值
	STU tmp;
	memset(&tmp, 0, sizeof(STU));
again:
	system("cls");
	//輸入學生信息
	printf("輸入學生姓名:\n");
	scanf("%s", tmp.name);
	getchar();

	printf("輸入學生性別:\n");
	scanf("%s", tmp.sex);
	getchar();

	printf("輸入學生學號:\n");
	scanf("%s", tmp.num);
	getchar();

	printf("輸入學生語文成績:\n");
	scanf("%d", &tmp.Chinese);
	getchar();

	printf("輸入學生數(shù)學成績:\n");
	scanf("%d", &tmp.Mathematics);
	getchar();

	printf("輸入學生英語成績:\n");
	scanf("%d", &tmp.English);
	getchar();

	printf("輸入學生計算機成績:\n");
	scanf("%d", &tmp.Computer);
	getchar();
	
	//創(chuàng)建一個新的學生節(jié)點
	struct stu_LinkList* stu_Node = (struct stu_LinkList*)malloc(sizeof(struct stu_LinkList));
	stu_Node->student = tmp;
	stu_Node->next = NULL;
	//建立關系
	pTail->next = stu_Node;
	pTail = stu_Node;

	//是否繼續(xù)添加學生信息
	printf("繼續(xù)添加學生信息請按Y\t返回主頁面請按N\n");
	scanf("%c", &isAgain);
	if (isAgain == 'Y')
	{
		goto again;
	}
	else if(isAgain == 'N')
	{
		return pHeader;
	}
}

//表頭
void print_table()
{
	system("cls");
	printf("+--------+--------+--------+--------+--------+--------+----------+\n");
	printf("|  姓名  |  性別  |  學號  |  語文  |  數(shù)學  |  英語  |  計算機  |\n");
	printf("+--------+--------+--------+--------+--------+--------+----------+\n");
}

//打印學生信息
void print_information()
{
	system("cls");
	int isReturn; //是否返回
	
	//判斷系統(tǒng)里是否有學生信息(沒有輸入過信息)
	if (Header == NULL)
	{
		printf("系統(tǒng)還沒有學生信息!\n");
		printf("返回主頁面請按 1\n");
		scanf("%d", &isReturn);
		getchar();
		if (isReturn == 1)
		{
			print_manu();
		}
	}
	//判斷已經(jīng)進行過信息的輸入,但是又將全部數(shù)據(jù)刪除的情況
	if (Header->next == NULL)
	{
		printf("系統(tǒng)還沒有學生信息!\n");
		printf("返回主頁面請按 1\n");
		scanf("%d", &isReturn);
		getchar();
		if (isReturn == 1)
		{
			print_manu();
		}
	}
	
	print_table();
	struct stu_LinkList* pCurrent = Header->next;
	while (pCurrent != NULL)
	{
		printf("|%5s   |%5s   |%5s   |%5d   |%5d   |%5d   |%5d   |\n", pCurrent->student.name, pCurrent->student.sex, pCurrent->student.num,
			pCurrent->student.Chinese, pCurrent->student.Mathematics,
			pCurrent->student.English, pCurrent->student.Computer);
		pCurrent = pCurrent->next;
		printf("+--------+--------+--------+--------+--------+--------+----------+\n");
	}
	printf("返回上一級請輸入 1\n");
	scanf("%d", &isReturn);
	getchar();
	if (isReturn == 1)
	{
		print_manu();
	}
}

//查找學生信息
void search_information()
{
	char isAgain;
	int num;
	system("cls");
	printf("**********************************************\n");
	printf("**********************************************\n");
	printf("\t\t1.按姓名查詢\t\t\n");
	printf("\t\t2.按性別查詢\t\t\n");
	printf("\t\t3.按學號查詢\t\t\n");
	printf("\t\t4.返回主界面\t\t\n");
	printf("**********************************************\n");
	printf("**********************************************\n");
	printf("請輸入您要執(zhí)行的操作:");
	scanf("%d", &num);
	getchar();
	
	if (num == 1)
	{
		//姓名查詢
		search_by_name();
	}
	else if (num == 2)
	{
		//性別查詢
		search_by_sex();
	}
	else if (num == 3)
	{
		//學號查詢
		search_by_num();
	}
	else if (num == 4)
	{
		print_manu();
	}
	else
	{
		printf("抱歉,沒有該選項\n");
		printf("重新選擇請按 Y,返回上一級請按 N\n");
		scanf("%c", &isAgain);
		getchar();
		if (isAgain == 'Y')
		{
			search_information();
		}
		else if (isAgain == 'N')
		{
			print_manu();
		}
	}
}

//姓名查詢
void search_by_name()
{
	system("cls");
	int isReturn = 0; //是否返回
	int isLive = 0; //該學生是否存在
	char name[MAX];
	
	if (Header == NULL)
	{
		printf("系統(tǒng)還沒有學生信息!\n");
		printf("返回主頁面請按1\t返回上一級請按2\n");
		scanf("%d", &isReturn);
		getchar();
		if (isReturn == 1)
		{
			print_manu();
		}
		else if (isReturn == 2)
		{
			search_information();
		}
	}
	printf("請輸入您要查詢的姓名:\n");
	scanf("%s", name);
	getchar();
	//進行遍歷
	struct stu_LinkList* pCurrent = Header->next;
	print_table();
	while (pCurrent != NULL)
	{
		//判斷時候有該姓名的學生
		
		if (strcmp(name, pCurrent->student.name) == 0)
		{
			printf("|%5s   |%5s   |%5s   |%5d   |%5d   |%5d   |%5d   |\n", pCurrent->student.name, pCurrent->student.sex, pCurrent->student.num,
				pCurrent->student.Chinese, pCurrent->student.Mathematics,
				pCurrent->student.English, pCurrent->student.Computer);
			printf("+--------+--------+--------+--------+--------+--------+----------+\n");
			isLive++;
		}
		pCurrent = pCurrent->next;
	}
	if (isLive == 0)
	{
		system("cls");
		printf("抱歉,并未找到該學生\n");
	}
	//結(jié)束返回
	printf("重新查找請按 1\t返回上一級請按 2\n");
	scanf("%d", &isReturn);
	getchar();
	if (isReturn == 1)
	{
		search_by_name();
	}
	else if (isReturn == 2)
	{
		search_information();
	}
}

//按照性別查詢
void search_by_sex()
{
	system("cls");
	int isReturn = 0; //是否返回
	int isLive = 0; //該學生是否存在
	char sex[MAX];
	
	if (Header == NULL)
	{
		printf("系統(tǒng)還沒有學生信息!\n");
		printf("返回主頁面請按1\t返回上一級請按2\n");
		scanf("%d", &isReturn);
		getchar();
		if (isReturn == 1)
		{
			print_manu();
		}
		else if (isReturn == 2)
		{
			search_information();
		}
	}
	printf("請輸入您要查詢的性別:\n");
	scanf("%s", sex);
	getchar();
	//進行遍歷
	struct stu_LinkList* pCurrent = Header->next;
	print_table();//打印表頭
	while (pCurrent != NULL)
	{
		//判斷時候有該性別的學生
		if (strcmp(sex, pCurrent->student.sex) == 0)
		{
			
			printf("|%5s   |%5s   |%5s   |%5d   |%5d   |%5d   |%5d   |\n", pCurrent->student.name, pCurrent->student.sex, pCurrent->student.num,
				pCurrent->student.Chinese, pCurrent->student.Mathematics,
				pCurrent->student.English, pCurrent->student.Computer);
			printf("+--------+--------+--------+--------+--------+--------+----------+\n");
			isLive++;
		}
		pCurrent = pCurrent->next;
	}
	if (isLive == 0)
	{
		system("cls");
		printf("抱歉,并未找到該學生\n");
	}
	//結(jié)束返回
	printf("重新查找請按 1\t返回上一級請按 2\n");
	scanf("%d", &isReturn);
	getchar();
	if (isReturn == 1)
	{
		search_by_sex();
	}
	else if (isReturn == 2)
	{
		search_information();
	}
}

//按學號查詢
void search_by_num()
{
	system("cls");
	int isReturn = 0; //是否返回
	int isLive = 0; //該學生是否存在
	char num[MAX];
	
	if (Header == NULL)
	{
		printf("系統(tǒng)還沒有學生信息!\n");
		printf("返回主頁面請按1\t返回上一級請按2\n");
		scanf("%d", &isReturn);
		getchar();
		if (isReturn == 1)
		{
			print_manu();
		}
		else if (isReturn == 2)
		{
			search_information();
		}
	}
	printf("請輸入您要查詢的學號:\n");
	scanf("%s", num);
	getchar();
	//進行遍歷
	struct stu_LinkList* pCurrent = Header->next;
	print_table();
	while (pCurrent != NULL)
	{
		//判斷時候有該性別的學生
		if (strcmp(num, pCurrent->student.num) == 0)
		{
			printf("|%5s   |%5s   |%5s   |%5d   |%5d   |%5d   |%5d   |\n", pCurrent->student.name, pCurrent->student.sex, pCurrent->student.num,
				pCurrent->student.Chinese, pCurrent->student.Mathematics,
				pCurrent->student.English, pCurrent->student.Computer);
			printf("+--------+--------+--------+--------+--------+--------+----------+\n");
			isLive++;
		}
		pCurrent = pCurrent->next;
	}
	if (isLive == 0)
	{
		system("cls");
		printf("抱歉,并未找到該學生\n");
	}
	//結(jié)束返回
	printf("重新查找請按 1\t返回上一級請按 2\n");
	scanf("%d", &isReturn);
	getchar();
	if (isReturn == 1)
	{
		search_by_num();
	}
	else if (isReturn == 2)
	{
		search_information();
	}
}

//添加學生信息
void increase_information()
{
	system("cls");
	int isReturn = 0; //是否返回
	char isAgain; //用來判斷是否繼續(xù)輸入
	if (Header == NULL)
	{
		printf("請先輸入學生信息!\n");
		printf("返回主頁面請按1\n");
		scanf("%d", &isReturn);
		getchar();
		if (isReturn == 1)
		{
			print_manu();
		}
	}

	//創(chuàng)建一個尾節(jié)點指針,用來記錄尾節(jié)點的位置,方便插尾
	struct stu_LinkList* pTail = Header;
	//輸入要添加的學生信息
	STU tmp;
	memset(&tmp, 0, sizeof(STU));
again:
	system("cls");
	//輸入學生信息
	printf("輸入學生姓名:\n");
	scanf("%s", tmp.name);
	getchar();

	printf("輸入學生性別:\n");
	scanf("%s", tmp.sex);
	getchar();

	printf("輸入學生學號:\n");
	scanf("%s", tmp.num);
	getchar();

	printf("輸入學生語文成績:\n");
	scanf("%d", &tmp.Chinese);
	getchar();

	printf("輸入學生數(shù)學成績:\n");
	scanf("%d", &tmp.Mathematics);
	getchar();

	printf("輸入學生英語成績:\n");
	scanf("%d", &tmp.English);
	getchar();

	printf("輸入學生計算機成績:\n");
	scanf("%d", &tmp.Computer);
	getchar();

	//進行信息比對,如果有重復信息輸入,將會提示
	struct stu_LinkList* pCurrent = Header->next;
	while (pCurrent != NULL)
	{
		if (strcmp(tmp.name, pCurrent->student.name) == 0 && strcmp(tmp.sex, pCurrent->student.sex) == 0 && strcmp(tmp.num, pCurrent->student.num) == 0)
		{
			printf("抱歉,系統(tǒng)已有該同學信息\n");
			printf("重新輸入請按 Y\t返回主界面請按 N\n");
			scanf("%c", &isAgain);
			getchar();
			if (isAgain == 'Y')
			{
				increase_information();
			}
			else if (isAgain == 'N')
			{
				print_manu();
			}
		}
		pCurrent = pCurrent->next;
	}

	//遍歷鏈表找到尾節(jié)點
	while (pTail->next != NULL)
	{
		pTail = pTail->next;
	}
	//創(chuàng)建一個新的學生節(jié)點
	struct stu_LinkList* stu_Node = (struct stu_LinkList*)malloc(sizeof(struct stu_LinkList));
	stu_Node->student = tmp;
	stu_Node->next = NULL;
	//建立關系
	pTail->next = stu_Node;
	pTail = stu_Node;

	//是否繼續(xù)添加學生信息
	printf("繼續(xù)添加學生信息請按 Y,返回主界面請按 N\n");
	scanf("%c", &isAgain);
	if (isAgain == 'Y')
	{
		goto again;
	}
	else if (isAgain == 'N')
	{
		print_manu();
	}
}

//修改學生信息
void modify_information()
{
	system("cls");
	char isAgain; //用來判斷是否繼續(xù)輸入
	int isReturn = 0; //是否返回
	//判斷系統(tǒng)里是否有學生信息
	if (Header == NULL)
	{
		printf("系統(tǒng)還沒有學生信息!\n");
		printf("返回主頁面請按 1\n");
		scanf("%d", &isReturn);
		getchar();
		if (isReturn == 1)
		{
			print_manu();
		}
	}

	//輸入要修改的學生信息
	STU tmp;
again:
	system("cls");
	printf("請輸入你要查找的學生信息\n");
	printf("輸入學生姓名:\n");
	scanf("%s", tmp.name);
	getchar();

	printf("輸入學生性別:\n");
	scanf("%s", tmp.sex);
	getchar();

	printf("輸入學生學號:\n");
	scanf("%s", tmp.num);
	getchar();

	//進行遍歷
	struct stu_LinkList* pCurrent = Header->next;
	//該信息的位置
	struct stu_LinkList* information_pos = NULL;
	while (pCurrent != NULL)
	{
		if (strcmp(tmp.name, pCurrent->student.name) == 0 && strcmp(tmp.sex, pCurrent->student.sex) == 0 && strcmp(tmp.num, pCurrent->student.num) == 0)
		{
			printf("找到該同學信息\n");
			printf("打印學生信息Y\t不打印N\n");
			scanf("%c", &isAgain);
			if (isAgain == 'Y')
			{
				print_table();
				printf("|%5s   |%5s   |%5s   |%5d   |%5d   |%5d   |%5d   |\n", pCurrent->student.name, pCurrent->student.sex, pCurrent->student.num,
					pCurrent->student.Chinese, pCurrent->student.Mathematics,
					pCurrent->student.English, pCurrent->student.Computer);
				printf("+--------+--------+--------+--------+--------+--------+----------+\n");
			}
			else if (isAgain == 'N')
			{
				system("cls");
			}
			
			//記錄信息位置
			information_pos = pCurrent;
		}
		pCurrent = pCurrent->next;
	}
	if (information_pos == NULL)
	{
		system("cls");
		printf("未找到該同學信息\n");
		//是否繼續(xù)修改學生信息
		printf("繼續(xù)修改學生信息Y\t返回主界面N\n");
		scanf("%c", &isAgain);
		getchar();
		if (isAgain == 'Y')
		{
			goto again;
		}
		else if (isAgain == 'N')
		{
			print_manu();
		}
	}
	printf("請修改學生信息\n");
	printf("輸入學生姓名:\n");
	scanf("%s", tmp.name);
	getchar();

	printf("輸入學生性別:\n");
	scanf("%s", tmp.sex);
	getchar();

	printf("輸入學生學號:\n");
	scanf("%s", tmp.num);
	getchar();

	printf("輸入學生語文成績:\n");
	scanf("%d", &tmp.Chinese);
	getchar();

	printf("輸入學生數(shù)學成績:\n");
	scanf("%d", &tmp.Mathematics);
	getchar();

	printf("輸入學生英語成績:\n");
	scanf("%d", &tmp.English);
	getchar();

	printf("輸入學生計算機成績:\n");
	scanf("%d", &tmp.Computer);
	getchar();

	//修改學生信息
	information_pos->student = tmp;
	printf("修改成功!\n");
	printf("繼續(xù)修改學生信息Y\t返回主界面N\n");
	scanf("%c", &isAgain);
	getchar();
	if (isAgain == 'Y')
	{
		goto again;
	}
	else if (isAgain == 'N')
	{
		print_manu();
	}
}

//總成績表頭
void print_table_add()
{
	system("cls");
	printf("+--------+--------+--------+--------+--------+--------+----------+----------+\n");
	printf("|  姓名  |  性別  |  學號  |  語文  |  數(shù)學  |  英語  |  計算機  |  總成績  |\n");
	printf("+--------+--------+--------+--------+--------+--------+----------+----------+\n");
}

//平均數(shù)表頭
void print_table_ave()
{
	system("cls");
	printf("+--------+--------+--------+--------+--------+--------+----------+----------+\n");
	printf("|  姓名  |  性別  |  學號  |  語文  |  數(shù)學  |  英語  |  計算機  |  平均數(shù)  |\n");
	printf("+--------+--------+--------+--------+--------+--------+----------+----------+\n");
}

//計算學生成績
void calc()
{
	char isAgain;//是否繼續(xù)
	int num;
	system("cls");
	printf("**********************************************\n");
	printf("**********************************************\n");
	printf("\t\t1.計算總成績\t\t\n");
	printf("\t\t2.計算平均數(shù)\t\t\n");
	printf("\t\t3.返回主界面\t\t\n");
	printf("**********************************************\n");
	printf("**********************************************\n");
	printf("請輸入您要執(zhí)行的操作:");
	scanf("%d", &num);
	getchar();

	if (num == 1)
	{
		//計算總成績
		calc_sum();
	}
	else if (num == 2)
	{
		//計算平均數(shù)
		calc_ave();
	}
	else if (num == 3)
	{
		print_manu();
	}
	else
	{
		printf("抱歉,沒有該選項\n");
		printf("重新選擇請按 Y,返回主界面請按 N\n");
		scanf("%c", &isAgain);
		getchar();
		if (isAgain == 'Y')
		{
			calc();
		}
		else if (isAgain == 'N')
		{
			print_manu();
		}
	}
}

//計算總成績
void calc_sum()
{
	system("cls");
	int sum = 0;//總成績變量
	int isReturn = 0; //是否返回
	//判斷系統(tǒng)里是否有學生信息
	if (Header == NULL)
	{
		printf("系統(tǒng)還沒有學生信息!\n");
		printf("返回主頁面請按 1\t返回上一級請按 2\n");
		scanf("%d", &isReturn);
		getchar();
		if (isReturn == 1)
		{
			print_manu();
		}
		else if (isReturn == 2)
		{
			calc();
		}
	}
	
	//進行遍歷
	struct stu_LinkList* pCurrent = Header->next;
	print_table_add();
	while (pCurrent != NULL)
	{
		sum = pCurrent->student.Chinese + pCurrent->student.Mathematics + pCurrent->student.English + pCurrent->student.Computer;
		printf("|%5s   |%5s   |%5s   |%5d   |%5d   |%5d   |%5d     | %5d    |\n", pCurrent->student.name, pCurrent->student.sex, pCurrent->student.num,
			pCurrent->student.Chinese, pCurrent->student.Mathematics,
			pCurrent->student.English, pCurrent->student.Computer, sum);
		printf("+--------+--------+--------+--------+--------+--------+----------+----------+\n");
		pCurrent = pCurrent->next;
	}
	printf("返回主頁面請按 1\t返回上一級請按 2\n");
	scanf("%d", &isReturn);
	getchar();
	if (isReturn == 1)
	{
		print_manu();
	}
	else if (isReturn == 2)
	{
		calc();
	}
}

//計算平均數(shù)
void calc_ave()
{
	system("cls");
	float ave = 0;//平均數(shù)變量

	int isReturn = 0; //是否返回
	//判斷系統(tǒng)里是否有學生信息
	if (Header == NULL)
	{
		printf("系統(tǒng)還沒有學生信息!\n");
		printf("返回主頁面請按 1\t返回上一級請按 2\n");
		scanf("%d", &isReturn);
		getchar();
		if (isReturn == 1)
		{
			print_manu();
		}
		else if (isReturn == 2)
		{
			calc();
		}
	}

	//進行遍歷
	struct stu_LinkList* pCurrent = Header->next;
	print_table_ave();
	while (pCurrent != NULL)
	{
		ave = ((float)(pCurrent->student.Chinese + pCurrent->student.Mathematics + pCurrent->student.English + pCurrent->student.Computer)) * (float)0.25;
		printf("|%5s   |%5s   |%5s   |%5d   |%5d   |%5d   |%5d    |%5.2lf     |\n", pCurrent->student.name, pCurrent->student.sex, pCurrent->student.num,
			pCurrent->student.Chinese, pCurrent->student.Mathematics,
			pCurrent->student.English, pCurrent->student.Computer, ave);
		printf("+--------+--------+--------+--------+--------+--------+----------+----------+\n");
		pCurrent = pCurrent->next;
	}
	printf("返回主頁面請按 1\t返回上一級請按 2\n");
	scanf("%d", &isReturn);
	getchar();
	if (isReturn == 1)
	{
		print_manu();
	}
	else if (isReturn == 2)
	{
		calc();
	}
}

//刪除學生信息
void del_information()
{
	char isAgain;//是否繼續(xù)
	int num;
	system("cls");
	printf("**********************************************\n");
	printf("**********************************************\n");
	printf("\t\t1.刪除單個學生\t\t\n");
	printf("\t\t2.刪除全部學生\t\t\n");
	printf("\t\t3.返回主界面\t\t\n");
	printf("**********************************************\n");
	printf("**********************************************\n");
	printf("請輸入您要執(zhí)行的操作:");
	scanf("%d", &num);
	getchar();

	if (num == 1)
	{
		//刪除單個學生
		del_priv_stu();
	}
	else if (num == 2)
	{
		//刪除所有學生
		del_all_stu();
	}
	else if (num == 3)
	{
		print_manu();
	}
	else
	{
		printf("抱歉,沒有該選項\n");
		printf("重新選擇請按 Y,返回主界面請按 N\n");
		scanf("%c", &isAgain);
		getchar();
		if (isAgain == 'Y')
		{
			del_information();
		}
		else if (isAgain == 'N')
		{
			print_manu();
		}
	}
}

//刪除單個學生
void del_priv_stu()
{
	int isReturn = 0; //是否返回
	int isExist = 0;//判斷信息是否存在
	char isAgain = 0;//是否繼續(xù)刪除
	//判斷系統(tǒng)里是否有學生信息
	if (Header == NULL)
	{
		printf("系統(tǒng)還沒有學生信息!\n");
		printf("返回主頁面請按 1\t返回上一級請按 2\n");
		scanf("%d", &isReturn);
		getchar();
		if (isReturn == 1)
		{
			print_manu();
		}
		else if (isReturn == 2)
		{
			del_information();
		}
	}
	
	//輸入要修改的學生信息
	STU tmp;
	system("cls");
	printf("請輸入你要刪除的學生信息\n");
	printf("輸入學生姓名:\n");
	scanf("%s", tmp.name);
	getchar();

	printf("輸入學生性別:\n");
	scanf("%s", tmp.sex);
	getchar();

	printf("輸入學生學號:\n");
	scanf("%s", tmp.num);
	getchar();

	//進行遍歷
	struct stu_LinkList* pCurrent = Header->next;
	//記錄上一個節(jié)點的位置
	struct stu_LinkList* pPrev = Header;
	while (pCurrent != NULL)
	{
		if (strcmp(tmp.name, pCurrent->student.name) == 0 && strcmp(tmp.sex, pCurrent->student.sex) == 0 && strcmp(tmp.num, pCurrent->student.num) == 0)
		{
			pCurrent = pCurrent->next;
			free(pPrev->next);
			pPrev->next = NULL;
			//建立關系
			pPrev->next = pCurrent;
			isExist++;
			break;
		}
		pPrev = pCurrent;
		pCurrent = pCurrent->next;
	}
	if (isExist == 0)
	{
		system("cls");
		printf("未找到該同學信息\n");
		//是否繼續(xù)刪除學生信息
		printf("繼續(xù)刪除學生信息 Y\t返回上一級 N\n");
		scanf("%c", &isAgain);
		getchar();
		if (isAgain == 'Y')
		{
			del_priv_stu();
		}
		else if (isAgain == 'N')
		{
			del_information();
		}
	}
	if (isExist == 1)
	{
		system("cls");
		printf("刪除成功\n");
		printf("繼續(xù)刪除學生信息 Y\t返回上一級 N\n");
		scanf("%c", &isAgain);
		getchar();
		if (isAgain == 'Y')
		{
			del_priv_stu();
		}
		else if (isAgain == 'N')
		{
			del_information();
		}
	}
}

//刪除所有學生
void del_all_stu()
{
	system("cls");
	int isReturn = 0; //是否返回
	//判斷系統(tǒng)里是否有學生信息
	if (Header == NULL)
	{
		printf("系統(tǒng)還沒有學生信息!\n");
		printf("返回主頁面請按 1\t返回上一級請按 2\n");
		scanf("%d", &isReturn);
		getchar();
		if (isReturn == 1)
		{
			print_manu();
		}
		else if (isReturn == 2)
		{
			del_information();
		}
	}
	//進行遍歷
	struct stu_LinkList* pCurrent = Header->next;
	//記錄下一個節(jié)點
	struct stu_LinkList* next_Node = NULL;
	while (pCurrent != NULL)
	{
		next_Node = pCurrent->next;
		free(pCurrent);
		pCurrent = NULL;
		pCurrent = next_Node;
	}
	Header->next = NULL;

	printf("刪除成功\n");
	printf("返回上一級請按 1\n");
	scanf("%d", &isReturn);
	getchar();
	if (isReturn == 1)
	{
		del_information();
	}
}

//退出程序
void exit_project()
{
	system("cls");
	if (Header == NULL)
	{
		printf("感謝您的使用,已退出!\n");
		exit(0);
	}
	else if (Header->next == NULL)
	{
		//釋放頭節(jié)點
		free(Header);
		Header = NULL;
		printf("感謝您的使用,已退出!\n");
		exit(0);
	}
	else
	{
		//進行遍歷
		struct stu_LinkList* pCurrent = Header->next;
		//記錄下一個節(jié)點
		struct stu_LinkList* next_Node = NULL;
		while (pCurrent != NULL)
		{
			next_Node = pCurrent->next;
			free(pCurrent);
			pCurrent = NULL;
			pCurrent = next_Node;
		}
		Header->next = NULL;
		//釋放頭節(jié)點
		free(Header);
		Header = NULL;
		printf("感謝您的使用,已退出!\n");
		exit(0);
	}
}

五、總結(jié)

到這里這個學生管理系統(tǒng)就完成啦!這個當作自己的一個C語言結(jié)課作業(yè),在寫的過程中有一些邏輯參考了學生信息管理系統(tǒng)這篇文章,希望以上內(nèi)容可以幫助到大家,如果有錯誤歡迎大家指出。文章來源地址http://www.zghlxwxcb.cn/news/detail-526744.html

到了這里,關于C語言實現(xiàn)學生信息管理系統(tǒng)(附原碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 學生信息管理系統(tǒng)(c語言版)

    學生信息管理系統(tǒng)(c語言版)

    大一下C語言要交課程設計,于是就寫了一個學生信息管理系統(tǒng),僅供參考 學生信息包括姓名,學號,性別,年齡和各科成績,可根據(jù)需要自行修改添加 包括增、刪、改查、查看所有、保存、清空7個功能,每個功能都封裝成一個函數(shù) 保存功能是將所添加的信息保存到文件中

    2024年02月12日
    瀏覽(20)
  • 用C語言實現(xiàn)一個學生信息管理系統(tǒng),學生基本信息包括學號、姓名、三門課成績以及個人平均成績,有不超過70個學生的數(shù)據(jù),要求能夠建立學生基本信息(結(jié)構(gòu)體數(shù)組)、按學號查詢學生基本信息、計算學生個人平均成績...

    下面是一種使用 C 語言實現(xiàn)學生信息管理系統(tǒng)的方案: 首先,定義結(jié)構(gòu)體存儲學生的基本信息,其中包括學號、姓名、三門課成績和平均成績。例如: 然后,定義結(jié)構(gòu)體數(shù)組來存儲最多70個學生的信息。 接下來,可以編寫函數(shù)來實現(xiàn)各種功能。例如,可以定義函數(shù)來建立學

    2024年02月03日
    瀏覽(26)
  • 基于C語言的學生信息管理系統(tǒng)開發(fā)

    基于C語言的學生信息管理系統(tǒng)開發(fā)

    軟件功能描述 功能模塊圖 2.信息管理模塊 功能說明:輸入、增加、刪除、修改學生信息同時返回上一級 查詢模塊 功能說明:根據(jù)性別民族等查找學生人數(shù)、按照課程最高分查詢學生信息、按照課程統(tǒng)計學生的平均分數(shù)同時返回上一級 成績排序模塊 功能說明:根據(jù)課程對學

    2024年02月04日
    瀏覽(26)
  • C語言版----學生信息管理系統(tǒng)(分析+代碼)

    C語言版----學生信息管理系統(tǒng)(分析+代碼)

    一、分析系統(tǒng)功能設計 1. 初始化學生列表、教師列表 ·typedef struct student 先對學生結(jié)構(gòu)體進行重定義,便于對相關數(shù)組取名 再初始化一個教室class,便于在后面的函數(shù)中調(diào)用學生信息 ·typedef struct teacher 先對教師結(jié)構(gòu)體進行重定義,便于對相關數(shù)組取名 ·void inputtStu() 初始化三

    2024年02月09日
    瀏覽(26)
  • C語言學生成績信息管理系統(tǒng)(超詳細版)

    C語言學生成績信息管理系統(tǒng)(超詳細版)

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

    2024年02月12日
    瀏覽(27)
  • qt實現(xiàn)信息管理系統(tǒng)(學生信息管理系統(tǒng))功能更完善

    qt實現(xiàn)信息管理系統(tǒng)(學生信息管理系統(tǒng))功能更完善

    信息系統(tǒng)代碼地址:https://gitee.com/dxl96/StdMsgSystem 本學生信息管理系統(tǒng)同升級改造的幅度較大,涉及到的東西對于初學者來說,可能稍顯復雜,可以先移步到?https://blog.csdn.net/IT_CREATE/article/details/82027462?查看簡易的系統(tǒng)。 本系統(tǒng)引入日志管理,數(shù)據(jù)庫選擇支持sqllite、mysql,自

    2024年02月13日
    瀏覽(20)
  • 學生信息管理系統(tǒng)(Python實現(xiàn))

    目錄 1.功能介紹 2.代碼模塊 3.全局代碼 摘劍?。?! 采用列表+類的組合來實現(xiàn)對信息的增刪改查,整體代碼比較簡單,只用了100余行 1)添加學生信息 2)查詢學生信息 3)刪除學生信息 4)修改學生信息 5)遍歷學生信息 1)學生類 2)菜單menu 3)添加insert ?4)查詢search 5)刪

    2024年02月13日
    瀏覽(18)
  • 學生信息管理系統(tǒng)——JAVA 語言版(主頁面+增+刪+改+查+退)

    學生信息管理系統(tǒng)——JAVA 語言版(主頁面+增+刪+改+查+退)

    學生管理系統(tǒng)要能夠?qū)崿F(xiàn)添加學生信息,刪除,修改以及查看學生信息的功能。 你是否嘗試過使用JAVA語言編寫一個代碼程序,使用該代碼實現(xiàn)學生信息管理呢? 如果你還沒有任何頭緒,接下來推薦你看一下我的做法,我使用的編程工具是IDEA,以下給出了學生信息管理系統(tǒng)的程

    2024年02月03日
    瀏覽(25)
  • C語言程序設計期末大作業(yè)(學生信息管理系統(tǒng))(可自取源碼)

    C語言程序設計期末大作業(yè)(學生信息管理系統(tǒng))(可自取源碼)

    高校學生信息管理系統(tǒng) (一)在高校學生管理系統(tǒng)中包含九個主要操作: 退出系統(tǒng); 學生信息的錄入; 學生信息的打?。?學生信息的保存; 學生信息的讀取; 學生人數(shù)的統(tǒng)計; 學生信息的查找; 學生信息的修改; 學生信息的刪除。 (二)設計流程 首先確認用switch ca

    2024年02月10日
    瀏覽(22)
  • C語言課程設計:學生成績信息管理系統(tǒng)(排序、平均分、總分)詳解

    C語言課程設計:學生成績信息管理系統(tǒng)(排序、平均分、總分)詳解

    1、需求分析 利用C語言編寫一個可以對學生成績信息進行管理的系統(tǒng) 0、退出系統(tǒng) 1、錄入學生信息和成績 2、打印學生信息 3、統(tǒng)計學生人數(shù) 4、查找學生信息 5、修改學生信息 6、刪除學生信息 7、排序?qū)W生成績 8、生成學生信息文件 9、讀取文件學生信息 10、輸出各科成績不

    2024年02月11日
    瀏覽(32)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包