【WPF大作业】记一次C#大作业——商家快递包裹系统

2023-05-16

【WPF】XAML商家快递包裹系统

  • 一、前言
  • 二、采用的框架
  • 三、程序设计以及架构
  • 四、界面一览
    • 登录界面
    • 主界面
    • 统计页面
    • 处理订单
    • 添加订单
    • 物流查询
  • 五、 特色功能
    • 1.自定义的带花纹的顶栏
    • 2.数据库的连接与利用
    • 3.选项卡页面
    • 4.同步修改表格数据
    • 5.任务栏图标
  • 六、项目地址
  • 七、总结
  • 八、参考文档

一、前言

这学期的C#课程结束了,于是乎和朋友@我家肉兔爱吃肉合计,打算做一个XAML开发的快递包裹系统

最开始的想法是做一个面向用户的包裹系统,但是考虑到需求量比较小,并且近年来出现了菜鸟驿站可以方便的管理用户的包裹,于是乎决定做一个商家的快递管理系统。

这次我们设计的商家快递包裹系统采用了mysql数据库可以很方便的对数据进行维护与管理,使用系统前需要先设置数据库。

这次我们设计的商家快递包裹系统采用了MySQL数据库,可以很方便的对数据进行维护与管理,使用本系统前需要先设置数据库。
XAML语言有自己非常鲜明的特点,能像HTML一样编程,代码简洁明了,对于设计人员以及熟悉HTML代码格式的人非常友好。

代码:https://github.com/209ye/ParcelExpressManagementSystem

二、采用的框架

1.MahApps/MahApps.Metro
2.MaterialDesignInXAML

三、程序设计以及架构

在这里插入图片描述
在这里插入图片描述

四、界面一览

登录界面

在这里插入图片描述

主界面

在这里插入图片描述

统计页面

在这里插入图片描述

处理订单

在这里插入图片描述

添加订单

在这里插入图片描述
在这里插入图片描述

物流查询

在这里插入图片描述
在这里插入图片描述

五、 特色功能

1.自定义的带花纹的顶栏

在这里插入图片描述在这里插入图片描述

<Grid Grid.Row="0">
            <Grid.Background>
                <LinearGradientBrush>
                    <LinearGradientBrush.GradientStops>
                        <GradientStop Color="DarkSeaGreen" Offset="0.2"></GradientStop>
                        <GradientStop Color="Violet" Offset="0.7"></GradientStop>
                    </LinearGradientBrush.GradientStops>
                </LinearGradientBrush>
            </Grid.Background>
            <TextBlock Text="商家物流管理系统" Margin="5,0,0,0" Foreground="White" HorizontalAlignment="Left" VerticalAlignment="Center" FontFamily="/包裹快递管理系统;component/#WenCang" />
        </Grid>

        <Border Grid.Row="0" Opacity="0.2" x:Name="Border_Title2">
            <Border.Background>
                <ImageBrush ImageSource="bg2.png" TileMode="FlipXY" Stretch="UniformToFill"/>
            </Border.Background>
        </Border>

此处是实现顶栏是鼠标拖动:

public MainWindow()
        {
            InitializeComponent();
            this.Border_Title2.MouseLeftButtonDown += new MouseButtonEventHandler(Border_Title_MouseDown);
            UP_User.Text = "欢迎您, " + Login.input_user;
            //窗口全屏
            // Loaded += OnLoaded;
            //窗口全屏且透明
            // AllowsTransparency = true;
            // WindowStyle = WindowStyle.None;
            // WindowState = WindowState.Maximized;
            // Background = Brushes.Transparent;
            // Topmost = true;
            //数据库连接
            ChangeSQl();
        }
void Border_Title_MouseDown(object sender, MouseButtonEventArgs e)
        {
            this.DragMove();
        }

然后是自定义顶栏组件:
在这里插入图片描述

<Button Grid.Row="0" HorizontalAlignment="Right" Margin="0,0,172,0" Background="Transparent" BorderBrush="Transparent" Click="toPersonalCenterWin">
            <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
                <Ellipse Width="22" Height="22" RenderTransformOrigin="0.5,0.5" >
                    <Ellipse.RenderTransform>
                        <TransformGroup>
                            <ScaleTransform/>
                            <SkewTransform/>
                            <RotateTransform Angle="-36"/>
                            <TranslateTransform/>
                        </TransformGroup>
                    </Ellipse.RenderTransform>
                    <Ellipse.Fill>
                        <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
                            <GradientStop Color="#FF0012FF"/>
                            <GradientStop Color="#FF00FFEF" Offset="1"/>
                        </LinearGradientBrush>
                    </Ellipse.Fill>
                </Ellipse>
                <TextBlock Margin="10 0 0 0" x:Name="UP_User" Foreground="Black" VerticalAlignment="Center" FontSize="18" Text="用户" />
            </StackPanel>
</Button>

2.数据库的连接与利用

在这里插入图片描述
在这里插入图片描述

3.选项卡页面

在这里插入图片描述

