考试要求我为拍卖的互动板创建一个程序:
一家拍卖公司在他们的拍卖室里有一个交互式拍卖板,允许买家在拍卖过程中的任何时候出价。在拍卖开始之前,卖家把他们的物品放在拍卖室里,每个物品上都有一个独特的编号(项目编号)。在交互式拍卖板系统中,需要建立以下每一项的详细信息:项目编号、投标数量、说明和保留价格。最初的投标数量被设置为零。在拍卖过程中,买家可以查看拍卖室中的物品,然后在拍卖室的交互式拍卖板上出价。每个买方都有一个唯一的号码来识别(买方号码)。买方所需要做的就是输入他们的买家号码,项目编号和他们的出价。他们的出价必须高于任何现有的出价。在拍卖结束时,公司会检查所有的物品,并标记那些标价超过拍卖储备的物品。任何出售的物品将收取最后出价的10%的费用,支付给拍卖公司。为拍卖公司编写和测试一个或多个程序。
您需要完成这三项任务。每项任务都必须经过充分的测试。任务1-拍卖成立。对拍卖中的每一件物品,应记录项目编号、说明和保留价格。投标数量设置为零。拍卖中必须至少有10件物品。任务2-买方出价。买方应该能够找到一个项目,并查看项目编号,描述和目前的最高出价。买方然后可以输入他们的买方号码和出价,这必须高于任何以前记录的出价。每次一个新的出价被记录,该项目的投标次数增加一个。买家可以多次出价一个项目,他们可以出价许多项目。任务3-在拍卖结束时。使用任务2的结果,识别已达到预定价格的项目,将其标记为已售出,将最后出价的10%计算为拍卖公司的费用,并将其添加到所有已售出项目的总费用中。显示此费用总额。显示所有未达到预定价格的项目的项目编号和最终出价。显示没有收到标书的任何项目的项目编号。显示已售出的物品数量、未达到预定价格的物品数量和没有投标的物品数量。
这是我在VB.net控制台中的解决方案。我怎么能做得更好?
'Task 1'
Dim enteries, d As Integer
d = 1
Console.WriteLine("How many total entries?")
enteries = Console.ReadLine
While enteries < 10
Console.WriteLine("Number of enteries should be greater than 10, please try again")
enteries = Console.ReadLine
End While
Dim item_num(enteries), num_bids(enteries) As Integer
Dim reserve_price(enteries) As Single
Dim description(enteries) As String
For c = 1 To enteries
Console.WriteLine("Enter item description")
description(c) = Console.ReadLine
Console.WriteLine("Enter the item number")
item_num(c) = Console.ReadLine
Console.WriteLine("Enter reserve price") 'The reserve price is the minimum amount the seller is willing to accept'
reserve_price(c) = Console.ReadLine
num_bids(c) = 0
Next
For c = 1 To enteries
For d = 1 To enteries - 1
If item_num(d) = item_num(d + 1) Then
While item_num(d) = item_num(d + 1)
Console.Write("Value " & d + 1)
Console.WriteLine(" Is duplicate, enter a new value")
item_num(d + 1) = Console.ReadLine
End While
End If
Next
Next
'Task 2'
Dim buyer_num(enteries) As Integer
Dim bid(enteries), highest(enteries) As Single
Dim extra_bids As String
For c = 1 To enteries
Console.WriteLine("Enter number of the item from 1-" & enteries)
d = Console.ReadLine
Console.WriteLine("Product is: " & description(d))
Console.WriteLine("Item number is: " & item_num(d))
Console.WriteLine("Current highest bid: " & bid(d))
Console.WriteLine("Enter buyer number")
buyer_num(d) = Console.ReadLine
Console.WriteLine("Enter your bid")
bid(d) = Console.ReadLine
If bid(d) > highest(d) Then
highest(d) = bid(d)
End If
num_bids(d) = num_bids(d) + 1
Console.WriteLine("Make more bids? Enter Yes/No")
extra_bids = Console.ReadLine
While extra_bids = "Yes"
Console.WriteLine("Current highest bid is " & highest(c))
Console.WriteLine("Enter bid")
bid(d) = Console.ReadLine
If bid(d) > highest(d) Then
highest(d) = bid(d)
Else
While bid(d) < highest(d)
Console.WriteLine("Bid cannot be less than the previous bid, please enter a higher value")
bid(d) = Console.ReadLine
End While
highest(d) = bid(d)
End If
Console.WriteLine("Make more bids? Enter Yes/No")
extra_bids = Console.ReadLine
End While
Next
'Task 3'
Dim final_price(enteries), comp_fee(enteries), total_fee As Single
Dim items_sold, not_sold, no_bids As Integer
Dim sold_status(enteries) As String
For c = 1 To enteries
If highest(c) >= reserve_price(c) Then
sold_status(enteries) = "Sold"
comp_fee(c) = 10 / 100 * highest(c)
final_price(c) = highest(c) + comp_fee(c)
total_fee = total_fee + final_price(c)
items_sold = items_sold + 1
Else
not_sold = not_sold + 1
Console.WriteLine(item_num(c) & " Did not reach reserve price")
Console.WriteLine("Their final bid was " & highest(c))
End If
If num_bids(c) = 0 Then
Console.WriteLine(item_num(c) & "recieved no bids")
no_bids = no_bids + 1
End If
Next
Console.WriteLine("Total fee for all sold items is " & total_fee)
Console.WriteLine("Number of items sold = " & items_sold)
Console.WriteLine("Number of items not sold = " & not_sold)
Console.WriteLine("Number of items with no bids = " & no_bids)
Console.ReadKey()发布于 2019-03-23 06:03:01
好吧,所以我承认我现在在一些最佳实践上有点生疏,但我还是要这么做。
首先,这整个事情需要包装在一个sub中,我想。
第二,当我读到你需要创作的东西的描述时,它对我大喊“物体!”--我的意思是,你有一个交互式应用程序,需要跟踪拍卖物品。每个项目都有几个属性。听起来像是面向对象设计的基础,不是吗?例如:
Public Class AuctionItem
Public Property description As String
Public Property reservePrice As Integer
Public Property numberOfBids As Integer
Public Property currentBid As Integer
Public Property currentBidder As Integer
End Class所以就在大门外,现在你有了拍卖物品的结构,然后再做其他的事情。每个项目都有属性。现在你只需要处理一下你说的房间的清单
Dim firstRoom As New List(Of AuctionItem)无视最低的参赛要求,你可以直接创造你的拍卖-
Dim firstRoom As New List(Of AuctionItem)
Dim numberOfEntries As Integer
Console.WriteLine("How many total entries?")
numberOfEntries = Console.ReadLine
For i As Integer = 1 To numberOfEntries
firstRoom.Add(New AuctionItem)
Console.WriteLine("Enter item description")
firstRoom(i).description = Console.ReadLine
Console.WriteLine("Enter reserve price") 'The reserve price is the minimum amount the seller is willing to accept'
firstRoom(i).reservePrice = Console.ReadLine
Next懂得我的意思吗?现在你分配项目编号,当投标人想要投标的时候,你只需要访问那个对象并得到你需要的东西。
我注意到的另一件小事是,您没有输入检查条目--比如我想说我的项目号是“2”--程序会抛出一个未处理的错误和崩溃。您需要一个整数,所以您需要检查接收到一个整数。
抱歉,我现在只有这些。
https://codereview.stackexchange.com/questions/215657
复制相似问题