首页 > 编程语言 >C#窗体学生管理系统①

C#窗体学生管理系统①

时间:2024-06-06 21:31:49浏览次数:17  
标签:管理系统 C# 一页 页数 int 窗体 按钮 btn pages

效果:使用dataGridView展示http里的姓名,年龄,性别,手机而且可以编辑,删除;有添加按钮查询,刷新,页数功能

窗体Framework

搭建窗口(要将dataGridView里的数据和类对应)

编辑和删除设置图片(有内容图片才会显示)

页数是使用flowLayoutPanel

代码

双击Form1桌面

private  void Form1_Load(object sender, EventArgs e)
{
    GetStudents();
}

设置GetStudents方法

获取学生信息

 public string baseURL = "http://192.168.113.74:3000"; // 基础路径
 public Condition con = new Condition();  //查询条件对象

 public List<Student> list = null; //学生集合对象
 public async void GetStudents()
 {
     //传递一个对象,查询对象
      string data = await HttpTest.GetAsyncWithObject(baseURL + "/search", con);
     //JObject 第三方提供的解析根类的对象
     //string msg = JsonConvert.DeserializeObject<JObject>(data)["msg"].ToString();
     //根实体对象里面data对应的值
     string d1 =  JsonConvert.DeserializeObject<JObject>(data)["data"].ToString();
     Data d2 = JsonConvert.DeserializeObject<Data>(d1);
     this.list = d2.data;
     this.dataGridView1.DataSource = this.list;

     //创建页数按钮
     PageButtonShow(d2.currentPage, d2.maxPage);
 }

PageButtonShow方法

创建页数按钮传递当前页数和最大页数

    public void PageButtonShow(int current,int maxPage)
    {
        
        //把页数和上一页 下一页 放到一个数组,遍历数组创建按钮
        //例如总共3页,把1 2 3,上一页 下一页 放到数组里面
        //如何设计数组?
        List<string> pages = new List<string>(); //页数的数组,存放1 、2、3字符串
        pages.Add(current.ToString());// 如目前是第一页 :[1]
        int count = maxPage > 5 ? 5 : maxPage;//count 最大是5
       
        int pre = current;//向前找变量 目前等于当前页
        int next = current;//向后找变量 目前等于当前页
        while (pages.Count < count)
        {
            pre--;
            if (pre >= 1)
                pages.Insert(0, pre.ToString()); // 把pre放进数组最前面
            next++;
            if(next<=maxPage)
                pages.Add(next.ToString());//把next放到当前位置
        }
        pages.Insert(0,"<");//上一页
        pages.Add(">");// 下一页

        //显示按钮
        this.flowLayoutPanel1.Controls.Clear();
        for (int i = 0; i < pages.Count; i++)
        {
            string item = pages[i].ToString();//取出每一个元素,1,2,3
            Button btn = new Button();
            btn.Width = 30;
            btn.Height =30;
            btn.Text = item;
            btn.BackColor = Color.White;
            //如果当前是第一页 让上一页的按钮不可用,如果是最后一页,下一页按钮不能用
            if (current<=1&&i==0 || current >=maxPage && i==pages.Count-1)
            {
                btn.Enabled = false; //设置按钮不可用
            }
            //按钮是中间的时候并且找到当前页对应按钮,把这个按钮设置高亮
            if (i!=0 && i!=pages.Count-1 && Convert.ToInt16(item)==current )
            {
                btn.BackColor = Color.Blue;
                btn.Enabled = false;
            }
            if (i == 0) //上一页按钮
            {
                btn.Tag = -1;
                btn.Click += Btn_Click;

            }
            else if (i == pages.Count - 1) //  下一页按钮
            {
                btn.Tag = +1;
                btn.Click += Btn_Click;
            }
            else //中间的按钮 
            {
                btn.Tag = item; //1,2,3,
                btn.Margin = new Padding(0,3,0,3);
                btn.Click += Btn_Click1; 
            }
            this.flowLayoutPanel1.Controls.Add(btn);
        }
        this.flowLayoutPanel1.Location = new Point((this.Width - this.flowLayoutPanel1.Width) / 2, this.flowLayoutPanel1.Location.Y);

    }

   
    //跳转到指定页数
    private void Btn_Click1(object sender, EventArgs e)
    {
        int p = Convert.ToInt16(((Button)sender).Tag);
        con.currentPage = p;
        GetStudents();
    }

    //上一页和下一页
    private void Btn_Click(object sender, EventArgs e)
    {
        int p =  Convert.ToInt16(((Button)sender).Tag);
        con.currentPage += p;
        GetStudents();
    }
}

