学生成绩管理系统课程设计报告
更新时间:2023-08-24 07:01:01 阅读量: 教育文库 文档下载
软件设计基础
课程设计报告
班级:网络工程08-X班 姓名: XXX 学号: 082********
2009年07月03日
目 录
1 课程设计的目的……………………………………………………1 2 课程设计的时间……………………………………………………1 3 课程设计的内容……………………………………………………1 3.1 基本要求题目…………………………………………………1 3.1.1 题目名称及要求……………………………………………1 3.1.2 程序…………………………………………………………1 3.1.3 执行结果……………………………………………………2 3.2 综合训练………………………………………………………2 3.2.1 设计题目……………………………………………………2 3.2.2 设计要求……………………………………………………2 3.2.3 系统各模块(函数)组成…………………………………3 3.2.4 流程图………………………………………………………3 3.2.5 各变量的定义和作用 ……………………………………11 4 课程设计遇到的问题及解决过程 ………………………………11 5 课程设计心得体会 ………………………………………………11 6 参考文献 …………………………………………………………11 7 附录 ………………………………………………………………12
2
1 课程设计的目的
通过C语言课程设计的实际锻炼,进一步深刻学习C语言的精髓,掌握C语言的基本编程方法。通过对程序的编写,锻炼自己的动手能力和解决问题的能力,能够体会到发现问题、解决问题的过程的幸苦。
通过本次的课程设计,更深一步磨练自己克服困难的意志,体会C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高的特点,从而培养自己程序汇编语言的思想,深刻理解结构化程序设计方法以及模块化设计的思想。 课程设计目的的基本要求:
1 通过课程设计,进一步熟悉掌握以下知识:数据类型、分支控制、循环控制、函数的定义及调用、结构体及数组、指针等。
2 通过课程设计,达到系统理解、综合运用课程知识的学习目标。 3 通过课程设计,学会用C语言程序解决实际问题的方法。
2 课程设计时间 6月22日——7月3日 3 课程设计内容
3.1 基本要求题目 3.1.1 题目名称及要求
请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。(数组维数用宏定义)
3.1.2 程序
运行程序环境 Turbo C++ 6.0
#include "stdio.h" #define M 4 #define N 5 void main() {
int fun(int a[M][N]);
int num[M][N]={{7,8,9,4,5},{4,5,6,3,1},{4,5,6,3,2},{7,9,6,5,2}}; int b;
b=fun(num);
1
printf("数组的外围元素之和是\n%d\n",b); }
int fun(int a[M][N]) {
int i,j,sum=0; for(i=0;i<M;i++) for(j=0;j<N;j++) {
if(i==0||j==0||i==M-1||j==N-1) sum=sum+a[i][j]; }
return (sum); }
3.1.3 执行结果
通过宏定义,已经定义数组维数,并在主函数给定数组。 程序在Turbo C++ 6.0环境下运行结果为: 数组的外围元素之和是: 73
3.2 综合训练
3.2.1 设计题目
学生成绩管理(结构体数组、函数、指针、算法及流程结构等的综合应用)程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统
3.2.2 设计要求
(1) 主菜单
(2) 各菜单项功能
1.成绩录入:输入学生的学号、姓名及三门课的成绩; 2.成绩查询:
按学号查询学生成绩。 查询不及格学生的成绩。 3.成绩统计:
计算学生的平均分;
根据学生的平均分高低,对学生的数据进行排序后输出; 对学生单科成绩排序,输出学生姓名与该科成绩;
2
4.退出系统:退出整个系统(即主菜单)。 3.2.3 系统各模块(函数)组成
系统通过宏定义,定义了全局变量,即学生人数,学科门数,以及定义了数组,以供输入学生学号的取用。本系统通过主函数main,调用主菜单,通过主菜单的选择语句,继续调用成绩录入函数、成绩查询函数、成绩统计函数,执行完各个函数后,再次返回主菜单函数,通过主菜单,实行退出,以上描述可参见下图,以便观看:
图3-2-3模块关系图
3.2.4 流程图 本程序流程图如下:
3
图3-2-4-1 主函数流程图
图3-2-4-2 菜单函数流程图
4
图3-2-4-3 成绩录入函数流程图
5
图3-2-4-4 成绩查询函数流程图
6
7
8
9
图3-2-4-5 成绩统计函数流程图
10
3.2.5 各变量的定义和作用
主函数:定义整型变量,作为以下子函数的使用。
主菜单:定义了整型变量,用于判断,从而进行选择。
成绩录入函数:定义整型变量i,j,用于循环,进行多人成绩,姓名的录入。 成绩查询函数:定义整型变量no和字符变量name,用于对所查学生的姓名以及循环的使用。
成绩统计函数:定义整型变量i,j,为了能够在对成绩的求平均值以及冒泡法排序实现循环做铺垫;定义了浮点型变量Average,分别表示学生的单科平均成绩和总平均成绩;定义了浮点型temp变量,实现平均值的代替;定义了字符型temp1,temp2,实现对学生名字的代替。.
4 课程设计遇到的问题及解决过程
1. 在引用库函数的时候出现警告,通过咨询指导老师以及查阅书籍,通过加入头文件,解决了警告问题。
2. 对宏定义知识点认识不足,通过同学讨论、问老师,对宏定义有了进一步了解,掌握了宏定义的应用方法,实现了在程序中正确应用宏定义的方法。
3. 起初无法实现对调用子函数后返回主菜单的方法,通过网上学习,用getch()解决了这类问题。
4. 运行程序过程中,无法对调用后的清屏工作进行处理,通过查找书籍,运用“cls”解决了此类问题。
5 课程设计心得体会
通过本次课程设计,锻炼了自己的意志,在探索中发现问题,在实践中解决问题,并在思考中完善问题。这次课程设计,让我真正的了解了C语言的思想所在,也让我感受到了程序汇编语言的魅力,知道了它简单的一面和它难的一面。既看见了探索的重要,也懂得了团队精神的可贵。
通过这次实际的操作,也让我看到了我自身的不足之处,深知自己的水平的浅显,了解了C语言,以及科学的严谨,看见了科学的伟大,并且树立了对科学的探索目标。 这次课程设计也同样让自己有了对自己本专业深层次的认识,并对自己以后的专业课的学习有了新的目标,对自己的以后的学习规划有了更进一步的想法。
6 参考文献
[1] 谭浩强著.C程序设计(第三版).北京:清华大学出版社,2005
11
7 附录:
+++++++++++++++++++++++++++++++++++++++++ fun函数源程序详细信息
+++++++++++++++++++++++++++++++++++++++++ #include "stdio.h" #define M 4 #define N 5 void main() {
int fun(int a[M][N]);
int num[M][N]={{7,8,9,4,5},{4,5,6,3,1},{4,5,6,3,2},{7,9,6,5,2}}; int b;
b=fun(num);
printf("数组的外围元素之和是\n%d\n",b); }
int fun(int a[M][N]) {
int i,j,sum=0; for(i=0;i<M;i++) for(j=0;j<N;j++) {
if(i==0||j==0||i==M-1||j==N-1) sum=sum+a[i][j]; }
return (sum); }
+++++++++++++++++++++++++++++++++++++ 综合训练源程序详细信息
+++++++++++++++++++++++++++++++++++++ #include<stdio.h> #include<stdlib.h> #include<conio.h>
#define N 3 /*学生人数*/ #define M 3 /*课程门数*/ void input(); void display(); void search(); void statistics(); void menu();
12
char name[50][50]; int snum[10];
float courses[N][M];
void main()/*主函数*/ {
int i=0; int j=0; while(1)
{ system("cls"); /*清屏*/ menu(); } }
void menu()/*菜单*/ {
int num=0; int n=0;
printf("++++++++++++++++++++++++++++++++++++++++++++++\n"); printf("+ 学生成绩管理系统 +\n");
printf("++++++++++++++++++++++++++++++++++++++++++++++\n"); printf("+ 1. 成绩录入 +\n"); printf("+ 2. 成绩查询 +\n"); printf("+ 3. 成绩统计 +\n"); printf("+ 4. 退 出 +\n");
printf("++++++++++++++++++++++++++++++++++++++++++++++\n"); printf("++++++++++++++++++++++++++++++++++++++++++++++\n"); printf(" 请选择(选项数字1-4):"); scanf("%d",&num); switch(num) {
case 1:
system("cls"); input(); break; case 2:
system("cls");
printf("请输入要查询的学生号:"); scanf("%d",&n); search(n); break; case 3:
13
system("cls"); statistics(); break; case 4:
exit(1);
default:break; } }
void input() /*成绩录入*/ {
int i=0; int j=0;
for(i=0;i<N;i++) {
printf("请输入学生号:"); scanf("%d",snum); getch();
printf("请输入学生姓名:"); getchar();
scanf("%s",&name[i]); for(j=0;j<M;j++) {
printf("第%d门成绩的分数为:",j+1); scanf("%f",&courses[i][j]); }
printf("\n\n"); }
printf("\n");
printf("**********************************\n"); printf("*已输入完毕,按任意键返回主选单!*\n"); printf("**********************************\n"); getch(); }
void search(int no)/*成绩查询函数*/ {
int i=0;
printf("您选择了查看学生%d号的成绩:",no); printf("姓名是:");
14
puts(name[no-1]); for(i=0;i<M;i++) {
printf("%0.2f ",courses[no-1][i]); }
printf("\n");
printf("**********************************\n"); printf("* 按任意键返回主选单! *\n"); printf("**********************************\n"); getch(); }
void statistics() /*成绩统计函数*/ {
float cAverage[M]; /*每门课程平均分*/ float sAverage[N]; /*每个学生平均分*/ float temp=0; char temp1=0; char temp2=0; int i=0; int j=0;
/*算平均分*/
printf("单科课程平均分为:"); /*单科课程平均分*/ for(i=0;i<M;i++) {
for(j=0;j<N;j++) {
temp=temp+courses[j][i]; }
cAverage[i]=temp/M;
printf("%0.2f\t",cAverage[i]); temp=0; temp1=0; temp2=0; }
temp=0;
printf("\n学生成绩平均分为:\n"); for(j=0;j<N;j++) /*学生成绩平均分*/ {
for(i=0;i<M;i++) {
temp=temp+courses[j][i];
15
}
sAverage[j]=temp/N;
printf("%0.2f\t",sAverage[j]); puts(name[j]);
temp=0; }
/*排序(冒泡法)*/ for(i=0;i<M;i++) for(j=0;j<M-i-1;j++)
if(cAverage[j]<cAverage[j+1]) {
temp=cAverage[j];
cAverage[j]=cAverage[j+1]; cAverage[j+1]=temp; strcpy(temp1,name[j]);
strcpy(name[j][j],name[j+1][j+1]); strcpy(name[j+1][j+1],temp1); }
printf("\n单科课程的前三名:"); for(i=0;i<3;i++) {
printf("\n第%d名:%0.2f 姓名:",i+1,cAverage[i]); puts(name[i]); }
temp=0;
for(j=0;j<N;j++) for(i=0;i<N-j-1;i++)
if(sAverage[i]<sAverage[i+1]) {
temp=sAverage[i];
sAverage[i]=sAverage[i+1]; sAverage[i+1]=temp; strcpy(temp2,name[i][i]);
strcpy(name[i][i],name[i+1][i+1]); strcpy(name[i+1][i+1],temp2); }
printf("\n学生总成绩前三名:"); for(i=0;i<3;i++) {
printf("\n第%d名:%0.2f 姓名:" ,i+1,sAverage[i]); puts(name[i]); }
16
printf("\n");
printf("**********************************\n"); printf("* 按任意键返回主选单! *\n"); printf("**********************************\n"); getch(); }
17
正在阅读:
学生成绩管理系统课程设计报告08-24
×抵押位于株洲市云龙示范区××的二宗划拨土地使用权价格评估(05-14
人教版生物八年级下册第八单元-健康地生活-(第二章-03-11
中考成语(词语)运用题及答案11-05
概要设计说明书(项目描述 功能结构图 业务流程图)12-13
区环水局年度工作总结及工作计划12-23
2020年年会主题词参考范本03-04
最新编制停车场建设项目总承包(EPC)承包人实施方案实施要点管理04-26
奶奶的厨艺作文500字06-21
POCIB操作中各流程所需提交单据大全01-22
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 管理系统
- 成绩
- 课程
- 报告
- 学生
- 设计
- 安检英语
- (STC单片机STC15系列汇编头文件)STC15W4K60S4.INC
- 铜、铅、锌原矿和尾矿化学分析方法_流动注射纤维微型柱分离富集-火焰原子吸收光谱法测定金
- 2015-2020年中国有源滤波器行业分析与投资趋势预测报告
- 13项职业卫生管理制度及操作规程编制要点和范
- 2014广东教师面试常考题目即兴问答攻略
- 2017年中国声学材料市场现状研究及发展趋势预测报告(目录)
- 第十二章 第一节:幼儿游戏活动心理
- 初中八年级英语上册 If you go to the party,you’ll have a great time!Section B(2a—2e)
- 互联网医疗保健信息服务许可申请
- 和静县第八小学铁路爱路护路宣传月活动工作小结
- 2019-2020年高中选修语文第三单元 汤显祖与《牡丹亭》人教版复习巩固第三篇
- 熔融沉积快速成型的工艺分析_董海涛
- 马丽娟二上体育教学计划
- (目录)2017-2022年中国儿童医疗行业发展预测及投资咨询报告-产业研究预测
- FT_VantagePoint_EMI_基于集成架构构建信息系统OnTour2013_RSTE2012US_MI14
- 审计学02任务(一)
- 2019版高考数学二轮复习 专题对点练24 圆锥曲线中的定点、定值与存在性问题 文
- 环境保护措施及方案
- 2019-2020年四年级英语下册 Module1 Unit1 第一课教案 沪教牛津版