1、部分核心代码:ArrayLista1= new ArrayList();Random ran = new Random();int m = ran.Next(); /设置随机种子for (int i = 0; i 10; +i) Random r = new Random(m * i + m); /设置随机数 al.Add(r.Next(0, 200); /将数据存入顺序表 Console.Write(0 , ali);/打印输出该随机数顺序表2. 利用上述数据,生成完全二叉树首先需要考虑树的结构,要设计其数据结构,也就是设计它的类体结构和相关构造器。然后进行创建完全二叉树:先定义一个根节点,
2、再一个一个取出顺序表中的随机数,并插入到生成树中。/*树的节点类*/class Node private int data; /数据 private Node lChild; /左孩子 private Node rChild; /右孩子 public bool hasData = false; /该节点数据是否初始化/*构造函数*/ public Node() data = 0; lChild = null; rChild = null; public Node(int val) data = val; Node head1 = new Node(int)al0); BiTree tree1
3、= new BiTree(head1); tree1.createTree(al); /生成完全二叉树定义完全二叉树类体,继而生成一个完全二叉树。/*二叉树*/ class BiTree private Node head; /头节点 private ArrayList inOrderDatas; /安中序遍历读取的数据 private ArrayList al; /原始顺序表 /*二叉树构造函数*/ public BiTree(Node headNode) head = headNode; head.hasData = true;/* 创建二叉树, 参数为一个顺序表 */ public vo
4、id createTree(ArrayList al) this.al = al; /初始化对象的顺序表 int now = 1; /第一个结点编号为1 insertTree(now, this.Head); /插入结点/* 对树插入结点,第一个参数为结点编号,编号从1开始, 第二个参数为需要插入的结点 */ public void insertTree(int now, Node root) /* 对需要插入的结点编号对应的顺序表数据下标进行判断, 若在数据数目范围之内,则插入数据于结点(相当于插入结点于树), 否则返回*/ if (now - 1 al.Count) /now - 1为数据
5、的顺序表下标,应小于数据的数目 int item = (int)alnow - 1; root.Data = item; /将数据插入到结点 root.hasData = true; else root.hasData = false; return; root.LChild = new Node(); /为结点的左孩子结点分配内存 root.RChild = new Node(); /为节点的右孩子节点分配内存 insertTree(2 * now, root.LChild); /为左孩子插入数据 insertTree(2 * now + 1, root.RChild); /为右孩子插入数据
6、 /* 左孩子数据有无判断, 若无数据则置左孩子为null */ if (root.LChild.hasData = false) root.LChild = null; /* 右孩子数据有无判断, 若无数据则置右孩子为null */ if (root.RChild.hasData = false) root.RChild = null;3. 生成二叉排序树运用递归思想,将顺序表中的随机数不断插入到树种。/*生成BSTree*/ public void createBSTree(ArrayList al) for (int i = 1; this.al.Count; insertBSTree(
7、i, this.Head);public void insertBSTree(int now, Node root) /*为插入的结点输入数据*/ if (root.hasData = false) root.Data = (int)alnow; root.hasData = true; root.RChild = null; if (int)alnow root.Data) if (root.LChild = null) insertBSTree(now, root.LChild); /插入左孩子 if (root.RChild = null) insertBSTree(now, root.
8、RChild); /插入右孩子4. 判断二叉树是否为二叉排序树/*判断当前BiTree对象是否为二叉排序树*/ public bool isBSTree() /*获得树的中序遍历数据*/ ArrayList datas = this.getInOrderDatas(this.Head); bool isBST = true; /*按二叉排序树定义,当中序遍历所得数据中,后面的数据小于前面的数据,则并非二叉排序树*/ for(int i = 1; datas.Count; if (int)datasi rh ? lh : rh) + 1;给出程序运行截图:效果示意图如下所示:心得小结:C#的控制
9、台程序的开发体会,在比对了C和JAVA相关的开发经历之后。个人感觉C#的开发工具的体验很好,毕竟是有微软官方提供的开发工具,功能很强大。另外就是C#是基于面向对象的语言,所以采用面向对象的思想比较多,整体来说跟java开发的感觉差不多。实验二:窗体应用程序设计1.5 实验目的1学习视窗用户界面程序的基本开发方法和思路。2掌握VS 的可视化UI设计1.6 实验内容1) 基于窗体用户界面,创建一个简单的通讯录应用程序:2) 可记录个人的姓名、性别、居住地址、生日、工作单位、电话、评价;3) 其中“评价”,指对某人可以给以简短的评语,字数在300字以内;4) 可以对某人写评语,每次评语按时间记录,时
10、间:yyyyMMddHH。一个小时内可以写一次。5) 支持按时间查看对某个人的历次评语。6) 支持查、增、删、改,等四大基本功能。7) 要求使用XML或数据库存贮。自选一种方式8) 要求按用户分配权限,包括:全权用户;可写用户-可以编写评语但不能更改其它信息;只读用户-只能看不能修改任何信息;非法用户-除了上述三类用户以外的其它用户1.7 实验报告简述上述7大功能的算法思想,和主要设计流程。给出程序运行截图。1.首先,考虑数据的存储,采用了与SQLSever数据库结合的方式。所以是基于MicrosoftVisualStudio2013的C#窗体程序设计加上MicrosoftSQLSever20
11、05数据库管理系统的开发环境。根据需求建立了list数据库,该database包含了两个table,分别是用于存储登陆信息的数据表user_table和用于存储联系人相关信息的数据表Personal_info。如图所示,数据库list相关信息:2.相关数据表设计:数据表Personal_info的设计,包含7个属性列,以name为主键。数据表Personal_info在数据库中实际数据存储的效果数据表user_table的设计,包含3个属性列,以UserIS为主键。数据表user_table在数据库中实际数据存储的效果3.登录和注册界面的设计登录界面设计:注册账号界面:连接系统安装的数据相关语
12、句: private string ConnecttionString = Data Source = SHIXIAN-PC; + Initial Catalog = list;Persist Security Info = true; +Trusted_Connection=SSPI; private SqlConnection conn = null; private SqlDataAdapter DateAdapter = null; private DataSet dateset = null; conn = new SqlConnection(ConnecttionString);c
13、ommand = new SqlCommand();command.Connection = conn; command.CommandText = strSql; conn.Open(); command.ExecuteNonQuery();登录检查联系人登陆信息功能的实现代码:private string checkedId() string result = null;string strSql = SELECT CASE WHEN U.uPassword = ? THEN 1 ELSE 0 END strSql += FROM user_table U WHERE U.UserId =
14、 + textBox1.Text; SqlCommand command = null; try command = new SqlCommand(); command.Connection = conn; command.CommandText = strSql; catch (Exception ex) MessageBox.Show(ex.Message); result = 0 finally if (conn != null) conn.Close(); command.Dispose(); return result;程序主界面:/*主界面连个按钮的点击响应,分别跳转新的From*
15、/ private void button2_Click(object sender, EventArgs e) Form1 form1 = new Form1(); form1.Show(); private void button3_Click(object sender, EventArgs e) Form3 form3 = new Form3(); form3.Show();添加联系人界面:保存按钮的点击相应事件,主要是获取填入的信息,并对此先进行预处理,判断是否有信息缺失。继而进行数据库连接操作,最终将信息保存到数据库list的Personal_info的表格中。其中也进行的异常处理
16、机制的完善。private void button1_Click(object sender, EventArgs e) string strSql = null; strSql = INSERT INTO Personal_Info VALUES(, + comboBox1.SelectedItem.ToString(); + textBox2.Text; + dateTimePicker1.Value.ToString(yyyy-MM-dd); + textBox4.Text; + textBox15.Text; + richTextBox1.Text + ) MessageBox.Sho
17、w(请输入完整的个人信息。 command = new SqlCommand(); int n = command.ExecuteNonQuery(); if (n 0) MessageBox.Show(成功保存!, 提示: catch(Exception ex)发生异常:+ex.Message); this.Close();点击查询联系人按钮的时候:跳转到新的Form,进行联系人查询相关。联系人查询相关Form,具有直接显示原始数据库中数据的datagridview。并且可以根据相关检索条件进行相关检索查询。还有根据选的指定联系人,进行删除操作或进行查看联系人详细信息操作,继而可以进行修改联
18、系人信息和更新操作。查询数据库中存在的联系人纪录,并且将查询的全部数据显示到datagridview中的方法:public void showData(string str) string strSql = str; conn.Open(); DateAdapter = new SqlDataAdapter(); dateset = new DataSet(); DateAdapter.SelectCommand = command; DateAdapter.Fill(dateset, t1 dataGridView1.DataSource = dateset; dataGridView1.D
19、ataMember = 数据加载成功! MessageBox.Show(ex.Message); if (conn !根据选的指定联系人,进行查看联系人详细信息操作,继而可以进行修改联系人信息和更新操作。这里需要把当前用户选中的联系人的姓名作为传递参数,因为需要在查看联系人界面作为数据查询相关具体信息的条件码。而且姓名也是该数据表的主键,所以具有唯一标识性。 private void button1_Click(object sender, EventArgs e) int index = dataGridView1.SelectedRows0.Index; /获取选中行的行号 DataGri
20、dViewRow s = dataGridView1.Rowsindex; Form1 form1 = new Form1(s);将被选中的DataGridViewRow作为传递参数。跳转到查看联系人界面,此时打开的新的Form,并且根据从上一个form传递过来的参数中获取DataGridViewRow,再加载到相应的数据框中。值得一提的是因为姓名是主键,因此不提供修改。获取DataGridViewRow各列的数据并填充到相应的数据框中。public Form1(DataGridViewRow str) InitializeComponent(); /Cells0为要选的第几列 sname = str.Cells0.Value.ToString();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1