Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据库或文件是否更适合存储不同的用户输入,然后检索值以查找平均值或总和?_C# - Fatal编程技术网

C# 数据库或文件是否更适合存储不同的用户输入,然后检索值以查找平均值或总和?

C# 数据库或文件是否更适合存储不同的用户输入,然后检索值以查找平均值或总和?,c#,C#,这是一个独立的应用程序,数据不需要在以后保存,数据也不会在用户之间共享,只需一个用户输入数据并进行评估,用户就可以记录结果,但这些数据都不需要在以后存储到应用程序中 这是一个两阶段的评估,第一阶段要求用户填写许多表格,其中包含列的结构细节,具体取决于他们有多少列,第二阶段需要将其中一些列值求和,有些需要求平均值,然后在最终表格上显示评估的最终值 每个表单中只输入数字,结果也将以数字的形式显示在图形上。大约有30个用户输入文本框,这些文本框被输入到一个输入表单中,从父表单的按钮弹出,然后对每个父表

这是一个独立的应用程序,数据不需要在以后保存,数据也不会在用户之间共享,只需一个用户输入数据并进行评估,用户就可以记录结果,但这些数据都不需要在以后存储到应用程序中

这是一个两阶段的评估,第一阶段要求用户填写许多表格,其中包含列的结构细节,具体取决于他们有多少列,第二阶段需要将其中一些列值求和,有些需要求平均值,然后在最终表格上显示评估的最终值

每个表单中只输入数字,结果也将以数字的形式显示在图形上。大约有30个用户输入文本框,这些文本框被输入到一个输入表单中,从父表单的按钮弹出,然后对每个父表单上的每个列执行第一阶段评估。使用EasyTabs解决方案将每个父表单渲染到一个新选项卡上,创建一个C#应用程序,使用我在线找到的WinForms-YouTube[^]中的EasyTabs创建Chrome样式的选项卡

我是C#的绝对初学者,所以我不知道如何从每个表单中获取一个值,并将总和或平均值显示在最终表单上,如果我不知道在运行时每个用户将有多少表单,因为每个用户将有不同的数量,我想这可能是运行时的某种循环,但我只是不确定那会是什么样子

在与一位朋友交谈后,他们推荐了一个带有保存和刷新按钮的表单,在该表单中,数据保存到一个文件中,然后检索会更好,但据说需要从每个表单中提取10个不同的用户输入值,然后取平均值或求和值,我开始学习StreamReader和StreamWriter以及文件在C#中的工作方式,但是很难弄清楚如何在文件中布局数据,如何让C#将正确的值相加等等

解决这个问题的最佳方法是什么

谢谢您的帮助。

如果“表单”是指WinForms对表单的定义(基本上是一个新窗口),那么我建议您看看如何从一个表单到另一个表单获取数据

若要仅接受数字,如果希望允许空输入,可以使用正则表达式验证;如果希望至少有一个数字,可以使用正则表达式验证。如果您想同时允许负数,则它是
^(\+\124;-)?[0-9]$
。注意:所有这些都允许前导零。对于小数,还需要允许句点<代码>^(\+|-)?[0-9]*(\.[0-9]+)?$。如果你还需要什么,请仔细阅读正则表达式。可以帮助您设计和测试它们

要从文本框中获取数字,需要解析文本框中的文本。dotNet已经具备了很多这方面的功能。例如,如果希望它抛出异常
Int32.Parse()
。其他人也类似。查看MSDN文档以了解如何使用它们

至于平均值:创建一个数据库,连接到它,然后使用它来计算一个数字的平均值,这看起来确实是一种非常迂回的方法。在编程中,你告诉计算机该做什么。所以,如果有人让你计算平均值,你会把这些数字写在一本书里,然后寄给别人帮你计算吗?当然不是。
您可以将代码中的所有数字相加,然后除以数字的数量。但有一个更简单的解决办法。将所有数字添加到a中,调用它的
.Sum()
方法,然后除以它的
.Count()
方法的返回值

仅当您希望在用户输入之间关闭程序或记录输入时,才需要将数据保存到文件。
不过,从文件中写入和读取数字相当简单。请看一下Microsoft提供的这些教程:。写入文件使用与System.Console完全相同的方法,只是使用文件流而不是StdIO


至于数据布局,有几个sane变体。对于一些简单的东西,您可以自己制作(即,文件中的位置指示数据的去向,或者每个数据点前面都有一个描述符,例如
inputA:24
)。对于更复杂的数据,我会考虑为您的数据创建一个类,然后序列化数据,例如使用流行的NeNtStJSON JSON库或XML,并且不用担心文件是如何构造的。这是针对代码的特定问题。谢谢,我真的很感谢你的全面回答,我已经成功地从一个窗口获取了另一个窗口的值,我也同意数据库是一种迂回的方法。然而,由于每个用户的窗口“表单”数量不同,因此添加到列表中的值的数量不是一个固定的数量,因此我试图找出如何告诉C#遍历每个窗口,从该窗口中选择值,将其添加到列表中,找到平均值,并将其显示在最后一个窗口的文本框中。@EXCENT04如果用户一次只能输入一个值,为什么要打开不同的窗口。你的整个问题在我看来有点像糟糕的UI设计。你为什么如此热衷于拥有多个窗口?我同意,我认为我的UI设计可能相当糟糕。但原因是因为每个窗口(选项卡)都是针对一个列的,用户输入该列的数据这是窗口(选项卡)上大约20个文本框的输入和30个文本框的结果,然后进行计算以对该列进行局部强度评估