C語言不用鏈表完成學生管理系統(完整代碼)

1.課程設計目的

1.更好的理解c語言的相關實現內容,對於c語言的理解得到更好的幫助。
2.實現更方便快捷的應用。

2.基本要求

(1)、1.每組完成1個題目的設計;每人獨立完成該題目的一個功能模塊的實現,並將課程設計報告打印、裝訂提交。
(2).使用標準C語言編制程序,源代碼必須采用鋸齒型書寫格式,必須上機調試通過。運行界面友好,易於操作。

(3).輸出要求:

1)
應用程序正常運行後,要在屏幕上顯示一個文字菜單;

2)
要求用戶輸入數據時,要給出清晰、明確的提示信息,包括輸入的數據內容、格式等;

3)為各項操作功能設計一個菜單,應用程序運行後,先顯示這個菜單,然後用戶通過菜單項選擇希望進行的操作項目。
(4).必須實現所要求的全部功能。

(5).課程設計要求獨立完成,不得抄襲。若發現抄襲行為,則成績一律記零分。

3.任務完成情況

1.可以通過程序實現學生信息的增加刪除顯示查找以及修改功能。
2.通過非鏈表的方式運用結構體的方法編寫程序。

4.設計報告

4.1需求分析

4.1.1用戶需求分析

(1)、可以快速度的找出輸入的學生的所有信息。 (2)、可以精確的找出某個學生的所有信息。 (3)、需要準確的修改某個學生的成績。

4.2概要設計

1.增加信息。
2.顯示信息。
3.查找信息。
4.刪除信息。
5.修改信息。

4.3詳細設計

4.3.1程序流程圖

在這裡插入圖片描述

4.4詳細代碼

4.4.1結構體定義

typedef struct//定義瞭一個結構體變量 { char stu_name[10]; //表示姓名 int
stu_id; //表示學號 double stu_math; //高數成績 double
stu_english; //大學英語成績 } student;

4.4.2主函數

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

4.4.3初始化函數

student all_stu[10]; int stu_number=0;//定義瞭學生的人數 int main()

4.4.4顯示菜單函數

