一级实践环节报告_第1页
一级实践环节报告_第2页
一级实践环节报告_第3页
一级实践环节报告_第4页
一级实践环节报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一级实践环节报告课题名称: 软件学院一级课题实践 专 业: 班 级: 学 号: 学生姓名: 指导教师: 年 月 日目录第1章概述3第2章任务与实现32.1计算机辅助系统32.2 日期转换32.3学生成绩管理系统V6.03第3章 总结3参考文献:3第1章 概述 寒假期间采用C语言过程化程序设计方法,设计实现以下程序1. 课本P143页实验题(2):小学生计算机辅助教学系统六个任务全部完成,采用模块化程序思想,使用必要的自定义函数。2. 课本P370页 学生成绩管理系统V6.0(选作)。设计开发工具:Microsoft Visual c+ 6.0 程序设计语言:C语言我完成的主要设计任务有:学生成绩管理系统V6.0 2.3学生成绩管理系统V6.01. 题目要求(1). 退 出 (2). 成 绩 录 入 (3). 计算每门课程的总分和平均分 (4). 计算每个学生的总分和平均分 (5). 按每个学生的总分由高到低排出名次表(6). 按每个学生的总分由低到高排出名次表 (7). 按 学 号 由 小 到 大 排 出 成 绩 表(8). 按姓名的字典顺序排出成绩表 (9). 按学号查询学生排名及其考试成绩(10). 按姓名查询学生排名及其考试成绩 (11). 对学生进行分类 (12). 输 出 全 部 (13). 将每个学生的记录信息写入文件(14). 从文件中读出每个学生的记录并显示2. 设计思路学生成绩管理系统首先设计一个菜单界面,然后给定一个要输入的人数界限,根据自己要输入的人数和科目进行输入.系统会提示你输入学生的信息,其中包括学号、姓名、各科目的分数.再输入信息后根据自己的要求进行相应计算、排序输出、读取,查询功能用switch函数构建主程序,功能模块及其流程图如下所示:130112按每个学生的总分由高到低排出名次表2 3 4 5 6 7 8 9 10 11 退 出 成 绩 录 入计算每门课程的总分和平均分将每个学生的记录信息写入文件计算每个学生的总分和平均分按每个学生的总分由低到高排出名次表按学号由小到大排出成绩表按姓名的字典顺序排出成绩表按学号查询学生排名及成绩按姓名查询学生排名及成绩读出每个学生的记录输出全部计算各层次学生百分比开始输出菜单X=1输入每门课程的总分和平均分X=2每个学生的总分和平均分X=3高到低排出名次表X=4X=5低到高排出名次表X=6学号由小到大排出 成 绩 表姓名的字典顺序X=7X=8 学号查询姓名查询X=9分析X=10全部输出X=111写入文件X=1222X=13X=0从文件读出并显示退出程序3. 实现代码#include#include#include#define MAX_STUDENT 30#define MAX_COURSE 6typedef struct studentlong studentID;char studentname20;int scoreMAX_COURSE;int total;float aver;STUDENT;void menu();void Add(int *pm,int*pn);void Inputscore(STUDENT stu,int m,int n);void Calate2(STUDENT stu,int m,int n);void Calate1(STUDENT stu,int m,int n);void print(STUDENT stu,int n);void Sumsortdecen(STUDENT stu,int n);void Sumsortascen(STUDENT stu,int n);void Denumber(STUDENT stu,int m,int n);void Dicts(STUDENT stu,int m,int n);void Searchbynum(STUDENT stu,int m ,int n);void Searchbyname(STUDENT stu,int m ,int n);void Statistis(STUDENT stu,int m,int n);void List(STUDENT stu,int m,int n);void Writetofile(STUDENT stu,int m,int n);void Readfromfile(STUDENT stu,int *m,int *n);void Printscore(STUDENT stu,int m,int n);int main()int k;int n,m;int *pm=&m,*pn=&n;STUDENT stuMAX_STUDENT;printf(tt*欢迎使用学生成绩管理系统*n);do/设置循环可以重复显示菜单menu();printf(Please enter your choice:n);scanf(%d,&k);switch(k)case 1:Add(&m,&n);Inputscore(stu,m,n);break;case 2:Calate1(stu,m,n);break;case 3:Calate2(stu,m,n);print(stu,n);break;case 4:Calate2(stu,m,n);Sumsortdecen(stu,n);break;case 5:Calate2(stu,m,n);Sumsortascen(stu,n);break;case 6:Denumber(stu,m,n);break;case 7:Dicts(stu,m,n);break;case 8:Calate2(stu,m,n);Searchbynum(stu,m,n);break;case 9:Calate2(stu,m,n);Searchbyname(stu,m,n);break;case 10:Statistis(stu,m,n);break;case 11:List(stu,m,n);Calate1(stu,m,n);break;case 12:Calate2(stu,m,n);Writetofile(stu,m,n);break;case 13:Readfromfile(stu,&m,&n);Printscore(stu,m,n);break;case 0:exit(0);default :printf(Invalib operator!n);while(k!=0);return 0;void menu()/菜单函数printf( |*|n);printf( |1.Input record |n);printf( |2.Caculate total and average score of every course | n);printf( |3.Caculate total and average score of every student |n);printf( |4.Sort in decending order by total score of every student |n);printf( |5.Sort in ascending order by total score of every student |n);printf( |6.Sort in ascending order by number |n);printf( |7.Sort in ascending order by name |n);printf( |8.Search by number |n);printf( |9.Search by name |n);printf( |10.Statistic analysis for every course |n);printf( |11.List record |n);printf( |12.Write to file |n);printf( |13.Read from a file |n);printf( |0.Exit |n);printf( |*n);void Add(int *pm,int*pn)/输入学生人数和考试科目printf(请输入考试科目);scanf(%d,pm);printf(请输入学生人数);scanf(%d,pn);void Inputscore(STUDENT stu,int m,int n)/1、输入学生的 学号,姓名,及考试成绩int i,j;for(i=0;in;i+)printf(Input record%dn,i+1);printf(请输入学生学号);scanf(%ld,&stui.studentID);printf(请输入学生姓名);scanf(%s,&stui.studentname);printf(请输入学生成绩);for(j=0;jm;j+)scanf(%ld,&stui.scorej);void Calate2(STUDENT stu,int m,int n)/3、计算每个学生的平均分及总分int i,j;int sumMAX_STUDENT;for(i=0;in;i+)/使所用学生进入循环sumi=0;for(j=0;jm;j+)/所有科目进入循环sumi=sumi+stui.scorej;stui.total=sumi;stui.aver=(float)sumi/m;void Calate1(STUDENT stu,int m,int n)/2、计算每门课目的平均分及总分int sumMAX_COURSE;float averMAX_COURSE;int i,j;for(j=0;jm;j+)/单个课目 考试科目进入循环sumj=0;for(i=0;in;i+)/所有学生进入循环sumj=sumj+stui.scorej;averj=(float)sumj/m;printf(Sumofcourset);/打印for(j=0;jm;j+)printf(%4dt,sumj);printf(nAverofcourset);for(j=0;jm;j+)printf(%ft,averj);printf(n);void Sumsortdecen(STUDENT stu,int n)/4按总分由高到低排出名次表int i=0,j=0,k;STUDENT t;for(i=0;in-1;i+)/以交换法为基本原理进行排序k=i;for(j=i+1;jstuk.total)k=j;if(k!=i)t=stuk;stuk=stui;stui=t;for(i=0;in;i+)/打印出学生信息printf(ID:%ld,NAME:%s,TOTAL:%dn,stui.studentID,stui.studentname,stui.total);void Sumsortascen(STUDENT stu,int n)/5按总分由低到高排出名次表int i=0,j=0,k;STUDENT t;for(i=0;in-1;i+)/k=i;for(j=i+1;jn;j+)if(stuj.totalstuk.total)k=j;if(k!=i)t=stui;stui=stuk;stuk=t;for(i=0;in;i+)/打印出学生信息printf(ID:%ld,NAME:%s,TOTAL:%dn,stui.studentID,stui.studentname,stui.total);void Denumber(STUDENT stu,int m,int n)/6int i,j,k;STUDENT t;for(i=0;in-1;i+)k=i;for(j=i+1;jstuj.studentID)k=j;if(k!=i)t=stuk;stuk=stui;stui=t;for(i=0;in;i+)printf(tID:%ld,tname:%sn,stui.studentID,stui.studentname);for(j=0;jm;j+) printf(ttProject%d,score:%dn,j+1,stui.scorej);void Dicts(STUDENT stu,int m,int n)/7对学生姓名按字典顺寻排序int i,j,k;STUDENT t;for(i=0;in-1;i+)k=i;for(j=i+1;j0)k=j;if(k!=i)t=stuk;stuk=stui;stui=t;for(i=0;in;i+)printf(tID:%ld,tname:%sn,stui.studentID,stui.studentname);for(j=0;jm;j+) printf(ttProject%d,score:%dn,j+1,stui.scorej);void Searchbynum(STUDENT stu,int m ,int n)/8通过学号查询学生信息int i,j,c=1,find=0,k=0;long x;printf(请输入要查找的学号);scanf(%ld,&x);for(i=0;in;i+)if(stui.studentID=x)k=i;find=1;break;if(find=0)printf(NOT FINDn);elsefor(j=0;jstuk.total)c+;printf(ID:%ld,NAME:%sn,stuk.studentID,stuk.studentname);for(j=0;jm;j+)printf(Prjoect:%d,score%dn,j+1,stuk.scorej);printf(All score :%d,Order:%dn,stuk.total,c);void Searchbyname(STUDENT stu,int m ,int n)/9通过名字查询学生信息int i,j,c=1,find=0,k=0;char name30;printf(请输入要查找的学生姓名);scanf(%s,name);for(i=0;in;i+)if(strcmp(stui.studentname,name)=0)k=i;find=1;break;if(find=0)printf(NOT FINDn);elsefor(j=0;jstuk.total)c+;printf(ID:%ld,NAME:%sn,stuk.studentID,stuk.studentname);for(j=0;jm;j+)printf(Prjoect:%d,score%dn,j+1,stuk.scorej);printf(All score :%d,Order:%dn,stuk.total,c);void print(STUDENT stu,int n)int i;for(i=0;in;i+)printf(tID:%ld,tNAME:%s,tTOTAL:%d,tAVER:%fn,stui.studentID,stui.studentname,stui.total,stui.aver);void Statistis(STUDENT stu,int m,int n)/函数功能分层统计学生成绩并打印出学生比例int a=0,b=0,c=0,d=0,e=0,i,j;double A,B,C,D,E;for(j=0;jm;j+)int a=0,b=0,c=0,d=0,e=0;for(i=0;i=90)a+;else if(stui.scorej=80)b+;else if(stui.scorej=70)c+;else if(stui.scorej=60)d+;elsee+;A=(double)a/n*100;B=(double)b/n*100;C=(double)c/n*100;D=(double)d/n*100;E=(double)e/n*100;printf(Prject:%dn,j+1);printf(优秀人数:%d,百分比:%f%n,a,A);printf(良好人数:%d,百分比:%f%n,b,B);printf(中等人数:%d,百分比:%f%n,c,C);printf(及格人数:%d,百分比:%f%n,d,D);printf(不及格人数:%d,百分比:%f%n,e,E);void List(STUDENT stu,int m,int n)int i,j;for(i=0;in;i+)printf(tID:%ld,tname:%sn,stui.studentID,stui.studentname);for(j=0;jm;j+)printf(ttProject%d,score:%dn,j+1,stui.scorej);void Writetofile(STUDENT stu,int m,int n)/输出n个学生的信息到文件score.txt中FILE *fp;int i,j;if(fp=fopen(score.txt,w)=NULL)/以写的方式打开文件printf(Failure to open score.txt!n);exit(0);fprintf(fp,%dt%dn,n,m);/for(i=0;in;i+)fprintf(fp,%10ld%8s,stui.studentID,stui.studentname);for(j=0;jm;j+)fprintf(fp,%4d,stui.scorej);fprintf(fp,%4d,stui.total);fprintf(fp,%6.1fn,stui.aver);fclose(fp);void Readfromfile(STUDENT stu,int *m,int *n)/从文件中读取学生的信息到结构体数组stu中FILE *fp;int i,j;if(fp=fopen(score.txt,r)=NULL)/以只读方式打开文本文件printf(Failure to open score.txt!n);exit(0);for(i=0;i*n;i+)/学生人数保存在n指向的储存单元fscanf(fp,%10ld,&stui.studentID);fscanf(fp,%8s,&stui.studentname);for(j=0;j*m;j+)/课程保存在m指向的储存单元fscanf(fp,%4d,&stui.scorej);fscanf(fp,%4d,&stui.total);fscanf(fp,%fn,&stui.aver);/不能使用%6.1f格式void Printscore(STUDENT stu,int m,int n)/输出n个学生的信息到屏幕上int i,j;for(i=0;in;i+)printf(%10ld%8s,stui.studentID,stui.studentname);/打印学号姓名for(j=0;jm;j+)printf(%4d,stui.scorej);printf(%4d,stui.total);printf(%6.1fn,stui.aver);实现 第3章 总结第3章总结通过课题我收获的东西很多,我也更加认识到了自己的不足。我的课题不能让我非常满意,因为我只用简单的文件写出来了,而对于我一直有兴趣的链表却没有写出来。只用链表写出来了一个输入函数。我先来说一说自己的收获,在假期通过以及课题我将学校中学的东西简单的综合起来了,在假期通过上网查找资料,自己翻阅课本,让自己对C语言的认识深刻了一些,我发现编程如此有趣,原来C语言可是实现这么多功能,让我看到编程的世界是那么有趣,面对好多疑难问题,有的时候不知道自己该干什么,那么无助那么纠结但是在家中自己查阅资料,终于克服困难那种心情,是一种说不出的畅快,没有什么事比看到自己的编写的程序功能正确运行更让人开心。一级课题几乎用到了全本的知识,刚开始在看任务书时我有一点费解,为什么学校如此重视一级课题,我也不明白为什么一级课题对引导我们向专业程序员过渡有那么大的功效,通过完成一级课题我发现确实是那样,一级课题有它不能取代原因,虽然一级课题只是设计一个简单的程序,但对于初入门的我们来说仍然是一个不小的挑战,对于刚入门的我们来说理解不了模块化程序设计,我只知道模块化程序设计好处多多,且对它的实现不是多理解,不知道哪里不明白,就是感觉不懂,朦朦胧胧的感觉。如果没有一级课题我不知道自己还要迷茫多久,让我对程序设计有了基本的认识,成功地完成一级课题对我的自信心也是一种很好的鼓舞,尽管这是一个很简单的东西,但是通过自己的努力很久写出来,也意味着我们向向专业的程序员迈进了一大步,上机训练不容忽视。通过实际编程,我看到了自己在c语言知识上的不足与漏洞。不仅学到了以前不懂的知识,而且对学过知识点有了深一步的理解。对于c语言的学习方法也有了一定的改进。学习C语言知识要有系统的,不能零零散散。应增加动手实践,不能只学理论知识。只有动手能力得到了提高,编写C语言程序和分析C语言问题的能力才能有所提高。一级课题也提高了自己独立解决问题的能力,有的问题需要自己思考,自己思索寻求答案的过程对自身能力的提升,是一种提升,对于一个程序员来说,总有一些东西需要自己思考明白算法如何实现,知道自己该干什么,要将书本上的转化为实际应用。把知识转换为能力。通过这次课题设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握不够牢固一定要养成良好的编程习惯通过,平时写程序注意语法规范格式控制,格式规范了,出了错误也容易找到出错的地方,这是C语言的基础;后期的重点要转移到掌握编程的思路和基本算法上来。课后多做习题,找一些经典例子尝试自己编写,写程序切忌半途而费

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论