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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

c语言课程设计学生成绩管理系统七大功能模块.docx

1、c语言课程设计学生成绩管理系统七大功能模块中 国 地 质 大 学本科生课程论文封面课程名称 c语言课程设计 教师姓名 陈伟涛 本科生姓名 本科生学号 20111000013 本科生专业 安全工程 所在院系 工 程 类别: 本 科 生 日期: 2013 - 1 - 12 课程设计评语对课程论文的评语:平时成绩:课程论文成绩:总 成 绩:评阅人签名:注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。1 课程论文题目学生成绩管理系统:【要求】设计“学生成绩管理系统”,实现学生成绩的录入、显示、查找、添加、保存以及成绩排

2、序等功能模块。要求功能选择用菜单实现,数据输入和结果输出要求用文件存放。原始数据文件格式(具体数据自行编写): 学号 姓名 英语 c语言 高等数学 平均成绩 1 张三 75 85 80 80 2 李四 . . . .2 程序设计思路【思考】(1) 需求分析 由于要录入、读取、保存学生成绩信息,因而要实现文件的输入输出功能;要求用户可以查询各个学生的成绩,并且可以添加学生成绩信息等,因而要提供查找和添加功能;另外,还应该提供键盘式选择菜单以实现功能选择。(2) 总体设计可以将这个系统的设计分为数据输入、数据显示、数据查找、成绩排序、保存数据、读取数据、数据插入7个模块。(3) 数据结构 把学生的

3、学号、姓名、科目成绩、平均成绩作为结构体成员,存放若干学生信息用结构体数组。3 功能模块图【输入学生数据模块】:【显示学生数据模块】:【查询信息模块】:【数据排序模块】:【数据保存模块】:【数据读取模块】:【数据插入模块】:4 数据结构设计 把学生的学号、姓名、科目成绩、平均成绩作为结构体成员,存放若干学生信息用结构体数组。用while循环控制功能菜单的选择,swith中设置相应的功能模块函数调用,调用完一个函数后然后返回while进行判断,结果为真则进行功能菜单的选择,如果条件为假则终止函数。5 算法设计(1) 总体设计把学生的学号、姓名、科目成绩、平均成绩作为结构体成员,存放若干个学生的信

4、息用结构体数组。将要实现的功能分为一个一个的函数模块,需实现哪个供的语句时就调用该功能语句。而要实现菜单式的功能选择又需要while中嵌套swith语句,即调用完一个函数后进行while判断,while中的条件控制语句如果为真,则执行功能选项,然后进行swith判断,符合case几的选项就调用相应的函数,然后再进行while判断,直到不符合条件是跳出循环,结束函数。这样就实现了函数的菜单式功能选择并得到相应的结果。(2) 各个功能模块的设计各个函数功能模块实现不同的功能,且互相不影响。加入需同时实现二个或两个以上的函数就同时调用函数,这与函数模块之间互相独立互不影响不矛盾,而且这样写思路清晰,

5、程序可读性高,不易出错,能够插入你想要的模块功能而不影响其他的函数和整体。(3) 输入数据模块具体算法首先是声明结构体,然后定义结构体数组,确定需输入学生的个数,即结构体数组的长度,数组的每一个元素都包含结构体中的所有成员,即一个学生的所有信息。用for循环遍历分别输入每一个学生的: 学号、姓名、英语成绩、c语言成绩、高等数学成绩,计算平均成绩。循环结束完后即完成了数据的录入操作。代码如下:void input(struct Student sdu) int i; printf(请录入学生信息:学号 姓名 英语 c语言 高等数学(数据之间用空格隔开): n); for(i=0;iN;i+) s

6、canf(%d %s %f %f %f, &sdui.num, sdui. name, &sdui.Eng, &sdui.c, &sdui.math); sdui.aver=(sdui.Eng+sdui.c+sdui.math)/3; (4) 学生信息输出模块具体算法输出学生数据跟输入学生信息类似,用for循环遍历结构体中的每一个成员,设置输出格式,就能完成每一个学生信息的输出显示功能。代码如下:void print(struct Student sdu) int i; for(i=0;i=N,此时执行提示语句,“无该学生信息!”,最后结束循环到功能选择菜单。代码如下: void search

7、(struct Student sdu) inti,num_get; printf(请输入要查询的学生的学号: ); scanf(%d, &num_get); for (i=0;i=N) printf(无该学生信息!n); (5) 学生成绩排序模块排序集体算法按学生平均成绩由高到低进行排序。用选择排序的方法进行排序,排序成功后再调用输出函数,实现学生平均成成绩由高到低的信息的输出。代码如下: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+)

