c语言成绩管理系统总结分析报告,c语言下学生成绩管理系统程序设计报告

《c语言下学生成绩管理系统程序设计报告》由会员分享,可在线阅读,更多相关《c语言下学生成绩管理系统程序设计报告(17页珍藏版)》请在人人文库网上搜索。

1、信息技术学院本科课程设计报告课程设计题目学 生 姓 名: 黄海兰 学 院: 信息技术学院 专 业: 信息管理与信息系统 班 级: B11203 学 号: 指 导 教 师: 尹剑伟 完 成 日 期: 2013 .7.12 辽 东 学 院Eastern Liaoning University一、题目描述模拟学校学生成绩管理系统。设计一个简单的学生成绩管理系统,实现对成绩管理的各种信息进行日常管理,如查询、修改、排序、增加、删除。二、功能分析通过体验并分析后得出中主要功能包括:1) 学生信息输入2) 学生信息输出3) 按照学号查询4) 学生信息修改5) 学生成绩排序6) 学生数据导入7) 学生数据保。

2、存8) 推出系统三、系统设计1程序总体结构程序中由主模块负责协调各功能模块的工作。运行程序成功后,根据输入操作,执行相应的输入、输出、查询、修改。排序、导入、保存、退出等功能。图1 学生成绩管理系统结构图2界面设计如图2,运行程序,然后输入密码进入学生成绩管理系统。图2 学生成绩管理的界面3输入方式设计此系统为dos下程序,因此简化为键盘控制。主要用到字母键,数字键,空格,退格,回车。搜狗拼音输入汉字。4重要数据的数据结构设计1) 全局变量int choice;int check=0;int loop=0;int a=12;2) 宏定义#define N 33) 结构体struct grade。

3、float math;/数学float chinese;/语文float english;/英语float computer;/计算机struct studentint num;/学号char name7;/姓名char sex3;/性别int age;/年龄struct grade score;struct student studN;5函数设计文件中函数的功能如下:文件名函数原形 函数功能函数处理描述学生成绩管理系统.cvoid denglu();登陆函数;用for语句控制密码输入次数。void xuanze();选择要进入的选项;输入序号选择进入模块;void inputinfo();输。

4、入学生信息;用if语句判断能否继续输入学生信息,根据提示输入学生信息及各科成绩;void outputinfo();输出学生信息用for循环输出学生基本信息、各科成绩和平均成绩;void find();按学号查询学生信息;利用for循环进行查找,用if 语句判断是否找到要找的信息,然后显示。void sortscore();按平均成绩对学生信息进行排序;首先输入信息,然后利用排序子函数进行排序从而实现插;void modify();创建学生信息;利用for循环把要删除的结构体变量用后面的覆盖,且从此处以后后面的变量覆盖前面的,以此完成删除任务;void writetofile();按姓名删除学。

5、生信息;用if判断文件是否创建成功,利用for循环实现信息保存void readfile();按学号查询学生信息;用if判断文件是否能打开,利用for循环实现信导入6、函数调用图main()modify() find()outputInfo()inputInfo()exit(0) witetofile()sortscore() readfile()四、关键技术、难点及其解决方五、测试方法1、输入密码,回车;2、进入界面; 3、输入选项1,回车;按提示输入数据;4、回到主菜单; 输入选项7,回车;输入文件名:abc.txt,回车; 出现成功提示,则读入文件操作成功。 4、回到主菜单,输入2,回车。

6、 每10个暂停显示数据 5、回到主菜单,输入3,回车 出现排序成功信息。 6、回到主菜单,输入4,回车 按提示插入一组数据 7、回到主菜单,输入5,回车 按提示输入姓名,删除数据 出现删除成功的信息 8、回到主菜单,输入6,回车 输入姓名进行查询 9、回到主菜单,输入7,回车 出现统计信息 10、回到主菜单,输入9,回车 输入result.txt,回车 出现成功写入文件的信息 11、回到主菜单,输入0,回车退出系统六、总结通过这次课程设计的学习,我对c语言有了更深的认识。作为一门语言他也能根据我们的需要编写出相应的程序。在不断地修改、调试和添加中我对程序的结构和层次方面有了进一步的了解,这次学。

