真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C語言期末大作業(yè)-學生成績管理系統(tǒng)(完整源碼+設計報告)-創(chuàng)新互聯(lián)

C語言-學生成績管理系統(tǒng)
  • 一、學生成績管理系統(tǒng)源碼(完整)
  • 二、程序設計報告
    • 1、課程設計目的
    • 2、課程設計任務與要求:
    • 4、課程設計成果(運行截圖)
    • 5、課程設計心得

創(chuàng)新互聯(lián)專注于企業(yè)成都營銷網(wǎng)站建設、網(wǎng)站重做改版、南岔網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、html5商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設、外貿(mào)網(wǎng)站建設、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為南岔等各大城市提供網(wǎng)站開發(fā)制作服務。一、學生成績管理系統(tǒng)源碼(完整)
#include#include#include#define LEN sizeof(struct Student)
struct Student 
{int clas;
	int num;
	char name[20];
	char cou[20];
	int score;
	struct Student *next;
};

struct Student *creat(void)
{struct Student *head;
	struct Student *p1,*p2;
	int n=0;
	printf("班級 學號 姓名 課程 得分(輸入0 0 0 0 0結(jié)束):\n");
	p1=p2=(struct Student*)malloc(LEN);
	scanf("%d%d%s%s%d",&p1->clas,&p1->num,p1->name,p1->cou,&p1->score);
	head=NULL;
	while(p1->num!=0)
	{n=n+1;
		if(n==1)head=p1;
		else p2->next=p1;
		p2=p1;
		p1=(struct Student*)malloc(LEN);
		scanf("%d%d%s%s%d",&p1->clas,&p1->num,p1->name,p1->cou,&p1->score);
	}
	p2->next=NULL;
	return(head);
}

void shuchu(struct Student *pt)
{printf("\n");
	printf("班級 學號 姓名 課程 得分:\n");
	while (pt!=NULL)
	{printf("%-5d%-5d%-5s%-5s%-5d\n",pt->clas,pt->num,pt->name,pt->cou,pt->score);
	pt=pt->next;
	}
	printf("\n");
}

void add(struct Student *pt)
{struct Student *p1,*p2,*head;
	head=pt;
	printf("請輸出你要添加的學生信息:\n");
	while(pt->next!=NULL)
	{pt=pt->next;	
	}
	p1=p2=pt;
	printf("班級 學號 姓名 課程 得分(輸入0 0 0 0 0結(jié)束):\n");
	do
	{p1=(struct Student*)malloc(LEN);
		scanf("%d%d%s%s%d",&p1->clas,&p1->num,p1->name,p1->cou,&p1->score);
		p2->next=p1;
		p2=p1;
	}while(p1->num!=0);
	p2->next=NULL;
	shuchu(head);	
}

void del(struct Student *pt)
{int n;	
	printf("請輸入你要刪除的學生的學號:\n");
	scanf("%d",&n);
	if(n==pt->num)
	{pt->next=pt->next->next;
		printf("已刪除學生信息\n");
	}
	while(n!=(pt->next)->num)
	{pt=pt->next;
	}
	pt->next=pt->next->next;
	printf("已刪除學生信息\n");
	printf("\n");
}


void order(struct Student *pt)
{struct Student *first,*t,*p,*q;

	first=pt->next;
	pt->next=NULL;
	while(first!=NULL)
	{for(t=first,q=pt;((q!=NULL)&&(q->scorescore));p=q,q=q->next);
		first = first->next;
		if(q==pt)
			pt=t;
		else
			p->next=t;
		t->next=q;
	}
	shuchu(pt);
}


void max(struct Student *pt)
{struct Student *max;
	max=pt;
	while(pt->next!=NULL)
	{if((max->score)<(pt->next->score))
		{	max=pt->next;
		}
			pt=pt->next;
	}
	printf("\n");
	printf("班級 學號 姓名 課程 得分:\n");
	printf("%-5d%-5d%-5s%-5s%-5d\n",max->clas,max->num,max->name,max->cou,max->score);
	printf("\n");
}

void min(struct Student *pt)
{struct Student *min;
	min=pt;
	while(pt->next!=NULL)
	{if((min->score)>(pt->next->score))
		{	min=pt->next;
		}
		pt=pt->next;
	}
	printf("\n");
	
	printf("班級 學號 姓名 課程 得分:\n");
	
	printf("%-5d%-5d%-5s%-5s%-5d\n",min->clas,min->num,min->name,min->cou,min->score);
	printf("\n");
}

void aver(struct Student *pt)
{int n=0;
	float aver,sum=0.0;
	while(pt!=NULL)
	{sum+=pt->score;
		n++;
		pt=pt->next;
	}
	aver=(float)sum/n;
	printf("\n");
	printf("平均分:%f\n",aver);
	printf("\n");
}