8、 if(sdui.aversduj.aver) k=j; if (k!=i) temp=sdui;sdui=sduk;sduk=temp; (6) 保存学生信息模块具体算法首先定义一个结构体指针变量fp1,然后将文件指向打开文件的信息区,设置打开文件方式为写方式,如果打开文件失败则执行提示语句,如果打开文件成功执行fprintf函数,将结构体成员中的信息按指定的格式输出到fp1指向的文件中,关闭文件,然后返回到功能选项菜单。代码如下:void save() FILE *fp1; int i; if ( (fp1=fopen (student.txt, w) )=NULL) printf(can

9、not open filen); return; fprintf(fp1,%s, tips); for (i=0;iN;i+) fprintf(fp1,%3d %8s %8.1f %8.1f %8.1f %10.1fn,sdui.num, sdui. name, sdui.Eng, sdui.c, sdui.math, sdui.aver); fclose(fp1); (7) 读取数据模块具体算法 与保存数据模块原理一样,首先定义文件指针变量fp2,将fp2指向要读取数据的文件,设置打开方式为读。如果文件打开失败则执行提示语句,如果打开成功则执行下面的读入数据操作,读入完成关闭文件,然后后再调

10、用输出函数显示读取的数据,最后返回到菜单功能选择。代码如下:void read() FILE *fp2; int i; if(fp2=fopen(student.txt,r)=NULL) printf(cannot open 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.av

11、er); fclose(fp2); (8) 插入学生信息模块具体算法插入学生信息是在原来设定的的N个学生基础上又增加学生的信息,原理为插入的第一个学生是结构体数组的第N 个元素。定义整型变量,可实现选择添加几个学生的信息,用for循环遍历输入,信息输入完成后执行提示语句,即完成了学生信息的插入功能。代码如下:void insert() int i,j,temp; printf(请输入插入的学生个数:); scanf(%d, &temp); N=N+temp; for (j=0,i=(N-temp);iN;i+,j+) / 插入后是从最开始设置N个学生的第N个开始遍历输入学生数据数据,否则前面的

12、数据被覆盖 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; 注意:为了节省篇幅程序模块中的大多注释都已删除,如有不明白的地方可参考源程序中的注释!6 程序代码# include struct Student / 声明结构体,成员表列包括下列成员: int num; / 学号 char

13、 name20; / 姓名 float Eng; / 英语成绩 float c; / c语言成绩 float math; / 高等数学 float aver; / 平均成绩 sdu100; / 定义结构体数组,数组长度为100,数组的每一个元素都包含结构体的所有成员数据int N=3; /定义一个全局变量N,用来控制需输入的学生的个数,为了节省时间这里设置数组长度为3char tips=学号 姓名 英语 c语言 高等数学 平均成绩: n; /定义数组,目的是当学生信息存到文件的同时将该文件存到文件中,起提示作用int main() void input(struct Student sdu);

14、 / 声明输入学生信息函数 void print(struct Student sdu); / 声明输出学生信息函数 void search(struct Student *p); / 声明查找学生信息函数 void order(struct Student sdu); / 声明学生平均成绩排序函数 void save(); / 声明保存学生信息函数函数 void read(); / 声明从保存文件中读取学生信息函数 void insert(); / 声明插入学生信息函数 int menu; / 定义整型菜单选项 /* 菜单功能提示性模块*/ printf(*n); printf(* *n);