4.同步修改表格数据

在这里插入图片描述

//失去焦点之后调用这个函数进行更新
        private void dataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
        {
            string newValue = (e.EditingElement as TextBox).Text;

            // MessageBox.Show(e.Column.Header.ToString());
            temp = e.Row.Item as SelOrder;
            string newItem = e.Column.Header.ToString();
            temp.toValue(e.Column.Header.ToString(), newValue);

            update_mail_id = temp.物流单号;
            update_courier_company = temp.物流公司;
            update_org_name = temp.发件人;
            update_org_address = temp.发货地址;
            update_send_name = temp.收件人;
            update_send_address = temp.收件地址;
            update_send_contact = temp.收件人电话;
            update_stats = temp.状态;
            update_remarks = temp.备注;

            // MessageBox.Show(temp.物流单号);

            if (e.Column.Header.ToString() == "物流单号")
            {
                Login.m1.ShowMessageAsync("请勿更改物流单号", "如需更改,可删除后添加");
                // e.Column = preValue;
                return;
            }

            //如果修改后的值和修改前的值不一样
            if (preValue != newValue)
                try
                {
                    connect.MySqlConnection.Open();
                    connect.ConnectIndex = true;
                    String str_sql = "update fact_mail_status set courier_company = '" + update_courier_company +
                                     "', org_name = '" + update_org_name + "' , org_address = '" + update_org_address +
                                     "' , send_name = '" + update_send_name + "' , send_address = '" +
                                     update_send_address + "', send_contact = '" + update_send_contact +
                                     "', stats = '" + update_stats + "' , remarks = '" + update_remarks +
                                     "' where mail_id = '" + update_mail_id + "'";
                    // MessageBox.Show(update_org_name);
                    // MessageBox.Show(str_sql);
                    Console.WriteLine(str_sql);
                    MySqlCommand mysql_cmd = new MySqlCommand(str_sql, connect.MySqlConnection);
                    int result = mysql_cmd.ExecuteNonQuery();
                    if (result > 0)
                    {
                        // MessageBox.Show("更新成功");
                    }
                    else
                    {
                        Login.m1.ShowMessageAsync("更新失败","请查看数据库连接");
                    }
                }
                catch (MySqlException ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    //关闭游标
                    connect.MySqlConnection.Close();
                }
        }

5.任务栏图标

在这里插入图片描述

六、项目地址

项目已上传到github
github地址:209ye/ParcelExpressManagementSystem: 商家的快递包裹管理系统——XAML
https://github.com/209ye/ParcelExpressManagementSystem

七、总结

这次的快递包裹设计前前后后忙活了大概两周,总算是告一段落了,我腰都快直不起来了。XAML语言有自己非常鲜明的特点,能像HTML一样编程,代码简洁明了,对于设计人员以及熟悉HTML代码格式的人非常友好。我在编写代码的时候也遇到了许多问题,感谢@我家肉兔爱吃肉的帮助。
我们所开发的系统仍有许多的不足之处,这些问题希望能在日后的学习中逐渐地改进,并且能在代码的道路上越走越远。

八、参考文档

1.MahApps/MahApps.Metro: A framework that allows developers to cobble together a better UI for their own WPF applications with minimal effort.
https://github.com/MahApps/MahApps.Metro
2.MaterialDesignInXAML/MaterialDesignInXamlToolkit: Google’s Material Design in XAML & WPF, for C# & VB.Net.
https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit
3.2020 WPF 取经之路第8天 - MahApps 迁移整理-WPF-aaronyang技术分享
http://www.ayjs.net/post/803.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【WPF大作业】记一次C#大作业——商家快递包裹系统 的相关文章