void jigelv(struct Student *pt)
{int n=0;
	float jigelv=0.0,s=0.0;
	while(pt!=NULL)	
	{if((pt->score)>=60)
		{	n++;
		}
		s++;
		pt=pt->next;
	}
	jigelv=n/s*100;
	printf("\n");
	printf("及格率:百分之%f",jigelv);
	printf("\n");
}

void search(struct Student *pt)
{void num(struct Student *pt);
	void name(struct Student *pt);
	void cou(struct Student *pt);
	int n;
	printf("\n");
	printf("請輸入你要查詢學生的 1 學號 2 姓名 3 課程名:\n");
	scanf("%d",&n);
	switch(n)
	{case 1:num(pt);break;
	case 2:name(pt);break;
	case 3:cou(pt);break;
	default:printf("error!\n");
	}
}

void num(struct Student *pt)
{int n;
	printf("\n");
	printf("請輸入你要查詢學生的學號:\n");
	scanf("%d",&n);
	while(pt->num!=n)
	{pt=pt->next;
	}
	printf("班級 學號 姓名 課程 得分:\n");
	printf("\n");
	printf("%-5d%-5d%-5s%-5s%-5d\n",pt->clas,pt->num,pt->name,pt->cou,pt->score);
}

void name(struct Student *pt)
{char name[20];
	scanf("%s",name);
	printf("\n");
	printf("請輸入你要查詢學生的姓名:\n");
	while(strcmp(pt->name,name)!=0)
	{pt=pt->next;
	}
	printf("班級 學號 姓名 課程 得分:\n");
	printf("\n");
	printf("%-5d%-5d%-5s%-5s%-5d\n",pt->clas,pt->num,pt->name,pt->cou,pt->score);
}

void cou(struct Student *pt)
{char cou[20];
	scanf("%s",cou);
	printf("\n");
	printf("請輸入你要查詢學生的課程名:\n");
	while(strcmp(pt->cou,cou)!=0)
	{pt=pt->next;
	}
	printf("班級 學號 姓名 課程 得分:\n");
	
	printf("\n");
	
	printf("%-5d%-5d%-5s%-5s%-5d\n",pt->clas,pt->num,pt->name,pt->cou,pt->score);
}

void save(struct Student *pt)
{FILE *fp;
	if((fp=fopen("D:\\student information.txt","w"))==NULL)
	{printf("can't open file!\n");
		exit(0);
	}
	while(pt!=NULL)
	{if(fwrite(pt,sizeof(struct Student),1,fp)!=1)
			printf("file write error\n");
		pt=pt->next;
	}
	printf("存儲完成\n");
	fclose(fp);
}

void main()
{FILE *fp;
	int i;
	struct Student *pt;
	pt=creat();
	
	if((fp=fopen("D:\\xia.txt","w"))==NULL)
	{printf("can't open file!\n");
		exit(0);
	}

	shuchu(pt);
	printf("請輸入你想要實現(xiàn)的功能的序號\n1 添加學生信息\n2 刪除學生信息\n3 學生成績排序\n4 最高分\n5 最低分\n6 平均分\n7 及格率\n8 查詢學生\n9 退出\n");
	for(;;)
	{scanf("%d",&i);
		switch(i)
		{case 1:add(pt);break;
		case 2:del(pt);break;
		case 3:order(pt);break;
		case 4:max(pt);break;
		case 5:min(pt);break;
		case 6:aver(pt);break;
		case 7:jigelv(pt);break;
		case 8:search(pt);break;
		case 9:exit(0);break;
		default:printf("error!\n");
		}
	}
	save(pt);
}
二、程序設計報告 1、課程設計目的

C語言程序設計課程設計是計算機科學與技術(shù)專業(yè)重要的實踐性教學環(huán)節(jié)之一,本次設計結(jié)合實際應用的要求,使課程設計既覆蓋C語言的知識點,又接近工程實際需要。目的是通過課程設計的綜合訓練,培養(yǎng)學生實際分析問題、解決問題的能力,以及編程和動手能力,最終目標是通過課程設計這種形式,幫助學生系統(tǒng)掌握C語言程序設計這門課程的主要內(nèi)容,養(yǎng)成良好的編程習慣,更好的完成教學任務。

2、課程設計任務與要求:

本次課程設計利用《C語言程序設計》課程中所學到的編程知識和編程技巧,完成具有一定難度和工作量的程序設計題目,幫助學生掌握編程、調(diào)試的基本技能,獨立完成所布置的任務。