15、 printf(* 输入学生数据(请输入1) 输出学生信息(请输入2) *n); printf(* *n); printf(* *n); printf(* *n); printf(* 查询(请输入3) 成绩排序(请输入4) *n); printf(* *n); printf(* *n); printf(* *n); printf(* 将学生信息保存到文件中(请输入5) 从文件中读取学生信息(请输入6) *n); printf(* *n); printf(* *n); printf(* *n); printf(* 插入学生信息(请输入7) *n); printf(* *n); printf(*n

16、); menu=1; / 菜单选项变量初始化为1,目的是进入while下面的switch语句选择 while(menu=1 & menu=7) / 该系统要实现七个功能,每一个数字代表一个函数模块 printf(请输入功能选项: ); scanf(%d, &menu); switch(menu) case 1: input(sdu); / 当选择1时,调用输入学生信息函数 break; case 2: print(sdu); /当选择2时,调用输出学生信息函数 break; case 3: search(sdu); /当选择3时,调用查询学生信息函数 break; case 4: order(

17、sdu); print(sdu); / 当选择4时,调用学生平均成绩排序函数和输出学生信息函数 break; case 5: save(); / 当选择5时,调用保存学生信息函数 break; case 6: read(); / 当选择6时,调用读取学生信息函数和输出学生信息函数 print(sdu); break; case 7: insert(); / 当选择7时,调用插入学生信息函数 break; default: printf(error!n); / 当选择不在1-7范围内时,执行该语句,终止switch语句,然后跳出循环,函数结束 break; return 0; /* 定义输入学生

18、信息模块 */void input(struct Student sdu) int i; printf(*n); printf(请录入学生信息:学号 姓名 英语 c语言 高等数学(数据之间用空格隔开): n); / 该语句为提示性语句 for(i=0;iN;i+) / 从数组的第一个元素遍历,从终端键盘输入设定数目的学生信息 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)

19、; / 输入完学生信息后的提示语句,以便进入下一个功能选项/* 定义输出学生信息模块 */void print(struct Student sdu) int i; printf(* 输出结果为 *n); printf(学号 姓名 英语 c语言 高等数学 平均成绩n); for(i=0;iN;i+) / 遍历输出学生信息 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为

20、输出格式,定义数据的域宽/* 定义查询学生信息模块 */void search(struct Student sdu) int i, num_get; / 定义num_get整型变量,用来接收需查询的学生的学号 printf(请输入要查询的学生的学号: ); scanf(%d, &num_get); for (i=0;i=N) printf(无该学生信息!n); / 当i的值=N时则表示未查找到相应的学生的学号,则执行提示该语句 /* 定义学生成绩排序模块 */void order(struct Student sdu) int i, k, j; struct Student temp; fo

21、r (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); / 排序成功后的提示性语句/* 定义保存学生信息模块 */void save() FILE *fp1; / 定义文件指针变量fp1 int i; if ( (fp1=fopen (student.txt, w) )=NULL) / 将fp1指向所打开的student.txt文件的信息

22、区,打开文件方式为写 printf(cannot open filen); / 如果文件打开失败则提示该语句 return; fprintf(fp1,%s, tips); / 将主函数前的提示性语句保存到打开的文件中 for (i=0;iN;i+) fprintf(fp1,%3d %8s %8.1f %8.1f %8.1f %10.1fn,sdui.num, sdui. name, sdui.Eng, sdui.c, sdui.math, sdui.aver); / 将变量中的学生信息按预定的格式存入到打开的文件中 fclose(fp1); / 保存成功后关闭文件 printf(* 已将学生的

23、信息保存到文件中 *n); / 信息保存成功的提示性语句/* 读取保存在文件中的学生信息模块 */void read() FILE *fp2; int i; if(fp2=fopen(student.txt,r)=NULL) / 将fp2指针指向文件的信息区,打开方式为读 printf(cannot open this file!n); / 打开文件失败的提示语句 return 0; for(i=0;tipsi!=0;i+) / 遍历从保存的文件中读取文件中的提示语句 fscanf(fp2,%c, &tipsi); / 读取该提示信息是为了能够顺利读取存入的学生信息,实际输出时并未输出该提示语

24、句 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); / 读取成功后关闭文件 printf(* 从文件中读取的数据 *n); / 读取成功后的提示语句/* 定义插入学生信息模块 */void insert() int i,j,temp; / 定义temp整型变量,目的是动态选择插入学生个数 printf(请输入插入的学生个数:); scanf(%d, &temp); / 输入需插入的学生的个数 printf(*

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

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