软件设计与实践实验指导
发布时间:2015-01-28 15:25:36
发布时间:2015-01-28 15:25:36
《软件设计与实践》实验指导书
编者: 徐克奇
适用专业:软件工程
上海应用技术学院
2013年7月
1.1 Visual Studio 2008 安装
∙ 系统要求:
1. 支持的操作系统: Windows Server 2003; Windows Vista; Windows XP
2. 最低配置:1.6 GHz CPU,384 MB 内存,1024x768 显示分辨率,5400 RPM
3. 建议配置:2.2 GHz 或更快的 CPU,1024 MB 或更大的内存,1280x1024 显示器分辨率,7200 RPM 或更快的硬盘
4. 在 Windows Vista 上运行的配置要求:2.4 GHz CPU,768 MB 内存
5. 最小安装需要1.22GB可用磁盘空间
6. 完全安装需要2GB可用磁盘空间
确定系统符合要求后,开始安装软件。运行安装程序,根据安装提示步骤进行操作。安装完成后,启动VS2008。注意首次启动时需要指定经常从事的开发活动类型,请“选择Visual C#开发设置”这一项即可。
1.2 Visual Studio 2008简介
Visual Studio无疑是现今的开发工具界最具影响力的集成开发环境。目前已经开发到 9.0 版本,也就是 Visual Studio 2008。Visual Studio提供了一整套的开发工具,可以生成Windows应用程序,ASP.NET Web应用程序,Web服务应用程序和移动设备应用程序。Visual Studio整合了多种开发语言如Visual Basic、Visual C#和Visual C++,使开发人员在一个相同的开发环境中自由的发挥自己的长处,并且,还可以创建混合语言的应用程序项目。
VS 2008的优势在于它使开发人员创建程序更容易、更灵活。它提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序。 任何规模的组织都可以使用 Visual Studio 2008 快速创建能够更安全、更易于管理并且更可靠的应用程序。
VS 2008主界面主要由“编辑/浏览器”、“解决方案资源浏览器” 、“对象浏览器”、“属性”、“任务列表”、“服务器资源管理器”、“动态帮助”等窗口,以及菜单栏、工具箱、工具栏等组成。
(1)“编辑/浏览器”窗口是VS的主要工作区,是显示正在编辑的代码并且为控件布局提供一个所见即所得的图形窗口。
(2)“解决方案资源浏览器”窗口显示VS解决方案的树型结构。在“解决方案资源浏览器”窗口中可以浏览组成解决方案的所有项目和每个项目中的文件,可以对解决方案的各元素进行组织和编辑。
(3)“对象浏览器”窗口显示用于包的类、属性、方法、事件和常数以及项目中的对象库和过程。
(4)“属性”窗口是用于设置和显示解决方案中各子项的属性。
(5)“任务列表”窗口允许在开发应用程序时跟踪任务的状态。当生成应用程序时,VS也使用任务列表标记错误。
(6)“服务器资源管理器”窗口可以打开数据连接,登陆服务器,浏览它们的数据库和系统服务。
(7)“动态帮助”窗口提供访问本地的和联机的帮助主题。
(8)菜单栏和工具栏包含了VS2008功能命令。常用的菜单包括:“文件”、“编辑”、“视图”、“项目”、“生成”、“挑食”、“格式”、“表”、“工具”、“测试”、“窗口”、“帮助”等菜单。常用的工具栏包括:“标准”、“格式设置”、“文本编辑器”、“调试”等工具栏。
(9)工具箱用于windows应用程序和web应用程序添加控件。允许在应用程序中使用拖放方式操作控件。可用的控件按照类型进行分组。
实验一、C#面向对象编程
一、 实验目的
1. 熟悉 Visual Studio.net 2008开发环境。
2. 了解 Visual C#编程特性。
3. 掌握类的创建和对象声明。
4. 掌握通过属性访问对象中的数据。
5. 掌握继承实现方法。
6. 熟悉委托、事件的定义极其使用。
二、 实验指导
1. 编写一个寻数游戏,每次游戏随机产生三个整数(0~20),让玩家寻找这些数,要求每次游戏只给玩家5次找数的机会。
设计过程:在主函数中用Random类产生三个0~20数,玩家通过键盘输入的数与产生的数进行比较,如果正确显示“恭喜,找到一个数”否则显示“抱歉,没有找到”,最后输出总共找到多少数。
程序参考代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace exp1
{
class Program
{ static bool search(int[]a,int c) //寻数函数
{
for (int j=0;j
if(c==a[j]) return true;
return false;
}
static void Main(string[] args)
{
int[] a=new int [3];
int c,count=0;
Random Rnd1 = new Random();
for (int i = 0; i < 3; i++)
a[i] = Rnd1.Next(0, 20);
Console.WriteLine("这是一个寻数游戏,请找出一个0~20的数");
for (int i = 0; i < 5; i++)
{
c = Convert.ToInt16(Console.ReadLine());
if (search(a,c))
{
Console.WriteLine("恭喜,找到一个数!");
count++;
}
else
Console.WriteLine("抱歉,没有找到!");
}
Console.WriteLine("总共找到 {0} 个数", count);
Console.ReadKey();
}
}
}
2. 定义一个描述个人情况的类,包括姓名、性别、年龄。然后派生一个雇员类,增加其所在部门及薪水字段。并进行实例化,坐候输出实例化结果。
设计过程:Person类的姓名、性别和年龄是私有字段,用属性来描述可以借助于get和set方法对属性的值直接进行读写,避免了通过公有方法修改这些私有字段。在Person类中定义一个Display()方法用来显示个人信息。在派生雇员(Employee)类中添加了新的成员,因此需要在该类中定义新的Display()方法,显示新的信息。
程序参考代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace exp2
{
class Program
{
public class Person
{
private string name; //声明字段
public string Name //对应name的属性
{
get
{ return name; }
set
{ name = value; }
}
private string sex; //声明字段
public string Sex //对应sex的属性
{
get
{ return sex; }
set
{ sex = value; }
}
private int age; //声明字段
public int Age //对应age的属性
{
get
{ return age; }
set
{ age = value; }
}
public void display()
{
Console.WriteLine("姓名:{0} 性别:{1} 年龄:{2} ", name, sex, age);
}
}
public class Employee : Person
{
private string dept;
private int salary;
public void set_dept(string d)
{
dept = d;
}
public void set_salary(int s)
{
salary = s;
}
public void display()
{
base .display();
Console.WriteLine("所在部门:{0} 薪水:{1} ", dept, salary );
}
}
static void Main(string[] args)
{
Employee e=new Employee ();
e.Name="张三";
e.Sex="男";
e.Age=29;
e.set_dept("财务处");
e.set_salary(5000);
e.display();
Console.ReadKey();
}
}
}
三、 实验内容
1. 创建C#控制台应用程序。设计一个简单的密码验证程序,若密码正确,则显示“欢迎进入本系统!”,否则显示“密码输入错误,请重新输入!”。若连续三次密码输入错误,则显示“对不起,超过最多输入次数,取消服务!”,程序退出。
2. 创建一个点Point类,属性包括横坐标、纵坐标。要求能够完成点的移动操作、求两点距离操作,并利用运算符重载,对两个点进行比较(相等和不等)依据是两坐标点相等指它们横坐标和纵坐标分别相等。编写一个测试程序对产生的类的功能进行验证。
3. 定义一个顺序表SqlList类,要求能够完成在顺序表中插入元素和删除元素,确定元素在顺序表中位置,检索元素,清空表,判断表是否为空等操作。编写一个测试程序进行验证。
4. 定义一个shape抽象类,利用它作为基类派生出Rectangle、Circle等具体形状类,已知具体形状类均具有两个方法GetArea和GetPerim,分别用来求形状的面积和周长。最后编写一个测试程序对产生的类的功能进行验证。
5. 通过“委托”方式实现求一个整数的平方与平方根。
6. 编程实现一个模拟闹铃的程序,具有闹铃、继续闹铃、打会盹儿,停止闹铃的功能。
四、 实验要求
实验完毕,提交实验报告。实验报告的内容包括实验目的、实验内容、结果分析和体会。程序的源代码和程序的输入输出数据的情况附到实验报告中,写出程序的调试情况,并对输出结果进行分析。
实验二 控件应用1
一、实验目的
1. 熟悉建立Windows应用程序的步骤和方法。
2. 了解按钮、标签、文本框、复选框、单选按钮、组合框,定时器等控件常用属性和方法。
3. 掌握上述控件的实际应用。
二、实验指导
1.设计一个Windows应用程序,在程序窗口中有一个按钮,当使用鼠标移动到按钮上时,按钮就会跑到别处,效果如下图所示。
设计过程:创建一个windows应用程序项目,然后进行界面设计,拖放一个按钮到窗体上,按上图修改按钮和窗体上文字。添加按钮鼠标进入事件,并在事件中写入相应的程序代码。
程序参考代码:
private void button1_MouseEnter(object sender, EventArgs e)
{
Random rnd = new Random();
button1.Top = rnd.Next(this.ClientSize.Width -button1.Width);
button1.Left = rnd.Next(this.ClientSize.Height - button1.Height);
}
2.设计一个电子试卷应用程序。界面如下图所示,当按下交卷按钮时显示测试结果。
设计过程:创建一个windows应用程序项目,然后进行界面设计,本应用程序主要是标签、按钮、单选按钮、复选按钮及框架的应用。将这些控件放在界面的适当位置。添加窗体Load事件进行控件初始化设置,添加交卷按钮click事件,并在事件中写入相应的程序代码。
程序参考代码:
private void button1_Click(object sender, EventArgs e)
{
if (radioButton3.Checked)
label1.Text = label1.Text + " 正确!";
else
label1.Text = label1.Text + " 错误!";
if (radioButton6.Checked)
label2.Text = label2.Text + " 正确!";
else
label2.Text = label2.Text + " 错误!";
if (radioButton9.Checked && radioButton12.Checked)
label3.Text = label3.Text + " 正确!";
else
label3.Text = label3.Text + " 错误!";
}
三、实验内容
1.编写一个利息计算程序。当通过滚动条改变本金、月份或年利率时,能立即计算出利息+本金。
2.编写一个字体编辑器程序,当程序运行后,单击字体、字号和颜色下面的单选按钮以及字形下的复选框,就可以在文本框中对设置的字体进行预览。参考界面如下图所示。
3.编写一个学生登记界面程序,要求登记学生姓名、性别、年龄、民族,所在省,高考分数等信息。
4.编写一个简易加减、乘运算系统程序,要求在规定时间内完成规定题目数,并进行统计,给出统计结果。系统参考界面如下图所示。
5.编写一个使用数字键盘的实数计算器程序。
四、实验要求
实验完毕,提交实验报告。实验报告的内容包括实验目的、实验内容、结果分析和体会。程序的源代码和程序的输入输出数据的情况附到实验报告中,写出程序的调试情况,并对输出结果进行分析。
实验三、控件应用2
一、实验目的
1.掌握ListView、TreeView控件的使用。
2.掌握菜单、工具栏、状态栏控件的使用。
3.掌握文件、颜色、字体等通用对话框的使用。
4.掌握多窗体应用程序的创建。
二、实验指导
1.设计一个图像浏览器,界面如下图所示,可以通过“打开”对话框查找并打开图像文件,并可以放大、缩小和还原图像,状态栏显示图像的路径和缩放信息。
设计过程:创建一个windows应用程序项目,然后进行界面设计。本程序主要用到的控件有:panel面板控件、pictureBox图像控件、openFileDialog文件对话框控件、menuStrip菜单控件、toolStrip工具栏控件及statusStrip状态栏控件等。其中panel控件的AutoScroll属性设置为true。将这些控件拖放在界面上,然后按照下图进行菜单及工具栏设计。添加菜单项及工具栏上按钮的click事件,并在各事件中写入相应的程序代码。
程序参考代码:
public partial class Form1 : Form
{
int height, width;
string filename;
private void OpenFile()
{
//设置文件过滤器
openFileDialog1.Filter = "所有图象文件|*.jpg;*.ipeg;*.bmp;*.gif;*.tif;*.wmf|BMP位图(*.bmp)|*.bmp|JPEG图象(*.jpg)|*.jpg;*.jpeg|图元文件(*.wmf)|*.wmf|GIF图象(*.gif)|*.gif|所有文件(*.*)|(*.*)";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
pictureBox1.Load(openFileDialog1.FileName); //载入文件
filename = openFileDialog1.FileName;
toolStripStatusLabel1.Text = filename; //修改状态栏的值
pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
width = pictureBox1.Width;
height = pictureBox1.Height;
}
}
public Form1()
{
InitializeComponent();
}
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFile();
}
private void toolStripButton4_Click(object sender, EventArgs e)
{
OpenFile();
}
private void toolStripComboBox1_TextChanged(object sender, EventArgs e)
{
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Width = Convert.ToInt16(width* Convert.ToSingle(toolStripComboBox1.Text));
pictureBox1.Height = Convert.ToInt16(height * Convert.ToSingle(toolStripComboBox1.Text));
toolStripStatusLabel1.Text = filename + "原图象的" + toolStripComboBox1.Text+"倍";
}
private void toolStripMenuItem3_Click(object sender, EventArgs e)
{
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Width =Convert.ToInt16(pictureBox1.Width * 1.2);
pictureBox1.Height =Convert.ToInt16(pictureBox1.Height * 1.2);
toolStripStatusLabel1.Text = filename + " 正在放大......";
}
private void 缩小ToolStripMenuItem_Click(object sender, EventArgs e)
{
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Width = Convert.ToInt16(pictureBox1.Width * 0.8);
pictureBox1.Height = Convert.ToInt16(pictureBox1.Height * 0.8);
toolStripStatusLabel1.Text = filename + " 正在缩小......";
}
private void 还原ToolStripMenuItem_Click(object sender, EventArgs e)
{
pictureBox1.Width = width;
pictureBox1.Height = height;
toolStripStatusLabel1.Text =filename+ "已还原......";
}
private void toolStripButton6_Click(object sender, EventArgs e)
{
缩小ToolStripMenuItem_Click(sender, e);
}
private void toolStripButton5_Click(object sender, EventArgs e)
{
toolStripMenuItem3_Click(sender, e);
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
还原ToolStripMenuItem_Click(sender, e);
}
}
2.设计一个Windows应用程序,用Media Player控件播放视频文件。界面如下图所示。
设计过程:建立Windows程序。窗体上添加一个Media Player控件和三个按钮。三个按钮分别用于打开、播放和停止视频文件的播放。添加各个按钮事件,并写出相应的事件代码。
程序参考代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog myfile = new OpenFileDialog();
myfile.Filter = "*.mp3;*.wav;*.mpeg;*.avi;*.wmv|*.mp3;*.wav;*.mpeg;*.avi;*.wmv";
myfile.CheckFileExists = true;
myfile.CheckPathExists = true;
if (myfile.ShowDialog() == DialogResult.OK)
{
axWindowsMediaPlayer1.URL = myfile.FileName;
}
}
private void button2_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.play();
}
private void button3_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.stop();
}
}
三、实验内容
1.设计一个选课界面程序,将课程详细信息显示在表格中,请使用ListView控件设计表格。其中课程信息包括课程编号,课程名称、课程学时和授课教师等。用户可选择多门课程,单击“选课”按钮,将所选的课程信息显示在另一个窗体上。
2.使用TreeView控件,建立一个超市商品分类列表,可以添加、删除各类商品信息。
3.设计一个字符串处理应用程序。要求利用菜单和工具栏完成各种字符串处理任务,如字符串比较、查找、求字串、拆分、合并等。利用状态栏显示当前的操作。
4.制作一个文档编辑器程序,可以进行文档的打开和保存、基本的编辑操作以及颜色和字体的设置等。
5.电子相册制作。
在时钟的控制下,图片将按照先后次序依次显示在画面上,并配上音乐,每幅画配上相应的文字。
四、实验要求
实验完毕,提交实验报告。实验报告的内容包括实验目的、实验内容、结果分析和体会。程序的源代码和程序的输入输出数据的情况附到实验报告中,写出程序的调试情况,并对输出结果进行分析。
实验四、图形图像处理编程
一、实验目的
1. 掌握绘制基本图形的编程方法。
2. 掌握GDI.NET的动态图像绘制方法。
3. 掌握Image类和BitMap类显示和处理图像的方法。
4. 了解多媒体的基础知识。
二、实验指导
1.设计一个画曲线的程序,在windows窗体中可以拖动鼠标画任意曲线,并且当窗体最大化或最小化后曲线不能消失。
设计过程:创建一个windows应用程序项目,然后进行界面设计。每条曲线都是由若干很短的线段组成。当鼠标左键在按下的状态下,移动鼠标,每次移动很短距离,画出这些线段,所有这些线段组合起来就形成了一条曲线。另外为了克服窗体最小化后最大化后曲线消失。只要使用List类对象记录每条曲线及曲线中的点。请注意List类的使用方法。
程序参考代码:
public partial class Form1 : Form
{
private bool mark = false; //表示鼠标左键是否按下,如按下鼠标再移动将画曲线
private Point p; //记录画下一条很短线段的起始点
private List<Point> p_list; //记录一条曲线的所有点
private List<List<Point>> l_list; //用来记录每条曲线
public Form1()
{
InitializeComponent();
l_list = new List<List<Point>>();
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
p_list = new List<Point>();
p.X = e.X; p.Y = e.Y;
mark = true;
p_list.Add(p);
}
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (mark)
{
Graphics g = this.CreateGraphics();
Pen pen = new Pen(Color.Black);
g.DrawLine(pen, p.X, p.Y, e.X, e.Y);
p.X = e.X;
p.Y = e.Y;
p_list.Add(p);
}
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
mark = false;
l_list.Add(p_list); //记录此条线
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen pen = new Pen(Color.Black);
Point p1, p2;
foreach (List<Point> l in l_list) //取出每条线
{
for (int i = 0; i < l.Count - 1; i++) //重画每条线的点
{
p1 = l[i];
p2 = l[i + 1];
g.DrawLine(pen, p1, p2);
}
}
}
}
5. 移动鼠标时,为了原有直线不被清除, 在MouseMove事件重画原有的图形,那么必须先在MouseUp事件中保存每个已画的图形特征。
先设置全局动态数组和结构。
List add = new List();
public struct SharpType
{
public string type; //图形形状
public Point p1, p2;
public Color foreColor; //画笔颜色
public SharpType(string type, Point p1, Point p2, Color foreColor)
{
this.type = type;
this.p1 = p1; this.p2 = p2;
this.foreColor = foreColor;
}
}
Mouse MouseUp事件中加入代码:
add.Add(new SharpType("DrawLine",p1,p2,Color.Black));
MouseMove事件中加入代码:
foreach( SharpType type in add )
{
if(type.type=="DrawLine")
{
g.DrawLine(new Pen(type.foreColor,1),type.p1,type.p2);
}
}
6.当移动窗体或被其他窗体遮住后再次显示时,为了使原有直线不被清除, 在Paint事件重画原有的图形,Paint事件中代码如下:
foreach( SharpType type in add )
{
if(type.type=="DrawLine")
{
e.Graphics.DrawLine(new Pen(type.foreColor,1),type.p1,type.p2);
}
}
7.通过对话框设置颜色, 在“选择颜色”按钮事件中加入代码如下:
先设置全局变量color,对画笔中的颜色设置代码作相应的修改,把Color.Black 改为color。
ColorDialog ColorDialog1 = new ColorDialog ( ) ;
if ( ColorDialog1.ShowDialog ( ) != DialogResult.Cancel )
{
this.color = ColorDialog1.Color ;
}
三、实验内容
1.编写一个动物奔跑的动画效果程序,速度可由滚动条和定时器控制
2.编写一个小球在窗体中来回运动程序。
3.编写在图片框中绘制直角坐标系和一条正弦曲线程序,参考界面如下。
4.编写一个对给定的图像可进行缩放、旋转及给图像叠加文字等操作的程序
5.编写一个简单的绘图板程序。参考界面如下:
四、实验要求
实验完毕,提交实验报告。实验报告的内容包括实验目的、实验内容、结果分析和体会。程序的源代码和程序的输入输出数据的情况附到实验报告中,写出程序的调试情况,并对输出结果进行分析。
实验五、文件与流
一、实验目的
1.了解文件系统的基本概念及用于文件管理和读写的相关类。
2.熟悉I/O流的基本概念。
2.掌握对文件与流的基本读写方法。
二、实验指导
1.实现一个文件中管理试题信息的功能,要求将输入的试题和答案保存到文本文件schoicequestion.txt中,当选择显示试题界面时,将该文本文件的试题显示。界面如下:
设计过程:创建一个windows应用程序项目,然后按照上述界面进行界面设计。程序参考代码如下:
public struct Ti
{
public string[] timu ;
public string[,] item ;
public string[] ans ;
}
public partial class Form1 : Form
{
Ti tt;
int count;
int c = 0;
public Form1()
{
InitializeComponent();
tt.timu = new string[100];
tt.item = new string[100,4];
tt.ans = new string[100];
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == null || textBox2.Text == null || textBox3.Text == null || textBox4.Text == null || textBox5.Text == null || comboBox1.Text == null)
MessageBox.Show("试题不能为空");
else
{
string[] items = new string[4];
items[0] = textBox2.Text;
items[1] = textBox3.Text;
items[2] = textBox4.Text;
items[3] = textBox5.Text;
Question qq = new Question(textBox1.Text, items, comboBox1.Text);
StreamWriter sw = new StreamWriter("schoicequestion.txt", true);
qq.saveto(sw);
textBox1.Text = null;
textBox2.Text = null;
textBox3.Text = null;
textBox4.Text = null;
textBox5.Text = null;
comboBox1.Text=null;
sw.Close();
}
}
private void tabPage2_Enter(object sender, EventArgs e)
{
c=0;
StreamReader sr = new StreamReader("schoicequestion.txt");
Question qq = new Question();
qq.readfrom(sr, tt, out count);
sr.Close();
if (c < count)
{
chuti();
button2.Enabled = false;
button3.Enabled = false;
button4.Enabled = true;
button5.Enabled = true;
}
else
{
button2.Enabled = false;
button3.Enabled = false;
button4.Enabled = false;
button5.Enabled = false;
}
}
void chuti()
{
label7.Text = (c+1).ToString()+"."+tt.timu[c];
radioButton1.Text = "A." + tt.item[c, 0];
radioButton2.Text = "B." + tt.item[c, 1];
radioButton3.Text = "C." + tt.item[c, 2];
radioButton4.Text = "D." + tt.item[c, 3];
}
private void button2_Click(object sender, EventArgs e)
{
c = 0;
chuti();
button2.Enabled = false;
button3.Enabled = false;
button4.Enabled = true;
button5.Enabled = true;
}
private void button3_Click(object sender, EventArgs e)
{
c--;
if(c==0)
{
button2.Enabled=false;
button3.Enabled=false;
}
chuti();
button4.Enabled = true;
button5.Enabled = true;
}
private void button5_Click(object sender, EventArgs e)
{
c = count - 1;
chuti();
button4.Enabled = false;
button5.Enabled =false;
button2.Enabled = true;
button3.Enabled = true;
}
private void button4_Click(object sender, EventArgs e)
{
c++;
if (c ==count - 1)
{
button4.Enabled = false;
button5.Enabled = false;
button2.Enabled = true;
button3.Enabled = true;
}
chuti();
}
}
public class Question
{
private string title;
private string[ ]items=new string[4];
private string ans;
public Question (string t,string[] it,string ans)
{
title = t;
for (int i = 0; i < 4; i++)
items[i] = it[i];
this.ans = ans;
}
public void saveto(StreamWriter sw)
{
sw.WriteLine(title);
for (int i = 0; i < 4; i++)
sw.WriteLine(items[i]);
sw.WriteLine(ans);
}
public Question()
{
}
public void readfrom(StreamReader sr,Ti st, out int cc)
{
int i = 0;
st.timu[i] = sr.ReadLine();
while (st.timu[i]!= null)
{
for (int j = 0; j < 4; j++)
st.item[i,j] = sr.ReadLine();
st.ans[i] = sr.ReadLine();
i++;
st.timu[i]= sr.ReadLine();
}
cc = i;
}
}
三、实验内容
1.创建一个Windows应用程序,在C盘根目录下创建一个目录c:\mydir,通过文件对话框选择某个文件复制到该目录中。并且在界面上显示该目录创建的日期和时间,显示目录中文件的创建时间及大小。界面自行设计。
2.创建一个一个Windows应用程序,将第1题Windows应用程序中的源代码显示在文本框中。
3.随机产生100个二进制数据写入文件,并验证其结果的正确性。
4.设计一个用户注册和登录的Windows应用程序,要求将注册的信息保存到文件中,登录时,判断用户合法性。
5. 设计一个Windows应用程序,在该程序中首先构造一个学生基本类,增加两个虚拟成员方法SaveTo和ReadFrom,分别表示将学生的基本信息写入流对象和从流对象中读取学生信息。然后再分别构造本科生、研究生等派生类,要求具有不同的特征和行为。每个派生类分别重载SaveTo和ReadFrom方法。设计一个界面,用于输入和显示本科生和研究生的信息。
实验六 ADO.NET与数据操作
一、实验目的
1. 了解SQL Server数据库的创建与使用方法。
2. 掌握数据库连接方法。
3. 学会绑定控件到数据源的方法。
二、实验指导
1.创建一个学生信息数据库,包括两个两个表,表1记录学生基本情况,包括学号、姓名、性别。表2记录学生的学习成绩包括记录编号、课程名称、分数和拥有该课程成绩学生的学号。要求用两个DataGridView控件分别显示学生基本情况表S中的记录和成绩表SC中的记录。并且希望在S表中选中某个学生时,成绩表只显示该学生的成绩。两个表的这种关系叫做主从关系,其中S表为主表,SC表为从表。
设计过程及步骤:
(1)创建一个学生信息数据库student,可以在sql server 2000下的企业管理器中创建或者在VS2008 “数据库资源管理器”中创建。表结构如下:
S表结构
字段名 | 数据类型 | 长度 | 主键 | 描述 |
sno | varchar | 10 | 是 | 学号 |
sname | varchar | 20 | 否 | 姓名 |
sex | char | 2 | 否 | 性别 |
specialty | varchar | 40 | 否 | 专业 |
SC表结构
字段名 | 数据类型 | 长度 | 主键 | 描述 |
ScoreID | int | 4 | 是 | 记录编号 |
cname | varchar | 30 | 否 | 课程名称 |
score | int | 4 | 否 | 分数 |
sno | varchar | 10 | 否 | 学号 |
表建立后,分别向S和SC表添加若干数据。
(2)创建一个windows应用程序项目,按以下步骤实现两个表的主从关系:
a.在菜单中单击数据(A)|添加新数据源(N),打开“数据源配置向导”对话框,按向导步骤进行添加数据源。注意在选择表时,要选择两个表S和SC两个表。
b.VS2008自动生成架构文件“studentDataSet.xsd”。双击打开该架构文件,显示S和SC两个表。
c.从“工具箱”中将Relation组件拖到SC表中上,打开“关系”对话框,其中带有从两个表中带来的默认值。不做修改,单击“确定”按钮退出。
d. 从“工具箱”中将BindingSource控件放到窗体。从属性DataSource后边的下拉列表中选择“其他数据源”中的studentDataSet,属性DataMember选择S表。
c.放置BindingSource控件到窗体,属性DataSource选BindingSource1,属性DataMember选关系s_sc。
e. 使用两个DataGridView组件,分别连接BindingSource1和BindingSource2。
d.按下图分别对两个DataGridView组件进行列的编辑,并添加两个Label控件,写上相应的文字。
三、实验内容
1.创建一个图书信息数据库Library,包含表为:出版社信息表PubInfo和图书信息表BookInfo。
PubInfo表结构
字段名 | 数据类型 | 长度 | 主键 | 描述 |
pubid | varchar | 10 | 是 | 出版社编号 |
pubname | varchar | 50 | 否 | 出版社名 |
pubcity | varchar | 20 | 否 | 所在城市 |
address | varchar | 30 | 否 | 地址 |
cperson | varchar | 20 | 否 | 联系人姓名 |
cptel | varchar | 20 | 否 | 联系人电话 |
BookInfo表结构
字段名 | 数据类型 | 长度 | 主键 | 描述 |
bid | varchar | 10 | 是 | 图书编号 |
bname | varchar | 50 | 否 | 图书名称 |
btype | varchar | 20 | 否 | 图书类别 |
author | varchar | 20 | 否 | 作者 |
pubid | varchar | 10 | 否 | 出版社编号 |
pubdate | date | 8 | 否 | 出版日期 |
price | money | 8 | 否 | 价格 |
bnum | int | 4 | 否 | 总册数 |
Bremark | text | 16 | 否 | 摘要 |
2.设计一个数据编辑窗体,可以对出版社信息进行输入、修改和删除的操作,参考界面如下图所示。
3.设计一个数据编辑窗体,可以对图书信息进行输入、修改和删除的操作,参考界面如下图所示。
4.设计一个显示窗体,根据出版社显示对应的图书信息。
5.设计一个查询窗体,根据书名模糊查询图书信息表中图书。
四、实验要求
实验完毕,提交实验报告。实验报告的内容包括实验目的、实验内容、结果分析和体会。程序的源代码和数据库表附到实验报告中,写出程序的调试情况,并对输出结果进行分析。
实验七、系统数据库和界面设计
一、实验目的
1. 了解数据库应用系统开发的一般步骤。
2. 理解系统总体设计方法。
3. 理解简单的数据库设计方法。
4. 理解Windows风格的系统界面设计方法。
二、实验内容
开发一个企业员工管理信息系统。员工管理涉及员工个人信息、员工工资信息、员工所属部门信息以及从事的职业(工种)等多种信息进行管理。要求实现各类信息的查询、添加、删除和修改等操作,并能够对员工工资进行统计。系统界面简单合理、操作方便。
三、实验要求
1.完成系统总体设计,对系统功能作较详细描述,进行系统功能模块划分,画出系统功能结构图。
2.完成数据库设计,在SQL server 2000中建立系统数据库。
3.系统主要界面设计与实现,要求界面合理、操作方便。
4.实验完毕,提交实验报告。实验报告的内容包括实验目的、实验内容、结果分析和体会。程序的源代码、系统主要界面和数据库表附到实验报告中,写出程序的调试情况,并对输出结果进行分析。
实验八、系统功能设计与实现
一、实验目的
1.掌握建立Winndows应用程序步骤和方法。
2.掌握一般公共模块(类)的设计和实现。
3.掌握数据库编程基本方法。
4.提高编写Winndows应用程序的综合能力。
二、实验内容
开发一个企业员工管理信息系统。员工管理涉及员工个人信息、员工工资信息、员工所属部门信息以及从事的职业(工种)等多种信息进行管理。要求实现各类信息的查询、添加、删除和修改等操作,并能够对员工工资进行统计。系统界面简单合理、操作方便。
三、实验要求
1.在实验七的基础上,设计和实现数据库基本操作类和其他一些通用模块,提高代码可重用性。
2.实现系统功能。
3.对系统作简单测试,并进行改进。
4.实验完毕,提交实验报告。实验报告的内容包括实验目的、实验内容、结果分析和体会。程序的源代码、系统主要界面和数据库表附到实验报告中,写出程序的调试情况,并对输出结果进行分析。