void first();//一號條件 void secend();//二號條件 void third();//三號條件
void fourth();//四號條件 void fifth(); int q; do printf("\n\n\n\n
printf("\t\t=學生成績管理系統\n");
printf("\t\t*
\n"); printf("\t\t 1. 輸入學生成績 \n"); printf("\t\t 2. 查找學生成績 \n"); printf("\t\t 3. 顯示所有成績 \n"); printf("\t\t 4. 刪除學生成績 \n"); printf("\t\t 5. 修改學生成績 \n"); printf("\t\t 0. 退出管理系統 \n"); printf("\t\t printf("\t\t=========================================\n);
printf("\t\t輸入你的選項:"); scanf("%d",&q); switch(q) { case 1:
first();
printf(“按任意鍵回菜單”);
getchar();
system(“cls”);//表示轉移號
break; case 2:
secend();
getchar();
printf(“按任意鍵回菜單”);
getchar();
system(“cls”);
break; case 3: third(); getchar(); printf("\n請按任意鍵返回主菜單\n"); getchar(); system(“cls”); break;
case 4: fourth(); getchar(); printf("\n按任意鍵返回主菜單\n");
getchar(); system(“cls”); break; case 5:
fifth();
getchar();
printf("\n按任意鍵回主菜單\n");
getchar();
system(“cls”);
break; } }while(q); return 0;

4.4.5顯示各個功能函數

4.4.5.1增加信息

void first()
{
thefirst:
	system("cls");
	printf("************輸入學生信息**********);
	printf("\n\n");
	int cw,temp,hh;
	char op;
	stu_number++; 
	printf("\n>>>>>>>>請輸入姓名: ");
	scanf("%s",all_stu[stu_number].stu_name);
	printf("\n>>>>>>>>請輸入學號: ");
	scanf("%d",&temp);
	all_stu[stu_number].stu_id=temp;
	getchar();//接收一個空格 
	printf("\n>>>>>>請輸入高等數學成績(小於等於100):");
	scanf("%lf",&all_stu[stu_number].stu_math);
	if (all_stu[stu_number].stu_math> 100)
	{
printf("輸入有誤,請輸入正確的成績信息,請按(Y)重新輸入: ");
		getchar();
		cw = getchar();
		if (cw =='y'|| cw =='Y')
			goto thefirst;
	}
	printf("\n>>>>>>>>請輸入大學英語成績(小於等於100):");
	scanf("%lf", &all_stu[stu_number].stu_english);
	if (all_stu[stu_number].stu_english> 100)
	{
printf("輸入有誤,請輸入正確的成績信息,請按(Y)重新輸入: ");
		getchar();//接收Y 
		cw = getchar();
		if (cw == 'y' || cw == 'Y')
			goto thefirst;
	}
	thefirstone:
	printf("\n是否繼續輸入,如是請按(Y),否請按(N): ");
	getchar();
	scanf("%c", &op);
	if (op == 'y' || op == 'Y')
		goto thefirst;
	if (op == 'n' || op == 'N')
		goto thefirstend;
	else
		goto thefirstone;
	getchar();
thefirstend:;
	getchar();//輸入任意數結束 
}

4.4.5.2查找信息

void fourth()
{
thefourth:
	system("cls");
printf("\n\n\n\n********************刪除學生成績**********************"); 
	int num,cw,cx,ai,i=0;
	char op;
	printf("\n>>>>>>>>請輸入要查找學生的學號: ");
	scanf("%d",&num);
	for (ai=1;ai<=stu_number;ai++)
	{
		if (num==all_stu[ai].stu_id)
		{
			i=1;
			break;
		}
	}
	if (i==0)
	{
printf("未查找到要刪除的學生信息,是否要重新輸入,如需要重新輸入請按(Y),如不需要請按(N)將返回主菜單: ");
		getchar();
		cw = getchar();
		if (cw == 'y' || cw == 'Y')
			goto thefourth;//回到開始 
		if (cw == 'n' || cw == 'N')
			goto thefourthend;//回到結尾 
	}
	else
	{
		stu_number--;//人數減一 
		for (;ai<stu_number;ai--)
		{
			all_stu[ai] = all_stu[ai+1];//後面的數據往前推 
		}
	}
	printf("\n\n此學號的學生成績信息已刪除");
	getchar();
thefourthone:
	getchar();
	printf("\n刪除的成績信息以刪除,是否繼續?\n需要請(Y),如不需要請(N),將返回主界面: ");
	scanf("%c", &op);
	if (op == 'y' || op == 'Y')
		goto thefourth;
	if (op == 'n' || op == 'N')
		goto thefourthend;
	else
		goto thefourthone;
thefourthend:;
}

4.4.5.3顯示信息

> void third() { thethird: 	system("cls");
> printf("\n\n**************************顯示學生信息***********************");
> 	int n=1; 	printf("\n\n>>>姓名"); 	printf("\t學號"); 	printf("\t高等數學");
> 	printf("\t大學英語"); 	//for (n=0;n<stu_number;n++); 	do 	{
> 		printf("\n>>%s", all_stu[n].stu_name); 		printf("\t%d",
> all_stu[n].stu_id); 		printf("\t%.2lf", all_stu[n].stu_math);
> 		printf("\t%.2lf", all_stu[n].stu_english); 		n++; 	} while
> (n<=stu_number); }

4.4.5.4刪除信息

void fourth()
{
thefourth:
	system("cls");
printf("\n\n\n\n********************刪除學生成績**********************"); 
	int num,cw,cx,ai,i=0;
	char op;
	printf("\n>>>>>>>>請輸入要查找學生的學號: ");
	scanf("%d",&num);
	for (ai=1;ai<=stu_number;ai++)
	{
		if (num==all_stu[ai].stu_id)
		{
			i=1;
			break;
		}
	}
	if (i==0)
	{
printf("未查找到要刪除的學生信息,是否要重新輸入,如需要重新輸入請按(Y),如不需要請按(N)將返回主菜單: ");
		getchar();
		cw = getchar();
		if (cw == 'y' || cw == 'Y')
			goto thefourth;//回到開始 
		if (cw == 'n' || cw == 'N')
			goto thefourthend;//回到結尾 
	}
	else
	{
		stu_number--;//人數減一 
		for (;ai<stu_number;ai--)
		{
			all_stu[ai] = all_stu[ai+1];//後面的數據往前推 
		}
	}
	printf("\n\n此學號的學生成績信息已刪除");
	getchar();
thefourthone:
	getchar();
	printf("\n刪除的成績信息以刪除,是否繼續?\n需要請(Y),如不需要請(N),將返回主界面: ");
	scanf("%c", &op);
	if (op == 'y' || op == 'Y')
		goto thefourth;
	if (op == 'n' || op == 'N')
		goto thefourthend;
	else
		goto thefourthone;
thefourthend:;
}

4.4.5.5修改信息

void fifth()//修改成績 
{
thefifth:
	system("cls");
printf("**************************修改學生成績*************************");
	printf("\n\n");
	int num,cw,cx,ai,i = 0, cy, temp;
	char op;
	printf("\n>>>>>>>>請輸入要查找學生的學號: ");
	scanf("%d", &num);
	for (ai=1; ai<=stu_number; ai++)
	{
		if (num ==all_stu[ai].stu_id)
		{
			i = 1;
			break;
		}
	}
	if (i == 0)
	{
	printf("未查找到要修改的學生信息,重新輸入按Y,返回主菜單按N ");
		getchar();
		cw = getchar();
		if (cw == 'y' || cw == 'Y')
			goto thefifth;
		if (cw == 'n' || cw == 'N')
			goto thefifthend;
	}
	else
	{

printf("***********************************************************************");
		printf("\n*姓名___: ");
		printf("%s", all_stu[ai].stu_name);
		printf("\n*學號___: ");
		printf("%d", all_stu[ai].stu_id);
		printf("\n*高數成績: ");
		printf("%.2lf", all_stu[ai].stu_math);   
		printf("\n*大學英語成績: ");
		printf("%.2lf",all_stu[ai].stu_english);
printf("\n*********************************************************************");
	}
	getchar();
	printf("\n\n是否確認修改此學生成績信息?(註:修改後將不可還原)如需修改請按Y,如不需修改學生信息請安N返回主菜單: ");
thefifthone:
	cw = getchar();
	if (cw == 'y' || cw == 'Y')
		goto thefifthtwo;
	if (cw == 'n' || cw == 'N')
		goto thefifthend;
	else
		goto thefifthone;
thefifthtwo:
	system("cls");
	printf("\n>>>>>>>>請輸入姓名: ");
	scanf("%s", all_stu[ai].stu_name);
	printf("\n>>>>>>>>請輸入學號: ");
	scanf("%d",&temp);
	all_stu[ai].stu_id = temp;
	getchar();
	for (cy = 0; cy < ai; cy++)
	{
		if (all_stu[ai].stu_id == all_stu[cy].stu_id)
		{
			printf("學號輸入錯誤,如需重新輸入請按(Y)退出請按(N)");
			cw = getchar();
			if (cw == 'y' || cw == 'Y')
				goto thefifthtwo;
			else
				goto thefifthend;
		}
	}
	printf("\n>>>>>>>>請輸入第一門成績(小於100): ");
	scanf("%lf", &all_stu[ai].stu_math);
	if (all_stu[ai].stu_math > 100)
	{
		printf("輸入有誤,請按(Y)重新輸入: ");
		getchar();
		cw = getchar();
		if (cw == 'y' || cw == 'Y')
			goto thefifthtwo;
	}
	printf("\n>>>>>>>>請輸入第二門成績(小於100): ");
	scanf("%lf", &all_stu[ai].stu_english);
	if (all_stu[ai].stu_english > 100)
	{
		printf("輸入有誤,請按(Y)重新輸入: ");
		getchar();
		cw = getchar();
		if (cw == 'y' || cw == 'Y')
			goto thefifthtwo;
	}
	printf("\n\n");
	printf("\n OK 此學生成績信息已修改完成,感謝您的使用。");
thefifthfanhui:
	getchar();
printf("\n成績信息已修改,是否繼續?\n需要請按Y,如不需要請按Y,將返回主菜單: ");
	scanf("%c", &op);
	if (op == 'y' || op == 'Y')
		goto thefifth;
	if (op == 'n' || op == 'N')
		goto thefifthend;
	else
		goto thefifthfanhui;
thefifthend:;
}

4.5使用說明

本代碼比較簡單易懂,蒟蒻也能看懂。

4.6測試結果與分析

主界面如圖:

在這裡插入圖片描述

輸入信息圖示:

在這裡插入圖片描述

查找信息如圖:

在這裡插入圖片描述

顯示所有信息如圖:

在這裡插入圖片描述

刪除學生信息:

在這裡插入圖片描述

修改學生信息如圖:

在這裡插入圖片描述

在這裡插入圖片描述

4.7參考文獻

【1】c語言從入門到精通2020版。

5體會與感想

學習的過程很漫長,隻有依靠自己的慢慢摸索,在過程中總結出經驗才是學習中最重要的事情。

6附錄

附錄
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int sum;
typedef struct//定義瞭一個結構體變量 
{
	char stu_name[10];	//表示姓名
	int stu_id;			//表示學號
	double stu_math;		//高數成績 
	double stu_english;		//大學英語成績 
} student;
student all_stu[10];
int stu_number=0;//定義瞭學生的人數 
int main()
{
	void first();//一號條件 
	void secend();//二號條件 
	void third();//三號條件 
	void fourth();//四號條件
	void fifth();
	int q;
	do
	{
		printf("\n\n\n\n");
		printf("\t\t=====================學生成績管理系統=================\n");
		printf("\t\t*                                                    *\n");
		printf("\t\t*          1. 輸入學生成績                           *\n");
		printf("\t\t*          2. 查找學生成績                           *\n");
		printf("\t\t*          3. 顯示所有成績                           *\n");
		printf("\t\t*          4. 刪除學生成績                           *\n");
		printf("\t\t*          5. 修改學生成績                           *\n"); 
		printf("\t\t*          0. 退出管理系統                           *\n");
		printf("\t\t*                                         歡迎使用! *\n");
		printf("\t\t=======================================================\n");
		printf("\t\t輸入你的選項:");
		scanf("%d",&q);
		switch(q)
		{
			case 1:
				first();
				printf("按任意鍵回菜單");
				getchar();
				system("cls");//表示轉移號 
				break;
			case 2:
			    secend();
			    getchar();
			    printf("按任意鍵回菜單");
			    getchar();
			    system("cls");
			    break;
			case 3:
			third();
			getchar();
			printf("\n請按任意鍵返回主菜單\n");
			getchar();
			system("cls");
			break;
			case 4:
			fourth();
			getchar();
			printf("\n按任意鍵返回主菜單\n");
			getchar();
			system("cls");
			break;
			case 5:
				fifth();
				getchar();
				printf("\n按任意鍵回主菜單\n");
				getchar();
				system("cls");
				break;
		}
	}while(q);
	return 0;
 } 
 void first()
{
thefirst:
	system("cls");
	printf("********************************輸入學生信息*********************************");
	printf("\n\n");
	int cw,temp,hh;
	char op;
	stu_number++; 
	printf("\n>>>>>>>>請輸入姓名: ");
	scanf("%s",all_stu[stu_number].stu_name);
	printf("\n>>>>>>>>請輸入學號: ");
	scanf("%d",&temp);
	all_stu[stu_number].stu_id=temp;
	getchar();//接收一個空格 
	printf("\n>>>>>>>>請輸入高等數學成績(小於等於100):");
	scanf("%lf",&all_stu[stu_number].stu_math);
	if (all_stu[stu_number].stu_math> 100)
	{
		printf("輸入有誤,請輸入正確的成績信息,請按(Y)重新輸入: ");
		getchar();
		cw = getchar();
		if (cw =='y'|| cw =='Y')
			goto thefirst;
	}
	printf("\n>>>>>>>>請輸入大學英語成績(小於等於100):");
	scanf("%lf", &all_stu[stu_number].stu_english);
	if (all_stu[stu_number].stu_english> 100)
	{
		printf("輸入有誤,請輸入正確的成績信息,請按(Y)重新輸入: ");
		getchar();//接收Y 
		cw = getchar();
		if (cw == 'y' || cw == 'Y')
			goto thefirst;
	}
	thefirstone:
	printf("\n是否繼續輸入,如是請按(Y),否請按(N): ");
	getchar();
	scanf("%c", &op);
	if (op == 'y' || op == 'Y')
		goto thefirst;
	if (op == 'n' || op == 'N')
		goto thefirstend;
	else
		goto thefirstone;
	getchar();
thefirstend:;
	getchar();//輸入任意數結束 
}
 void secend()
{
thesecend:
	system("cls");
	printf("\n\n**************************查找學生成績*************************");
	int data,cw,j,flag=0;
	char op;
	printf("\n>>>>>>>>請輸入要查找學生的學號:");
	scanf("%d",&data);
	for (j=1;j<=stu_number;j++)
	{
		if(data==all_stu[j].stu_id)
		{
			flag=1;
			break;
		}
	}
	if (flag==0)
	{
		printf("未查找到此學號,重新輸入請按(Y),如不需要請按(N)將返回主菜單: ");
		getchar();
		cw=getchar();
		if (cw=='y'||cw=='Y')
			goto thesecend;
		if (cw == 'n' || cw == 'N')
			goto thesecendend;
	}
	else
	{
		for(j=1;j<=stu_number;j++){
		printf("\n***********************************************");
		printf("\n*姓名___: ");
		printf("%s",all_stu[j].stu_name);
		printf("\n*學號___: ");
		printf("%d",all_stu[j].stu_id);
		printf("\n*高數_: ");
		printf("%.2lf", all_stu[j].stu_math);
		printf("\n*大學英語_: ");
		printf("%.2lf", all_stu[j].stu_english);
		printf("\n************************************************");
	}
	}
thesecendone:
	getchar();
	printf("\n輸入錯誤,是否繼續查閱?\n需要按(Y),如不需要按(N),將返回主界面:");
	scanf("%c",&op);
	if (op =='y' || op =='Y')
		goto thesecend;
	if (op =='n' || op =='N')
		goto thesecendend;
	else
		goto thesecendone;
thesecendend:;
}
void third()
{
thethird:
	system("cls");
	printf("\n\n*********************顯示學生信息******************************");
	int n=1;
	printf("\n\n>>>姓名");
	printf("\t學號");
	printf("\t高等數學");
	printf("\t大學英語");
	//for (n=0;n<stu_number;n++);
	do
	{
		printf("\n>>%s", all_stu[n].stu_name);
		printf("\t%d", all_stu[n].stu_id);
		printf("\t%.2lf", all_stu[n].stu_math);
		printf("\t%.2lf", all_stu[n].stu_english);
		n++;
	} while (n<=stu_number);
}
void fourth()
{
thefourth:
	system("cls");
	printf("\n\n\n\n********************刪除學生成績**********************"); 
	int num,cw,cx,ai,i=0;
	char op;
	printf("\n>>>>>>>>請輸入要查找學生的學號: ");
	scanf("%d",&num);
	for (ai=1;ai<=stu_number;ai++)
	{
		if (num==all_stu[ai].stu_id)
		{
			i=1;
			break;
		}
	}
	if (i==0)
	{
		printf("未查找到要刪除的學生信息,是否要重新輸入,如需要重新輸入請按(Y),如不需要請按(N)將返回主菜單: ");
		getchar();
		cw = getchar();
		if (cw == 'y' || cw == 'Y')
			goto thefourth;//回到開始 
		if (cw == 'n' || cw == 'N')
			goto thefourthend;//回到結尾 
	}
	else
	{
		stu_number--;//人數減一 
		for (;ai<stu_number;ai--)
		{
			all_stu[ai] = all_stu[ai+1];//後面的數據往前推 
		}
	}
	printf("\n\n此學號的學生成績信息已刪除");
	getchar();
thefourthone:
	getchar();
	printf("\n刪除的成績信息以刪除,是否繼續?\n需要請(Y),如不需要請(N),將返回主界面: ");
	scanf("%c", &op);
	if (op == 'y' || op == 'Y')
		goto thefourth;
	if (op == 'n' || op == 'N')
		goto thefourthend;
	else
		goto thefourthone;
thefourthend:;
}
void fifth()//修改成績 
{
thefifth:
	system("cls");
	printf("**************************修改學生成績*************************");
	printf("\n\n");
	int num,cw,cx,ai,i = 0, cy, temp;
	char op;
	printf("\n>>>>>>>>請輸入要查找學生的學號: ");
	scanf("%d", &num);
	for (ai=1; ai<=stu_number; ai++)
	{
		if (num ==all_stu[ai].stu_id)
		{
			i = 1;
			break;
		}
	}
	if (i == 0)
	{
		printf("未查找到要修改的學生信息,重新輸入按Y,返回主菜單按N ");
		getchar();
		cw = getchar();
		if (cw == 'y' || cw == 'Y')
			goto thefifth;
		if (cw == 'n' || cw == 'N')
			goto thefifthend;
	}
	else
	{

		printf("***************************************************************************");
		printf("\n*姓名___: ");
		printf("%s", all_stu[ai].stu_name);
		printf("\n*學號___: ");
		printf("%d", all_stu[ai].stu_id);
		printf("\n*高數成績: ");
		printf("%.2lf", all_stu[ai].stu_math);   
		printf("\n*大學英語成績: ");
		printf("%.2lf",all_stu[ai].stu_english);
		printf("\n***************************************************************************");
	}
	getchar();
	printf("\n\n是否確認修改此學生成績信息?(註:修改後將不可還原)如需修改請按Y,如不需修改學生信息請安N返回主菜單: ");
thefifthone:
	cw = getchar();
	if (cw == 'y' || cw == 'Y')
		goto thefifthtwo;
	if (cw == 'n' || cw == 'N')
		goto thefifthend;
	else
		goto thefifthone;
thefifthtwo:
	system("cls");
	printf("\n>>>>>>>>請輸入姓名: ");
	scanf("%s", all_stu[ai].stu_name);
	printf("\n>>>>>>>>請輸入學號: ");
	scanf("%d",&temp);
	all_stu[ai].stu_id = temp;
	getchar();
	for (cy = 0; cy < ai; cy++)
	{
		if (all_stu[ai].stu_id == all_stu[cy].stu_id)
		{
			printf("學號輸入錯誤,如需重新輸入請按(Y)退出請按(N)");
			cw = getchar();
			if (cw == 'y' || cw == 'Y')
				goto thefifthtwo;
			else
				goto thefifthend;
		}
	}
	printf("\n>>>>>>>>請輸入第一門成績(小於100): ");
	scanf("%lf", &all_stu[ai].stu_math);
	if (all_stu[ai].stu_math > 100)
	{
		printf("輸入有誤,請按(Y)重新輸入: ");
		getchar();
		cw = getchar();
		if (cw == 'y' || cw == 'Y')
			goto thefifthtwo;
	}
	printf("\n>>>>>>>>請輸入第二門成績(小於100): ");
	scanf("%lf", &all_stu[ai].stu_english);
	if (all_stu[ai].stu_english > 100)
	{
		printf("輸入有誤,請按(Y)重新輸入: ");
		getchar();
		cw = getchar();
		if (cw == 'y' || cw == 'Y')
			goto thefifthtwo;
	}
	printf("\n\n");
	printf("\n OK 此學生成績信息已修改完成,感謝您的使用。");
thefifthfanhui:
	getchar();
	printf("\n成績信息已修改,是否繼續?\n需要請按Y,如不需要請按Y,將返回主菜單: ");
	scanf("%c", &op);
	if (op == 'y' || op == 'Y')
		goto thefifth;
	if (op == 'n' || op == 'N')
		goto thefifthend;
	else
		goto thefifthfanhui;
thefifthend:;
}

by:一個剛剛學習c語言的大學生~~

到此這篇關於C語言不用鏈表完成學生管理系統(完整代碼)的文章就介紹到這瞭,更多相關c語言學生管理系統內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀:

    None Found