WPF:利息计算器

程序下载

iCalc.zip

软件界面

源代码
MainWindow.xaml.cs

/* ----------------------------------------------------------
 * 文件名称:MainWindow.xaml.cs
 *
 * 作者:秦建辉
 *
 * 微信:splashcn
 *
 * 博客:http://www.firstsolver.com/wordpress/
 *
 * 开发环境:
 *      Visual Studio V2017
 *      .NET Framework 4 Client Profile
 *
 * 版本历史:
 *	    V1.0    2018年02月23日
 *			    利息计算器
 * ------------------------------------------------------------ */
using Com.FirstSolver.Splash;
using System;
using System.Windows;

namespace Splash
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void ButtonCalc_Click(object sender, RoutedEventArgs e)
        {
            // 贷款金额
            if (string.IsNullOrEmpty(TextBoxMoney.Text))
            {
                MessageBoxPlus.Show(this, "请输入贷款金额!", "警告", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            if (!decimal.TryParse(TextBoxMoney.Text, out decimal Money))
            {
                MessageBoxPlus.Show(this, "金额格式不正确!", "警告", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            // 年化利率
            if (string.IsNullOrEmpty(TextBoxRate.Text))
            {
                MessageBoxPlus.Show(this, "请输入年化利率!", "警告", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            if (!decimal.TryParse(TextBoxRate.Text, out decimal Rate))
            {
                MessageBoxPlus.Show(this, "利率格式不正确!", "警告", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            Rate /= 100;

            // 借款日期            
            if (DatePickerStart.SelectedDate == null)
            {
                MessageBoxPlus.Show(this, "尚未选择借款日期!", "警告", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            DateTime DateStart = (DateTime)DatePickerStart.SelectedDate;

            // 还款日期            
            if (DatePickerEnd.SelectedDate == null)
            {
                MessageBoxPlus.Show(this, "尚未选择还款日期!", "警告", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            DateTime DateEnd = (DateTime)DatePickerEnd.SelectedDate;

            // 验证日期
            if (DateStart >= DateEnd)
            {
                MessageBoxPlus.Show(this, "借款日期必须早于还款日期!", "警告", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            // 计算利息
            decimal Total = 0m; // 总计利息            
            while (DateStart < DateEnd)
            {
                decimal Interest = Money * Rate; // 一年利息
                if (DateStart.AddYears(1) <= DateEnd)
                {
                    Total += Interest;
                    DateStart = DateStart.AddYears(1);

                    // 是否按年利滚利
                    if ((bool)CheckBoxRoll.IsChecked) Money += Interest;
                }
                else
                {   // 判断是否包含闰年
                    if (DateTime.IsLeapYear(DateStart.Year) || DateTime.IsLeapYear(DateEnd.Year))
                        Total += Interest * (DateEnd - DateStart).Days / 366; // 闰年
                    else
                        Total += Interest * (DateEnd - DateStart).Days / 365; // 平年

                    break;
                }
            }

            TextBoxInterest.Text = Total.ToString("C");
        }

        private void ButtonCopy_Click(object sender, RoutedEventArgs e)
        {
            TextBoxInterest.SelectAll();
            TextBoxInterest.Copy();
        }
    }
}

MainWindow.xaml

<Window x:Class="Splash.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="利息计算器 By 秦建辉" SizeToContent="WidthAndHeight" FontSize="16" ResizeMode="CanMinimize" WindowStartupLocation="CenterScreen" Icon="balance.ico">
    <Grid Margin="4">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <Grid Grid.Row="0">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>

            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>

            <Label Grid.Row="0" Grid.Column="0" Margin="4" HorizontalContentAlignment="Center" Content="贷款金额" Background="LightGray"/>
            <StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal">
                <TextBox Margin="4" MinWidth="200" HorizontalContentAlignment="Right" VerticalContentAlignment="Center" Name="TextBoxMoney"/>
                <Label Margin="0,4" Content="元"/>
            </StackPanel>

            <Label Grid.Row="1" Grid.Column="0" Margin="4" HorizontalContentAlignment="Center" Content="年化利率" Background="LightGray"/>
            <StackPanel Grid.Row="1" Grid.Column="1" Orientation="Horizontal">
                <TextBox Margin="4" MinWidth="200" HorizontalContentAlignment="Right" VerticalContentAlignment="Center" Name="TextBoxRate"/>
                <Label Margin="0,4" Content="%"/>
            </StackPanel>

            <Label Grid.Row="2" Grid.Column="0" Margin="4" HorizontalContentAlignment="Center" Content="借款日期" Background="LightGray"/>
            <DatePicker Grid.Row="2" Grid.Column="1" Margin="4" Name="DatePickerStart"/>

            <Label Grid.Row="3" Grid.Column="0" Margin="4" HorizontalContentAlignment="Center" Content="还款日期" Background="LightGray"/>
            <DatePicker Grid.Row="3" Grid.Column="1" Margin="4" Name="DatePickerEnd"/>
        </Grid>

        <Separator Grid.Row="1" Margin="4"/>

        <StackPanel Grid.Row="2" Orientation="Horizontal">
            <Button Margin="4" Padding="4" Name="ButtonCalc" Content="计算利息" Foreground="Brown" Click="ButtonCalc_Click"/>
            <CheckBox Margin="4" Name="CheckBoxRoll" Content="按年利滚利" VerticalContentAlignment="Center"/>
        </StackPanel>

        <Grid Grid.Row="3">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>

            <TextBox Grid.Column="0" Margin="4" Foreground="Red" IsReadOnly="True" FontSize="32" VerticalContentAlignment="Center" Name="TextBoxInterest"/>
            <Button Grid.Column="1" Margin="4" Padding="4" MinWidth="64" Name="ButtonCopy" Content="拷贝" Click="ButtonCopy_Click"/>
        </Grid>
    </Grid>
</Window>

Comments are closed.