随机推荐

  • ubuntu 18.04 安装 gurobi10.0.0

    安装准备 1 在官网下载安装包 gt 链接 link 2 校内ip直接在官网申请相应的licence gt 链接 link 3 校外ip需要给官方发送邮件申请 gt 链接 link 安装步骤 1 进入压缩包所在目录 xff0c 解压 tar
  • centos 7.9手把手搭建安装confluence 7

    1 准备环境 root 64 localhost cat etc redhat release CentOS Linux release 7 9 2009 Core root 64 localhost java version openjd
  • Debian10安装

    Debian 10 7 buster 使用bt文件下载 下载链接 xff1a https cdimage debian org debian cd current amd64 bt dvd 这次是在VMware Workstation上安装
  • Debian——网络/镜像配置

    文章目录 前言一 添加镜像源二 配置网络三 添加阿里云镜像 前言 安装完成之后 xff0c 配置apt源和网络 提示 xff1a 以下是本篇文章正文内容 xff0c 下面案例可供参考 一 添加镜像源 添加ISO文件 xff0c 并连接 ap
  • [Arch iwlist issue] Allocation failed

    之前在学校用 networkmanager 一直不好用 所以试了试手动调试 谁知道再用 iwlist scan时出错 allocation failed 查了一下google 原来是个bug 在无线太多环境下 xff0c 就会出现这种情况
  • 执行pth-winexe报错:ERROR: CreateService failed. NT_STATUS_ACCESS_DENIED.

    问题 xff1a 执行pth winexe时报错 xff1a pth winexe U test aad3b435b51404eeaad3b435b51404ee afc44ee7351d61d00698796da06b1ebf 192 1
  • Windows 远程端口号修改

    远程桌面端口号修改 xff1a 1 计算机 HKEY LOCAL MACHINE SYSTEM CurrentControlSet Control Terminal Server Wds rdpwd Tds tcp 修改PortNumber
  • CCSP2016-1 选座(ticket_chooser)

    CCSP2016 1 选座 xff08 ticket chooser xff09 题目描述 小 B 是一个电影迷 xff0c 只要有时间 xff0c 她就要去观摩最新的大片 但她不喜欢自己在 电脑或其他电子设备上观看 xff0c 而是喜欢去
  • manjaro配置VNC服务

    硬件 xff1a 开发板 xff1a Raspberry Pi 树莓派4B 4G内存 电脑 xff1a win10主机 系统 xff1a manjaro xff1a Raspberry Pi 4 KDE Plasma 21 06 一些准备工
  • iOS开发:关于UISearchController的简单使用

    UISearchController是iOS8以后推出的一个控件 xff0c 在以前的搜索控制器中 xff0c 需要将searchBar于tableView结合使用 有了这个控件之后 xff0c 做搜索控制器就很简单了 效果图 一 需要遵守
  • mac访问win7共享文件夹

    看了网上的一些操作步骤不是太详尽 xff08 对 xff0c 我就是嫌弃它图少 xff09 xff0c 特地制作一个教程来教大家使用mac访问win7的共享文件夹 一 首先我们创建一个用于测试的文件夹 我的台式电脑撤出来一根网线连接在了路由
  • DllNotFoundException

    检查运行dll是否需要其他的dll 这个是报错比较常见的原因 在Unity中报DllNotFoundException有可能是找不到的dll xff0c 它需要引用的其他dll不存在 这个不仅仅是适用于Unity xff0c 大多数dll的
  • Steam游戏的爬取与分析

    Steam游戏的爬取与分析 本文爬取了steam冒险类游戏中热销产品中的7500个游戏进行统计分析 1 首先要先知道网页链接的组成形式 xff1a 2 其次查看我们想要爬取的信息区域 xff1a 3 开始分析 xff1a xff08 1 x
  • word里面的自带编辑器公式怎么转换成math type公式

    这是最近产生的一个问题 xff0c 还在解决中 已解决 这个问题出现主要是因为老板要编书 xff0c 然后一开始是让我们用word自带的编辑器进行编辑 xff0c 现在突然变化 xff0c 让我们全部改成math type格式 首先百度ma
  • Ubuntu 20.04 无法解析软件包文件 /var/lib/dpkg/status

    出现问题 E 无法解析软件包文件 var lib dpkg status 1 W 您可能需要运行 apt get update 来解决这些问题 E 软件包缓存文件损坏了 截图 xff1a 这东西我试了前辈的博客的方法 xff0c 瞎套果然不
  • 如何进入Ubuntu 18.04.1 LTS的根目录

    Ubantu虽然在文件操作上已经有了比较完善的桌面版 xff0c 但是有时候我们想在文件夹找到某一目录还是很难找到的 这个时候我们可以先到根目录下 xff0c 然后在依次查找相应文件夹 另外 xff0c 此操作对于不习惯或者不会使用vi或者
  • Linux下V4L2调用摄像头设备程序崩溃

    问题描述 使用V4L2驱动调用摄像头 xff0c 只能打开一次摄像头 xff0c 第二次打开时程序崩溃 原因 在获取相机数据流时我们一般会使用mmap 来将linux内核空间映射到用户空间 xff0c 在关闭相机时应当调用munmap 解除
  • 时钟恢复(CDR:Clock and Data Recovery)和PLL/DLL

    CDR的作用及应用场景 CDR的主要有两大作用 xff0c 第一是为接收器端各电路提供时钟信号 xff1b 第二是对接收到的信号进行判决 xff0c 便于数据信号的恢复与后续处理 CDR在各种高速PHY RX的应用 xff1a 比如高速ph
  • 【MathType安装】2020年最新将MathType加入word的方法,解决"运行时错误53,MathPage.wll文件未找到"问题

    2020年最新的将MathType加入word的方法 1 找到你的 STARTUP 文件夹2 打开MathType的安装路径3 在word中选择加载4 完成 1 找到你的STARTUP文件夹 这里我提供的方法是下载一个everything搜
  • 【WPF大作业】记一次C#大作业——商家快递包裹系统

    WPF XAML商家快递包裹系统 一 前言二 采用的框架三 程序设计以及架构四 界面一览登录界面主界面统计页面处理订单添加订单物流查询 五 特色功能1 自定义的带花纹的顶栏2 数据库的连接与利用3 选项卡页面4 同步修改表格数据5 任务栏图