级实习指导书.docx
- 文档编号:10509059
- 上传时间:2023-02-17
- 格式:DOCX
- 页数:45
- 大小:503.57KB
级实习指导书.docx
《级实习指导书.docx》由会员分享,可在线阅读,更多相关《级实习指导书.docx(45页珍藏版)》请在冰豆网上搜索。
级实习指导书
长江大学机械学院2011级
《计算机上机实习》指导书
一.完成内容
每个学生须完成两大题内容。
第一大题为必作内容,第二、第三大题为选作内容,可从其中任选择一题。
二.实习要求
学生按规定的上机时间安排表上机,不得无故迟到、早退、旷课,上机时间内不做与实习无关的内容。
三.实习报告要求
程序上机通过后,应编写实习报告。
实习报告应包括对题目的分析设计与说明、程序框图、源程序清单、原始数据及结果、程序有待改进的意见,对本次实习的意见与建仪、收获等。
要求实习报告为机算机打印稿。
报告封面采用统一格式,见附一。
四.答辩
完成编程和实习报告后,每个学生还须通过答辩。
答辩时由学生自己先讲述4-5分钟左右,内容包括:
程序设计思路、程序结构介绍、程序运行演示等。
然后问答指导教师提出的若干问题。
指导教师根据学生实习阶段的出勤、上机、程序及答辩的情况确定学生的实习成绩。
《计算机上机实习》题目一学生成绩管理
一.建立原始数据文件
1.用文字处理软件(用记事本\写字板\word\tc,不能用excel)新建一个文本文件,将本班M名学生在本学期的N门课程成绩录入到这个文件中,按如下形式存放。
要求:
学生人数M不少于30人,课程门数N不小于5,姓名为本班的真实姓名。
学号姓名英语数学大学物理机械制图C程序设计注:
表头可以不录入
1张国庆7680858283
2王艳9190889275
3李小华5665706966
4王红7888908576
5胡小明7888908576
......
2.将学生的基本信息按如下形式存入第二个文件中
学号姓名性别年龄职务注:
表头可以不录入
1张国庆男19无
2王艳女20文体委员
3李小华男20生活委员
4王红女21团支书
5胡小明男19无
......
3.将本学期的N门课程及学分输入到第三个文件中。
形式如下:
编号课程名称课程学分注:
表头可以不录入
1英语5.0
2数学5.0
3大学物理4.0
4机械制图4.5
5C程序设计4.0
6上机实习2.0
二.编写一个学生成绩管理程序,要求完成以下功能
1.读取原始数据文件的内容,计算每个学生的加权平均分(保留一位小数,4舍5入),按平均分排名次,平均分相同则名次相同。
创建一个数据文件(建议为:
文本文件),存放班级的成绩表,按下列式形存放。
学号姓名性别职务英语数学大学物理机械制图C程序设计平均分名次
1张国庆男无7680858283
2王艳女文体委员9190889275
3李小华男班长5665706966
4王红女团支部书记7888908576
5胡小明男无7888908576
......
注:
计算加权平均分的公式如下
2.分别统计全班每门课的平均分。
计算各分数段(<60;60~69;70~79;80~89;90以上)的学生人数。
创建一个数据文件(建议为:
文本文件),存放上述计算结果。
如下所示:
范围英语数学大学物理......
>=90(优秀)365......
80~89(良好)101112......
......
3.分别统计男生和女生每门课的平均分。
结果存放在一个数据文件中
4.输出所有存在不及格课程学生的名单,包括:
学号、姓名、性别、不及格课程名称、课程学分及成绩。
结果存放在一个数据文件中。
5.输出优秀学生名单,包括:
学号、姓名、性别、名门课成绩、平均分和名次。
结果存放在一个数据文件中。
优秀学生的条件为:
1.平均分≥902.名次在本班前3名
3.平均分≥85,并且至少有一门课的成绩为95分
4.平均分≥85,并且至少有二门课的成绩为≥90分
6.输出优秀学生干部名单,包括:
学号、姓名、性别、职务、名门课成绩、平均分和名次。
结果存放在一个数据文件中。
优秀学生的条件为:
1.平均分≥852.名次在本班前20%名
3.平均分≥80,并且至少有一门课的成绩为≥95分
4.平均分≥80,并且至少有二门课的成绩为≥90分
三.题目一的要求1.平均分≥90
2.名次在本班前3名
4.平均分≥85,并且至少有一门课的成绩为95分
4.平均分≥85,并且至少有二门课的成绩为≥90分
1.学生及课程数据的表示及文件读写
定义结构体数组表示全班学生的数据及课程的数据,结构体成员中包括学号、姓名、性别、职务成绩等内容。
为便于结果的显示、检查,建议文件读写时均采用“文本文件”方式。
分别由fscanf()和fprintf()函数实现原始数据的读入和计算结果的输出。
凡需输出的内容,除按要求写入文件外,均应同时在屏幕上显示,以便观察计算结果。
2.程序结构要求
为使程序结构清晰,要求将各大题中的所有小问题编成相应的函数,由主函数通过“菜单”方式调用相应的函数。
下面列举一个简易的两级“菜单”的例子供参考。
#include"stdio.h"
#include"conio.h"
voidmain()/*主菜单*/
{charch1;
do{clrscr();/*清屏*/
printf("\n\n\n\n\n\n\n\n\n");
printf("**************C语言程序设计上机实习****************\n");
printf("---------------------------------------------------\n\n");
printf("1学生成绩管理\n\n");
printf("2破译密码\n\n");
printf("3显示心形\n\n");
printf("4退出\n\n");
printf("输入选择序号\n");
while((ch1=getchar(),ch1!
='1'&&ch1!
='2'&&ch1!
='3'&&ch1!
='4'));
switch(ch1)
{case'1':
section1();break;
case'2':
section2();break;
case'3':
section3();break;
case'4':
exit(0);}
}while
(1);
}
section1()/*第1个2级菜单*/
{charch21;
do{clrscr();printf("\n\n\n\n\n\n\n\n\n\n");
printf("********************学生成绩管理系统**********************\n");
printf("------------------------------------------------------------------------------------------------\n\n");
printf("1.读入原始数据并显示2.计算平均分及名次\n\n");
printf("3.输出课程平均分和各分数段人数4输出男生和女生课程平均成绩\n\n");
printf("5.统计不及格情况6.输出优秀学生\n\n");
printf("7.输出优秀学生干部8.返回上级菜单\n\n");
printf("输入选择序号\n");
while((ch21=getchar(),ch21!
='1'&&ch21!
='2'&&ch21!
='3'&&ch21!
='4'&&ch21!
='5'&&ch21!
='6'
&&ch21!
='7'&&ch21!
='8'));
switch(ch21)
{case'1':
function1_1();break;
case'2':
function1_2();break;
case'3':
function1_3();break;
case'4':
function1_4();break;
case'5':
function1_5();break;
case'6':
function1_6();break;
case'7':
function1_7();break;
case'8':
return(0);}
}while
(1);
}
section2()/*第2个2级菜单*/
{charch22;
do{clrscr();printf("\n\n\n\n\n\n\n\n\n\n");
printf("*****************破译密码****************\n");
printf("----------------------------------------------------------------\n");
printf("1.运行\n\n");
printf("2.返回上级菜单\n\n");
printf("输入选择序号\n");
while((ch22=getchar(),ch22!
='1'&&ch22!
='2''));
switch(ch22)
{case'1':
function2_1();break;
ase'2':
return(0);}
}while
(1);
}
section3()/*第3个2级菜单*/
{charch23;
do{clrscr();printf("\n\n\n\n\n\n\n\n\n\n");
printf("*****************显示心形****************\n");
printf("-------------------------------------------------\n");
printf("1.运行\n\n");
printf("2.返回上级菜单\n\n");
printf("输入选择序号\n");
while((ch23=getchar(),ch23!
='1'&&ch23!
='2');
switch(ch23)
{case'1':
function3_1();break;
case'2':
return(0);}
}while
(1);
}
function1_1()
{printf("加入读入原始数据并显示的程序内容\n");
printf("*********按Enter键继续**********\n");
getchar();getchar();}
function1_2()
{printf("加入计算平均分及名次的程序内容\n");
printf("*********按Enter键继续**********\n");
getchar();getchar();}
function1_3()
{printf("加入计算课程平均分和分数段人数程序内容\n");
printf("*********按Enter键继续**********\n");
getchar();getchar();}
function1_4()
{printf("加入计算男生和女生课程平均成绩程序内容\n");
printf("*********按Enter键继续**********\n");
getchar();getchar();}
function1_5()
{printf("加入统计不及格情况程序内容\n");
printf("*********按Enter键继续**********\n");
getchar();getchar();}
function1_6()
{printf("加入输出优秀学生程序内容\n");
printf("*********按Enter键继续**********\n");
getchar();getchar();}
function1_7()
{printf("加入输出优秀学生干部程序内容\n");
printf("*********按Enter键继续**********\n");
getchar();getchar();}
function2_1()
{printf("加入破译密码的程序内容\n");
printf("*********按Enter键继续**********\n");
getchar();getchar();}
function3_1()
{printf("加入显示心形的程序内容\n");
printf("*********按Enter键继续**********\n");
getchar();getchar();}
题目二.破译密码
1.题目
有一个加密文件,它的密钥是从100至200中的一个素数,加密方法是每三个字母加上密钥中对应的数字,超出26个大写和小写的字母范围的减去26,空格和标点符号不加密。
例如,假设密钥为139,要加密的字符串为“Wearestudents”,第一个字母“W”加密为’W’+1=’X’,第二个字母加密后为’e’+3=’h’,第三个字母加密后为’a’+9=’j’,第四个字母加密后为’r’+1=’s’,第五个字母加密后为’e’+3=’h’,第六个字母加密后’s’+9超过了字母范围,所以减去26得,’s’+9-26=’b’,….。
读入已加密的文件,进行破译,将可能的密钥和相应的解密结果输出到另一个文件。
2.编程要点:
1)用fgets函数读入字符串
2)编一个函数处理所有可能的密钥,即计算从100到200的所有素数
3)将密钥化成三个元素的整型数组,分别对应百位、十位和个位
4)将所有英文字符按序轮换减去对应的数组元素,原来是大(小)写英文字符超出大(小)写英文字符范围加上26。
3.密码文件内容
Jkfpznfyaijjpwyfhabszxjy,ztbbwlbslyhlmqloyzuzkfsa.
题目三.显示心形
在屏幕上用字符输出一个心形,心形的极坐标方程为r=20(1-sinθ),x=r*cosθ+26,y=5-r*sinθ。
提示:
定义字符数组charcs[52][50],先均赋空格,计算出坐标x和y后取整作为字符数组的下标,使该字符取’H’,再输出该数组。
答辩记录
运行情况
原始数据
成绩排名
平均分和分数段统计
男女生成绩统计
不及格统计
优秀生统计
优秀学生干部统计
破译密码
显示心形
回答问题
1.
2.
3.
4.
5.
附一
计算机上机实习
实习报告
班级材料11101班
学号201100742
姓名江一平
指导教师管锋
完成日期2013年1月2日
(一)题目的分析设计与说明
程序要求说明:
1.用文字处理软件(用记事本\写字板\word\tc,不能用excel)新建一个文本文件,将本班M名学生在本学期的N门课程成绩录入到这个文件中,按如下形式存放。
要求:
学生人数M不少于30人,课程门数N不小于5,姓名为本班的真实姓名,课程中必须有一门考查课。
2.录入本班班级学生信息,内容包含“编号课程名称课程学分”,录入课程学分情况;
读取原始数据文件的内容,计算每个学生的加权平均分(保留一位小数,4舍5入),按平均分排名次,平均分相同则名次相同。
创建一个数据文件(建议为:
文本文件),存放班级的成绩表,按下列式形存放。
计算加权平均分的公式如下
3.分别统计全班每门课的平均分。
计算各分数段(<60;60~69;70~79;80~89;90以上)的学生人数。
创建一个数据文件(建议为:
文本文件),存放上述计算结果。
4.分别统计男生和女生每门课的平均分。
结果存放在一个数据文件中;
5.输出所有存在不及格课程学生的名单,包括:
学号、姓名、性别、不及格课程名称、课程学分及成绩。
结果存放在一个数据文件中。
6.输出优秀学生名单,包括:
学号、姓名、性别、名门课成绩、平均分和名次。
结果存放在一个数据文件中。
优秀学生的条件为:
1.平均分≥852.名次在本班前20%名
3.平均分≥80,并且至少有一门课的成绩为≥95分
4.平均分≥80,并且至少有二门课的成绩为≥90分
题目的分析思路要点:
前期准备:
分别建立三个数据文件
文件1(原始成绩数据表一.txt)用于存放学生成绩;
文件2(学生基本信息表二.txt)用于存放学生的基本信息;
文件3(课程及学分设置表三.txt)用于存放N门课程及对应的学分。
1)学生成绩管理系统
1.(定义三个结构体数组:
原始数据表一.txt存放学生成绩;学生基本信息表二.txt;存放学生基本信息;课程及学分表三.txt存放课程及其学分)
2.读入原始数据并显示(将其读入另外的“成绩”,“基本信息”,”学分”中);运用数组相关的知识点,对汉字信息采用字符串类型的读入,对数字采用整型数组读入,同时输出相关信息,其中设定不同的指针指向文件,便于使用。
3.编写函数用于计算加权平均分及名次。
(将其读入另外的”名次表”中);
4.编写函数计算全班每门课程的平均分以及不同分数段的人数(将其读入另外的”每门课平均”中);
5.编写函数输出男女生课程平均分(将其读入另外的”男女生课程平均分中),运用之前输出的班级同学的平均分的文本,运用循环语句及字符串比较函数等,将性别sex与第一个男生做比较,如果比较结果相同则都为男生,输出成绩,计算男生平均分,女生也相同方式;
6.编写函数统计不及格情况,按照条件,按照科目顺序以及同学成绩遴选出不及格的同学,输出其相关的信息。
(将其读入另外的”不及格表”中);
7.编写函数输出优秀学生按照成绩排名输出优秀学生。
(将其读入另外的”优秀学生”中);
8.编写函数输出优秀学生干部(将其读入另外的”优秀学生干部.txt”中)
9.编写菜单,共有8个菜单项,其中7个为题目要求,第8个为退出函数。
2)破译密码
1.求出100-200之间的素数,作为解码的密匙。
2.根据要求编写出对应密匙的解码结果。
3.输出解码结果。
(二)程序框图
主菜单功能模块图
主函数
退出
显示心形
破译密码
学生成绩管理
一级菜单结构图
学生成绩管理系统
8.返回上级菜单
6.输出优秀学生
7.输出优秀学生干部名单
4.统计男生和女生每门课平均
分
2.计算加权平均分及名次
5.统计不及格情况
3.统计全班每门课程的平均分
破译密码流程图
定义文件型数据的指针变量对密码文件进行读取
运用循环语句从101-200之间找出素数
对找到的整型素数n/100得到百位n%100/10得到十位n%10得到个位,把他放入一个新的数组中
输出解密结果。
。
。
。
。
。
将所有英文字符按序轮换减去对应的数组元素,原来是大(小)写英文字符超出大(小)写英文字符范围加上26。
。
输出解密结果。
显示心形步骤图
先定义各数据的类型,并对P做一个宏定义
定义字符数组charcs[52][50],先均赋空格
计算出x、y的取整作为字符数组的下标,使该字符取’*’,再输出该数组。
输出结果。
。
。
。
。
。
(3)程序解析
#include"stdio.h"
#include"conio.h"
#include"stdlib.h"
#include
#include
#defineM36定义一个全局变量M36为班级学生的人数
1.定义两个结构体类型变量,分别包含“学生成绩表”、“学生信息”、“课程与学分设置”、向系统声明这是一个结构体类型,它包括成员列表中不同类型的成员。
例如:
structStudent//结构体Student成员中包括序号、姓名、五门课程分数、年龄、职务
{
intnum;
charname[10];
charsex[5];
intscore[5];
intage;
charposition[10];
}stud[N];
2.准备读入数据
/*读入原始数据并显示的程序function1_1()*/
intfunction1_1()
{
printf("加入读入原始数据并显示的程序内容\n");
printf("--------------------------------------------------------------------------------\n");
printf("序号姓名理力数学大学物理机械制图C程序设计\n\n");
文件读入举例如下:
(1)定义文件型数据的指针通过文件指针找到与它关联的文件。
例如定义:
FILE*fp1,*fp2,*fp3;
(2)fp文件指向file1对应学生成绩表,打开文件时通知编译系统一下三个信息:
打开文件的名字
使用文件的方式
哪一个指针变量指向打开的文件
运用如下方式:
fp=fopen(c:
\\表一.txt","r");//打开文件一,学生成绩表
if(fp==NULL)
{
printf("cannotopenthefile\n");
exit(0);
}
for(i=0;i fscanf(fp1,"%d%s%d%d%d%d%d",&stud[i].num,&stud[i].name,&stud[i].score[0],&stud[i].score[1], &stud[i].score[2],&stud[i].score[3],&stud[i].score[4]); fclose(fp1); for(i=0;i printf("%-4d%-7s%-5d%-5d%-5d%-5d%-5d\n",stud[i].num,stud[i].name,stud[i].score[0],stud[i].score[1], stud[i].score[2],stud[i].score[3],stud[i].score[4]); fclose(fp);文件读取完毕后,关闭文件 可以使用同样方式打开“学生信息”“学分设置”的文件 3.计算加权平均分以及学生名次 intfunction1_2() { pri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实习 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)