7、习让我深知程序设计不是想象中的那么简单,能够准确灵活的运用c语言我还得再下一些苦功夫。附一 使用说明:功能说明. 此程序分为8个选项,输入,输出、查询、修改、排序、退出等几个部分,进入1程序后,按提示输入学生信息;进入2程序后,输出1输入的学生信息;进入程序3后,输入学号,查找出学生信息;进入程序4后,输入学号修改学生信息;进入程序5后,对学生成绩排序;进入6后,进行学生数据导入;进入程序7后,保存已修改学生信息。附2、代码清单/*程序设计语言课程设计题目:学生成绩管理系统制作人:黄海兰完成日期:2012-7-11版本号:*/以下为文件包含#include #include #include 。

8、/宏定义#define N 3/以下为函数提前声明void denglu(int a);void xuanze();void inputInfo(); void outputInfo();void find();void sortscore();void modify();void writetofile();void readfile();/以下是全局变量int choice;int check=0;int loop=0;int a=12;/*类型:结构体名称:grade用途:描述学生成绩信息*/struct gradefloat math;/数学float chinese;/语文float。

9、 english;/英语float computer;/计算机float ave;/平均成绩;/*类型:结构体名称:student用途:描述学生基本信息*/struct studentint num;/学号char name7;/姓名char sex3;/性别int age;/年龄struct grade score;struct student studN;/*类型:函数名称:main用途:主函数形参:无返回值:无*/void main()printf(-n);printf(*欢迎使用学生成绩管理系统* n); printf(*技术支持 黄海兰* n );printf(*联系方式QQ* * 。

10、n );printf(*01256 65* n);printf(-n);denglu(a);readfile();system(cls); while(1) xuanze(); scanf(%d,&choice);switch(choice)case 1: inputInfo();break; case 2: if(loop=0)printf(没有输入或导入有效数据!n);outputInfo(); break; case 3: find(); break;case 4: modify(); break;case 5: sortscore();break;case 6: printf(警告!导。

11、入数据将覆盖现有未保存的数据n);printf(要继续吗?(输入1继续,输入0取消操作):);int r;scanf(%d,&r);if(r=1)readfile();break;elsebreak;case 7: writetofile();if(check=loop)printf(*数据输出成功*n);elseprintf(*数据输出失败*n);break;case 8: exit(0);default: printf(请正确选择服务项目n);/*类型:函数名称:denglu用途:登陆函数形参:a为进入此程序的密码返回值:无*/void denglu(int a)int mima,count=0;for(int i=0;istudk+1.score.ave)temp=studk;studk=studk+1;studk+1=temp;printf (学生成绩由高到低依次是:n);printf (n);for (j=0;jk;j+)printf (第%d名:%s 成绩:%fn,j+1,studloop.name,studloop.score.ave);printf (n。

c学生成绩管理系统.rar<br>这次的课程设计和以往写的程序比起来,无论是在篇幅和复杂度上都提高了不少,我在写这个程序的过程中,遇到了不少的困难,也积累了不少的知识和经验,特别是在以前的时候我倍感头疼的文件部分,我也有了一定的了解,我想这对我今后的学习和工作是十分有益的。在这里我特意将在我在写程序过程中的体验和要注意的问题总结如下:<br>一. 基础知识一定要牢固。<br>在调试程序的过程中,有时候程序出了错误,找了半天找不到在哪里。这个时候往往会感觉十分不耐烦,但往往越是一些很小的小错误,越是往往容易被人疏漏,诸如“print”啦,注释引号括号不成对出现,遗漏scanf函数中的&符号等等,而这些却可能导致整个程序不运行,从而浪费了不少的时间。等到发现时,只会郁闷不已。因此,对于一个合格的程序员来说,牢固的基础知识是十分重要的。我们虽然没有必要达到那么高的要求,但牢固的基础知识对于程序的熟练编写和时间的节省也是大有裨益的。<br>二.调试程序的过程中,经验的积累和技巧的掌握是必要的。<br>在这次的课程设计中,由于要编写的程序的篇幅较大,因此不可避免地出现了相当多的错误,调试程序花了我不少的时间。我发现调试程序是有规律和技巧可寻的。/**/注释符号的灵活运用提供了较大的空间。通过程序的分块屏蔽可以很容易地找出错误的所在。函数的运用也是很自然的。因为有时一个临时的功能函数可以让我们很直观地知道一段程序是否正确。当然,有时,错误提示信息可以直接提供错误的所在,但是C语言自动查找错误的功能毕竟是有限的,大多数情况之下,我们还是必须要依靠自己。这时,经验就显的很重要了,我们在平时编写程序时,应多注意有意识地积累一些,会有好处的。<br>三.务求简单<br>我在编写程序的过程中发现,在某一个功能多个算法可以实现的时候,最好采用最简单的方案,这样可以减少出错的几率,也可以省去不少的麻烦。在我的程序中,有一个例子,可以很好地说明这个问题:在编写score_research()函数的时候,有一个地方可以用排序算法实现,也可以用一个标志变量加101然后在函数的末尾处再减101,这样大大地简化了程序,但是运算量也明显地加大了。然而计算机硬件已经发展到今天这个地步,对于我们写的这种小程序,计算速度已经不是问题,因此,务求简单,减少出错率才是正确的选择。<br>四.函数的运用和程序的模块化。<br> 在这次课程设计里,我终于体会到了模块化带来的方便和优越。通过模块化处理,将最初的程序的功能构想以函数的形式划分成几个模块,模块下再设子模块,一层一层直到程序的功能实现为止。这样,不仅程序易于编写,还易于维护。最重要的是,如果程序出错,还易于查找和修改。<br>以上是我在程序的编写过程中的一点心得和体会,虽然很肤浅,但毕竟是通过自己的亲身实践得来的,感受较深。<br><br>另外,在程序的操作中还有一些需要注意的问题,主要有以下几点:<br>一.输入数据时,也就是在执行input()和input_2()函数的时候,一定要注意按照程序提供的输入顺序输入数据,否则极有可能导致文件的输入错误;还有,由于学生基本情况文件和成绩文件是由input()和input_2()两个函数先后完成的,所以在输入时一定要注意前后相同学生的姓名一定要相应地一致。如果输入了不同的姓名,虽然不会导致程序出错,但对于程序的结果来说,却是逻辑上的一个大大的错误。<br>二.为了使程序的操作更加简便,人性,我在程序中有加进了一个view_two()函数,目的是为了使程序每执行完一项功能之后,都能出现菜单以供选择,可以非常方便地执行下一个功能。另外,在view_two()函数和view()函数中,我还设置了exit()子函数。执行这个函数,便可以直接返回原代码界面。操作者若是在操作中注意到了这些,将会使操作简单不少。<br>三.当然,不可避免地,由于我的程序大部分是在机房编写和调试完成,时间相对较紧张,再加上我本来就对C语言没有精深的钻研和琢磨,因此程序写得相当粗糙,在有些功能的实现上,只是将其功能大致完成,并未考虑到操作的简便化等问题。例如在input()和input_2()函数的执行中,本来每个学生的基本情况和成绩应该是在一起输入的,这样才符合一般人的正常思路,但由于学生的基本情况和成绩是由两个函数分别执行完成的,姓名需要输入两次才能将学生的姓名输入到两个结构体中,因为姓名是存储在字符数组里面的,所以用一般的赋值语句是解决不了的。我只好采用了一个原始的办法,把两个结构体里的姓名分别用两个输入语句实现。但这样又导致了另外一个问题,即两次姓名的输入如果不相同时所导致的错误,而且这个问题在学生的数量越多即两次输入离得越远时表现得越突出,但我也想不出更好的办法来解决这个问题了。<br><br>通过这次做课程设计,我感觉我学到了不少的东西,尤其是耐心的培养和在宏观上组织问题的能力让我受益非浅。这不仅是设计程序所必需的,也是今后的学习和工作所不可缺少的。希望我能在这次课程设计的基础上,继续学习更多的C语言的知识,使自己的编程能力更上一层楼。<br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值