国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

C語(yǔ)言課程設(shè)計(jì)——學(xué)生成績(jī)管理系統(tǒng)(詳細(xì)報(bào)告)

megatron / 2476人閱讀

摘要:概要設(shè)計(jì)功能設(shè)計(jì)該學(xué)生成績(jī)管理系統(tǒng)可以按功能進(jìn)行模塊劃分,其模塊圖如圖所示。

歡迎來(lái)到的博客。我是小魏,一名普通的在校大學(xué)生。希望大家多多關(guān)照,我們一起成長(zhǎng)一起進(jìn)步,也希望大家多多支持我鴨,喜歡我就給我一個(gè)關(guān)注吧!

題目:學(xué)生成績(jī)管理系統(tǒng)
學(xué)生數(shù)據(jù)由學(xué)號(hào)、姓名、班級(jí)、三門課(數(shù)學(xué)、英語(yǔ)、計(jì)算機(jī))的成績(jī)和平均成績(jī)構(gòu)成。 實(shí)現(xiàn)功能包括:
(1)添加學(xué)生的記錄
(2)查詢學(xué)生(分別按學(xué)號(hào)和姓名)
(3)對(duì)學(xué)生數(shù)據(jù)排序(按總成績(jī)的降序)
(4)刪除學(xué)生記錄
(5)修改學(xué)生記錄
(6)班級(jí)成績(jī)分析(各科平均成績(jī)、最高分、最低分、及格率)
(7)輸出學(xué)生信息表(全部學(xué)生成績(jī)信息顯示或按班級(jí)顯示學(xué)生成績(jī)信息)

1. 用戶分析

1.1用戶需求

(1)學(xué)生信息包括學(xué)號(hào)、姓名、班級(jí)和所學(xué)三門課程(數(shù)學(xué)、英語(yǔ)、計(jì)算機(jī))的成績(jī) 和平均成績(jī)(每位學(xué)生的平均分和各科平均分)以及各科成績(jī)的最低分和最高分、及格 率;
(2)學(xué)生信息管理系統(tǒng)以菜單方式工作;
(3)錄入的學(xué)生信息用文件形式保存,并可以對(duì)其進(jìn)行添加、查詢、數(shù)據(jù)排序(按總 分)、修改、成績(jī)分析、刪除等基本操作;
(4)按學(xué)號(hào)查詢學(xué)生信息,或按姓名查詢;
(5)按學(xué)號(hào)修改學(xué)生信息并保存到文件中;
(6)輸出學(xué)生信息表(全部學(xué)生成績(jī)信息顯示或按班級(jí)顯示學(xué)生成績(jī)信息);
(7)用戶使用過(guò)程中能夠要有容錯(cuò)處理。

1.2用戶目的

設(shè)計(jì)一個(gè)學(xué)生成績(jī)管理系統(tǒng),使之能提供以下功能:
(1)添加學(xué)生信息;
(2)查詢學(xué)生信息(分別按學(xué)號(hào)和姓名);
(3)對(duì)學(xué)生的成績(jī)進(jìn)行排序(按總分降序);
(4)修改學(xué)生信息;
(5)刪除學(xué)生信息;
(6)按本專業(yè)學(xué)生成績(jī)分析和按班級(jí)成績(jī)分析(各科平均成績(jī)、最高分、最低分、及 格率);
(7)輸出學(xué)生信息表;
(8)學(xué)生信息保存到文件中。

2.概要設(shè)計(jì)

2.1功能設(shè)計(jì)

該學(xué)生成績(jī)管理系統(tǒng)可以按功能進(jìn)行模塊劃分,其模塊圖如圖1所示。

2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

學(xué)號(hào),15個(gè)字符;
姓名,10個(gè)字符;
班級(jí),正整數(shù);
各科分?jǐn)?shù),無(wú)小數(shù)點(diǎn);
總分,無(wú)小數(shù)點(diǎn);
各科平均分,小數(shù)點(diǎn)后兩位;
各科及格率,小數(shù)點(diǎn)后兩位;
各科最低分,無(wú)小數(shù)點(diǎn);
各科最高分,無(wú)小數(shù)點(diǎn);
在處理過(guò)程中各項(xiàng)可以作為一個(gè)學(xué)生的不同屬性來(lái)進(jìn)行處理;整體作為一張二維表進(jìn)行處理,因此,采用結(jié)構(gòu)數(shù)組。

2.3功能運(yùn)行流程圖

