美文网首页
综合实验(三)学生通讯录

综合实验(三)学生通讯录

作者: 九除以三还是三哦 | 来源:发表于2020-01-21 20:14 被阅读0次

实验题目

开发一个采用XML格式存储数据的学生通讯录myContracts,具备学生信息添加,编辑、删除、查找等功能。学生通讯录myContracts是一个多窗体桌面程序,不同窗体上面分别布置了工具条、按钮、数据列表等控件,便于操作学生信息。

实验方案

算法流程图

界面设计

主界面
编辑界面
添加界面
查找界面

功能展示

正常启动
进行编辑
进行查找

拓展功能

分类功能


进行分类

数据备份和恢复功能


实验总结

本次实验整体代码难度不高,主要运用了调用XML文件的功能,主要实现运用C#对XML文件进行操作,其中包括对文件的添加,编辑,删除,查找等操作,还有就是对VS中的各种插件的熟练运用,对其功能的熟悉是实现这个实验的关键。
最后就是对于扩展的功能也是插件的使用,在插件的函数中插入查找的功能便能对其专业信息进行分类输出,备份和恢复的功能可以直接调用XML文件的文件拷贝函数就可以进行备份和恢复。
一些其他功能比如可以对学号进行排序,这个也是可以实现的,只是还没有在程序中进行实现,这个得加以改进。

源码展示

