基于C#语言Windows窗体应用(.Net Framework)的教室点名系统V1.0

文章目录

  • 一、前言
  • 二、功能明细
  • 三、效果演示
  • 四、界面布局
  • 五、代码详解
    • 5.1 获取班级列表
    • 5.2 获取学生名单
    • 5.3 置顶功能

一、前言

今天早上,还在上班路上的我,突然收到初中老师的微信。

问我最近有没有空帮他搞一个教室点名系统。

这,必须有空啊。

这不,抽空,三下五除二,一小时左右搞定。

二、功能明细

  • 可以选择不同教室
  • 可以修改学生名单
  • 可以随机抽点学生
  • 可以将软件置顶,PPT放映的时候也能点名

三、效果演示

基于C#语言Windows窗体应用(.Net Framework)的教室点名系统V1.0

四、界面布局

基于C#语言Windows窗体应用(.Net Framework)的教室点名系统V1.0_第1张图片

  • 一个ListView,用来显示教室列表
  • 一个Label,用来显示学生名单
  • 一个Label,用来显示被抽中的学生名称
  • 一个随机点名按钮
  • 一个刷新按钮,用来刷新目录下面的txt文件
  • 一个置顶按钮,用来控制程序是否置顶
  • 最后一个Label,用来宣示主权,哈哈

五、代码详解

5.1 获取班级列表

  • 班级列表是通过读取exe目录下面的txt文件
  • 有几个txt文件就等于有几个班级
  • 老师想要增删改查班级,直接增删改查exe目录下面的txt文件即可
List<string> roomList = new List<string>();
private void getRoomList()
{
    List<ListViewItem> items = new List<ListViewItem>();
    DirectoryInfo root = new DirectoryInfo(System.Environment.CurrentDirectory);
    roomList.Clear();
    foreach (FileInfo f in root.GetFiles())
    {
        if (f.FullName.Contains(".txt"))
        {
            Console.WriteLine(f.FullName);

            List<string> rows = new List<string>();
            rows.Add(f.Name);
            items.Add(new ListViewItem(rows.ToArray()));

            roomList.Add(f.FullName);
        }
    }

    roomListView.BeginUpdate();   //数据更新,UI暂时挂起,直到EndUpdate绘制控件,可以有效避免闪烁并大大提高加载速度 
    roomListView.Items.Clear();
    roomListView.Items.AddRange(items.ToArray());
    roomListView.EndUpdate();  //结束数据处理,UI界面一次性绘制。

    if (roomListView.Items.Count > 0)
    {
        roomListView.Items[0].Selected = true;
    }
}
  • Form1_Load时调用
  • 在刷新按钮点击是调用
 private void Form1_Load(object sender, EventArgs e)
 {
     //列表初始化
     roomListView.Columns.Clear();
     roomListView.Columns.Add("教室", 120);

     getRoomList();
 }

 private void updateTxtBtn_Click(object sender, EventArgs e)
 {
     getRoomList();
 }

5.2 获取学生名单

  • 对应班级的学生名单是存在对应txt文件下
  • 通过换行来分割人名
  • 获取对应班级的学生名单只要读取对应txt文件内容即可
    基于C#语言Windows窗体应用(.Net Framework)的教室点名系统V1.0_第2张图片
private void getNameList(string path)
{
    StreamReader streamReader = new StreamReader(path, Encoding.UTF8);
    string content;
    string str = "";
    nameList.Clear();
    while ((content = streamReader.ReadLine()) != null)
    {
        //Console.WriteLine(content.ToString());
        str += (content.ToString()+"、");
        nameList.Add(content.ToString());
    }
    streamReader.Close();
    str = str.Substring(0, str.Length-1);	//去掉最后一个顿号、
    nameListLabel.Text = str;
}
  • 在班级被选中的时候,获取该班级的学生名单
 private void roomListView_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (roomListView.SelectedItems.Count <= 0)
         return;
     int index = roomListView.SelectedItems[0].Index;
     Console.WriteLine("roomListView_SelectedIndexChanged index="+index);
     if (roomList.Count> index)
     {
         getNameList(roomList[index]);
     }
 }

5.3 置顶功能

  • 置顶TopMost是指该窗体是否始终显示在此属性未设置为true的所有其他窗体之上。
    基于C#语言Windows窗体应用(.Net Framework)的教室点名系统V1.0_第3张图片
private void topMostBtn_Click(object sender, EventArgs e)
{
    if (this.TopMost)
    {
        this.TopMost = false;
        topMostBtn.Text = "置顶";
    }
    else
    {
        this.TopMost = true;
        topMostBtn.Text = "取消置顶";
    }
}

觉得好,就一键三连呗(点赞+收藏+关注)

你可能感兴趣的:(C#与.Net,c#,windows,.net,点名系统,随机点名)