系統(tǒng)的執(zhí)行應(yīng)從功能菜單的選擇開始,依據(jù)用戶的選擇來(lái)進(jìn)行后續(xù)的處理,直到用戶選擇保存數(shù)據(jù)并退出系統(tǒng)為止,其間應(yīng)對(duì)用戶的選擇做出判斷及異常處理。系統(tǒng)的流程圖如圖2所示。

3.系統(tǒng)功能設(shè)計(jì)

3.1菜單選擇模塊的流程圖

菜單選擇功能中,通過(guò)輸入不同的數(shù)字(1-6)來(lái)進(jìn)行菜單選擇,實(shí)現(xiàn)不同的程序結(jié)果,直到用戶輸入數(shù)字6時(shí),就直接退出系統(tǒng)。菜單選擇模塊的流程圖如圖3所示。

3.2添加模塊的流程圖

添加學(xué)生信息模塊中,實(shí)現(xiàn)添加學(xué)生的班級(jí)、姓名、學(xué)號(hào)和三門成績(jī)(數(shù)學(xué)、英語(yǔ)、計(jì)算機(jī))的輸入,直到用戶輸入x為0時(shí),則結(jié)束當(dāng)前輸入,并返回上級(jí)主菜單。添加模塊的流程圖如圖4所示。

3.3排序輸出模塊的流程圖

輸出模塊中,先判斷鏈表大小list->size是否為0,若不為空,進(jìn)入菜單選擇輸入不同的數(shù)字(1-3),若用戶輸入1,則實(shí)現(xiàn)本專業(yè)學(xué)生成績(jī)的輸出,若輸入2,則按班級(jí)輸出學(xué)生信息,直到用戶輸入數(shù)字3時(shí),結(jié)束當(dāng)前信息的輸出,并返回上級(jí)主菜單。輸出模塊的流程圖如圖5所示。

3.4執(zhí)行模塊的流程圖

3.4.1信息查詢模塊的流程圖

通過(guò)菜單選擇,輸入不同的數(shù)字(1-3)實(shí)現(xiàn)不同的方式進(jìn)行查詢,若輸入數(shù)字1,按學(xué)號(hào)進(jìn)行查詢學(xué)生信息,輸入數(shù)字2,按姓名查詢學(xué)生信息,輸入數(shù)字3,結(jié)束信息查詢功能,返回上級(jí)主菜單。查詢模塊的流程圖如圖6所示。

3.4.2信息修改模塊的流程圖

先進(jìn)行判斷鏈表是否為空,若不為空,就能進(jìn)行輸入學(xué)生的學(xué)號(hào);然后,再進(jìn)行判斷是否有用戶輸入的學(xué)號(hào),若沒(méi)有,則返回學(xué)號(hào)輸入,再進(jìn)行重新輸入學(xué)號(hào)。若在鏈表中的數(shù)據(jù)
存在用戶輸入的學(xué)號(hào),則輸出該學(xué)生的信息,之后進(jìn)行菜單選擇,可輸入不同的數(shù)字(1-5),用戶可選擇想修改的的數(shù)據(jù),直到該用戶輸入數(shù)字5時(shí),返回上級(jí)主菜單。信息修改模塊流程圖如圖7所示。

3.4.3信息刪除模塊的流程圖

進(jìn)入該程序運(yùn)行中,需判斷鏈表大小list->size是否為0,若為0,則結(jié)束信息刪除操作;若不為0,將進(jìn)入學(xué)號(hào)輸入操作;然后判斷鏈表數(shù)據(jù)中是否存在用戶輸入的學(xué)號(hào)id,若不存在,進(jìn)入退出選擇操作,用戶可輸入0或其他數(shù)字,若輸入0,則返回上級(jí)菜單;若輸入其他數(shù)字,則該學(xué)生的信息將在鏈表中清除并釋放該空間。若該用戶繼續(xù)進(jìn)行刪除操作,可輸入其他數(shù)字鍵;若輸入0,直接退出該程序并返回上級(jí)主菜單。信息刪除模塊的流程圖如圖8所示。

3.4.4信息保存模塊的流程圖

