版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.中 国 地 质 大 学本科生课程论文封面课程名称 C语言课程设计 教师姓名 李章林 本科生姓名 本科生学号 本科生专业 所在院系 类别: 日期: 2013年12月31日 课程设计评语对课程论文的评语:平时成绩:课程论文成绩:总 成 绩:评阅人签名:注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。目 录课程设计评语2目 录31课程论文题目42程序设计思路43功能模块图54数据结构设计55算法设计66程序代码107程序运行结果188编程中遇到的困难及解决方法229总结心得及良好建议2210致谢23一、课程论文题目
2、:学生成绩管理系统1:题目要求请设计学生成绩管理系统,实现学生信息的录入,显示,查找,添加,保存,删除,插入等功能模块。要求功能选择用菜单实现,数据输入和结果输出要求有文件存放。原始数据文件格式:学号 姓名 英语 C语言 高等数学 平均成绩01 张三 75 85 80 8002 李四 2:需求分析根据题目要求,由于学生信息总是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择。3:总体设计根据上面的需求分析,可以将这个系统的设计分为:数据输入模块、数据显示模块、数据查找模块、数据插入模块、成绩排序模块
3、和成绩保存模块等。二、程序设计思路这次是初次要自主设计一个程序系统。系统要求实现学生信息的录入、显示、查找、添加以及成绩排序等功能。对于几个功能,可分别设置7个部分。根据需求分析,可以将这个系统分为以下模块:输入模块,录入模块,修改模块,保存模块,查询功能模块,删除功能模块,以及排序模块.1、 用户输入模块在此模块中用户根据自己的需求输入数字17中的任意一个数字,实现相应的功能。2、 信息录入功能模块此模块可以让用户输入每个学生的信息:学号、姓名、英语成绩、C语言成绩、高等数学成绩、平均成绩。用户可以连续输入学生的信息,或者删除或者查询,也可以保存当前已录入的信息。3、 修改学生成绩模块用户可
4、以根据实际情况的变化修改已录入的学生成绩的信息,跟实际同步。4、 文件保存模块用户可以在确定已录入的信息无误之后将学生的信息存为一个数据文件。已保存的信息可以再文件中查看也可以在程序中进行查看。用户输入的学生信息可以随时保存。5、 查询功能模块在此模块里,用户可以根据提示输入所想要查询的学生的学号以查询学生的信息。6、 删除功能模块、在此模块里,用户可以根据自己的需求选择想要删除的学生信息,选择之后程序会再次确认,以防误删。 7、排序功能模块 在此模块中,程序会将用户已录入的信息按平均成绩由低到高进行排序。 三、功能模块图:开始x值 1值 2值 7值 6值 5值 4值 3查询模块修改退出排序模
5、块保存模块删除模块添加模块用户输入并将值保存至xx结束四、数据结构设计struct xueshengchengji /*声明学生成绩数据结构体*/char xuehao10; /*学生学号*/char name10; /*学生姓名*/float cyuyan; /*c语言成绩*/float math; /*高数成绩*/float english; /*英语成绩*/ float average; /*平均成绩*/;struct xueshengchengji chengji100,*p=chengji; /*声明记录学生成绩情况的100个元素的结构体数组*/五、算法设计开始选择需要的功能输入学生
6、信息结束1、添加模块void add() printf ("t请输入学生学号:");fflush(stdin); /*清除键盘缓冲区*/gets(chengji+n.xuehao);printf("tttt请输入学生姓名:");gets();printf("tttt请输入该学生的英语成绩:");scanf("%f",&chengjin.cyuyan);printf("tttt请输入该学生的C语言成绩:");scanf("%f",&ch
7、engjin.math);printf("tttt请输入该学生的高等数学成绩:");scanf("%f",&chengjin.english); /*计算总成绩*/chengjin.average=(chengjin.cyuyan+chengjin.math+chengjin.english)/3; /*输出内容*/printf("ntttt该学生成绩为:%f",chengjin.average);开始输入要修改的学生学号输入新的学生信息结束printf("nntttt按任意键返回.");getch();2
8、、修改模块void modify ( )char xuehao10; /*接收学生学号字符数组*/int i; /*循环变量*/if (n=-1) /*人数为0说明成绩记录尚未添加*/printf("nntt当前还没有学生成绩记录,按任意键返回主菜单.");getch( );return;printf("t请输入学生学号:"); /*提示信息*/gets(xuehao); /*从键盘读取字符串*/for (i=0;i<=n;i+) /*在学生总数范围内循环查找*/if(strcmp(chengjii.xuehao,xuehao)=0) /*比较并找
9、到*/*显示该学生成绩情况*/printf("nttt 该学生成绩情况如下: ");printf("nttt=nn"); printf("学号 姓名 平均成绩"); printf("英语 C语言 高等数学"); printf("%-6s%-6s",chengjii.xuehao,); printf("%9.2f%9.2f%9.2f%9.2f",chengjii.cyuyan,chengjii.math,chengjii.english,chengji
10、i.average);/*接受该学生新的成绩情况*/ printf("ntt 请输入该学生新的英语成绩: ");scanf ("%f",&chengjii.cyuyan); printf("ntt 请输入该学生新的C语言成绩: ");scanf ("%f",&chengjii.math); printf("ntt 请输入该学生新的高等数学成绩: ");scanf ("%f",&chengjii.english);3、查询模块开始输入要查询的学生学号输出
11、学生信息结束/*查询学生成绩(依据学号)*/void find()char xuehao10; /*接收学生学号字符数组*/ int i; /*循环变量*/ if(n=-1) /*人数为0说明成绩记录尚未添加*/printf("nntt当前还没有学生成绩,按任意键返回主菜单.");getch();return;printf("t请输入学生学号:"); /*提示信息*/gets(xuehao); /*从键盘读取字符串*/for(i=0;i<=n;i+) /*在职工总数范围内循环查找*/if(strcmp(chengjii.xuehao,xuehao)
12、=0) /*比较并找到*/printf("n 该学生成绩情况如下:"); printf("n=nn");printf("学号 姓名");printf("英语 C语言 高等数学 平均成绩");printf("%-6s%-6s%",chengjii.xuehao,);printf("%9.2f%9.2f%9.2f%9.2f",chengjii.cyuyan,chengjii.math,chengjii.english,chengjii.average);
13、printf("n 按任意键返回主菜单.");getch();break;if(i=n+1)printf("ntt您所输入的学生学号有误或不存在!");printf("按任意键返回主菜单.");getch();return;4、删除模块输入要删除学生学号开始判断是否要删除删除学生记录结束语NYvoid del()char xuehao10; int i,j; char d; printf("t请输入待删除学生学号:");gets(xuehao);for(i=0;i<=n;i+) if(strcmp(cheng
14、jii.xuehao,xuehao)=0)printf("ntt你确认要删除%s号学生成绩信息么(y/n)?",chengjii.xuehao );d=getche();if(d='y'|d='Y') if(i=n) n-;else for(j=i;j<=n;j+) strcpy(chengjij.xuehao,chengjij+1.xuehao);strcpy(,chengjij+1.name);chengjij.english=chengjij+1.english;chengjij.math=chengji
15、j+1.math; chengjij.cyuyan=chengjij+1.cyuyan; n-;printf("nntt该学生记录成功删除,按任意键返回主菜单.");getch();break; else printf("nntt你选择了不删除该学生记录,按任意键返回主菜单.");getch();return;if(i = n+1) printf("ntt本班级无此学号,按任意键返回主菜单.");getch();开始选择需要的功能按成绩低到高排序结束5、排序模块void rank() int i,j; printf("t按平
16、均成绩排序如下n");for (i=0;i<n;i+)for(j=i+1;j<n;j+)if (chengjii.average>chengji j.average)*p=chengjij;chengjij=chengjii;chengjii=*p;printf("%-6s%-6s","学号","姓名"); printf("%-12s%-6s%12s%-9sn","英语","C语言","高等数学","平均成绩"
17、;);for(i=0;i<=n;i+) printf("%-6s%-6s",chengjii.xuehao,); printf("%9.2f%9.2f%9.2f%9.2fn",chengjii.cyuyan,chengjii.math,chengjii.english,chengjii.average); printf("nntttt按任意键返回."); getch();六、程序代码nclude <stdio.h> /*基本的输入输出函数*/#include <conio.h>
18、/*getch()及getche()函数包含在此*/#include <string.h> /*字符串相关函数*/#include <windows.h> #define TRUE 1/*以下函数为自定义函数声明语句*/void read(); /*从数据文件中读取学生成绩数据*/void write(); /*从学生成绩数据文件写入记录*/void find(); /*查询学生成绩数据记录*/void modify(); /*修改学生成绩数据记录*/void add(); /*向学生成绩数据文件中增加记录*/void del(); /*从学生成绩数据文件中删除记录*/
19、void rank(); /*排列学生成绩*/struct xueshengchengji /*声明学生成绩数据结构体*/char xuehao10; /*学生学号*/char name10; /*学生姓名*/float cyuyan; /*c语言成绩*/float math; /*高数成绩*/float english; /*英语成绩*/float average; /*平均成绩*/;struct xueshengchengji chengji100,*p=chengji; /*声明记录学生成绩情况的100个元素的结构体数组*/int n = -1; /*声明统计学生人数的变量*/void
20、main() char ch;read(); /*从数据文件中读取学生成绩数据并初始化学生成绩结构体数组*/while(TRUE) system("cls"); /*清屏命令*/printf("tt请选择(1-7):n");printf("tt=n"); printf("ttt 1.查询学生成绩记录n");printf("ttt 2.修改学生成绩记录n");printf("ttt 3.添加学生成绩记录n");printf("ttt 4.删除学生成绩记录n"
21、);printf("ttt 5.保存学生成绩记录n");printf("ttt 6.成绩排序n");printf("ttt 7.退出n");printf("tt=n"); printf("ntt");ch=getch();switch(ch) case '1':find();break; /*查询*/case '2':modify();break; /*修改*/case '3':add();break; /*添加*/case '4'
22、:del();break; /*删除*/case '5':write();break; /*保存*/case '6':rank();break; /*排序*/case '7':return; /*退出*/default:printf("tt n");getch();return;/*从数据文件cj.dat中读取学生成绩数据到数据组chengji中*/void read()FILE * file; /*声明文件指针*/if(file=fopen("cj.dat","rb")=NULL)/*
23、以二进制方式打开学生成绩数据文件,并判断是否失败*/ printf("nnt 学生成绩数据文件无法打开,或为空!");printf("nnt 按任意键进入主菜单.");getch();return;else /*文件打开成功时*/n+; /*计算结构体数组下标*/while(fread(&chengjin,sizeof(chengjin),1,file) = 1)n+;fclose(file); /*关闭文件指针*/printf("nnt学生成绩数据读取完毕n",n);n-; /*计算学生记录总数*/*向学生成绩数据文件中写入
24、记录*/void write()FILE *file; /*声明文件指针*/if(n = -1) /*学生人数为 0 时*/printf(" 没有数据可存!按任意键返回主菜单 n");getch();return;if(file=fopen("cj.dat","wb")!=NULL)/*以二进制方式打开学生成绩数据文件,并判断是否失败*/fwrite(&chengji0,sizeof(chengji0),n+1,file); /*所有记录一次写入文件*/fclose(file); /*关闭文件指针*/printf("
25、nntt%d条学生记录保存完毕!n",n+1);else /*文件打开不成功时*/printf("tt无法打开学生成绩数据文件!n");printf("ntt按任意键返回主菜单. ");getch();/*查询学生成绩(依据学号)*/void find()char xuehao10; /*接收学生学号字符数组*/int i; /*循环变量*/if(n=-1) /*人数为0说明成绩记录尚未添加*/printf("nntt当前还没有学生成绩,按任意键返回主菜单.");getch();return;printf("t请输
26、入学生学号:"); /*提示信息*/gets(xuehao); /*从键盘读取字符串*/for(i=0;i<=n;i+) /*在学生总数范围内循环查找*/if(strcmp(chengjii.xuehao,xuehao)=0) /*比较并找到*/printf("n 该学生成绩情况如下:");printf("n=nn");printf(" 学号 姓名");printf(" 英语 C语言 高等数学 平均成绩n"); printf("%6s%6s",chengjii.xuehao,ch
27、);printf("%9.2f%9.2f%9.2f%9.2f",chengjii.cyuyan,chengjii.math,chengjii.english,chengjii.average);printf("n 按任意键返回主菜单.");getch();break;if(i=n+1)printf("ntt您所输入的学生学号有误或不存在!");printf("按任意键返回主菜单.");getch();return;void list()int i;system("cls")
28、;printf("nnttt 全体学生成绩情况如下n");printf("ttt=nn");printf("学号 姓名 ");printf("英语 C语言 高等数学 平均成绩");for(i=0;i<=n;i+)printf("%6s%6s%9s",chengjii.xuehao,,chengjii.average);printf("%9.2f%9.2f%9.2f",chengjii.english,chengjii.math); void m
29、odify ( )char xuehao10; /*接收学生学号字符数组*/int i; /*循环变量*/if (n=-1) /*人数为0说明成绩记录尚未添加*/printf("nntt当前还没有学生成绩记录,按任意键返回主菜单.");getch( );return;printf("t请输入学生学号:"); /*提示信息*/gets(xuehao); /*从键盘读取字符串*/for (i=0;i<=n;i+) /*在学生总数范围内循环查找*/if(strcmp(chengjii.xuehao,xuehao)=0) /*比较并找到*/*显示该学生成绩
30、情况*/printf("nttt 该学生成绩情况如下: ");printf("nttt=nn");printf(" 学号 姓名");printf(" 英语 C语言 高等数学 平均成绩n"); printf("%6s%6s",chengjii.xuehao,);printf("%9.2f%9.2f%9.2f%9.2f",chengjii.cyuyan,chengjii.math,chengjii.english,chengjii.average);/*
31、接受该学生新的成绩情况*/printf("ntt 请输入该学生新的英语成绩: ");scanf ("%f",&chengjii.cyuyan);printf("ntt 请输入该学生新的C语言成绩: ");scanf ("%f",&chengjii.math);printf("ntt 请输入该学生新的高等数学成绩: ");scanf ("%f",&chengjii.english);/*计算总成绩*/chengjii.average=(chengjii.
32、cyuyan+chengjii.math+chengjii.english)/3; /*同屏显示计算结果*/printf("nttt 该学生成绩是: %f",chengjii.average);printf("nntt 该学生成绩数据修改成功! 按任意键返回主菜单.");getch();return ;printf("ntt 您所输入的学生学号有误或不存在! ");printf("按任意键返回主菜单.");getch();return;/*向学生管理系统中则增加记录*/void add()printf ("
33、;t请输入学生学号:");fflush(stdin); /*清除键盘缓冲区*/gets(chengji+n.xuehao);printf("tttt请输入学生姓名:");gets();printf("tttt请输入该学生的英语成绩:");scanf("%f",&chengjin.cyuyan);printf("tttt请输入该学生的C语言成绩:");scanf("%f",&chengjin.math);printf("tttt请输入该
34、学生的高等数学成绩:");scanf("%f",&chengjin.english);/*计算总成绩*/chengjin.average=(chengjin.cyuyan+chengjin.math+chengjin.english)/3; /*输出内容*/printf("ntttt该学生成绩为:%f",chengjin.average);printf("nntttt按任意键返回.");getch();/*从学生成绩数据文件中删除记录*/void del()char xuehao10; /*接收学生学号字符数组*/i
35、nt i,j; /*循环变量*/char d; /*接收确认删除字符:y/n*/printf("t请输入待删除学生学号:");gets(xuehao);for(i=0;i<=n;i+) /*在学生总数范围内循环查找*/ if(strcmp(chengjii.xuehao,xuehao)=0) /*比较并找到*/printf("ntt你确认要删除%s号学生成绩信息么(y/n)?",chengjii.xuehao );d=getche();if(d='y'|d='Y') /*确认删除*/if(i=n) /*如果是最后一条
36、记录*/n-;else /*不是最后一条记录*/for(j=i;j<=n;j+) /*从该记录开始后续记录更新前一条记录*/strcpy(chengjij.xuehao,chengjij+1.xuehao); strcpy(,chengjij+1.name);chengjij.english=chengjij+1.english;chengjij.math=chengjij+1.math;chengjij.cyuyan=chengjij+1.cyuyan;n-;printf("nntt该学生记录成功删除,按任意键返回主菜单."); getch
37、();break;else /*未确认删除记录*/printf("nntt你选择了不删除该学生记录,按任意键返回主菜单.");getch();return;if(i = n+1) /*未找到指定学号或未删除记录*/ printf("ntt本班级无此学号,按任意键返回主菜单.");getch();/*排列学生的成绩*/void rank()int i,j; /*循环变量*/printf("t按平均成绩排序如下n");for (i=0;i<n;i+)for(j=i+1;j<n;j+)if (chengjii.average>chengji j.average)*p=chengjij;chengjij=chengjii;chengjii=*p;printf("%-6s%-6s","学号","姓名");printf("%-12s%-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024电力资源互供电紧急调配协议
- 二手车专属购买授权协议:2024年
- 2024年铝合金门窗施工及保修协议
- 2024私人借贷协议详细示例大全
- 2024年小型公司劳动协议模板
- 怎么写电脑买卖合同范本
- 齐齐哈尔大学《计算机绘图及BIM应用》2023-2024学年第一学期期末试卷
- 齐齐哈尔大学《过程装备维修管理工程》2023-2024学年第一学期期末试卷
- 入股网吧合同范本
- 生活学习需要乐观心态 演讲稿
- 特种作业电工上岗证低压电工作业(培训课件)
- SYB创业培训课件完整版
- 一手试题烘焙面销培训
- 初中语文人教七年级下册冉玥《驿路梨花》微课教案设计
- 中国农业科学院科研道德规范
- 认识计算机系统的组成
- 人教版版中国历史八年级上册知识点归纳梳理
- 国家职业技术技能标准 3-02-03-01 消防员(2022年版)
- GB/T 36242-2018燃气流量计体积修正仪
- GB/T 2818-2014井用潜水异步电动机
- 5 汪曾祺《跑警报》.电子教案教学课件
评论
0/150
提交评论