标签:管理系统,C#,一页,页数,int,窗体,按钮,btn,pages
From: https://blog.csdn.net/weixin_73535261/article/details/139453755

相关文章

  • 基于Python的实验室管理系统的设计与实现(论文+源码)_kaic
    摘 要随着实验室设备越来越多,实验室及其设备管理工作变得越来越繁重,还存在些管理模式仍旧处于手工管理模式和一些抢占实验室的不文明现象,传统的手工模式已经满足不了日益增长的管理需求,而本系统摒弃传统模式,开启新式的实验室管理模式。在需求进行分析的基础上,采用Python语言......
  • 基于Python的街区医院管理系统的设计与实现(论文+源码)_kaic
    基于Python的街区医院管理系统的设计与实现摘 要采用Python语言、Mysql数据库,在IDEA平台下实现了街区医院管理系统,利用街道医疗机构的管理系统,不仅能够有效地进行信息管理,促进各部门之间的有序合作,还能够大幅改善医疗环境,极大地改善病人的就诊体验,并且能够更加有效地满......
  • 八大排序(使用C语言)
    完整代码链接:诶嘿/DataStructure-码云-开源中国(gitee.com)目录一、排序的概念及应用:1.排序的概念:2.排序应用:二、常见排序算法的实现: 1 插入排序:1.1基本思想:1.2直接插入排序:1.2.1代码实现: 1.2.2测试:1.2.3时空复杂度:1.3希尔排序(缩小增量排序):1.3.1......
  • [DP] LCS例题 Luogu P1439 【模板】最长公共子序列 Luogu P4303 基因匹配
    LuoguP1439【模板】最长公共子序列【模板】最长公共子序列题目描述给出\(1,2,\ldots,n\)的两个排列\(P_1\)和\(P_2\),求它们的最长公共子序列。输入格式第一行是一个数\(n\)。接下来两行,每行为\(n\)个数,为自然数\(1,2,\ldots,n\)的一个排列。输出格式一个数,即......
  • 基于springboot的相亲网站管理系统,相亲管理系统,附源码+数据库+论文+开题报告+任务书+P
    1、项目介绍相亲网站根据使用权限的角度进行功能分析,并运用用例图来展示各个权限需要操作的功能。管理员权限操作的功能包括管理婚礼公司,管理婚礼公司预约信息,管理结婚案例,管理相亲信息,管理相亲留言,管理用户等。用户权限操作的功能包括预约婚礼公司,收藏婚礼公司,查看结婚......
  • C程序设计谭浩强例题分析 1.2
    【例1.2】求两个整数之和。【例1.2】求两个整数之和。解题思路:设置3个变量,a和b用来存放两个整数,sum用来存放和数。用赋值运算符“=”把相加的结果传送给sum。这里只列举了一种代码实现如果要看其他代码实现可以到我的:GitHub:三种代码风格我的答案:#include<stdio.h>int......
  • WebviewController进行混合开发,鸿蒙星河版API(11)
    @ohos.web.webview提供web控制能力,web组件提供网页显示的能力,同时也可以执行网页中定义的JS方法。一、第一步创建WebviewController实例controller:WebviewController=newwebview.WebviewController()二、web组件加载html文件build(){Navigation(){Col......
  • 智能仪表通过Modbus转Profinet网关与PLC通讯方案
    智能仪表通过Modbus转Profinet网关与PLC通讯方案一、功能及优势:Modbus转Profinet网关(XD-MDPN100/300)的主要功能是实现Modbus协议和Profinet协议之间的转换和通信。Modbus转Profinet网关集成了Modbus和Profinet两种协议,支持ModbusRTU主站/从站,并可以与RS485接口的设备,它自带网口......
  • socket 实现udp组播通信
    socket实现udp组播通信UDP组播(Multicast)是一种网络通信方式,它允许一个发送者(源)发送单一的数据包到多个接收者(目标)。与单播(Unicast)通信(其中数据包从一个发送者发送到一个接收者)和广播(Broadcast)通信(其中数据包发送到网络中的所有设备)不同,组播提供了一种中间方式,其中数据包被发送......
  • 基于GA-PSO遗传粒子群混合优化算法的CDVRP问题求解matlab仿真
    1.程序功能描述       车辆路径问题(VehicleRoutingProblem,VRP)是运筹学领域的一个经典问题,旨在寻找满足一系列送货或取货需求的最优车辆行驶路径。其中,CDVRP是一个经典的组合优化问题,它要求确定一组最优路径,使得一定数量的车辆从起点出发,服务一系列客户点,并最终返回起......