在保存數(shù)據(jù)之前,首先需打開文件,然后判斷文件是否為空,若為空就會(huì)提示該文件打開失敗,直接結(jié)束整個(gè)程序運(yùn)行;若文件不為空,進(jìn)行判斷鏈表的頭節(jié)點(diǎn)是否為空,若頭節(jié)點(diǎn)為空,則直接關(guān)閉該文件并結(jié)束程序,若頭節(jié)點(diǎn)不為空,將鏈表數(shù)據(jù)保存到文件中,直到尾節(jié)點(diǎn)為空,就會(huì)關(guān)閉該文件并退出系統(tǒng)。信息保存模塊的流程圖如圖9所示。

3.5數(shù)據(jù)結(jié)構(gòu)的C語(yǔ)言表示

學(xué)生信息:

struct Student{	  	int class_num; 		//班級(jí)		char id[15];			//學(xué)號(hào)		char name[10];		//姓名		float score[3];			//各科分?jǐn)?shù)		float sum; 			//總成績(jī)float course_av[3];		//各科平均分float course_pass[3];	//各科及格率float course_max[3];	//各科最低分float course_min[3];	//各科最高分};

4.系統(tǒng)功能代碼設(shè)計(jì)

4.1代碼編寫要求

⑴鋸齒型程序書寫格式
⑵變量說(shuō)明
⑶函數(shù)功能、入口及出口參數(shù)說(shuō)明
⑷關(guān)鍵處有足夠的注釋

4.2自定義頭文件的內(nèi)容設(shè)計(jì)

代碼1:

/* 文件list.h */#ifndef  _LIST_H_			//防止重復(fù)編譯,_LIST_H_為符號(hào)常量#define  _LIST_H_struct Student{				int class_num; 				char id[15];					char name[10];				float score[3];					float sum; 			float course_av[3];		float course_pass[3];	float course_max[3];	float course_min[3];	};struct Node{					struct Student student;	struct Node *next;};struct List{					struct Node *head;						//頭節(jié)點(diǎn)設(shè)計(jì)	int size;};struct List* createList();						//創(chuàng)建鏈表void destoryList(struct List *list);				//銷毀鏈表struct Node* createNode(struct Student student);	//創(chuàng)建節(jié)點(diǎn) struct Node* getLastNode(struct List *list);		//獲取鏈表最后一個(gè)節(jié)點(diǎn)struct Node* getBeforeNode(struct List *list,struct Student student);	//獲取上一個(gè)節(jié)點(diǎn)void addList(struct List *list, struct Node *node);		//將節(jié)點(diǎn)添加到鏈表中 #endif

代碼2:

/* 文件fun.h */#ifndef  _FUN_H_						//防止重復(fù)編譯,_FUN_H_為符號(hào)常量#define  _FUN_H_void Menu(); 	//菜單欄FILE* openFile(char *filename,char *type);		//打開文件void fileToList(struct List *list,char *filename);	//文件數(shù)據(jù)添加到鏈表中  void listToFile(struct List *list,char *filename);	//將鏈表數(shù)據(jù)存儲(chǔ)到文件中void input(struct List *list);					//添加學(xué)生信息void sort(struct List *list);					//按總成績(jī)排序void output(struct List *list);					//輸出學(xué)生信息void find(struct List *list);					//查找學(xué)生信息void detail(struct Node *temp);				//修改具體細(xì)節(jié) void change(struct List *list);					//修改學(xué)生信息 void Delete(struct List *list);					//刪除void quit();								//退出畫面#endif	

4.3設(shè)計(jì)鏈表的代碼清單

//創(chuàng)建鏈表 struct List* createList(){	struct List *list;	list=(struct List*)malloc(sizeof(struct List));	list->head=NULL;	list->size=0;	return list;}//銷毀鏈表 void destoryList(struct List *list){	struct Node *temp=list->head,*del=NULL;	while(temp)	{		del=temp;		temp=temp->next;		free(del);//釋放節(jié)點(diǎn)空間 		list->size--; 	}	free(list);//釋放鏈表空間 }//創(chuàng)建節(jié)點(diǎn) struct Node* createNode(struct Student student){	struct Node *node=NULL;	node=(struct Node*)malloc(sizeof(struct Node));	node->student=student;	node->next=NULL;	return node;}//獲取鏈表最后一個(gè)節(jié)點(diǎn) struct Node* getLastNode(struct List *list){	struct Node *temp=list->head,*last=NULL;	while(temp)	{		last=temp;		temp=temp->next;	}	return last;}//獲取當(dāng)前節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn) struct Node* getBeforeNode(struct List *list,struct Student student){	struct Node *temp=list->head,*prevNode=NULL;	while(temp)	{		if(strcmp(temp->student.id,student.id)==0)		{			break;		}		prevNode=temp;		temp=temp->next;	}	return prevNode;}//將節(jié)點(diǎn)添加到鏈表中 void addList(struct List *list, struct Node *node){	struct Node *last; 	if(list->head==NULL) 	{ 		list->head=node; 	} 	else 	{	 	last=getLastNode(list);		last->next=node;	 	} 	list->size++;}

4.4菜單選擇模塊的代碼清單

int main(){	int num=0;	FILE*file=NULL;	struct List *list=NULL;	list=createList();	//創(chuàng)建鏈表 	fileToList(list,"studentFile.txt");//把數(shù)據(jù)添加到鏈表中 	SetConsoleTitle("學(xué)生成績(jī)管理系統(tǒng)");	void Menu()	{		printf("******學(xué)生成績(jī)管理系統(tǒng)****/n"); 		printf("******1.添加學(xué)生信息******/n"); 		printf("******2.輸出學(xué)生信息******/n");		printf("******3.查詢學(xué)生信息******/n");		printf("******4.修改學(xué)生信息******/n");		printf("******5.刪除學(xué)生信息******/n");		printf("******6.保存后退出********/n");		printf("請(qǐng)選擇:");	}	while(1)	{		system("cls");	//清屏 		Menu();			//菜單欄 		scanf("%d",&num);		switch(num){			case 1:				system("cls");				input(list); //添加 			 	printf("請(qǐng)輸入任意數(shù)字鍵/n返回上級(jí)菜單:");			 	scanf("%d",&num);				break;			case 2:				system("cls");				output(list); //輸出				break; 			case 3:				system("cls");				find(list);	//查詢				break; 			case 4:				system("cls");				change(list); //修改 				break;			case 5:				system("cls");				Delete(list); //刪除 				break;			case 6: 				system("cls");				listToFile(list,"studentFile.txt");//數(shù)據(jù)保存到文件中 				destoryList(list); // 銷毀鏈表				quit();		 //退出畫面 				exit(0);			default:				printf("輸入有誤,請(qǐng)重新選擇!/n");				printf("請(qǐng)輸入任意數(shù)字鍵/n返回上級(jí)菜單:");			 	scanf("%d",&num);				break;		} 	}	return 0;}

4.5添加模塊的代碼清單

void input(struct List *list){	struct Student student; 	struct Node *node=NULL;    //建立新節(jié)點(diǎn)	struct Node *temp;			  //建立新節(jié)點(diǎn)	int x,i,flag;	while(1)	{		flag=1;		printf("-->請(qǐng)輸入該學(xué)生信息的班級(jí)、學(xué)號(hào)、姓名<--/n-->");	 	scanf("%d %s %s",&student.class_num,student.id,student.name);		temp=list->head;			//當(dāng)前鏈表的下一個(gè)節(jié)點(diǎn)		while(temp)				{			if(strcmp(temp->student.id,student.id)==0)		//限定學(xué)號(hào)唯一				{				printf("您輸入的學(xué)號(hào)已存在!/n");				flag=0;			}			temp=temp->next;	//鏈表的下一個(gè)節(jié)點(diǎn)		}		if(flag)		{			printf("-->請(qǐng)輸入該學(xué)生的每門成績(jī)<--/n數(shù)學(xué):");			scanf("%f",&student.score[0]);			printf("英語(yǔ):");			scanf("%f",&student.score[1]);			printf("計(jì)算機(jī):");			scanf("%f",&student.score[2]);			student.sum=0;			for(i=0;i<3;i++)			{				student.sum+=student.score[i];			}	 		node=createNode(student);	//創(chuàng)建節(jié)點(diǎn) 	 		addList(list,node);			//添加到鏈表 		}	 	printf("退出請(qǐng)按數(shù)字0,其他數(shù)字鍵繼續(xù)添加:");	 	scanf("%d",&x);	 	if(x==0)break; 	} }

4.6排序輸出模塊的代碼清單

//按總成績(jī)排序 void sort(struct List *list){	int i,j; 	struct Student s;		struct Node *temp=NULL,*temp1=NULL,*temp2=NULL;  //建立新節(jié)點(diǎn)	for(i=0;i<list->size-1;i++)	{		temp=list->head;					             //當(dāng)前鏈表的下一個(gè)節(jié)點(diǎn)		for(j=0;j<list->size-i-1;j++)		{			temp1=temp;			temp2=temp->next;			//新建鏈表的下一個(gè)節(jié)點(diǎn)			if(temp1->student.sum<temp2->student.sum)  			{				s=temp1->student;				temp1->student=temp2->student;				temp2->student=s;			}			temp=temp->next;			//當(dāng)前鏈表的下一個(gè)節(jié)點(diǎn)		}	}}//輸出學(xué)生信息 void output(struct List *list){	int cnt=0,num=0,class_num=0,i;		float av_math,av_eng,av_se;		        //數(shù)學(xué)、英語(yǔ)、計(jì)算機(jī)平均分	float pass[3],min[3],max[3];				//及格率、最低分、最高分	struct Node *temp=list->head;			//把新節(jié)點(diǎn)作為頭結(jié)點(diǎn)	if(list->size==0)						//若鏈表空間大小           
               
                                           
                       
                 

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/122005.html

相關(guān)文章

  • 2018 PHP面試真題(包括詳細(xì)解析)

    摘要:以下題目和解析分別來(lái)源于我的新書程序員面試筆試寶典程序員面試筆試真題解析。類通過(guò)一個(gè)簡(jiǎn)單的外部接口與外界發(fā)生關(guān)系,對(duì)象與對(duì)象之間通過(guò)消息進(jìn)行通信。真題獲得實(shí)例化對(duì)象所屬類名字的函數(shù)是。 以下題目和解析分別來(lái)源于我的新書《PHP程序員面試筆試寶典》、《PHP程序員面試筆試真題解析》。 1、PHP常考基礎(chǔ) 1、PHP與ASP、JSP有什么區(qū)別?ASP全名Active Server Page...

    pubdreamcc 評(píng)論0 收藏0
  • python初學(xué)——面向?qū)ο缶幊套鳂I(yè):學(xué)校選課系統(tǒng)

    摘要:如上海北京等管理員自己創(chuàng)建其他地方的學(xué)校管理員創(chuàng)建的課程。包含名字性別年齡等學(xué)員查詢可上課程學(xué)員選課,選擇學(xué)校課程,并付款。課程價(jià)格,周期課程價(jià)格,周期課程價(jià)格,周期創(chuàng)建講師屬于北京校區(qū),屬于上海校區(qū)。 作業(yè)需求 創(chuàng)建北京、上海 2 所學(xué)校 創(chuàng)建linux , python , go 3個(gè)課程,linuxpy在北京開, go 在上海開 課程包含,周期,價(jià)格,通過(guò)學(xué)校創(chuàng)建課程 通過(guò)學(xué)校...

    kbyyd24 評(píng)論0 收藏0
  • SCORM標(biāo)準(zhǔn)應(yīng)用編程接口(API)和數(shù)據(jù)模型(Data Model)學(xué)習(xí)及總結(jié)

    摘要:需要對(duì)每個(gè)用戶的每個(gè)內(nèi)容對(duì)象維護(hù)一個(gè)數(shù)據(jù)結(jié)構(gòu)。并沒(méi)有直接和相連,所以是將數(shù)據(jù)由暫存的內(nèi)存中取出。采用實(shí)現(xiàn)的可用進(jìn)行數(shù)據(jù)提交。記錄的完成情況,包括未嘗試未學(xué)習(xí)未完成,已完成。 簡(jiǎn)介 SCORM定義了一個(gè)網(wǎng)絡(luò)化學(xué)習(xí)的內(nèi)容聚合模型(Content Aggregaion Model)和學(xué)習(xí)對(duì)象的實(shí)時(shí)運(yùn)行環(huán)境(Run-time Environment)。簡(jiǎn)單說(shuō),它是為了滿足對(duì)網(wǎng)絡(luò)化學(xué)習(xí)內(nèi)容的高水...

    ThinkSNS 評(píng)論0 收藏0
  • 大學(xué)學(xué)習(xí)路線規(guī)劃建議貼

    摘要:不過(guò),蘋果實(shí)驗(yàn)室作為計(jì)算機(jī)學(xué)院的學(xué)習(xí)類組織,撰寫此貼的內(nèi)容集中于本科期間學(xué)習(xí)路線的宏觀規(guī)劃建議。其中主要問(wèn)題大概是初入大學(xué)的迷茫與美好大學(xué)愿景之間的矛盾自主學(xué)習(xí)能力的欠缺與遠(yuǎn)大志向的矛盾。 ...

    niceforbear 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<