土木工程20##级
计算机实习任务书
指导教师 李松 李红
班 级 土木(XX)班
姓 名 Mr.su
学 号 12345678
西南交通大学土木工程学院
20##年11月
(一)实习时间:20##年11月30日—12月14日
(二)实习地点:X7103
(三)实习目的:
计算机实习是本科计算机基础教学的一个重要环节。它对于巩固学生的计算机基础知识,增强学生的计算机应用水平,改善学生的知识结构,具有重要意义。
本课程的教学目的是:通过系统的上机实习,使学生的计算机基础知识与基本操作技能得到进一步的巩固,提高学生的编程能力和用机水平,培养学生用计算机分析与解决问题的意识,为后续课程打下基础。
(四)实习内容:
本实习要求完成如下三项任务:
1. 巩固所学的计算机基本知识和基本操作技能,包括:
(1) 熟练掌握正确的键盘指法和英文盲打技术;
(2) 能熟练使用Windows操作系统;
(3) 熟练掌握Word、Excel、PowerPoint等办公自动化软件;
(4) 能使用网络获取、发送信息;
(5) 用PowerPoint制作一组幻灯片(幻灯片所表述的主题自定),或用Excel绘制出图1所示的sin(x)、cos(x)函数曲线。
2. 计算机语言及编程
用本学期已学过的VC++语言编程。编程题目及要求由指导教师指定(可参考附录中提供的题目)。
3. 提交一份实习报告(要求打印)
实习报告不得少于1000字:主要总结实习心得和实习成果(全部程序及计算结果或图形以及PowerPoint幻灯片)。
(五)实习成果:
【1】程序1:
算法原理:
数据结构:用一个二维数组存放杨辉三角形的数据。
分析杨辉三角形的数据特点,该三角形每一行的行初和行末的数据都是1,从第三行起,每行数据的第2—i-2列数据都满足以下关系:a[i][j]=a[i-1][j-i]+a[i-1][j];根据上述关系得出杨辉三角的每个数据存放在已定义的二维数组中,然后按照图形格式输出已经存放的数据,得出杨辉三角。
程序流程图:
变量说明:数组a[i][j],i表示行,j表示每一行的第几个数。
使用方法:输入程序,直接显示。
源程序:
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
int i,j;
int a[11][22];
for(i=0;i<11;i++)
for(j=0;j<22;j++)
a[i][j]=0;
cout<<endl;
a[0][10]=1;
a[1][11]=1;
a[1][9]=1;
for(i=2;i<11;i++)
for(j=0;j<22;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j+1];
for(i=0;i<10;i++)
{
for(j=0;j<22;j++)
{
if(a[i][j]==0)
cout<<setw(4)<<' ';
else
cout<<setw(4)<<a[i][j];
}
cout<<endl;
}
}
程序运行结果:
【2】程序2:
从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。
算法原理:没有具体详细的数学算法原理。
程序流程图:
变量说明:p表示的是要输入的字符,char p[100]表示的是一个字符型一维数组,t表示的是输出文件的名称,doc表示的是文件的输出格式,i表示的是循环变量。
使用方法:输入需要的字符,用#键结束,#键之后的不能输出。
源程序:
#include<iostream>
#include<fstream>
using namespace std;
void main()
{char p[100]={0};int i=0;
ofstream t;
t.open("t.doc",ios::out);
if(!t==1)
cout<<"文件打开失败"<<endl;
else
do
cin>>p[i++];
while(p[i-1]!='#');
t<<p <<endl;
}
程序运行结果:
【3】程序3:
求一元二次方程的根,其中系数a,b,c为实数,由键盘输入
算法原理:
根据一元二次方程的特点就方程系数取不同数值是进行分类考虑:
1 a=0,b=0此时方程不成立。
2 a=0,b!=0,此时方程为一元一次方程。
3 a!=0,此时方程为一元二次方程,依据判别式?,
?>=0,得出方程的两个实数解,?<0得出方程无实数解。
程序流程图:
变量说明:a,b,c表示方程式的系数,x1,x2表示方程的解
使用方法:输入方程式系数a,b,c,再按Enter键,即可得此一元二次方程的根。
源程序:
#include <iostream>
#include<cmath>
using namespace std;
void main()
{double a,b,c,x1,x2;
cout<<"请输入三个任意实数:"<<endl;
cin>>a>>b>>c;
if(a==0&&b==0)
cout<<"default"<<endl;
if(a==0&&b!=0)
{x1=-(c/b);
cout<<fixed;
cout.precision(2);
cout<<"此方程的解为"<< x1<<endl;}
if(a!=0)
{if(pow(b,2)-4*a*c<0)
cout<<"此方程无实数解"<<endl;
else
{x1=(-b+pow((pow(b,2)-4*a*c),0.5))/(2*a);
x2=(-b-pow((pow(b,2)-4*a*c),0.5))/(2*a);
cout<<fixed;
cout.precision(2);
cout<<"此方程的解为:"<<endl;
cout<<"x1="<<x1<<" "<<"x2="<<x2<<endl;}}}
运行结果:
附加图表题 :
用Excel表格绘制正、余弦曲线(如图所示)
(六)实习心得:
计算机作为计算、控制和管理的理想工具,有力地推动了科研、国防、工业、交通、邮电、医学等各行各业的发展。在快速的发展节奏中,计算机起着不可替代的作用。作为当代大学生,必须熟悉掌握计算机技术。通过这三周的计算机上机实习,我掌握了计算机应用的新知识,并在实习过程中,巩固了我用计算机解决现实问题的应用能力。
在计算机基本知识和基本操作技能方面,我熟悉掌握了以下技能:
一.熟练掌握正确的键盘指法和英文盲打技术。本来我的盲打打字速度就比较快,在这次实习中,我通过金山打字通软件,学习到了进一步提高盲打打字速度的技巧;
二.能熟练使用Windows操作系统;
三.通过用Word、PowerPoint尝试制作教学课件。通过上机操作,掌握了添加数学符号、编辑公式、添加数据表格、贴图、更改字体、设置页面过渡效果等实用技能;
四.应用网络搜索学习资料和发送信息。通过百度,google等搜索引擎,快速找到所需的学习资料,提高学习效率。再通过登录邮箱,把资料存进邮箱,便达到了随时随地通过网络都可以看到保存的资料的效果;
五.用Excel绘制函数曲线处理大学物理实验数据。将实验数据输入Excel,再通过自定义函数计算出实验结果,并用实验数据通过Excel得绘制函数图线功能绘制出实验数据的图线,快速直观地观察出实验变现出的规律。
在计算机语言及编程方面,我有以下收获体会:
通过C++编程,我们可以开发软件和设计程序。掌握C++的用法,我们便可以通过它来快速地解决现实生活中一系列同类的计算问题。在这次实习中,我们要编写出杨辉三角形。但是由于今年五月的地震,C++课程后面有一部分我还没有学习,导致对该语言掌握还不是很牢固扎实。所以在这次实习中,我回顾了C++教材,并自学了教材靠后几章的课程,不懂的地方与同学们交流探讨。然后通过编写几个课本上的几个编程习题,巩固好知识。在一边学习一边编写杨辉三角形的程序的过程中,我不断地调试程序,克服了遇到的困难,最终完成了这次实习的任务。
在调试过程中得出满意的成果,是的,任何成果的诞生都是这样的一个过程。通过C++编程实习,我掌握了其操作细节,更加深刻地了解了软件的开发及工作原理,同时也提高了自己的编程技能。这一次计算机实习的时间虽然比较短,但是使我对计算机编程有了进一步的了解。我想,这对明年我参加的计算机等级考试是非常有帮助的。而且在今后的工作生活中,我也能利用C++这个工具来快捷地完成一系列的计算任务,有效地提高工作效率。所以说,这次实习正是我在大学生活中提高个人综合能力的一次很好的锻炼。
(七)参考文献:
《大学计算机程序设计基础C++》
《大学计算机程序设计基础与Visual C++实验指导书》
编程实习报告
姓名:万林
学院:自动化
学号:09061334
班级:09062813
指导老师:王春林 朱胜利
一、实习目的:
通过编写程序复习大一所学的C语言知识,学习在Microsoft VisualC++环境下编辑、编译及运行C程序。
二、实习任务
在熟练掌握C语言基础下设计并实现一个学生信息系统,管理一个班的学生的基本信息。每个学生的信息名片包含的主要信息有:姓名、电话、手机、学号、四项信息。要求该软件实现以下功能:
1. 创建学生信息联表
2. 添加学生信息
3. 删除学生信息
4. 查找学生信息
5. 显示所有学生信息
6. 保存链表数据到文件
7. 修改学生信息
三、程序流程图(见附录)
四、原代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CH 30 /* 最大字符数,可修改 */
struct student
{
char name[CH]; /* 姓名 */
int age; /* 年龄 */
char tel[CH]; /* 电话 */
int num; /*学号*/
struct student *next;
};
struct student *creat() //创建链表函数
{
int i ;
struct student *p1,*p2;
struct student *head;
int num_node;
printf("输入学生人数及资料\n");
printf("人数:");
scanf("%d",&num_node);
p1=p2=(struct student *)malloc(sizeof(struct student)); //这里创建了一个节点
printf("姓名 :");
scanf("%s",&p1->name);
printf("年龄 :");
scanf("%d",&p1->age);
printf("电话 :");
scanf("%s",&p1->tel);
printf("学号 :");
scanf("%d",&p1->num);
head=p1;
for( i=1;i<num_node;i++)
{
if(num_node==1)
{
head=p1;
head->next=NULL;
return head;
}
else
{
p1=(struct student *)malloc(sizeof(struct student));
printf("姓名 :");
scanf("%s",&p1->name);
printf("年龄 :");
scanf("%d",&p1->age);
printf("电话 :");
scanf("%s",&p1->tel);
printf("学号 :");
scanf("%d",&p1->num);
p2->next=p1;
p2=p1;
}
}
p2->next=NULL;
return head;
}
void print(struct student *head) //显示链表信息
{
struct student*p;
p=head;
printf("输出学生信息:\n");
while(p!=NULL)
{
printf("姓名: %s 年龄: %d 电话:%s 学号: %d",p->name,p->age,p->tel,p->num);
p=p->next;
}
}
struct student *load() //把链表从文件中读入到新的链表中
{
struct student *p1,*p2,*head=NULL;
FILE *fp;
if((fp=fopen("mm.txt","rb"))==NULL) //mm.txt为文件名,rb为只读使用方式
{
printf("打开失败\n");
exit(1);
}
printf("\n -----文件读取!-----\n");
p1=(struct student *)malloc(sizeof(struct student));
if(!p1)
{
printf("内存溢出!\n");
return head;
}
head=p1;
while(!feof(fp)) //feof函数判断文件是否读到末尾
{
if(1!=fread(p1,sizeof(struct student),1,fp)) //fread为输入函数
break;
printf("姓名: %s, 年龄: %d,电话:%s, 学号 :%d\n",p1->name,p1->age,p1->tel,p1->num);
p1->next=(struct student *)malloc(sizeof(struct student));
if(!p1->next)
{
printf("溢出内存!\n");
return head;
}
p2=p1;
p1=p1->next;
}
p2->next=NULL;
fclose(fp);
printf("---成功读取文件!!!---\n");
return head;
}
struct student *del(struct student *head) //删除学生信息
{
struct student *p1, *p2;
char name[CH];
printf("请输入要删除的学生的姓名:");
scanf("%s",&name);
p1=head;
while( (strcmp(p1->name,name)!=0) && (p1->next!=NULL)) //字符串比较函数
{
p2=p1; p1=p1->next;
}
if(strcmp(p1->name,name)==0)
{
if(p1==head) //是头节点
{ head=p1->next ; free(p1); }
else if(p1->next==NULL) //是尾节点
{ p2->next=NULL ; free(p1); }
else
{ p2->next=p1->next; free(p1);}
printf("删除成功\n");
}
return head;
}
struct student *insert(struct student *head) //增加学生信息
{
struct student *pnew;
pnew=(struct student *)malloc(sizeof(struct student));
printf("姓名 :");
scanf("%s",&pnew->name);
printf("年龄 :");
scanf("%d",&pnew->age);
printf("电话 :");
scanf("%s",&pnew->tel);
printf("学号:");
scanf("%d",&pnew->num);
pnew->next=head;
head=pnew;
return head;
}
struct student *find(struct student *head) //查询学生信息
{
struct student *p1,*p2;
char name[CH];
printf("查询学生姓名:");
scanf("%s",name);
p1=head;
while(strcmp(name,p1->name)!=0 && p1!=NULL)
{
p2=p1;p1=p1->next;
}
printf("姓名: %s 年龄: %d 电话: %s学号: %d\n",p1->name,p1->age,p1->tel,p1->num);
return head;
}
struct student *gai(struct student *head) //修改学生信息
{
struct student *p1, *p2;
char n;
char name[30];
printf("请输入要修改的学生的姓名:");
scanf("%s",&name);
p1=head;
while( (strcmp(p1->name,name)!=0) && (p1->next!=NULL))
{
p2=p1; p1=p1->next;
}
if(strcmp(p1->name,name)==0) //找到了!
{
printf("1.修改姓名\n");
printf("2.修改年龄\n");
printf("3.修改电话\n");
printf("4.修改学号\n");
printf("请选择菜单编号: ");
scanf("%d" ,&n);
switch(n)
{
case 1: printf("输入新姓名 :");
scanf("%s",&p1->name);break;
case 2:printf("输入新年龄 :");
scanf("%d",&p1->age);break;
case 3:printf("输入新电话 :");
scanf("%s",&p1->tel); break;
case 4:printf("输入新学号 :");
scanf("%d",&p1->num);;break;
default:printf("请在1-4之间重新选择\n");
}
}
return head;
}
void save(struct student *head) //保存链表数据到文件
{
FILE *fp;
struct student *p;
if((fp=fopen("mm.txt","w"))==NULL) //fopen函数使变量w与文件mm.txt相连
{
printf("打开文件失败\n");
exit(1);
}
printf("\n正在保存......\n");
p=head;
printf("保存完成, head : %d\n",head);
while(p!=NULL)
{
printf("姓名: %s 年龄: %d 电话: %s学号: %d\n",p->name,p->age,p->tel,p->num);
fwrite(p,sizeof(struct student),1,fp); //fwrite为输出函数
p=p->next;
}
fclose(fp); //关闭文件
printf("-----保存成功!!-----\n");
}
void main()
{
char ch;
struct student *head;
for(;;)
{
printf("\t\t学生信息系统\n");
printf("*****系统功能菜单*****\n");
printf("----------------------------\n");
printf("1. 创建学生信息链表\n");
printf("2. 显示学生信息\n");
printf("3. 删除学生信息\n");
printf("4. 增加学生信息\n");
printf("5. 保存学生信息\n");
printf("6. 查询学生信息\n");
printf("7. 修改学生信息\n");
printf("请选择菜单编号: ");
scanf(" %d",&ch);
switch(ch)
{
case 1: head=creat(); break; //调用creat函数
case 2: print(head); break;
case 3: head=del(head); break;
case 4: head=insert(head); break;
case 5: save(head); break;
case 6: head=find(head); break;
case 7: head=gai(head); break;
default:printf("请在1-7之间重新选择\n");
}
}
}
五、程序运行图
六、心得体会:
程序设计是一门实践性很强的课程,对C程序设计者初学者而言,除了学习、熟记C语言的一些语法规则外,更重要的是多读程序,懂动手编程序。先模仿,在模仿的基础上改进,在改进的基础上提高。做到善于思考,边学边练,举一反三,学会“小题大做”,一题多解。学过的知识会应用才能体现出它的价值。
C语言作为广为流行的计算机程序设计语言,对于跟程序有关的专业学生是必须掌握的。这次实习让我重温了编写一个简单程序的步骤,认识到自己在程序编写还是那么的缺少经验。
《编程实习》实习报告学号:**.班级:**.学生姓名:**起始日期:20**/6/23.完成日期:20**/7/4.一、任务要求功…
《程序设计实习报告》学年:20xx20143实习课题:学生信息管理系统班级:计算机科学与技术1302班学号:***日期:20xx年…
手机通讯录管理系统一设计题目的任务和内容任务本程序是非数值计算型算法设计我设计出了通讯录管理系统的基本功能并设计了简单的界面本程序…
土木工程20xx级计算机实习任务书指导教师班级土木XX班姓名Mrsu学号西南交通大学土木工程学院20xx年11月一实习时间20xx…
12345678大学123班李明12345678算法与编程实习实习报告班级姓名李明学号12345678112345678大学123…
实习目的:通过理论联系实际,巩固所学的知识,提高处理实际问题的能力,了解设计专题的主要内容,为毕业设计的顺利进行做好充分的准备,并…
中南大学本科生课程设计(实践)任务书、设计报告(大学计算机基础)题目钢琴之韵学生姓名指导教师学院专业班级学生学号计算机基础教学实验…
大学计算机导论实践报告中南大学题目学生姓名指导教师学院专业班级学生学号歌手介绍信息科学与工程学院20xx年x月日大学计算机基础综合…
中南大学本科生课程设计(实践)任务书、设计报告(大学计算机基础)题目学生姓名指导教师学院专业班级学生学号计算机基础教学实验中心20…
1.1WindowsXP的基本操作【思考与实践】1.将一个文件删除,然后清空回收站,该文件还可以恢复到原来位置吗?答:一般情况下不…
我来到了上海酷扬计算机科技有限公司售后服务部实习,短短1年的工作过程使我受益匪浅。不仅计算机专业知识增长了,最主要是懂得了如何更好…