晚饭

 

我们家的晚饭一般在六点左右,天黑了,而今天没有黑就吃饭了。

今天的晚饭是米饭,小白菜,饼和糖饼,实际,糖饼没有多少糖,有糖的那块面积只有一共的二分之一,我拿起一块糖饼就吃,饼边子给妈妈吃,我喜欢吃小白菜,爸爸喜欢吃饼,妈妈喜欢吃饭,因为妈妈马虎,做饭适合哪一个人的口味。晚饭一般要吃得少,而我不能吃得少,要吃少了,学过习会饿得。

冬天的早晨。
公鸡的歌声把我从梦中唤醒,我迅速出了被子,但又缩进去了,因为天冷了。但我还是又迅速地把凉衣服穿到身上,开门一看:大地全是白的,树枝上也是白的,我从鼻孔里喷出两道白雾。

太阳也不象夏天的太阳一样火红,而是乳黄色,我迎着太阳的方向向操场跑去。

脸被冻僵了,我用手搓搓,开始在操场上跑步了,一天的生活就这样开始了。
1985,11,16

用vs2019 C#帮我实现以下学生餐费统计功能: 1.读取excel文件"学生表.xlsx"的 "高三","高一高二","初中部"3个sheet页,G、H、I、J、K的列数据对应 姓名、身份证号、年级、班级、性别,保存到内存,忽略第一行标题。 2.读取excel文件"请假表.xlsx",A列是年级和班级数据,前3个字是年级,后面是班级,将"一年级4班"转换成"高一"和"4班"两个数据,"七年级4班"转换成"初一"和"4班"两个数据,B列是学生姓名、C列是请假开始时间、D列是请假结束时间,忽略第一行标题。 3.早饭开始时间7:00,中饭开始时间12:00,晚饭开始时间18:00,请假开始时间在早中晚饭点前要统计对应餐费,请假结束时间在早中晚饭点前不统计对应餐费。 4.按高中、初中、男生、女生、早餐、中餐、晚餐分别配置价格、并保存到配置文件,程序自动读取配置到界面显示。 5.配置每月放假开始时间,结束时间,可配置多条,高中和初中分开配置,并保存到配置文件,程序自动读取配置到界面显示。放假时间和请假时间计算餐费规则一样。 6.按早中晚餐价格统计每个学生本月费用生成表格,在程序界面显示表格数据,表格内容有:姓名、身份证号、年级、班级、性别、统计年月、早餐次数、午餐次数、晚餐次数、餐费总金额。 7.可以按全体人员、高中、初中、年级、班级、早餐、中餐、晚餐、男、女、请假人员 等条件查询统计结果。 8.增加导出按钮,统计结果导出到excel。
最新发布
10-22
要使用VS2019和C#实现学生餐费统计功能,可以借助NPOI库来操作Excel文件,以下是具体的实现步骤和示例代码: ### 1. 安装NPOI库 在Visual Studio中,通过NuGet包管理器搜索并安装NPOI库,此库可用于读取和写入Excel文件。 ### 2. 读取Excel文件 运用NPOI库读取`学生表.xlsx`和`请假表.xlsx`文件中的数据。 ### 3. 处理请假信息 依据请假表中的年级、班级和请假时间,对学生的用餐情况进行调整。 ### 4. 统计餐费 按照早、中、晚餐点统计每个学生的餐费,同时结合配置的餐费价格和放假时间。 ### 5. 界面显示 在Windows Forms或WPF界面中展示统计结果。 ### 6. 条件查询 支持多种条件查询,例如按年级、班级、日期等条件进行查询。 ### 7. 导出结果 将统计结果导出到Excel文件。 以下是示例代码: ```csharp using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Windows.Forms; namespace StudentMealFeeStatistics { public partial class MainForm : Form { private DataTable studentData; private DataTable leaveData; private DataTable resultData; private Dictionary<string, decimal> mealPrices = new Dictionary<string, decimal> { { "早餐", 5 }, { "午餐", 10 }, { "晚餐", 15 } }; private List<DateTime> holidayDates = new List<DateTime> { // 配置放假时间 new DateTime(2024, 1, 1), new DateTime(2024, 1, 2) }; public MainForm() { InitializeComponent(); } private void ReadExcelFiles() { // 读取学生表.xlsx studentData = ReadExcel("学生表.xlsx", new List<string> { "高三", "高一高二", "初中部" }, new List<int> { 6, 7, 8, 9, 10 }); // 读取请假表.xlsx leaveData = ReadExcel("请假表.xlsx", null, null); } private DataTable ReadExcel(string filePath, List<string> sheetNames, List<int> columns) { DataTable dataTable = new DataTable(); using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { IWorkbook workbook = new XSSFWorkbook(fs); if (sheetNames == null) { for (int i = 0; i < workbook.NumberOfSheets; i++) { ISheet sheet = workbook.GetSheetAt(i); dataTable.Merge(ReadSheet(sheet, columns)); } } else { foreach (string sheetName in sheetNames) { ISheet sheet = workbook.GetSheet(sheetName); if (sheet != null) { dataTable.Merge(ReadSheet(sheet, columns)); } } } } return dataTable; } private DataTable ReadSheet(ISheet sheet, List<int> columns) { DataTable dataTable = new DataTable(); IRow headerRow = sheet.GetRow(0); if (columns == null) { for (int i = 0; i < headerRow.LastCellNum; i++) { dataTable.Columns.Add(headerRow.GetCell(i).ToString()); } } else { foreach (int col in columns) { dataTable.Columns.Add(headerRow.GetCell(col).ToString()); } } for (int i = 1; i <= sheet.LastRowNum; i++) { IRow row = sheet.GetRow(i); DataRow dataRow = dataTable.NewRow(); if (columns == null) { for (int j = 0; j < row.LastCellNum; j++) { dataRow[j] = row.GetCell(j)?.ToString() ?? ""; } } else { int colIndex = 0; foreach (int col in columns) { dataRow[colIndex++] = row.GetCell(col)?.ToString() ?? ""; } } dataTable.Rows.Add(dataRow); } return dataTable; } private void ProcessLeaveInfo() { // 处理请假信息 foreach (DataRow leaveRow in leaveData.Rows) { string grade = leaveRow["年级"].ToString(); string className = leaveRow["班级"].ToString(); DateTime startDate = DateTime.Parse(leaveRow["请假开始时间"].ToString()); DateTime endDate = DateTime.Parse(leaveRow["请假结束时间"].ToString()); foreach (DataRow studentRow in studentData.Rows) { if (studentRow["年级"].ToString() == grade && studentRow["班级"].ToString() == className) { // 处理请假时间内的用餐信息 for (DateTime date = startDate; date <= endDate; date++) { // 根据日期处理相应的餐点信息 } } } } } private void CalculateMealFees() { resultData = new DataTable(); resultData.Columns.Add("年级"); resultData.Columns.Add("班级"); resultData.Columns.Add("姓名"); resultData.Columns.Add("早餐费用"); resultData.Columns.Add("午餐费用"); resultData.Columns.Add("晚餐费用"); resultData.Columns.Add("总费用"); foreach (DataRow studentRow in studentData.Rows) { string grade = studentRow["年级"].ToString(); string className = studentRow["班级"].ToString(); string name = studentRow["姓名"].ToString(); decimal breakfastFee = 0; decimal lunchFee = 0; decimal dinnerFee = 0; // 统计餐费 foreach (DataColumn column in studentData.Columns) { if (column.ColumnName.Contains("早餐")) { breakfastFee += mealPrices["早餐"]; } else if (column.ColumnName.Contains("午餐")) { lunchFee += mealPrices["午餐"]; } else if (column.ColumnName.Contains("晚餐")) { dinnerFee += mealPrices["晚餐"]; } } decimal totalFee = breakfastFee + lunchFee + dinnerFee; DataRow resultRow = resultData.NewRow(); resultRow["年级"] = grade; resultRow["班级"] = className; resultRow["姓名"] = name; resultRow["早餐费用"] = breakfastFee; resultRow["午餐费用"] = lunchFee; resultRow["晚餐费用"] = dinnerFee; resultRow["总费用"] = totalFee; resultData.Rows.Add(resultRow); } } private void DisplayResults() { dataGridView1.DataSource = resultData; } private void ExportToExcel() { using (SaveFileDialog saveFileDialog = new SaveFileDialog()) { saveFileDialog.Filter = "Excel Files|*.xlsx"; saveFileDialog.Title = "Save Excel File"; saveFileDialog.FileName = "餐费统计结果.xlsx"; if (saveFileDialog.ShowDialog() == DialogResult.OK) { using (FileStream fs = new FileStream(saveFileDialog.FileName, FileMode.Create, FileAccess.Write)) { IWorkbook workbook = new XSSFWorkbook(); ISheet sheet = workbook.CreateSheet("餐费统计结果"); IRow headerRow = sheet.CreateRow(0); for (int i = 0; i < resultData.Columns.Count; i++) { headerRow.CreateCell(i).SetCellValue(resultData.Columns[i].ColumnName); } for (int i = 0; i < resultData.Rows.Count; i++) { IRow row = sheet.CreateRow(i + 1); for (int j = 0; j < resultData.Columns.Count; j++) { row.CreateCell(j).SetCellValue(resultData.Rows[i][j].ToString()); } } workbook.Write(fs); } } } } private void button1_Click(object sender, EventArgs e) { ReadExcelFiles(); ProcessLeaveInfo(); CalculateMealFees(); DisplayResults(); } private void button2_Click(object sender, EventArgs e) { ExportToExcel(); } } } ``` ### 代码说明 1. **ReadExcelFiles**:读取`学生表.xlsx`和`请假表.xlsx`文件。 2. **ProcessLeaveInfo**:处理请假信息,对请假时间内的用餐情况进行调整。 3. **CalculateMealFees**:按照早、中、晚餐点统计每个学生的餐费。 4. **DisplayResults**:在界面的`DataGridView`中显示统计结果。 5. **ExportToExcel**:将统计结果导出到Excel文件。 ### 注意事项 - 要确保Excel文件的路径和文件名正确。 - 需根据实际的Excel文件格式和列名对代码进行调整。 - 放假时间和餐费价格可在代码中进行配置。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值