Form_main.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace 学生通讯录
{

    public partial class Form_main : Form
    {
        public Form_main()
        {
            InitializeComponent();
            initContracts();
        }

        void initContracts()
        {
            if (File.Exists(AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"/xml/Students.xml"))
            {
                dataGridView1.DataSource = StudentInfoBLL.GetAllStudentInfo();
            }
            else
            {
                StudentInfoBLL.CreateStudentXml();
                dataGridView1.DataSource = StudentInfoBLL.GetAllStudentInfo();
            }
            dataGridView1.Columns[0].HeaderText = "学生编号";
            dataGridView1.Columns[1].HeaderText = "学生姓名";
            dataGridView1.Columns[2].HeaderText = "学生性别";
            dataGridView1.Columns[3].HeaderText = "学生年龄";
            dataGridView1.Columns[4].HeaderText = "出生日期";
            dataGridView1.Columns[5].HeaderText = "手机号码";
            dataGridView1.Columns[6].HeaderText = "家庭住址";
            dataGridView1.Columns[7].HeaderText = "电子邮箱";
            dataGridView1.Columns[8].HeaderText = "专    业";
        }
        void initContracts2()
        {
            dataGridView1.Columns[0].HeaderText = "学生编号";
            dataGridView1.Columns[1].HeaderText = "学生姓名";
            dataGridView1.Columns[2].HeaderText = "学生性别";
            dataGridView1.Columns[3].HeaderText = "学生年龄";
            dataGridView1.Columns[4].HeaderText = "出生日期";
            dataGridView1.Columns[5].HeaderText = "手机号码";
            dataGridView1.Columns[6].HeaderText = "家庭地址";
            dataGridView1.Columns[7].HeaderText = "电子邮箱";
            dataGridView1.Columns[8].HeaderText = "专  业";
        }


        private void Form_main_Load(object sender, EventArgs e)
        {

        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void toolStrip_add_Click(object sender, EventArgs e)
        {
            Form_Add formadd = new Form_Add();
            formadd.ShowDialog();
            initContracts();
            //调用initContracts()函数,功能是如果存在Students.xml,查询所有学生信息,如果不存在,
            //则创建该文件后再查询
        }
        private void toolStrip_edit_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count == 1)//如果选中其中某一个学生信息后,则打开编辑学生信息窗体
            {
                int selectrow = Int32.Parse(dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[0].Value.ToString());
                Form_edit formedit = new Form_edit();
                formedit.studentid_edit = selectrow;
                formedit.ShowDialog();
                initContracts();
            }
            else
                MessageBox.Show("请选中一行再点击编辑");
        }

        private void toolStrip_delete_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count == 1)
            {
                if (MessageBox.Show("确定要删除此学生信息?", "确认信息", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                {
                    int selectrow = Int32.Parse(dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[0].Value.ToString());
                    if (StudentInfoBLL.DeleteStudentInfo(selectrow))
                        MessageBox.Show("删除学生信息成功!");
                    else
                        MessageBox.Show("删除学生信息失败,请检查是否选中学生信息!");
                    initContracts();
                }
            }
            else
                MessageBox.Show("请选中一行后再点击删除按钮!");
        }

        private void toolStrip_search_Click(object sender, EventArgs e)
        {
            Form_Search formsearch = new Form_Search();
            formsearch.ShowDialog();
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {//备份
            StreamWriter myStream;
            saveFileDialog1.Filter = "All files (*.xml)|*.xml";//设置文件格式
            saveFileDialog1.FilterIndex = 2;//设置系统样式
            saveFileDialog1.RestoreDirectory = true;//关闭当前对话框
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                initContracts();
                string _basePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"/xml/Students.xml";//读取原文件的内容
                string Path = saveFileDialog1.FileName.ToString();
                myStream = new StreamWriter(saveFileDialog1.FileName);
                myStream.Write(Path); //写入
                myStream.Close();//关闭流
                System.IO.File.Copy(_basePath, Path, true);
            }
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {//恢复
            OpenFileDialog fileName = new OpenFileDialog();
            fileName.InitialDirectory = Application.StartupPath;
            fileName.Filter = "All files (*.xml)|*.xml";
            fileName.FilterIndex = 2;
            fileName.RestoreDirectory = true;
            if (fileName.ShowDialog() == DialogResult.OK)
            {
                string _basePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"/xml/Students.xml";
                string Path = fileName.FileName.ToString();
                initContracts();
                System.IO.File.Copy(Path, _basePath, true);//把选中的内容恢复到原文件里
                string Name = Path.Substring(Path.LastIndexOf("\\") + 1);
                dataGridView1.DataSource = StudentInfoBLL.GetAllStudentInfo();
                dataGridView1.Columns[0].HeaderText = "学生编号";
                dataGridView1.Columns[1].HeaderText = "学生姓名";
                dataGridView1.Columns[2].HeaderText = "学生性别";
                dataGridView1.Columns[3].HeaderText = "学生年龄";
                dataGridView1.Columns[4].HeaderText = "出生日期";
                dataGridView1.Columns[5].HeaderText = "手机号码";
                dataGridView1.Columns[6].HeaderText = "家庭地址";
                dataGridView1.Columns[7].HeaderText = "电子邮箱";
                dataGridView1.Columns[8].HeaderText = "专  业";
            }
        }

        private void splitContainer1_Panel2_Paint(object sender, PaintEventArgs e)
        {

        }

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)//学生专业的层次分类
        {
            if(treeView1.SelectedNode.Text=="全部")
            {
                dataGridView1.DataSource = StudentInfoBLL.GetAllStudentInfo();
                initContracts2();
            }
            if (treeView1.SelectedNode.Text == "计算机应用")
            {
                StudentInfo studentsearch = new StudentInfo();
                studentsearch.Profession = treeView1.SelectedNode.Text;
                dataGridView1.DataSource = StudentInfoBLL.GetStudentProfession(studentsearch);
                initContracts2();
            }
            if (treeView1.SelectedNode.Text == "信息安全")
            {
                StudentInfo studentsearch = new StudentInfo();
                studentsearch.Profession = treeView1.SelectedNode.Text;
                dataGridView1.DataSource = StudentInfoBLL.GetStudentProfession(studentsearch);
                initContracts2();
            }
            if (treeView1.SelectedNode.Text == "电子技术")
            {
                StudentInfo studentsearch = new StudentInfo();
                studentsearch.Profession = treeView1.SelectedNode.Text;
                dataGridView1.DataSource = StudentInfoBLL.GetStudentProfession(studentsearch);
                initContracts2();
            }
            if (treeView1.SelectedNode.Text == "网络技术")
            {
                StudentInfo studentsearch = new StudentInfo();
                studentsearch.Profession = treeView1.SelectedNode.Text;
                dataGridView1.DataSource = StudentInfoBLL.GetStudentProfession(studentsearch);
                initContracts2();
            }
        }

        private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

        }
    }
}

Form_add.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;

