None of the existing payment gateways will allow you to store a credit card number. But, as long as you and your client understand the security risks of doing this, there are a number of ways you could achieve it, though all will require you writing a new payment gateway to collect the card details.
My advice would be to write a completely new gateway, perhaps using the Authorize.NET gateway as a template. In terms of storing the card details I would suggest:
1) Do not store the entire credit card number in one place (the database or otherwise), especially if the database is on a shared hosting environment. Consider splitting it into two parts storing the first part in the DB and the second to be (optionally encrypted and) emailed to your store administrator. If you really cannot split the card number then encryption is required as an absolute minimum.
2) This is a no brainer, but make sure your client is using SSL for the page hosting the credit card details collection form.
3) Beware of any data protection issues that might apply as well. Some payment gateways require your systems to undergo audits for security before they will allow you to take payments in this way (this is the case with Protx for example).