要求:
1、對系統(tǒng)進行功能需求分析
2、設計合理的數(shù)據(jù)結(jié)構(gòu)和系統(tǒng)框架
3、編程簡練,程序功能齊全,能正確運行
4、說明書、流程圖要清楚
5、課題完成后必須按要求提交課程設計報告

任務:
設計一個學生成績排名系統(tǒng)
實現(xiàn)功能:

  1. 具備對成績的管理功能(添加、刪除、排序)
  2. 具備對成績的統(tǒng)計功能(最高分,最低分,平均分,及格率等)
  3. 具備按學號、姓名、或課程名查詢成績的功能。
    4)學生成績應該保存在文件中。
    備注:成績記錄以下信息:班級,學號,姓名,課程名,成績(百分制)??梢杂媚鼙硎緦W生成績的結(jié)構(gòu)體數(shù)組存儲數(shù)據(jù)。

概要設計
首先拿到這個課程題,學生成績管理系統(tǒng),數(shù)組或動態(tài)鏈表都可以去解決,我選擇了動態(tài)鏈表,在主函數(shù)中調(diào)用函數(shù)來達到功能的實現(xiàn)。函數(shù)包括添加,刪除,排序,最高分。最低風,及格率,平均分,查詢。都將以輸入的學生信息作為傳參。

詳細設計
1、因為不知道具體的學生人數(shù),所以我選擇了去使用動態(tài)鏈表去實現(xiàn)輸入學生信息的功能。
使用動態(tài)鏈表的時候,對于添加個人信息,刪除,排序等問題的難度比較大,需要好好思考問題的難點,再去設計算法解決。
2、題目所蘊含的功能包括添加,刪除,排序,最高分。最低風,及格率,平均分,查詢。這些功能選擇使用switch函數(shù)去進行分類輸入,分類調(diào)用。盡量使功能齊全方便。對于最高分,最低分,平均分,及格率這些問題。平時解決的也比較多一些常用辦法即可。對于添加個人信息,需要在動態(tài)鏈表的最后再加上個人信息,刪除和查詢感覺是一類問題,需要一一去匹配個人信息。排序在這里是個比較麻煩的問題,因為使用的是動態(tài)鏈表。所以比數(shù)組處理起來要麻煩一點。
3、以上的知識點大概要用到stdio,stdlib,string三個頭文件即可。
4、界面美觀簡潔即可。

圖1:

在這里插入圖片描述

ADD函數(shù): 將動態(tài)鏈表指向最后一個,然后在鏈表末尾創(chuàng)建新的空間去連接,再輸出新的鏈表。

圖2:

在這里插入圖片描述

DEL函數(shù):輸入學號 讓它和鏈表中的學號一一對比,

圖3:

在這里插入圖片描述

MAX函數(shù):擂臺算法 將第一個賦值給max 然后讓max與后面的比較,這樣可以不破壞原函數(shù)。

圖4:

在這里插入圖片描述

平均數(shù)函數(shù):這個算法比較簡單就建立一個循環(huán),在其中計算人數(shù)的多少,利用累加算出總分數(shù)有多少,再算出平均分。

圖5:

在這里插入圖片描述

及格率函數(shù):和平均值函數(shù)差不多,只需要循環(huán)將滿足條件的選出來,最后將數(shù)值計算出來即可。

在這里插入圖片描述

圖9:

在這里插入圖片描述

4、課程設計成果(運行截圖)

在這里插入圖片描述

5、課程設計心得

通過這次課程設計,我意識到了c語言在程序設計中的重要性,和它的實用性,在一個學年的學習中,從一開始的輸入,輸出。到后面的函數(shù),指針,鏈表。不斷地學習和實踐讓我的c語言技術(shù)有了一個較好的基礎,這也歸功于戴老師的教導。此次課程設計,是我第一次去編寫的一個較大的程序。在其中我意識到了自己的不足,即動態(tài)鏈表的使用,但是在設計中,我拋棄自己擅長的數(shù)組,去使用動態(tài)鏈表在一次次調(diào)試中,理清楚動態(tài)鏈表的操作方法。但還是在鏈表排序的問題上遇到了麻煩,通過上網(wǎng)查找資料,和同學進行討論后終于將問題解決。我覺得此次課程設計十分有意義,它是對我們c語言學習的一次總結(jié),讓我們將所學知識融會貫通,去用于實踐。我覺得c語言是基礎,只有打好基礎才能在以后的程序語言學習中有一個較好的發(fā)展?;仡櫰鸫舜螁纹瑱C課程設計,至今我仍感慨頗多,的確,從理論到實踐,可以說得是苦多于甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。

喜歡的點個贊收藏一下唄!感謝支持!

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)站欄目:C語言期末大作業(yè)-學生成績管理系統(tǒng)(完整源碼+設計報告)-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://weahome.cn/article/dosdsi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部