namespace 学生通讯录
{
    public partial class Form_Add : Form
    {
        private static string _basePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"/xml/Students.xml";
        public static bool IfStudentInfo(int studentid)
        {
            StudentInfo studentinfo = new StudentInfo();
            XElement xml = XElement.Load(_basePath);
            studentinfo = (from student in xml.Descendants("student")
                           where student.Attribute("studentid").Value == studentid.ToString()
                           select new StudentInfo
                           {
                               StudentId = Int32.Parse(student.Attribute("studentid").Value),
                               Name = student.Element("name").Value,
                               Age = Int32.Parse(student.Element("age").Value),
                               Sex = student.Element("sex").Value,
                               BirthDate = DateTime.Parse(student.Element("birthdate").Value),
                               Phone = student.Element("phone").Value,
                               HomeAddress = student.Element("homeaddress").Value,
                               Email = student.Element("email").Value,
                               Profession = student.Element("profession").Value
                           }).SingleOrDefault();
            if (studentinfo == null)
                return false;
            else
                return true;
        }
        public Form_Add()
        {
            InitializeComponent();
        }

        private void label6_Click(object sender, EventArgs e)
        {

        }

        private void btn_add_Click(object sender, EventArgs e)
        {

            StudentInfo studentinfo = new StudentInfo();
            studentinfo.StudentId = Int32.Parse(txt_studegid.Text);
            studentinfo.Name = txt_name.Text;
            if (radioButton1.Checked)
                studentinfo.Sex = "男";
            else if (radioButton2.Checked)
                studentinfo.Sex = "女";
            studentinfo.Age = Int32.Parse(txt_age.Text);
            studentinfo.BirthDate = DateTime.Parse(dateTimePicker1.Text);
            studentinfo.Phone = txt_phone.Text;
            studentinfo.Email = txt_email.Text;
            studentinfo.HomeAddress = txt_homeaddress.Text;
            studentinfo.Profession = txt_profession.Text;
            if (IfStudentInfo(studentinfo.StudentId) == false)
            {
                if (StudentInfoBLL.AddStudentInfo(studentinfo))
                {
                    MessageBox.Show("添加学生信息成功!");
                }
            }
            else
            {
                MessageBox.Show("该学号已存在,请重新输入");
            }
        }
        private void bt_close_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void label7_Click(object sender, EventArgs e)
        {

        }

        private void Form_Add_Load(object sender, EventArgs e)
        {

        }
    }
}

Form_Search.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 学生通讯录
{
    public partial class Form_Search : Form
    {
        void InitHeadTitle()
        //用于初始化显示要查找到的学生信息的表头
        {
            //初始化数据表格dataGridView1
            dataGridView1.Columns[0].HeaderText = "学生编号";
            dataGridView1.Columns[1].HeaderText = "学生姓名";
            dataGridView1.Columns[2].HeaderText = "学生性别";
            dataGridView1.Columns[3].HeaderText = "学生年龄";
            dataGridView1.Columns[4].HeaderText = "出生日期";
            dataGridView1.Columns[5].HeaderText = "手机号码";
            dataGridView1.Columns[6].HeaderText = "家庭住址";
            dataGridView1.Columns[7].HeaderText = "电子邮箱";
            dataGridView1.Columns[8].HeaderText = "专    业";
        }
        public Form_Search()
        {
            InitializeComponent();
        }

        private void Form_Search_Load(object sender, EventArgs e)
        {

        }

        private void bt_search_Click(object sender, EventArgs e)
        {
            //依据选择的查询项和输入查询值进行查询,如果二者都为空,则查询所有信息
            if(cb_searchitem .Text ==string.Empty )
            {
                dataGridView1.DataSource = StudentInfoBLL.GetAllStudentInfo();
                InitHeadTitle();
            }
            else
            {
                if (txt_searchtext.Text != string.Empty)
                {
                    StudentInfo studentsearch = new StudentInfo();
                    switch (cb_searchitem.SelectedIndex)
                    {
                        case 0: studentsearch.StudentId = Int32.Parse(txt_searchtext.Text); break;
                        case 1: studentsearch.Name = txt_searchtext.Text; break;
                    }
                    dataGridView1.DataSource = StudentInfoBLL.GetStudentInfoList(studentsearch);
                    InitHeadTitle();
                }
                else
                    MessageBox.Show("请输入要查询的" + cb_searchitem.Text);
            }
        }

        private void bt_close_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }
    }
}

