C#课程设计报告书
一、实验目的
1、熟悉 Visual Studio.NET 开发环境。
2、掌握 C#应用程序的基本操作过程。
3、掌握 C#的数据类型,运算符以及表达式的使用。
4、掌握分支和循环语句的使用方法。
5、掌握一维数组,二维数组及数组型数组的使用。
二、实验要求
(1)编写程序要规范、正确,上机调试过程和结果要有记录(2)做完实验后给出本实验的实验报告。
三、实验设备、环境
安装有 Visual Studio.NET 软件。
四、实验步骤
1、分析题意。
2、根据题目要求,新建项目。
3、编写并输入相关的程序代码。
5、运行与调试项目。
6、保存项目。
五、实验内容
1、编写一个简单的控制台应用程序,打印一行文字(如你的姓名)。
using System;using System.Collections.Generic;
using System.Linq;using System.Text;
namespace one.first {
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine(“我叫王蕾!”);
}
} } 2、编写一个简单的 Windows 应用程序,在窗体 Load 事件中书写代码,标签中显示你的姓名。
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;
using System.Windows.Forms;
namespace one.second {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.Text = “Windows 程序”;
Label lblShow = new Label();
lblShow.Location = new Point(20, 30);
lblShow.AutoSize = true;
lblShow.Text = “王蕾!”;
this.Controls.Add(lblShow);
}
}
} 3、编写一个一个程序,用来判断输入的是大写字母,小写字母,数字还是其他的字符。
using System;using System.Collections.Generic;using System.Text;
namespace one.third {
class Program
{
static void Main(string[] args)
{
Console.WriteLine(“请输入一个字符:”);
char c = Convert.ToChar(Console.ReadLine());
if((c>=“a”&&c<=“z”)||(c>=“A”&&c<=“Z”))
Console.WriteLine(“这是一个字母”);
if(char.IsDigit(c))
Console.WriteLine(“这是一个数字”);
}
}
} 4、分别用 while,do-while,for 循环求 1 到 100 的和。
using System;using System.Collections.Generic;using System.Text;
namespace one.forth.one {
class Program
{
static void Main(string[] args)
{
int i = 1, sum = 0;
while(i <= 100)
{
sum = sum + i;
i++;
}
Console.WriteLine(“1 到 100 的自然数之和为:” + sum);
}
}
} using System;using System.Collections.Generic;using System.Text;
namespace one.forth.two {
class Program
{
static void Main(string[] args)
{
int i = 1, sum = 0;
do
{
sum = sum + i;
i++;
}
while(i <= 100);
Console.WriteLine(“1 到 100 的自然数的和为:” + sum);
}
}
} using System;using System.Collections.Generic;using System.Text;
namespace one.forth.three {
class Program
{
static void Main(string[] args)
{
int i , sum = 0;
for(i = 1;i <= 100;i++)
{
sum = sum + i;
}
Console.WriteLine(“1 到 100 的自然数的和为:” + sum);
}
} } 5、定义一个一维数组,用随机数为此赋值,用 foreach 循环输
出其中的内容。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace first.five {
class Program
{
static void Main(string[] args)
{
int[] a = {0,1,2,3,4};
foreach(int i in a)
{
Console.WriteLine(a[i]);
}
}
} } 6、实现二维数组的输入和输出。
using System;
using System.Collections.Generic;using System.Linq;using System.Text;
namespace first.six {
class Program
{
static void Main(string[] args)
{
int[,] a = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
{
for(int i = 0;i < 2;i++)
{
for(int j = 0;j < 3;j++)
{ Console.WriteLine(a[i, j]);}
}
}
}
} }
7、实现数组型数组的输入和输出。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace first.seven {
class Program
{
static void Main(string[] args)
{
int[][] a = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 } };
for(int i = 0;i < a.Length;i++)
{
for(int j = 0;j < a[i].Length;j++)
{
Console.WriteLine(a[i][j]);
}
}
}
} } 六、实验体会(遇到问题及解决办法,编程后的心得体会)
刚开始编程的时候觉得无从下手,尽管我们已经学了好几种高级编程语言,但每个都有其独特的地方,稍不留神就会混淆。
通过这次实验,我体会到课后复习巩固的重要性。在编程的时候,很多内容都不记得,需要去翻书。不得不说,实验是巩固课程的好方法!本次实验,我熟悉 Visual Studio.NET 开发环境;掌握了 C#应用程序的基本操作过程;掌握了 C#的数据类型,运算符以及表达式的使用;掌握了分支和循环语句的使用方法以及一维数组,二维数组及数组型数组的使用。
实验项目名称:
类与对象
实验学时:
同组学生姓名:
实验地点:
1318
实验日期:
月 26 日-11 月 9 日 实验成绩:
批改教师:
批改时间:
实验 2
类与对象
一、实验目的、要求
(1)掌握类的定义和使用;(2)掌握类的数据成员,属性的定义和使用;(3)掌握方法的定义,调用和重载以及方法参数的传递;(4)掌握构造函数的定义和使用。
二、实验要求
(1)编写程序要规范、正确,上机调试过程和结果要有记录;(2)做完实验后给出本实验的实验报告。
三、实验设备、环境
安装有 Visual Studio.NET 软件。
四、实验步骤
1、分析题意; 2、根据题目要求,新建项目; 3、编写并输入相关的程序代码; 5、运行与调试项目; 6、保存项目。
五、实验内容
1、定义一个方法,实现两个数的交换(分别把参数按值传递和按引用传递)。
using System;
using System.Collections.Generic;using System.Text;
namespace second.one {
class Program
{
static void Main(string[] args)
{
Swaper s = new Swaper();
Console.WriteLine(“输入 x 的值:”);
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(“输入 y 的值:”);
int b=Convert.ToInt32(Console.ReadLine());
Console.WriteLine(s.Swap(a, b));
Console.WriteLine(s.Swap(ref a,ref b));
}
class Swaper
{
public string Swap(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
return string.Format(“按值传参交换之后:x={0},y={1}”,x,y);
}
public string Swap(ref int x, ref int y)
{
int temp;
temp = x;
x = y;
y = temp;
return string.Format(“按引用传参交换之后:x={0},y={1}”, x, y);
}
}
} }2、定义一个方法,实现数组的排序。
using System;using System.Collections.Generic;using System.Text;
namespace second.two {
class Program
{
public class sort
{
public void change(int[] a)
{
Console.WriteLine(“排序前,数组顺序为:”);
show(a);
int i, j, m;
for(i = 0;i < 10;i++)
{
m = a[i];
j = i-1;//a[j]为数组前一个值
while(j >= 0 && m > a[j])//判断 i 下标的数是否大于 j 下标的数
{
a[j + 1] = a[j];//如果 i 下标大于j 把 j 往后移一个位
j--;
}
a[j+1] = m;//当不大于 j 的时候就把 M的值放到 i 下标下面 j+1 是为了下标减到最前时考虑-1 + 1 还是下标的最前面
}
Console.WriteLine(“排序后,数组顺序为:”);
show(a);
}
void show(int[] a)
{
int i;
for(i = 0;i < 10;i++)
{
Console.Write(“{0} ”, a[i]);
}
Console.WriteLine();
}
}
static void Main(string[] args)
{
int[] a ={ 4, 7, 1, 2, 5, 8, 9, 10, 3, 6 };
sort s=new sort();
s.change(a);
}
} } 3、定义一个学生类,把学生类当作对象来传递。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace second.three {
class Program
{
public class student
{
public void st()
{
int a = 999;
}
}
public class st
{
public void aa(student s)
{
Console.WriteLine(s);
}
}
static void Main(string[] args)
{
student s=new student();
st s1 = new st();
s1.aa(s);
}
} } 4、定义一个方法,求两个数的和和差,通过参数把这两个值带回。
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace
second.four
{
class Program
{
public class sum
{
public void ab(out int m, out
int n,int a, int b)
{
m = a + b;
n = a-b;
}
}
static void Main(string[] args)
{
sum s = new sum();
int a = 10;
int b = 3;
int m, n;
s.ab(out m, out n, a, b);
Console.WriteLine(“{0}+{1}={2};{0}-
{1}={3}”,a,b,m,n);
}
} } 5、用构造函数重载,实现矩形的面积,圆的面积,梯形的面积; using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace secong.five {
class Program
{
public class square
{
public double area;
public square(){ }
public square(double a)
{
area = a * a * 3.14;
}
public square(double a, double b)
{
area = a * b;
}
public square(double a, double b, double h)
{
area =(a + b)/ 2 * h;
}
}
static void Main(string[] args)
{
double a, b, h,area;
a = 2;b = 5;h = 3;
square s = new square(a,b);
Console.WriteLine(“求矩形面积,长为 a={0},宽为 b={1},面积 area={2}”,a,b,s.area);
square i = new square(a);
Console.WriteLine(“求圆形面积,半径 a={0},面积 area={1}”, a, i.area);
square j = new square(a, b, h);
Console.WriteLine(“求梯形面积,上底为a={0},下底为 b={1},高为 h={2}面积 area={3}”, a, b,h, j.area);
}
} } 6、设计一个 windows 应用程序,在该程序中定义一个学生类和班级类,以处理每个学生的学号,姓名,语文,数学和英语成绩,要求:
1)能查询每个学生的总成绩。
2)能显示全班前三名的名单。
3)能显示单科成绩最高分和不及格的学生名单。
4)能统计全班学生的平均成绩。
5)能显示各科成绩不同分数段的学生人数的百分比。
Student 类:
using System;using System.Collections.Generic;using System.Text;namespace Test2_6 {
public class Student
{
public string stuNo;
public string name;
public double chinese;
public double math;
public double english;
public double sumScore
{
get { return chinese + math + english;}
}
} } StudentList 类:
using System;using System.Collections.Generic;using System.Text;namespace Test2_6 {
public class StudentList:Student
{
int snums;
public Student[] stu=new Student[50];
public StudentList()
{
snums = 0;
}
public void addstu(Student s)
{
stu[snums] = s;
snums++;
}
public int searchstu(string name)
{
int i;
for(i = 0;i < snums;i++)
{
if(stu[i].name == name)break;
}
if(i == snums)return-1;
else return i;
}
//给所有成绩排序,用后面实现前三名的排名
public void ProThree()
{
for(int i = 0;i < snums;i++)
{
int k = i;
for(int j = i + 1;j < snums;j++)
if(stu[j].sumScore > stu[k].sumScore)k = j;
if(k!= i)
{
Student temp;
temp = stu[k];
stu[k] = stu[i];
stu[i] = temp;
}
}
}
//显示单科成绩的最高分
public int HighScore(int k)
{
int p = 0;
if(k == 0)
{
for(int i = 1;i < snums;i++)
if(stu[i].math > stu[p].math)p = i;
}
else if(k == 1)
{
for(int i = 1;i < snums;i++)
if(stu[i].chinese > stu[p].chinese)p = i;
}
else
{
for(int i = 1;i < snums;i++)
if(stu[i].chinese > stu[p].chinese)p = i;
}
return p;
}
//显示不及格名单
public string
BuhgName(int k)
{
string name=“ ”;
if(k == 0)
{
for(int i = 0;i < snums;i++)
if(stu[i].math < 60)name +=stu[i].name+“n”;
}
else if(k == 1)
{
for(int i = 0;i < snums;i++)
if(stu[i].chinese < 60)name += stu[i].name + “n”;
}
else
{
for(int i = 0;i < snums;i++)
if(stu[i].english < 60)name += stu[i].name + “n”;
}
return name;
}
public string getHL()
{
string Maxer = “ ”, Loser = “ ”;
Maxer += “ 单 科 数 学 最 高 :
” + stu[HighScore(0)].name + “n”;
Maxer += “ 单 科 语 文 最 高 :
” +
stu[HighScore(1)].name + “n”;
Maxer += “ 单 科 英 语 最 高 :
” + stu[HighScore(2)].name + “n”;
Loser += “单科数学挂科名单:” +BuhgName(0)+ “n”;
Loser += “单科语文挂科名单:” + BuhgName(1)+ “n”;
Loser += “单科英语挂科名单:” + BuhgName(2)+ “n”;
return Maxer + “n” + Loser;
}
//全班的平均成绩
public string SumScore()
{
double sum = 0;
double avg=0;
for(int i = 0;i < snums;i++)
{
sum = sum + stu[i].sumScore;
}
avg = sum / snums;
return “班级总分平均分:”+avg;
}
//各科成绩不同分数段的学生百分比
//英语成绩各分数段百分比
public string PerC()
{
double per1, per2, per3, per4, per5;
double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;
for(int i = 0;i < snums;i++)
{
if((stu[i].chinese > 90)&&(stu[i].chinese <= 100))
{
sumC1++;
}
else if((80 <= stu[i].chinese)&&(stu[i].chinese < 90))
{
sumC2++;
}
else if((70<=stu[i].chinese)&&(stu[i].chinese < 80))
{
sumC3++;
}
else if((60<=stu[i].chinese)&&(stu[i].chinese < 70))
{
sumC4++;
}
else
{sumC5++;}
}
per1 = sumC1 / snums;
per2 = sumC2 / snums;
per3 = sumC3 / snums;
per4 = sumC4 / snums;
per5 = sumC5 / snums;
return “ 语 文 成 绩 百 分 比 :”+“n”+“90~100:”+per1+“
80~90:”+per2+“
80~70:”+per3+“
70~60:”+per4+“
以下的:”+per5;
}
//数学成绩各分数段百分比
public string PerM()
{
double per1, per2, per3, per4, per5;
double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;
for(int i = 0;i < snums;i++)
{
if((stu[i].math> 90)&&(stu[i].math <= 100))
{
sumC1++;
}
else if((80 <= stu[i].math)&&(stu[i].math < 90))
{
sumC2++;
}
else if((70 <= stu[i].math)&&(stu[i].math < 80))
{
sumC3++;
}
else if((60 <= stu[i].math)&&(stu[i].math < 70))
{
sumC4++;
}
else
{ sumC5++;}
}
per1 = sumC1 / snums;
per2 = sumC2 / snums;
per3 = sumC3 / snums;
per4 = sumC4 / snums;
per5 = sumC5 / snums;
return string.Format(“数学成绩百分比:” + “n” + “90~100:” + per1 + “
80~90:” + per2 + “
80~70:” + per3 + “
70~60:” + per4 + “
以下的:” + per5);
}
//英语成绩各分数段百分比
public string PerE()
{
double per1, per2, per3, per4, per5;
double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;
for(int i = 0;i < snums;i++)
{
if((stu[i].english > 90)&&(stu[i].english <= 100))
{
sumC1++;
}
else if((80 <= stu[i].english)&&(stu[i].english < 90))
{
sumC2++;
}
else if((70 <= stu[i].english)&&(stu[i].english < 80))
{
sumC3++;
}
else if((60 <= stu[i].english)&&(stu[i].english < 70))
{
sumC4++;
}
else
{ sumC5++;}
}
per1 = sumC1 / snums;
per2 = sumC2 / snums;
per3 = sumC3 / snums;
per4 = sumC4 / snums;
per5 = sumC5 / snums;
return string.Format(“数学成绩百分比:” + “n” + “90~100:” + per1 + “
80~90:” + per2 + “
80~70:” + per3 + “
70~60:” + per4 + “
以下的:” + per5);
}
} } From 窗体代码:
using System;using System.Collections.Generic;
using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test2_6 {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public StudentList sl = new StudentList();
private void btnAdd_Click(object sender, EventArgs e)
{
Student s = new Student();
s.stuNo = txtStuNo.Text;
s.name = txtName.Text;
s.chinese = Convert.ToDouble(txtChina.Text);
s.math = Convert.ToDouble(txtMath.Text);
s.english = Convert.ToDouble(txtEng.Text);
sl.addstu(s);
MessageBox.Show(“添加成功”);
}
private void btnSearch_Click(object sender, EventArgs e)
{
int pos = sl.searchstu(this.textBox1.Text);
if(pos!=-1)
{
label7.Text = this.textBox1.Text + “的总成绩:” + sl.stu[pos].sumScore;
}
else { MessageBox.Show(“不存在这个人!”);}
}
private void btnFinish_Click(object sender, EventArgs e)
{
label7.Text = “前 3 名:”+“n”;
for(int i = 0;i < 3;i++)
{
sl.ProThree();
label7.Text+= sl.stu[i].name+“n”;
}
label7.Text += sl.getHL()+“n”;
label7.Text += Convert.ToString(sl.SumScore())+“n”;
label7.Text += sl.PerC()+“n”;
label7.Text += sl.PerM()+“n”;
label7.Text += sl.PerE()+“n”;
}
} }
六、实验体会(遇到问题及解决办法,编程后的心得体会)
通过本次实验,我掌握了类的定义与使用;掌握了类的数据成员,属性的定义和使用;掌握了方法的定义,调用和重载以及方法参数的传递以及构造函数的定义和使用。值得注意的是:本次实验中 return的使用以及所在的位置,类型转换时也经常用到
实验项目名称:
继承与多态
实验学时:
同组学生姓名:
实验地点:
1318
实验日期:月 16 日-11 月 30 日 实验成绩:
批改教师:
批改时间:
实验 3
继承与多态
一、实验目的、要求
(1)掌握类的继承性与多态性;(2)掌握虚方法的定义以及如何使用虚方法实现多态;(3)掌握抽象类的定义以及如何使用抽象方法实现多态; 二、实验要求
(1)编写程序要规范、正确,上机调试过程和结果要有记录;(2)做完实验后给出本实验的实验报告。
三、实验设备、环境
安装有 Visual Studio.NET 软件。
四、实验步骤
1、分析题意; 2、根据题目要求,新建项目; 3、编写并输入相关的程序代码; 5、运行与调试项目; 6、保存项目。
五、实验内容
1、设计一个 Windows 应用程序,在该程序中首先构造一个学生基本类,再分别构造小学生、中学生、大学生派生类,当输入相关数据,单击不用的按钮时,将分别创建不同的学生类对象,并输出当前学生的总人数,该学生的姓名,学生类型,平均成绩。
Student 类:
using System;using System.Collections.Generic;using System.Text;namespace Test3_1 {
public abstract class Student
{
protected string name;
protected int age;
public static int number;
public Student(string name, int age)
{
this.name = name;
this.age = age;
number++;
}
public string Name
{
get { return name;}
}
public abstract double Average();
}
public class Pupil : Student
{
protected double chinese;
protected double math;
public Pupil(string name, int age, double chinese, double math)
: base(name, age)
{
this.chinese = chinese;
this.math = math;
}
public override double Average()
{
return(chinese + math)/ 2;
}
}
public class Middle : Student
{
protected double chinese;
protected double math;
protected double english;
public Middle(string name, int age, double
chinese, double math, double english)
: base(name, age)
{
this.chinese = chinese;
this.math = math;
this.english = english;
}
public override double Average()
{
return(chinese + math + english)/ 3;
}
}
public class College : Student
{
protected double required;
protected double elective;
public College(string name, int age, double required, double elective)
: base(name, age)
{
this.required = required;
this.elective = elective;
}
public override double Average()
{
return(required + elective)/ 2;
}
} } Form 窗体内的代码:
using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test3_1 {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSmall_Click(object sender, EventArgs e)
{
Pupil p = new Pupil(txtName.Text,Convert.ToInt32(txtAge.Text),Convert.ToDouble(txtChinese.Text),Convert.ToDouble(txtMath.Text));
lblShow.Text += “ 总 人 数 :” +Convert.ToString(Student.number)+ “,” + “姓名:” + p.Name + “,” + “小学生” + “,” + “平均成绩为:” + p.Average()+“n”;
}
private void btnMiddle_Click(object sender, EventArgs e)
{
Middle m = new Middle(txtName.Text, Convert.ToInt32(txtAge.Text), Convert.ToDouble(txtChinese.Text), Convert.ToDouble(txtMath.Text),Convert.ToDouble(TxtEnglish.Text));
lblShow.Text += “ 总 人 数 :” + Convert.ToString(Student.number)+ “,” + “姓名:” + m.Name +
“,” + “中学生” + “,” + “平均成绩为:” + m.Average()+ “n”;
}
private void btnBig_Click(object sender, EventArgs e)
{
College c = new College(txtName.Text, Convert.ToInt32(txtAge.Text), Convert.ToDouble(txtChinese.Text), Convert.ToDouble(txtMath.Text));
lblShow.Text += “ 总 人 数 :” + Convert.ToString(Student.number)+ “,” + “姓名:” + c.Name + “,” + “大学生” + “,” + “平均成绩为:” + c.Average()+ “n”;
}
} } 2、设计一个 Windows 应用程序,在该程序中定义平面图形抽象类和派生类圆,矩形和三角形。
Figure 类代码:
using System;using System.Collections.Generic;using System.Text;namespace Test3_2
{
public abstract class Figure
{
public abstract double Area();
}
public class Circle:Figure
{
double radius;
public Circle(double r)
{
radius = r;
}
public override double Area()
{
return radius * radius * 3.14;
}
}
public class JUxing:Figure
{
double chang;
double kuan;
public JUxing(double c, double k)
{
this.chang = c;
this.kuan = k;
}
public override double Area()
{
return chang * kuan;
}
}
public class San:Figure
{
double bian;
double heigth;
public San(double b, double h)
{
this.bian = b;
this.heigth = h;
}
public override double Area()
{
return bian * heigth / 2;
}
} } Form 窗体代码:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test3_2 {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnCircle_Click(object sender, EventArgs e)
{
Circle c=new
Circle(Convert.ToInt32(TxtChang.Text));
lblShow.Text = “圆的面积为:” + c.Area();
}
private void btnJu_Click(object sender, EventArgs e)
{
JUxing j = new JUxing(Convert.ToInt32(TxtChang.Text),Convert.ToInt32(TxtHigh.Text));
lblShow.Text = “矩形的面积为:” + j.Area();
}
private void btnSan_Click(object sender, EventArgs e)
{
San s = new San(Convert.ToInt32(TxtChang.Text), Convert.ToInt32(TxtHigh.Text));
lblShow.Text = “三角形的面积为:” + s.Area();
}
} }
3、定义一个 Person 类,包含姓名字段和一个方法,早上 8:30学生开始上课,教师开始讲课。分别用 new 关键字,虚方法,抽象类实现多态性。
New 关键字:
using System;using System.Collections.Generic;using System.Text;
namespace third.three {
class Program
{
static void Main(string[] args)
{
Student s=new Student(“学生”);
Teacher t=new Teacher(“教师”);
Console.WriteLine(s.name+s.work());
Console.WriteLine(t.name+t.work());
Console.ReadLine();
}
}
public class Person
{
public string name;
public interface method
{ string work();}
}
public class Student:Person
{
public Student(string name)
{ this.name = name;}
public string work()
{ return “早上 8:30 开始上课”;}
}
public class Teacher:Person
{
public Teacher(string name)
{ this.name = name;}
public string work()
{ return “开始讲课”;}
} } 虚方法:
using System;
using System.Collections.Generic;using System.Text;
namespace third.three.two {
class Program
{
static void Main(string[] args)
{
Student s = new Student(“张三”,“学生”);
PersonWork(s);
Teacher t=new Teacher(“李斯”,“教师”);
PersonWork(t);
}
private static void PersonWork(Person Person)
{ Console.WriteLine(Person.Work());}
}
public class Person
{
public string name;
public Person(string name)
{ this.name = name;}
public virtual string Work()
{ return string.Format(“Person{0}:早上 8:30 开始”,name);}
}
public class Student : Person
{
private string type;
public Student(string name, string type)
: base(name)
{ this.type = type;}
public override string Work()
{
return string.Format(“Person{0}:早上 8:30 开始上课”, name);
}
}
public class Teacher : Person
{
private string type;
public Teacher(string name, string type)
: base(name)
{ this.type = type;}
public override string Work()
{
return string.Format(“Person{0}:开始讲课”, name);
}
} }
抽象类:
using System;using System.Collections.Generic;using System.Text;
namespace third.three.three {
class Program
{
static void Main(string[] args)
{
Student s = new Student(“张三”, “学生”);
PersonWork(s);
Teacher t = new Teacher(“李斯”, “教师”);
PersonWork(t);
}
private static void PersonWork(Person person)
{
Console.WriteLine(person.Work());
}
}
public abstract class Person
{
public string name;
public Person(string name)
{ this.name = name;}
public abstract string Work();
}
public class Student : Person
{
private string type;
public Student(string name, string type)
: base(name)
{
this.type = type;
}
public override string Work()
{
return string.Format(“Person{0}:早上 8:30 开始上课”, name);
}
}
public class Teacher : Person
{
private string type;
public Teacher(string name, string type)
: base(name)
{
this.type = type;
}
public override string Work()
{
return string.Format(“Person{0}:开始讲课”, name);
}
}
}
六、实验体会(遇到问题及解决办法,编程后的心得体会)
通过本次实验,我理解了类的继承性与多态性;掌握了虚方法的定义以及如何用虚方法来实现多态;掌握了抽象类的定义以及如何用抽象方法来实现多态。
这次实验与前两次不同,采用 Windows 应用程序,既涉及到代码段也涉及到界面的设计。所以,勉强通过实验。
实验项目名称:
接口、文件和流
实验学时:
同组学生姓名:
实验地点:
A205
实验日期:月 7 日-12 月 21 日 实验成绩:
批改教师:
批改时间:
实验 4
接口、文件和流
一、实验目的
(1)掌握接口的定义及使用方法;(2)掌握流,序列化和反序列化的概念和使用方法;(3)掌握流文件的读写操作类及其使用方法;(4)掌握 OpenFileDialog,SaveFileDialog 等控件的使用。
二、实验要求
(1)编写程序要规范、正确,上机调试过程和结果要有记录;(2)做完实验后给出本实验的实验报告。
三、实验设备、环境
安装有 Visual Studio.NET 软件。
四、实验步骤
1、分析题意; 2、根据题目要求,新建项目; 3、编写并输入相关的程序代码; 5、运行与调试项目; 6、保存项目。
五、实验内容
1、定义一个 Person 类,包含姓名字段和一个方法,早上 8:30学生开始上课,教师开始讲课。用接口来实现。
using System;using System.Collections.Generic;
using System.Text;namespace Test4_1 {
class Program
{
static void Main(string[] args)
{
Student s = new Student(“张三”,“学生”);
Console.WriteLine(s.Work());
Teacher t = new Teacher(“李四”,“老师”);
Console.WriteLine(t.Work());
}
public abstract class Person
{
public string name;
public Person(string name)
{
this.name = name;
}
}
interface IPerson
{
string type { get;}
string Work();
}
public class Student :Person, IPerson
{
public string type
{
get { return string.Format(“老师”);}
}
public Student(string name, string type)
: base(name)
{
this.name=name;
}
public string Work()
{
return string.Format(“Person{0}:早上 8:30 开始上课”, name);
}
}
本课程的前序课程有:《JAVA程序设计》, 为本课程软件产品的代码实现奠定面向对象的语法基础;本课程后续课程是《ASP.NET程序设计》, 为后续软件产品设计和代码实现提供必要的知识和必要的技能。
通过本课程的学习, 能读懂和编写C#程序代码, 能对基于.NET平台的软件产品进行代码设计和开发。学完后可以胜任初级程序员工作岗位, 并逐步达到软件开发师的岗位需求。课程的主要功能是:训练和培养学生使用C#语言, 能读懂和编写C#程序代码, 能对基于NET平台的软件产品进行代码设计和开发。学完后可以胜任初级程序员工作岗位, 并逐步达到软件开发师的岗位需求。
1.1 知识目标
(1) 掌握C#的编程语法。
(2) 学会用面向对象思想来编写程序。
(3) 学会使用类库进行快速开发。
(4) 掌握C#访问数据库的编写方法。
(5) 掌握用C#进行WEB程序设计的编程方法。
1.2 能力目标
(1) 具备用C#能够编写一些实现简单需求的的能力。
(2) 具备能够将C#同数据库结合起来, 完成一个基本的信息管理的项目的能力培养良好的表达能力、沟通理解能力。
(3) 具备能够编写规范化、可读性、鲁棒性、可扩充性、可维护性的编程能力。
1.3 素质目标
(1) 有进行软件开发类文献检索、C#资料查找与阅读 (含英文资料) 的兴趣和习惯。
(2) 具备软件项目设计中必须应有的团队精神与协作态度, 善于协调人际关系, 工作细心有条理, 有较强责任心和抗压力。
(3) 具有较强的学习主动性, 有创新精神, 有及时掌握快速发展的软件行业的最新动向的意识。
依据C#职业的工作流程和典型工作任务要求, 分析所需的职业能力, 结合职业教育的特点, 分为16个学习情境、30个工作任务, 共计120学时, 教学内容与实际工作过程保持一致。
(4) 课程设计思路。
1) 开设依据。我院的计算机应用技术专业主要培养从事计算机软件设计、开发、应用和维护等领域业务第一线, 具有良好职业道德, 具备计算机技术专业能力的应用技术型专门人才。我们组织相关课题组通过走访宁波、上海等地区20余家企业对人才需求状况和岗位职业能力进行调研。调研结果表明, .NET软件应用技术员为主要职业岗位。70%的典型工作任务为.NET软件编写。调研中同时发现, 90%以上的.NET软件采用C#进行开发。C#程序开发已经成为.NET软件应用技术员所必须掌握的职业技能, 同时也为.NET软件测试和.NET软件维护等工作岗位奠定结实的基础。因此, 本课程应当作为计算机应用技术专业的核心课程。
2) 设计理念。本课程以“1+2”的课程设计理念为基础, 对.NET软件应用技术员为主的职业岗位群职业能力与工作任务进行分析, 在体现职业性、实践性的前提下, 进行课程开发与设计。
(1) 按照“以职业能力培养为目标, 以岗位需求为依据”原则, 推出“1+2”课程设计理念。
“1”是指以职业能力培养为原则, 设计能力本位课程。“2”是指课程设计中要参考两个标准:“行业企业要求”和“职业资格认证标准”。
(2) 与行业企业合作开发课程。与浙江派桑网络有限公司、浙江筑望科技有限公司、宁波高新区易创科技有限公司、上海国信朗讯科技网络技术有限公司等合作, 聘请相关公司专业技术人员共同确定本课程的人才培养目标、教学项目、教学模式以及课程需要配备的师资队伍和实训条件。
(3) 以企业真实项目为依托, 设计适合.NET软件应用技术员能力培养的学习项目。
在项目设计过程中, 知识点项目化、情景化, 设计课程项目难度层层递进。这些教学项目的前后顺序按照个人在实际工作岗位中提高和发展的次序进行, 项目之间既有横向的设计上联系, 又有纵向难度上的提升, 后面的项目在前一项目基础上, 对知识技能层层深化。在教学过程中对不同项目采用不同的教学方法。
3) 内容选择。本课程选取2个C#项目作为教学项目。结合学生的认知特点和教学规律, 采用递进与并列相结合, 分阶段层次来展现教学内容。立足于实际能力培养, 根据岗位工作任务分析所涵盖的工作任务与职业能力要求, 本课程确定了以图书馆管理系统项目的软件开发为主线, 把该项目的C#开发过程贯穿整个教学过程的教学内容;课程中的项目设计具有代表性、通用性及可实施性;课程内容涵盖软件产品设计过程的主要知识和技能。
第一阶段, 完成第一个项目的C#设计和开发, 项目名称是图书馆管理系统开发。该阶段由教师引导学生进行需求分析、模块划分、系统设计、系统开发均由教师引导进行。第二阶段, 进行第二个项目的C#代码开发, 项目名称为“网上订票系统的C#开发”。该阶段主要由学生项目组自行组织完成, 教师审定、指导、答疑、评估。因此, 根据教学实际情况第一个项目可占60%以上的课时, 所有学生均应完成任务。第二个项目, 学生在“会”的基础上实现能力提升, 可以适当减少课堂课时, 增加课外活动完成任务。
4) 内容编排顺序。本课程注重实际应用能力的培养, 以岗位职业能力为依据, 同时结合学生的认知特点和教学规律, 采用递进与并列相结合来展现教学内容, 同时选择并行项目作为训练内容, 以实现能力的迁移。
根据各个设计项目, 确定项目的实施方案。把设计项目分成多个单元任务, 并对学生完成项目的实施过程进行全面的技术指导、质量监控、进度把握、项目考核。
每个项目确定的许多学习型工作任务, 以实际软件产品设计过程为线索来展开, 即以实际设计过程来进行课程的学习型工作任务展开。同时, 在教师教学及学生学习的过程中, 通过对学生进行分组、分工, 培养学生的团队合作精神, 本门课程总学时为119, 学分为6学分。
2 考核内容与方法
实行以过程考核为中心的教学评价方式, 以职业岗位能力作为评价标准。过程考核占总评成绩的70%。教学过程中的学生成绩突出工作任务的完成情况, 主要是课程教学中的三个学习项目的完成情况, 以任务为单元进行评价, 包含:工作态度、工作进度、阶段成果和总结汇报, 比例为2∶2∶4∶2, 每个子项内容都采用三方评价, 即学生自评 (角色职责) 、小组评价和教师评价, 三方评价比例为3∶3∶4。终结性考核采用期末考核的方式, 占总评成绩的40%, 考核内容主要以小型项目或部分项目开发为主, 考核时间为3个小时, 采用教师评价方式。
3 结语
通过以上改革, C#课程教学成绩斐然。学生的C#程序开发技能得到快速提升, 毕业生对口就业率高, 也获得了用人单位的普遍好评。
摘要:介绍了通过对《C#程序设计》这门课程进行教学改革实践, 确定了本课程的课程目标、课程设计思路和考核内容与方法, 并且从开设依据、设计理念、内容选择、编排顺序等方面对C#课程教学改革做了详细的说明。通过将《C#程序设计》课程教学改革付诸实践后, 结果证明效果还是很显著的。
[关键词] 独立学院 C#程序设计 课程设计
[Abstract] By making a research on computer teaching of the Independent College, conducting a detailed analysis of C# Programming Design teaching status, as well as summarizing and analyzing existing problems. This paper aims at improving and expanding teaching approaches of C# Programming Design in Independent College.
[Keywords] Independent college C # Programming design course design
一、独立学院的计算机专业相关课程的教学现状
目前,在独立学院的计算机专业的教学中,无论是理论课程还是实践课程,改革都势在必行。传统的教学法过于重视认知目标,轻视行为目标,使学校的教学目标和企业的实际需求出现断层。计算机编程类课程作为计算机专业的核心课程,教学任务重要而艰巨,但由于课时、教学环境等因素的制约,每门编程设计语言的教学都不可避免地落于泛泛而谈的尴尬,理论与实践严重脱节,导致学生似懂非懂,难以真正掌握一技之长。
就学生方面来说,独立学院的计算机专业学生一般学习基础都不够扎实,没有明确的学习目标,学习动力也相对不足,生活作风比较散漫,沉浮于逍遥自在的象牙塔,把宝贵的时间用于闲聊、玩网络游戏、睡懒觉,而对课程学习尤其是对诸如《C#程序设计》等比较抽象枯燥的编程类科目兴趣不高,很少会主动进行课后复习,上机编程实践或从事项目开发。
在课程方面,如《C#程序设计》是针对计算机相关专业开设的一门专业课,不仅有很强的理论性,更有实用性,要求学生尽可能全面地了解C#程序设计的理念和方法,培养学生的逻辑思维能力和归纳总结能力。但由于受到课时的限制,一般教学进度都比较快,同时学生对知识的接受能力和掌握程度也不一致,从而加大了教学难度,也减少了课程教学的趣味性,降低了教学的效果。
二、《C#程序设计》教学中所存在的问题
(一)传统教学无法激起学生学习的积极性
目前,大多数开设计算机专业的高校中,《C#程序设计》这门课都是在C或者C++这样面向过程的语言课程之后开设的,而C#本身是一个纯粹的面向对象语言,与面向过程的语言在程序设计的思路和方法上都有很大的不同。虽然在教学上注意到了这一点,却在教学技巧上缺少改变,依旧以教师为中心,采用“填鸭式”的教学方法,间或穿插演示一些示例代码;学生被动地学习,只能死板地接受枯燥的语法、孤立的示例,只能如“瞎子摸象”般略知一二,却无法领会相关知识在更高层面上的运用。这无疑容易让学生对C#的学习失去了兴趣,无法获得良好的教学效果。
(二)教学与就业脱节
独立学院办学目标之一,即是将学生培养成社会需求的应用型人才。但在《C#程序设计》等课程的教学中,无论从知识讲授和技术培养上,都是处于基础层面的,忽略了新知识新技术的讲授,没有将知识的教授放入到具体的生产应用情景之中,没有按照系统的项目开发的系统过程来教学,因此,大部分学生单纯的把编程看成是代码的编写,脑海中没有一个完整的项目体系。这就导致了教学与就业严重脱节,很难适应社会的需求,与独立学院的办学宗旨渐行渐远。
(三)课程考核方式缺乏改进
当前教学机制下的考核方式以试卷考核为主。对于程序设计语言课程的教学,这种考核方式存在着矛盾之处:一方面,试卷考核限制了学生想象空间及灵活性。在平时教学中,老师都会有意无意地把考试的重点暗示给学生,而学生则会根据考试的重点来进行学习。然而,所谓的“考试的重点”与C#整体编程架构没有必然的联系,却无形中误导了学生,使其形成了这样一种思维定势,即“为考试过关而学习”,忽略了真正的编程学习。另一方面即是学生能力的培养与考核成绩评定的矛盾。许多独立院校都对试卷的题型作了一些规定,比如,不少于五种题型。为满足这一点,教师就会在试卷中加入选择、填空、判断、简单等题型。在这样的考试指导下,教师不得不花费一定的时间在语法细节上。而事实上,语法细节跟学生的编程能力并无太大关系。
三、探讨《C#程序设计》的课程设计
(一)C#课程项目案例的研究与设计
就业难的现状,刺激了职业教育的发展,如北大青鸟等培训机构倍受热捧。在对这些培训机构进行长期的研究之后,发现这些培训机构都是项目驱动的案例式教学,案例贯穿始终。它强调学习者主动参与学习的学习行为,是解决理论与实践落差的利器。从教学的内容上看,案例教学适用于复杂知识、专业知识的教学;从教学目标来看,案例教学适宜于旨在培养学生能力为主的目的;从教学对象来看,案例教学能够增强学生逻辑思维的能力,激发学生探求新知识的热情,以及创新力的提高。但最重要地,在项目案例的实践过程中,内容新颖性和创新性相结合,能够激发学生的学习兴趣;案例采用面向对象的思想进行软件开发,能够有效的将类、对象、重载以及多态的概念融入其中;案例具有持续性,可以贯穿整个教学过程,无论是在基础理论教学阶段,还是在高级开发阶段。同时,案例还能够切合时下比较新的或者流行的技术。
(二)设置问题引导教学模式
问题引导式教学方法是研究性学习的一种教学组织形式,是一种以探究活动为形式的综合性教学方法和学习方法。在《C#程序设计》的教学过程中,将问题引导式教学过程分为明确教学目标、设计学习情境、划分学习任务、精心设计问题、师生教学互动、课后强化六个阶段。在教学过程中,教师根据教学内容与教学目标,结合学生学习的实际情况,精心寻找新旧知识切合点,设计相应问题,以问题为线索,引导学生分析问题,揭示解决问题关键,进而较好地使学生获取新知识,掌握运用新知识的能力。首先,以学生为主体,以教师为引导,以问题为线索。其次,要培养学生养成良好的学习习惯,使其提高主动获取所需的知识的能力。再次,提高学生发现问题、分析问题及运用知识解决题的能力。最后,培养学生的创新意识与创造能力。
(三)从细节入手,提高教学质量
在教学活动中,可以通过注重细节的方式来提高计算机专业课程的教学质量,这些细节包括教学的趣味性和扩大知识容量等。教学具有趣味性,可以活跃课堂气氛,提升学生的学习兴趣。在保证正常教学进度的同时,要注重知识深度与广度的拓展,启迪学生思考问题,结合项目案例加强动手能力的培养,让学生能够学有所思,学有所用,学有所成,从而坚定学习的信念。在明确教学目标阶段,教师应根据独立学院学生的知识结构特点及其领悟接受能力而精心制定教学大纲,并根据具体情况灵活变动,有针对性地开展每一堂课的教学。在设计学习情境阶段,应准备好一些生动活泼的素材,包括一些富含人文气息的文字材料等,并从中适当穿插师生教学互动环节,改变理工科课堂里沉闷无味的教学气氛。在设计问题阶段,要目标明确,以教学大纲作为指引,捉住主线,演示若干与知识点相关的编程案例,加深学生对知识点的认识和掌握,另外,还要有针对性地辅以分量适当的课后强化题。
参考文献:
[1]吴献文,“项目驱动+案例教学”模式在高职教学的探索与应用[J].计算机教育,2007.
[2]吴安平,王明珠,王继忠.案例教学法研究与实践[J].长春大学学报,2002.
[3]董萍,吴世杰.“问题引导、任务驱动”教学模式探索—《社会保障学》的教学模式个案分析[J].中国科学教育,2006.
[4]曹娜,高林柱.任务驱动式教学法在教学中的应用[J].中国教育与教学,2006.
作者简介:
课程设计报告书
2017-2018学年第一学期
课程名称:《Android应用程序设计课程设计》
设计题目: 计算器的设计和实现 系
别: 信息工程系 班
级: 移动16 姓 名: 杨芝源 起止日期: 2018.1.2---2018.1.12 指导教师: 黄旺华
摘要
Android是当今最重要的手机开发平台之一,他是建立在Java 基础之上的,能够迅速建立手机软件的解决方案。Android的功能十分强大,成为当今软件行业的一股新兴力量。
本实训是在学习java语言程序设计的基础上进行的一次综合实践。通过综合训练,要求学生掌握java语言程序设计的基本技能和Android编程的应用开发手机app,并较系统地掌握JAVA语言程序设计开发方法以及帮助文件的使用等。
简单计算器又是手机上必备的小程序,所以此次创新实践很有意义,使用性很强。
关键词: Android 手机app 计算器
目录
1、需求分析...................................................................................................................1
2、概要设计...................................................................................................................2
2.1 总体设计...................................................................................................2 2.2 模块设计...................................................................................................3
3、详细设计...................................................................................................................5
3.1 输入模块...................................................................................................5 3.2 显示模块...................................................................................................5 3.2 计算模块...................................................................................................5
4、实现............................................................................................................................7
4.1 公共类.......................................................................................................7 4.2 加减乘除模块1........................................................................................7 4.3 三角函数模块2........................................................................................7 4.4 某某模块3................................................................................................7
5、测试..........................................................................................................................8
5.1 测试方案...................................................................................................8 5.2 测试用例...................................................................................................8 5.3 测试结果...................................................................................................8
6、总结..........................................................................................................................9
1、需求分析
随着智能手机的普及,生活工作等方面的应用都迁移到手机中,本课程设计旨在实现一种某某的APP,为人们解决设计一款基于Android系统下的计算器,实现一般计算器可以进行的加减乘除算法,科学计算三角函数以及清零操作。
通过对该问题的分析,APP主要涉及的对象有:计算器
主要的事务是:
1、计算器界面友好,方便使用,具有良好的交互性。
2、具有基本的加、减、乘、除功能,还有+—、开方、平方功能。
3、能够判断用户输入运算数是否正确。
4、支持小数运算。
5、具有退格功能,能够删除最后一个输入,ce。
6、具有清除功能,删除所有,c。
7、具有结果存储功能,能够显示存储器状态,支持触屏手机。
需求分析得出的流程图:
知道了系统的功能以后,我们通过main.xml来建立显示界面,完成后系统开始监听用户的按键输入,每次输入系统都会判断一次用户输入的类型,是数字还是运算符号或者是清除,判断完后分成不同类型如数字,符号,基本运算等等进行进一步的处理,根据用户的要求继续进行下一步的操作,最后计算出最终结果并显示在显示区。系统流程图如图所示:
2、概要设计
2.1 总体设计
整个程序基于android技术开发,出总体模块外主要分为输入模块、显示模块以及计算模块(包括一些其它功能)这三大部分。
在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据,显示模块部分负责显示用户之前输入的数据以及显示最终的计算结果,计算模块部分负责进行数据的运算以及一些其她的功能。
总体模块的作用主要是生成应用程序的主类,控制应用程序的生命周期。
主要:由于不同的Android手机有着不同的分辨率,将不同分辨率的图标图片放置在相应位置。Drawable-hdpi中放置分辨率最高的图标,drawable--ldpi中放置分辨率中等的图标,drawable-mdpi中放置在分辨率最低的图标。
2.2 模块设计
一、输入模块
输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,需要监听手机按键动作以及用指针事件处理方法处理触屏的单击动作(以松开按键为准)。同时提供了较为直观的键盘图形用户界面。
二、显示模块
显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果,同时还负责显示一些其她的信息。
三、计算模块
计算模块则主要描述了计算器的整体,实现了计算器的界面,负责计算用户输入数据,包括加、减、乘、除、等各种计算功能,记忆数据的相关功能,退格以及清零的功能。、详细设计
3.1 输入模块 一)界面效果
二)类块模型图
3.2 显示模块 一)界面效果
二)类块模型图
3.3 计算模块 一)界面效果
二)类块模型图、实现
开发环境介绍
4.1 公共类
4.2 某某模块1
4.3 某某模块2
4.4 某某模块3
74、测试
5.1 测试方案
5.2 测试用例
5.3 测试结果
一、需求分析
(一)建设工厂物资管理数据库目的(包括服务对象、数据库的目标等)
(二)开展工厂物资管理数据库的可行性分析
(三)数据和处理分析(包括数据库中需呀存储哪些数据、如何进行处理等)
二、概念结构设计
(一)实体及其属性
(二)分E-R图设计
(三)E-R图集成与优化(消除不必要的冗余和冲突)
三、逻辑结构设计
(一)E-R图转换为关系模型
(二)数据模型的优化(这一部分就是将关系模型规范到3NF)
(三)设计用户子模式(这一部分可以设计用户自定义的视图,参见教材p227)
四、数据库的实施与数据导入
(一)在SQL Server 2000或其他DBMS系统上实现数据库的设计
(二)基本表的建立
(三)视图的建立
(四)数据库安全的建立(包括用户的建立及权限的分配)
(五)数据的输入
五、数据库的应用
(一)数据查询
(二)数据增加
(三)数据删除
题
目: 系
部: 专
业: 班
级: 组
长: 组
员: 设计时间:
鲜花网 信息管理系 信息管理与信息系统
(一)班 李 健 黎梦雪 邱文琦 12月10号 一. 设计准备
1.开发环境搭建:硬件设备需要电脑,软件需要有DW对网页进行搭建,需要联网对素材进行收集,和其他网页进行参考,需要ps对图片进行处理等。2.知识准备:需要熟练网页相关的知识,特别是老师讲的那些课堂知识,当然还需要课外的一些关于网页设计的知识,还可以再网上找一些相关的代码和相关的知识进行阅读,最重要的是租章需要很强手动操作操作能力,要熟悉DW这个软件的一些基本操作和功能运用,需要一些简单的网页美工设计技能和审美能力,这样才能将网页的布局给人以美观的感觉,儿不是网页的布局零乱,不美观。3.人员分工等:实验报告撰写者—黎梦雪,网站演讲者--邱文琦,整个网站设计者—李健。
二.需求分析
人们都比较喜欢鲜花,喜欢欣赏鲜花,所以我们组就一致决定以鲜花为主题,鲜花不仅给人一枚的感受,而且有的鲜花可以入药,有的还可以吃,还有一些鲜为人知的鲜花等等,所以鲜花是个比较受欢迎的主题。
三.技术分析
1.网页用了表格和CSS以及盒子模型对整个网页的布局进行了搭建。表格可以让网页内容很贵范,不会让整个网页显得很零乱;盒子可以很好的节约网页的空间;而CSS可以让网页内容更加的美观的呈现在用户的眼前,给人以更好的客户体验。
2.网页用了很多DW的基本功能,如超级链接,锚点链接,表单,javaskript,如图片的晃动,图片的放大和缩小,图片的隐藏和显示,图片的交换效果,以及图片的轮选效果等等,还对网页插入了音乐,视频,对网页制作了一个统一的模板,当然模板不是网上下的,都是自己做的,虽然不咋滴,还用了框架等等 3.还用了Spry技术,如菜单栏,折叠式,面板等等,给网页节约了很多的空间
4.还用了ps技术,如网页的背景和网页的LOGO就是用ps给P出来的,以及很多的图片就是用PS进行加以处理了的等等 5.整个网页代码用的不怎么多,有些特殊的共能是敲代码或子在网页上下载一些特殊功能的代码,不过还是用了一些的。6.本来做了几个ASP网页的,可是不怎么会连呢数据库,这是本网站的一大弱点。
四.制作过程及要点
制作过程
1.本组成员一起讨论,以便进行主题的确定,这是比较重要的过程,这题要确定好,而且确定了就不能进行更改,不然很麻烦。2.然后根据所确定的主题在网上进行素材的收集,对网站的图片,各种鲜花的介绍文字,以及背景音乐和相关的所需要的视频等等,并且要寻找一些与本主题相关的网页进行参考。3.素材收集好后就对网站的首页进行搭建和设计,并把它另存为模板,以便各个子网页快速的设计,当然这个首页的模板在后续设计中是需要随时加以更改的,知道最后整个网页搭建完为止。4.对对各个子网页加以设计,将所收集的素材如图片,文字介绍,音乐,相关视频,插入后还要见一些CSS样式,对网页的进行美观,是网页看起来很协调,美观整齐。
5.对整个网站进行超链接的设置,是整个网站形成网络结构,网页之间要能够进行相互的链接
6.对各个网页进行效果的添加,主要运用到了javaskript,使网页能够与客户进行相互之间的交互
7.最后对整个网站进行整合以及对一些细微的地方进行修修补补什么的
要点
1.首页中用表格进行布局,然后将图片和图片吧名字一个一个的放到表格中,并对图片添加三种效果,都是通过mouseover来触动这些效果的,分别是,图片的放大缩小,图片的晃动,图片的隐藏和显示,插入了一个图片查看器,一个表单,用了一个锚点链接,用了spry中的菜单栏,面板以及折叠式面板,用PS制作了整个网站的背景和LOGO 2.对其他子网页进行设计,将所收集的图片和文字插入到模板中,然后即那个所有的图片都加上行为,图像交换行为,然后建几个CSS样式,将这些CSS样式用到各个子网页中,样式中有对字体各方面的设计,图片的左浮动,掺入后还要对一些细节的地方进行修补,如首行空2各,字体间的距离,行高什么的,要适当网页给人以美观的感受为止。
3.把收集到的视频的mp4格式格式改成FLV格式,然后插到网页中虽然所用到的技术不怎么高深,可是自网页蛮多的。等等那些图片的行为可以再行为面板里面进行设置,也可以对一些特殊的行为在网上找一些特殊的代码,插到网页中然后在加以修改便可,如图片的放大缩小效果和状态栏上文字的跑马灯效果以及图片的晃动和图片交换这些简单的效果都是不需要些代码的,都是可以通过DW自带的功能面板进行设计的
4.在设计的过程中也遇到了很多的问题,如在模板中不能插图像查看器,不能掺入框架,不然所设计的背景就会被框架进行分割,图片查看器也是在模板中怎么也插不进,刚开始时用DW8的版本进行网页设计的,一位这个版本是最高的,到后来才知道,这个版本很低,以致于后来换DWCS6版本是,两个版本所设计的东西有些地方不怎么兼容,而且最后用不同的浏览器预览时,效果也不仅相同,比如说网页的图片的查看器不能在浏览器中查看等等,不过最后这些问题也是一个一个的进行解决,在解决的过程中也学到了一些东西,并且印象也比较深,最后还是有几个没解决,如不会连数据库,ASP网页预览等等什么的。
一、课程现状
我们面向的是高职的学生, 他们在中学就读时成绩一般, 学科方面存在偏科, 学习方法存在问题。进入高职后, 大学生活的丰富多彩, 学习压力的释放, 丰富的生活让自制力不强的学生无法正确处理学习和其他工作生活的关系, 学习兴趣大大降低。《C#程序设计》这门课程要求学生积极动脑思考, 强化逻辑思维能力和想象力, 高条件、高要求让高职院校的学生在学习这类程序语言课程的时候, 往往会出现教师抱怨学生的低起点, 学生抱怨课程的枯燥或无用。学生出现畏惧情绪, 不会也不愿钻研和深入学习。学生对课程的兴趣降低虽然与学生自身能力有关, 但也与教师的教学方法有关。在以往的课程讲授过程中, 有些教师仍然以知识灌输为主, 课程内容抽象, 让学生觉得很枯燥难懂, 忽视实践环节, 在这样的情况下, 很多学生因此出现了厌学的情绪。
作为高职院校进行人才培养的重要载体, 课程建设一直是提高人才培养质量的核心。笔者通过对基于“软件产品开发”的《C#程序设计》课程建设进行研究, 旨在进一步推进教学做一体的专业核心课程改革, 不断创新教学方法、教学手段, 整合教学内容, 着力提高课程建设实效。
二、课程建设思路
通过教学改革, 要建立一个完整的、科学的、有特色的高职人才培养的教学体系。体现“以就业为导向”, “以能力培养为中心”, 在教学内容突出专业技能、综合能力及综合素质的培养。通过对就业岗位和工作任务进行分析, 归纳典型工作, 确定行动领域, 转化学习领域, 设计典型学习情镜。依照软件工程原理, 按需求分析---系统设计---系统实施---系统测试的开发步骤, 将知识内容重新进行分解整合, 挑选出企业的真实案例, 模拟企业的真实环境, 学生进入以真实工作任务作为演练的实训场所, 通过职业培养和学习, 使学生的职业能力和职业素质在学习过程中逐步获得强化, 实践能力得到加强, 具有创新精神, 从而全方位地体现教学过程的职业性、实践性、开放性, 实现课程教学目标。
(一) 课程定位
《C#程序设计》是融理论、实践一体, 教学做一体化的专业课程, 是工作过程系统化的课程, 以软件项目为载体, 包含了C#.NET程序员岗位能力所要求掌握的开发环境、开发语言 (C#) 、数据访问技术和三层架构等核心技能。通过具体的学习型工作任务, 使学生能够进行用户需求分析、项目规划设计、数据库访问、代码编写、系统测试等工作能力的培养, 掌握软件开发的基本流程、开发技巧和编程规范。在教学过程中通过项目分析等环节培养学生的职业思想, 学习数据库应用开发的相关知识, 通过系统设计等环节培养学生的职业技能, 通过调试程序和软件测试等环节培养学生的职业行为习惯和团队合作谨慎, 整个学习过程中, 监督并要求学生能够不断反省自己、养成良好的生活和工作习惯, 顺利完成从学校学习到企业开发的过度。
(二) 教学情境设计
从程序员岗位人员所必须具备的综合能力分析, 我们通过设计教学情境来整合教学内容, 在课程设计中, 我们遵循这样的理念:
1. 以软件产品开发为导向, 校企共同开发课程。
我们与签订协议的校企合作单位开展多方位的教学合作, 与技术总监、项目经理、程序开发人员进行研讨, 对软件开发的实际工作任务进行分析、抽取、整合、形成典型工作任务。校企双方共同确定本课程的教学目标, 共同确定教学内容, 共同选择教学内容载体, 共同研讨教学模式等。
2.
以岗位能力需求为目标, 以真实项目为载体项目的选择应考虑发到:1) 尽可能多的载有课程所需的理论知识;2) 是企业工作岗位中实际运用工作项目;3) 教师、学生都比较熟悉, 有必要的实施条件;4) 具有综合性、可扩展性。几个项目所涉及的能力逐层递进、由浅入深。
3. 采取以“项目导向”为主的教学模式, 教学过程面向软件产品开发过程。
课内学生以小组 (项目组) 为单位, 采用“项目引领, 逐步放手”的教学模式;课外采用“项目工作室”教学模式, 鼓励学生加入工作室, 开展大学生应用技术研究;学生课内进行项目学习, 课外参加项目开发, 不出校园就实现了“产学融合”, 真正实现教、学、做、研一体化。
4. 突出过程考核, 以工作岗位能力作为过程考核依据。
采用“工作过程管理系统”进行教学过程全程控制, 根据企业的职业工作岗位要求和产品标准作为评判学生是否合格的主要依据。以项目完成的工作态度、工作进度、阶段成果、总结汇报作为评价内容, 以学生自评、小组评价、教师评价作为评价方式。所有项目分值的综合即是学生的过程考核成绩, 体现了过程考核成绩的公平性、针对性, 从而确保过程考核更能衡量学生的岗位能力水平。
(三) 教学方法改革
课程教学效果的好坏与教学方法的运用有较大的关系, 在课程建设中, 针对教学情境主要采用以下的教学方法:
1. 案例实践教学法。
在教学过程中以一个案例为主线来展开, 把相关的知识点融入案例的各个环节, 层层推进, 直到得到一个完整的解决方案。在课堂教学中, 在开始一个案例时, 先演示案例的效果, 让学生有直观的感觉, 在以后的讲解中, 再把案例分解成若干简单的任务贯穿在课堂讲解中, 也即“学中做”。在任务的分解时, 引导学生预查相关资料提出解决方案, 组织学生进行讨论, 形成最终的解决方案。
2. 任务驱动的项目教学法。
学生在教师的指导下亲自处理一个实际存在的项目的全过程, 即“做中学”。首先教师通过一个完整的项目引导学生逐步完成。在此过程中, 教师已不再占据教学中的主导地位, 而成为学生在学习过程中的指引着和监督者, 学生的综合能力大大提高。
3.“教、学、做、评”一体的教学法。
将课堂搬到实训室, 以项目小组的方式, 选取项目负责人, 以团队的形式做到每日一报, 由教师和其他组的成员对该组的项目实施方案和进度进行评价, 项目验收以项目小组答辩的形式, 评价最终的完成效果, 即:“做中评”。这种形式学生思维异常活跃, 留有广阔的创新性思维空间, 使创新行为成为学生的一种内在需求。
三、对基于“软件产品开发”的课程改革的思考
(一) 合理调整课程教学的内容
在教学过程中, 对那些陈旧过时的教学内容, 教师要及时进行删减, 随时更新充实IT技术发展的前沿知识于课堂教学中。其次, 应合理安排教学内容, 将知识点进行整合, 提高课程的系统性, 便于学生的学习理解。
(二) 注重课程教学的基础建设
与教学相关的教案、课件、授课计划要齐全并且应该是教师之间共同备课的结果;与实训相关的实训大纲、指导书和报告要规范, 要有明确的培养目标和实施方案;与课程相关的案例库、试卷库、学生作品库要完整, 内容要全面, 难度要适中;与课程案例相关的校本教材要不断地进行修改和完善。
(三) 提高任课教师的教学水平
应紧紧抓住现有师资的培训与再进修工作, 有计划的选派一部分任课教师深入到实训基地参与技能培训, 也可以深入行业公司进行专业技能培训, 弥补我们的教学、实训中存在的缺陷。
(四) 应强调以学生的学习为中心
提倡“教为主导, 学为主体”的教学思想, 还学生主动思维的空间, 让学生主动发展。在教学中, 老师和学生可以互相提问, 也可以共同研究, 启发讨论、答疑解惑, 提高教学效果。学生学习可以是个体式或小组合作式学习。
结束语
践行基于“软件产品开发”的程序设计课程改革, 面向就业岗位, 工作任务, 整合教学资源, 是与我国职业教育的培养目标相一致, 课程建设以项目实践为起点, 将校企合作, 工学结合作为人才培养模式改革的切入点, 体现职业的工作过程特征, 体现职业资格标准的要求。课程的建设要不断创新, 因材施教, 与市场接轨, 提高课程的教学效果。
参考文献
[1]刘宏, 宋久科.Java语言程序设计教学改革探析[J].教育与职业, 2013 (9) .
[2]张中银.基于工作过程的课程开发研究[J].才智.2012 (13) .
[3]刘哲.基于工作过程的课程开发方法[J].青岛职业技术学院学报, 2008 (2) .
[4]黎华.高职课程教学设计模型的研究[J].教育与职业, 2011 (23) .
【C#课程设计报告书】推荐阅读:
《数字电路与单片机课程设计》课程设计报告11-01
2课程设计报告格式05-30
课程设计报告格式要求06-10
课程设计技术总结报告10-13
工业工程课程设计报告06-10
课程设计网上书店报告11-08
web课程设计报告-视频网站10-02
拔河游戏机课程设计实验报告09-08
电子商务网站建设课程设计报告06-13
《电子商务数据库技术课程设计》报告格式06-29