ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:846.37KB ,
资源ID:30128922      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30128922.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(学生成绩管理系统.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

学生成绩管理系统.docx

1、学生成绩管理系统 高级语言程序设计课程设计报告 题 目 学 生 成 绩 管 理 系 统 专 业 物 联 网 工 程 年 级 2015级 姓 名 陈开松、吴竹、饶钦、彭婷 指导教师 崔忠伟 6 月 18 日至 7 月 1 日 共 2 周二一六年六月数学与计算机科学学院课程设计任务及成绩角色成员姓名承担分工任务组长:吴竹吴竹饶钦彭婷陈开松陈开松:菜单函数 输出函数彭婷: 显示函数 查询函数饶钦: 保存函数 读取函数吴竹: 插入信息 成绩排序课程设计任务设计“学生成绩管理系统”,实现学生成绩的录入、显示、查找、添加、保存以及成绩排序等功能模块。要求功能选择用菜单实现,数据输入和结果输出要求用文件存放

2、。 成绩成绩: 指导教师签字: 目 录1 设计目的 42 功能描述 43总体设计 44 程序实现 55 小结 6参考文献 7学生成绩管理系统1 设计目的由于要录入、读取、保存学生成绩信息,因而要实现文件的输入输出功能;要求用户可以查询各个学生的成绩,并且可以添加学生成绩信息等,因而要提供查找和添加功能;另外,还应该提供键盘式选择菜单以实现功能选择。2 功能描述1. 学生成绩的录入:即输入一个学生的所有信息。2. 显示:完成每一个学生信息的输出显示功能3. 查找:根据学生的学号查询。4. 添加:插入学生信息是在原来设定的的N个学生基础上又增加学生的信息中。5. 成绩排序:按学生平均成绩由高到低进

3、行排序。6. 文件的保存: 将结构体成员中的信息按指定的格式输出到fp1指向的文件7. 文件的读取:读入完成关闭文件,然后后再调用输出函数显示读取的数据3 总体设计3.1 功能模块设计 1、主控main()函数执行流程把学生的学号、姓名、科目成绩、平均成绩作为结构体成员,存放若干学生信息用结构体数组。用while循环控制功能菜单的选择,swith中设置相应的功能模块函数调用,调用完一个函数后然后返回while进行判断,结果为真则进行功能菜单的选择,如果条件为假则终止函数2、 添加信息模块输入数据模块具体算法 首先是声明结构体,然后定义结构体数组,确定需输入学生的个数,即结构体数组的长度,数组的

4、每一个元素都包含结构体中的所有成员,即一个学生的所有信息。用for循环遍历分别输入每一个学生的: 学号、姓名、英语成绩、c语言成绩、高等数学成绩,计算平均成绩。循环结束完后即完成了数据的录入操作。 【输入学生数据模块】:学生信息输出模块具体算法 输出学生数据跟输入学生信息类似,用for循环遍历结构体中的每一个成员,设置输出格式,就能完成每一个学生信息的输出显示功能。 【显示学生数据模块】:学生信息查询模块具体算法 查询原理是,根据学生的学号查询。定义一个变量接收要查询学生的学号,然后用for循环中嵌套if语句遍历查找结构体成员中的学号成员,如果查到相等的学号,执行输出语句,输出该学生的所有信息

5、,最后执行break终止循环。如果未找到匹配的学号则N值=N,此时执行提示语句,“无该学生信息!”,最后结束循环到功能选择菜单。 【查询信息模块】:学生成绩排序模块排序集体算法按学生平均成绩由高到低进行排序。用选择排序的方法进行排序,排序成功后再调用输出函数,实现学生平均成成绩由高到低的信息的输出。【数据排序模块】:保存学生信息模块具体算法 首先定义一个结构体指针变量fp1,然后将文件指向打开文件的信息区,设置打开文件方式为写方式,如果打开文件失败则执行提示语句,如果打开文件成功执行fprintf函数,将结构体成员中的信息按指定的格式输出到fp1指向的文件中,关闭文件,然后返回到功能选项菜单。

6、 【数据保存模块】:读取数据模块具体算法 与保存数据模块原理一样,首先定义文件指针变量fp2,将fp2指向要读取数据的文件,设置打开方式为读。如果文件打开失败则执行提示语句,如果打开成功则执行下面的读入数据操作,读入完成关闭文件,然后后再调用输出函数显示读取的数据,最后返回到菜单功能选择。 【数据读取模块】:插入学生信息模块具体算法 插入学生信息是在原来设定的的N个学生基础上又增加学生的信息,原理为插入的第一个学生是结构体数组的第N 个元素。定义整型变量,可实现选择添加几个学生的信息,用for循环遍历输入,信息输入完成后执行提示语句,即完成了学生信息的插入功能。【数据插入模块】: 3.2数据结

7、构设计1、学生信息结构体把学生的学号、姓名、科目成绩、平均成绩作为结构体成员,存放若干学生信息用结构体数组。struct Student / 声明结构体,成员表列包括下列成员: int num; / 学号 char name20; / 姓名 float Eng; / 英语成绩 float c; / c语言成绩 float math; / 高等数学 float aver; / 平均成绩 sdu100; / 定义结构体数组,数组长度为100,数组的每一个元素都包含结构体的所有成员数据 3.3函数功能描述 1、Input()函数原型:void Input(struct Student sdu)作用:

8、 学生成绩的录入:即输入一个学生的所有信息。并且求出学生成绩总分与均分。 2、Print()函数原型:void Print(struct Student sdu)作用: 输出显示:完成每一个学生信息的输出显示功能 3、Search() 函数原型:void Search(struct Student sdu) 作用: 查找信息:根据学生的学号查询。 4、Order()函数原型:oid Order(struct Student sdu)作用: 成绩排序:按学生平均成绩由高到低进行排序。 5、Save()函数原型:void Save()作用: 文件的保存: 将结构体成员中的信息按指定的格式输出到fp

9、1指向的文件 6、Read()函数原型:void Read()作用: 输出显示:完成每一个学生信息的输出显示功能 7、Insert() 函数原型:void Insert()作用: 文件的读取:读入完成关闭文件,然后后再调用输出函数显示读取的数据。8、Menu() 函数原型:int Menu作用: 定义整型菜单选项,并且显示菜单功能。表3.3.1 函数功能描述表表3.3.1 函数功能描述表函数名函数原型功能简单描述设计者Input()void Input(struct Student sdu)学生成绩的录入:即输入一个学生的所有信息。并且求出学生成绩总分与均分。 陈开松Print()void P

10、rint(struct Student sdu) 输出显示:完成每一个学生信息的输出显示功能 彭婷Searc()void Search(struct Student sdu) 查找信息:根据学生的学号查询。 彭婷Order()void Order(struct Student sdu)成绩排序:按学生平均成绩由高到低进行排序。 吴竹Save()void Save()文件的保存: 将结构体成员中的信息按指定的格式输出到fp1指向的文件 饶钦Read()void Read()文件的读取:读入完成关闭文件,然后后再调用输出函数显示读取的数据。 饶钦Insert()void Insert()添加:插入

11、学生信息是在原来设定的的N个学生基础上又增加学生的信息中。 吴竹Menu()int Menu定义整型菜单选项,并且显示菜单功能。 陈开松4 程序实现4.1 源码分析# include struct Student / 声明结构体,成员表列包括下列成员: int num; / 学号 char name20; / 姓名 float Eng; / 英语成绩 float c; / c语言成绩 float math; / 高等数学 float aver; / 平均成绩 sdu100; / 定义结构体数组,数组长度为100,数组的每一个元素都包含结构体的所有成员数据int N=3; /定义一个全局变量N,

12、用来控制需输入的学生的个数,为了节省时间这里设置数组长度为3char tips=学号 姓名 英语 c语言 高等数学 平均成绩: n; /定义数组,目的是当学生信息存到文件的同时将该文件存到文件中,起提示作用int main() void input(struct Student sdu); / 声明输入学生信息函数 void print(struct Student sdu); / 声明输出学生信息函数 void search(struct Student *p); / 声明查找学生信息函数 void order(struct Student sdu); / 声明学生平均成绩排序函数 void

13、 save(); / 声明保存学生信息函数函数 void read(); / 声明从保存文件中读取学生信息函数 void insert(); / 声明插入学生信息函数 int menu; / 定义整型菜单选项 /* 菜单功能提示性模块*/ printf(*n); printf(* *n); printf(* 输入学生数据(请输入1) 输出学生信息(请输入2) *n); printf(* *n); printf(* *n); printf(* *n); printf(* 查询(请输入3) 成绩排序(请输入4) *n); printf(* *n); printf(* *n); printf(* *

14、n); printf(* 将学生信息保存到文件中(请输入5) 从文件中读取学生信息(请输入6) *n); printf(* *n); printf(* *n); printf(* *n); printf(* 插入学生信息(请输入7) *n); printf(* *n); printf(*n); menu=1; / 菜单选项变量初始化为1,目的是进入while下面的switch语句选择 while(menu=1 & menu=7) / 该系统要实现七个功能,每一个数字代表一个函数模块 printf(请输入功能选项: ); scanf(%d, &menu); switch(menu) case 1

15、: input(sdu); / 当选择1时,调用输入学生信息函数 break; case 2: print(sdu); /当选择2时,调用输出学生信息函数 break; case 3: search(sdu); /当选择3时,调用查询学生信息函数 break; case 4: order(sdu); print(sdu); / 当选择4时,调用学生平均成绩排序函数和输出学生信息函数 break; case 5: save(); / 当选择5时,调用保存学生信息函数 break; case 6: read(); / 当选择6时,调用读取学生信息函数和输出学生信息函数 print(sdu); br

16、eak; case 7: insert(); / 当选择7时,调用插入学生信息函数 break; default: printf(error!n); / 当选择不在1-7范围内时,执行该语句,终止switch语句,然后跳出循环,函数结束 break; return 0; /* 定义输入学生信息模块 */void input(struct Student sdu) int i; printf(*n); printf(请录入学生信息:学号 姓名 英语 c语言 高等数学(数据之间用空格隔开): n); / 该语句为提示性语句 for(i=0;iN;i+) / 从数组的第一个元素遍历,从终端键盘输入设

17、定数目的学生信息 scanf(%d %s %f %f %f, &sdui.num, sdui. name, &sdui.Eng, &sdui.c, &sdui.math); sdui.aver=(sdui.Eng+sdui.c+sdui.math)/3; printf(* 输入完成 *n); / 输入完学生信息后的提示语句,以便进入下一个功能选项/* 定义输出学生信息模块 */void print(struct Student sdu) int i; printf(* 输出结果为 *n); printf(学号 姓名 英语 c语言 高等数学 平均成绩n); for(i=0;iN;i+) / 遍历

18、输出学生信息 printf(%3d %8s %8.1f %8.1f %8.1f %10.1fn, sdui.num, sdui. name, sdui.Eng, sdui.c, sdui.math, sdui.aver); / 3d %8s %8.1f %8.1f %8.1f %10.1为输出格式,定义数据的域宽/* 定义查询学生信息模块 */void search(struct Student sdu) int i, num_get; / 定义num_get整型变量,用来接收需查询的学生的学号 printf(请输入要查询的学生的学号: ); scanf(%d, &num_get); for

19、(i=0;i=N) printf(无该学生信息!n); / 当i的值=N时则表示未查找到相应的学生的学号,则执行提示该语句 /* 定义学生成绩排序模块 */void order(struct Student sdu) int i, k, j; struct Student temp; for (i=0;iN-1;i+) k=i; for (j=1;jN;j+) / 用选择排序,根据学生的平均成绩从高到低进行排序 if(sdui.aversduj.aver) k=j; if (k!=i) temp=sdui;sdui=sduk;sduk=temp; printf(* 成绩从高到低排序结果为 *n

20、); / 排序成功后的提示性语句/* 定义保存学生信息模块 */void save() FILE *fp1; / 定义文件指针变量fp1 int i; if ( (fp1=fopen (student.txt, w) )=NULL) / 将fp1指向所打开的student.txt文件的信息区,打开文件方式为写 printf(cannot open filen); / 如果文件打开失败则提示该语句 return; fprintf(fp1,%s, tips); / 将主函数前的提示性语句保存到打开的文件中 for (i=0;iN;i+) fprintf(fp1,%3d %8s %8.1f %8.1

21、f %8.1f %10.1fn,sdui.num, sdui. name, sdui.Eng, sdui.c, sdui.math, sdui.aver); / 将变量中的学生信息按预定的格式存入到打开的文件中 fclose(fp1); / 保存成功后关闭文件 printf(* 已将学生的信息保存到文件中 *n); / 信息保存成功的提示性语句/* 读取保存在文件中的学生信息模块 */void read() FILE *fp2; int i; if(fp2=fopen(student.txt,r)=NULL) / 将fp2指针指向文件的信息区,打开方式为读 printf(cannot open

22、 this file!n); / 打开文件失败的提示语句 return 0; for(i=0;tipsi!=0;i+) / 遍历从保存的文件中读取文件中的提示语句 fscanf(fp2,%c, &tipsi); / 读取该提示信息是为了能够顺利读取存入的学生信息,实际输出时并未输出该提示语句 for (i=0;!feof(fp2);i+) fscanf(fp2,%d %s %f %f %f %f, &sdui.num, &sdui. name, &sdui.Eng, &sdui.c, &sdui.math, &sdui.aver); / 遍历读取保存在文件中的学生信息 fclose(fp2);

23、 / 读取成功后关闭文件 printf(* 从文件中读取的数据 *n); / 读取成功后的提示语句/* 定义插入学生信息模块 */void insert() int i,j,temp; / 定义temp整型变量,目的是动态选择插入学生个数 printf(请输入插入的学生个数:); scanf(%d, &temp); / 输入需插入的学生的个数 printf(*n); printf(请录入学生信息:学号 姓名 英语 c语言 高等数学(数据之间用空格隔开): n); N=N+temp; / 插入后的学生个数 for (j=0,i=(N-temp);iN;i+,j+) / 插入后是从最开始设置N个学

24、生的第N个开始遍历输入学生数据数据,否则前面的数据被覆盖 scanf(%d %s %f %f %f, &sduN-temp+j.num, sduN-temp+j. name, &sduN-temp+j.Eng, &sduN-temp+j.c, &sduN-temp+j.math); sduN-temp+j.aver=(sduN-temp+j.Eng+sduN-temp+j.c+sduN-temp+j.math)/3; printf(* 插入成功!*n); /插入成功后的提示语句表4.1 系统设计遇到问题及解决方案函数名设计者设计中出现的问题描述解决途径Insert(插入)吴竹在函数运行时不能实

25、现动态的添加通过小组讨论得出:数组的长度可以用宏定义的方式定义,而可以定义一个长度较大的常数Search(查询)彭婷查找不准确通过查找资料得出:选择学号查找。每一个学生的学号唯一,这样查询出来的结果准确。4.2 运行结果菜单展示:1.输入功能展示:2.显示功能展示:3.查询功能展示:4.成绩排序功能展示:5.保存功能展示:6.读取数据功能展示:7.插入学生信息功能展示:5 小结本次课程设计之前,我感觉学的东西很少,很零散,不知该怎么融合到一起,就要课程设计,是不是太难为我们了。刚看到题目时,我一脸茫然,完全不知道如何下手、从哪里下手,没有一点思绪。但是我明白,这是一个很好的锻炼机会。第一周基本上都是在看书,把基本知识再熟悉一边。到了第二周的时候,还是没有思路,就看了看老师发的例题,从这道例题上我得到了不少启发,然后我把整个程序的思

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1