Form_edit.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 学生通讯录
{        
    
    public partial class Form_edit : Form
    {
        public int studentid_edit = 0;//要编辑的学生编号,用于在主窗体和编辑窗体间传递
        public Form_edit()
        {
            InitializeComponent();
            initControl();
        }
        public void initControl()
        {
            //查询要编辑的学生信息并把编辑前的信息显示出来
            StudentInfo studentinfo = StudentInfoBLL.GetStudentInfo(studentid_edit);
            if(studentinfo!=null )
            {
                txt_studengid.Text = studentinfo.StudentId.ToString();
                txt_name.Text = studentinfo.Name;
                if(studentinfo.Sex=="男")
                {
                    rB_男.Checked = true;
                    rB_女.Checked = false;
                }
                else
                {
                    rB_女.Checked = true;
                    rB_男.Checked = false;
                }
                txt_age.Text = studentinfo.Age.ToString();
                dtbt_birthdate.Text = studentinfo.BirthDate.ToString();
                txt_phone.Text = studentinfo.Phone;
                txt_email.Text = studentinfo.Email;
                txt_homeaddress.Text  = studentinfo.HomeAddress;
                txt_profession.Text = studentinfo.Profession;
            }
        }
     

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void label5_Click(object sender, EventArgs e)
        {

        }

        private void Form_edit_Load(object sender, EventArgs e)
        {
            initControl();

        }

        private void btn_update_Click(object sender, EventArgs e)
        {
            //将编辑后的学生信息更新到XML文件中
            StudentInfo studentinfo = StudentInfoBLL.GetStudentInfo(studentid_edit);
            studentinfo.StudentId = Int32.Parse(txt_studengid.Text);
            studentinfo.Name = txt_name.Text;
            if (rB_男.Checked)
                studentinfo.Sex = "男";
            else if (rB_女.Checked)
                studentinfo.Sex = "女";
            studentinfo.Age = Int32.Parse(txt_age.Text);
            studentinfo.BirthDate = DateTime.Parse(dtbt_birthdate.Text);
            studentinfo.Phone = txt_phone.Text;
            studentinfo.Email = txt_email.Text;
            studentinfo.HomeAddress = txt_homeaddress.Text;
            studentinfo.Profession = txt_profession.Text;
            if (StudentInfoBLL.UpdateStudentInfo(studentinfo))
                MessageBox.Show("修改学生信息成功!");
        }

        private void btn_close_Click(object sender, EventArgs e)
        {
            this.Close();//关闭窗体
        }

        private void txt_studengid_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

相关文章

  • 综合实验(三)学生通讯录

    实验题目 开发一个采用XML格式存储数据的学生通讯录myContracts,具备学生信息添加,编辑、删除、查找等功...

  • 实验一、简单的词法设计——DFA模拟程序

    一、实验目的 通过实验教学,加深学生对所学的关于编译的理论知识的理解,增强学生对所学知识的综合应用能力,并通过实...

  • 实验二、语法设计——基于LL(1)文法的预测分析表法

    一、实验目的 通过实验教学,加深学生对所学的关于编译的理论知识的理解,增强学生对所学知识的综合应用能力,并通过实...

  • 朋友

    华为做了一场实验性测试,在备份了实验着的手机通讯录后,让实验着做了一下几项任务: 1、猜测手机通讯录有多少人 2、...

  • 创新管理理念 领航特色办学

    ——实验小学教育集团三所校区 综合实践课观摩纪实 自“双减”政策实施以来,县实验小...

  • TM4C123GXL:GPIO、中断、定时器,LED,串口

    嵌入式导论综合实验设计——嵌入式期末报告 TM4C123GXL Final Project 实验题目 综合实验设计...

  • 充实的一天

    下一周周一收软件工程小组的四个实验报告的打印版,周三开始收网络编程综合实验电子版,周五收网络编程综合实验报告纸质版...

  • 实验三通讯录

    1、设计并实现日常生活中通讯录的管理系统。该系统需3位同学一组,按模块分工协作完成,系统具体功能需求描述如下: ①...

  • 同学啊,能不能仔细点?

    下午快四点了,第一次化学综合实验终于结束。虽然每次实验都要求学生做完值日,清洗桌面,仪器归置……但习惯使然,自己还...

  • dockerfile综合实验

网友评论

      本文标题:综合实验(三)学生通讯录

      本文链接:https://www.haomeiwen.com/subject/mtoezctx.html