المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : طلب مساعدة بمسألة برمجة


JAXS
03-22-2009, 09:18 AM
هاي لكل الشباب والصبايا بالمنتدى وخاصة لطلاب البرمجة


عندي مسألتين لصديق الي بدو حل الهم بسرعة كتييييييييييير لو سمحتو

فياريت يلي بيعرف يحل هالمسألتين يحاول انو يعطيني الحل اليوم

ومشكورين سلفاَ


المسألة الأولى:
تريد شركة حساب الرواتب الشهرية لموظفيها الذين ينقسمون إلى أربع فئات:
1. إداريين: ذوي دخل شهري يزداد بحسب عدد سنوات الخدمة.
2. مبرمجين: رواتبهم مرتبطة بعدد ساعات عملهم الكلية في الشهر.
3. مديرو مبيعات: لكل منهم راتب شهري ثابت + عمولة ثابتة على قيمة المبيعات.
4. عمَال: ورواتبهم مرتبطة بعدد القطع المنتجة الكلية من قبل العامل في الشهر.
اكتب برنامجاً لحساب الرواتب لكافة الفئات السابقة بلغة C# باستخدام الصفوف التالية:
• الصف تاريخ Date والذي يضم الحقول الصحيحة التالية من النمط (int): اليوم، الشهر، السنة.
• الصف المعلومات الشخصية PersonalInfo والذي يضم الحقول التالية من النمط (string): الاسم، الكنية، العنوان.
• الصف المجرد موظف Employee والذي يضم الحقول التالية : المعلومات الشخصية، تاريخ بدء العمل، نمط الموظف (string)، الراتب (float).
والصفوف المشتقة التالية من الصف Employee :
• الصف موظف إداري AdminEmployee والذي يضم الحقول التالية: عدد سنوات العمل (int)، مقدار زيادة الراتب في السنة.
• الصف مبرمج Programmer والذي يضم الحقول التالية: عدد ساعات البرمجة (float)، سعر ساعة البرمجة (float).
• الصف مدير مبيعات SalesManager والذي يضم الحقول التالية: قيمة المبيعات (float)، النسبة المئوية للعمولة (float).
• الصف عامل Worker والذي يضم الحقول التالية: عدد القطع المنتجة (int)، أجرة القطعة المنتجة الواحدة (float).


الثوابت:
• الراتب الثابت FixedSalary ويبلغ 10000 ل.س.
• مقدار زيادة الراتب السنوية 500 ل.س.
• عمولة المبيعات ComissionValueوتبلغ 8 % من قيمة المبيعات.
• اجرة القطعة المنتجة ItemCostالمدفوعة للعامل 225 ل.س.
• اجرة ساعة العمل المدفوعة للمبرمج ProgHourCoast 650 ل.س.
 يجب أن تكون مخرجات البرنامج على النحو التالي:

First name: Tom
Last name: Lee
Address: 020-Saint Peter
Begin Date: 12/11/1993
Employee Type: Admin
Salary: 11000
=====================================
First name: Jose
Last name: Andryani
Address: 045- Arc street
Begin Date: 13/12/1989
Employee Type: Programmer
Salary: 40300
Price Hour: 650
Hours Numbers: 62
=====================================
First name: Mathias
Last name: Paulin
Address: Ampalot-Toulon
Begin Date: 8/2/1997
Employee Type: Sales Manager
Salary: 18000
Poundage value: 0.08
Sales amount: 125000
=====================================
First name: Cristoph
Last name: Destruel
Address: 031- Compiegne
Begin Date: 8/2/1998
Employee Type: WORKER
Salary: 6000
Items number: 90
Price item: 225





المسألة الثانية:
يوجد في شركة موبايل نوعين من الزبائن:
- زبون عادي (يدفع 4 للمكالمة من موبايل لموبايل و 6 للمكالمة من موبايل لأرضي).
- زبون مشترك يدفع اشتراك 1000 في كل شهر. يسمح له هذا الاشتراك بالتكلم 60 دقيقة أرضي و 60 دقيقة موبايل. عند انتهاء الـ 60 دقيقة أرضي يدفع بعدها 10 ليرات للدقيقة. وعند انتهاء الـ 60 دقيقة موبايل يدفع بعدها 8 ليرات للدقيقة موبايل.
والمطلوب:
1- عرّف الصف المجرد (Abstract Class ) Customer والذي له الخصائص التالية:
• الاسم Name
• الرصيد Balance
والطرق (Methods):
• DisplayInfo() والتي تطبع معلومات الزبون: الاسم والرصيد.
• RecordPayment(double amountPaid) والتي تُستدعى في كل مرة يقوم الزبون فيها بدفع مبلغ amountPaid فتقوم هذه الطريقة بإنقاص الرصيد بمقدار هذا المبلغ.
والطريقة المجردة (Abstract Method):
• RecordCall(byte callType, uint nMinutes) والتي تُعرّف في كل صف مشتق لحساب كلفة المكالمة وزيادتها لرصيد الزبون. حيث callType هو نوع المكالمة (0 موبايل و 1 أرضي)، و nMinutes هي عدد دقائق المكالمة.
2- عرّف الصف المشتق NormalCustomer من الصف Customer والذي له الطريقة (Method) التالية:
• RecordCall(byte callType, uint nMinutes) والتي تحسب قيمة المكالمة وفق ما يلي: إذا كانت المكالمة أرضي فسعر الدقيقة 6 أما إذا كانت موبايل فسعر الدقيقة 4. ثم تقوم بزيادة الرصيد بالمبلغ الناتج.
3- عرّف الصف المشتق SubscriberCustomer من الصف Customer والذي له الحقول والطرق التالية:
• LandMinutes وهي عدد دقائق الاتصال الأرضي للآن.
• MobileMinutes وهي عدد دقائق الاتصال موبايل للآن.
• RecordCall(byte callType, uint nMinutes) والتي تحسب قيمة المكالمة وفق ما يلي:
 إذا كان الاتصال أرضي: لايوجد كلفة للاتصال طالما عدد دقائق الاتصال الأرضي للآن أصغر أو تساوي 60 وإلا فسعر الدقيقة 10.
 إذا كان الاتصال موبايل: لايوجد كلفة للاتصال طالما عدد دقائق الاتصال موبايل للآن أصغر أو تساوي 60 وإلا فسعر الدقيقة 8.
4- تعريف الصف Company والذي له الحقول التالية والطرق التالية:
• private Customer [] Customers; // (مصفوفة من الزبائن)
• private int MaxCust; // (العدد الأعظمي للزبائن
• private int count=0; // (العدد الحالي)
• public Company (int MaxCust)
• public void Add(Customer c) لإضافة زبون جديد.
• public void DisplayInfo() لطباعة معلومات جميع الزبائن.
• public void SortByBalance() لفرز الزبائن تصاعدياً وفق الرصيد.
• public void SortByCustomerType() لفرز الزبائن حسب نوعهم.

وتكون الإجرائية Main
public static void Main()


{
Customer c;
Company p =new Company(3);
c = new SubscriberCustomer("Pierre Anshiloti");
p.Add(c);
c = new NormalCustomer("Paolo Maldini");
p.Add(c);
c = new SubscriberCustomer("Milan Rada");
p.Add(c);
p. SortByCustomerType();
p.DisplayInfo();
}



والمسائل بشكل ظابط موجودة بالمرفقات

يا ريت الحل السريع.... وشكراَ

JAXS
03-23-2009, 12:14 PM
ما حدا لحدا

نو بدي لبدي

ما حا لحا

Love Angel
03-23-2009, 01:12 PM
وهي حل المسالة الاولى
متل ما وعدتك
بس كرمال عيونك يا عبوووووووووود
روووووووح خليها تبين معك

Love Angel
03-23-2009, 01:14 PM
http://www.shamlover.com/uploaded//341/1237835531.doc

Love Angel
03-23-2009, 01:17 PM
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Company
{
class Date
{
int day, month, year;
public Date() { }
public int Day
{
set { day = value; }
get { return day; }
}
public int Month
{
set { month = value; }
get { return month; }
}
public int Year
{
set { year = value; }
get { return year; }
}
}

class PersonalInfo
{
string name, lname, address;
public PersonalInfo() { }
public string Name
{
set { name = value; }
get { return name; }
}
public string Lname
{
set { lname = value; }
get { return lname; }
}
public string Address
{
set { address = value; }
get { return address; }
}
}

class Employee
{
PersonalInfo employee=new PersonalInfo();
Date BeginDate=new Date();
string EmplyeeType;
Double Salary;
public Employee() { }

public void ReadOne()
{
Console.Write("Name : ");
employee.Name = Console.ReadLine();
Console.Write("Lname : ");
employee.Lname = Console.ReadLine();
Console.Write("Address : ");
employee.Address = Console.ReadLine();
//Console.WriteLine("Day : ");
BeginDate.Day = 16;
//Console.WriteLine("Month : ");
BeginDate.Month = 5;
//Console.WriteLine("Year : ");
BeginDate.Year = 1987;
//Console.WriteLine("Emplyeetype : ");
//Emplyeetype = Console.ReadLine();
Console.Write("Salary : ");
SAlary = Convert.ToDouble(Console.ReadLine());
}
public string Emplyeetype
{
set { EmplyeeType = value; }
get { return EmplyeeType; }
}
public Double SAlary
{
set { Salary = value; }
get { return Salary; }
}
public void Print()
{
Console.WriteLine("============================================");
Console.WriteLine("First name : "+employee.Name);
Console.WriteLine("Last name : "+employee.Lname);
Console.WriteLine("Address : "+employee.Address);
Console.WriteLine("Begin Date : "+BeginDate.Day+"/"+BeginDate.Month+"/"+BeginDate.Year);
Console.WriteLine("Employee Type : "+EmplyeeType);
Console.WriteLine("Salary : "+Salary);
//Console.WriteLine("============================================");
}



}

class AdminEmployee
{
Employee employee=new Employee();
int workyears;
int zeada = 500;
public AdminEmployee() { }
public int Workyears
{
set { workyears = value; }
get { return workyears; }
}
public void Read()
{
employee.ReadOne();
employee.Emplyeetype = "AdminEmployee";
Console.Write("WorkYears : ");
workyears = Convert.ToInt32(Console.ReadLine());
}
public void Print()
{
employee.Print();
Console.WriteLine("WorkYears : "+workyears);
Console.WriteLine("Zeada : "+500);
Console.WriteLine("============================================");
}
}

class Programmer
{
Employee employee = new Employee();
Double PriceHour = 650;
Double hoursNumbers;
public Programmer() { }

public Double HoursNumbers
{
set { hoursNumbers = value; }
get { return hoursNumbers; }
}
public void Read()
{
employee.ReadOne();
employee.Emplyeetype = "Programmer";
Console.Write("HoursNumbers : ");
hoursNumbers = Convert.ToInt32(Console.ReadLine());
}
public void Print()
{
employee.Print();
Console.WriteLine("HoursNumbers : " + hoursNumbers);
Console.WriteLine("PriceHour : " + 650);
Console.WriteLine("============================================");
}
}

class SalesManager
{
Employee employee=new Employee();
Double Poundagevalue = 0.08;
Double salesAmount;
public SalesManager() { }

public Double SalesAmount
{
set { salesAmount = value; }
get { return salesAmount; }
}
public void Read()
{
employee.ReadOne();
employee.Emplyeetype = "SalesManager";
Console.Write("SalesAmount : ");
salesAmount = Convert.ToInt32(Console.ReadLine());
}
public void Print()
{
employee.Print();
Console.WriteLine("SalesAmount : " + salesAmount);
Console.WriteLine("Poundagevalue : " + 0.08);
Console.WriteLine("============================================");
}
}

class Worker
{
Employee employee=new Employee();
int itemsNumber;
Double PriceItem = 225;
public Worker() { }

public Double ItemsNumber
{
set { ItemsNumber = value; }
get { return ItemsNumber; }
}
public void Read()
{
employee.ReadOne();
employee.Emplyeetype = "Worker";
Console.Write("ItemsNumber : ");
itemsNumber = Convert.ToInt32(Console.ReadLine());
}
public void Print()
{
employee.Print();
Console.WriteLine("ItemsNumber : " + itemsNumber);
Console.WriteLine("PriceHour : " + 225);
Console.WriteLine("============================================");
}
}

class Program
{
static void Main(string[] args)
{
AdminEmployee maher = new AdminEmployee();
maher.Read();
maher.Print();
Programmer man = new Programmer();
man.Read();
man.Print();
Worker man2 = new Worker();
man2.Read();
man2.Print();
SalesManager man3 = new SalesManager();
man3.Read();
man3.Print();

}
}
}

Love Angel
03-23-2009, 01:18 PM
ملاحظة : في كم شغلة عملتن متل ما فهمتن فاذا غير كانت
طريقتي خبرني

JAXS
03-23-2009, 02:20 PM
عراااااااااااااااااااااسي

والله كفو وعند وعدك

بس ضلت التانية بمعيتك

Love Angel
03-23-2009, 03:09 PM
خلينا نعطي فرصةة للشباب
خليهن يحاولوا
وين شبيحة البرمجة

JAXS
03-23-2009, 04:35 PM
خلينا نعطي فرصةة للشباب
خليهن يحاولوا
وين شبيحة البرمجة


لك شوووووووووو فرصة

طلب مستعجل هاد

بعدين ما حا لحا من طلاب البرمجة
كلهم نايمين

Bl@ck Angel
03-26-2009, 09:37 AM
شو يا مستر Love Angel شو صار معك حاجة تحرق أعصاب الشباب حط الحل و خلصنا
ليكون علامة البرمجة 94 أخدها بالواسطة ؟؟؟

JAXS
03-26-2009, 02:46 PM
شو يا مستر Love Angel شو صار معك حاجة تحرق أعصاب الشباب حط الحل و خلصنا
ليكون علامة البرمجة 94 أخدها بالواسطة ؟؟؟

له له له ... شو واسطة ..... لا تخاف love angel عطاني الحل بس فيس تو فيس وهاد هوي الحل



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace syriatel
{
class Customer
{
string name;
public double balance;
public Customer() { }
public string Name
{
set { name = value; }
get { return name; }
}
public double Balance
{
set { balance = value; }
get { return balance; }
}
public void Print()
{
Console.WriteLine("Customer Name : " +Name);
Console.WriteLine("Customer Balance : " +Balance);
}
public void RecordPayment(double amountPaid)
{
balance = balance - amountPaid;
}
}
class SubscriberCustomer : Customer
{
int LandMinutes, MobileMinutes;
public SubscriberCustomer(string name) { LandMinutes = 0; MobileMinutes = 0; Name = name; }
public void RecordCall(byte callType, uint nMinutes)
{
if (callType == 0)
{
MobileMinutes += Convert.ToByte( nMinutes);
if (MobileMinutes > 60)
{
balance += (nMinutes * 8);
}
}
if (callType == 1)
{
LandMinutes += Convert.ToByte( nMinutes);
if (LandMinutes > 60)
{
balance += (nMinutes * 10);
}
}
}
}
class NormalCustomer : Customer
{
public NormalCustomer(string N) { Name = N; }
public void RecordCall(byte callType, uint nMinutes)
{
if (callType == 0)
{
Balance += (nMinutes * 4);
}
if (callType == 1)
{
Balance += (nMinutes * 6);
}
}
}

class Company
{
private Customer [] Customers;
private int MaxCust;
private int count = 0;
public Company() { }
public Company (int maxCust)
{
MaxCust = maxCust;
Customers = new Customer[MaxCust];
}
public void Add(Customer c)
{
Customers[count] = new Customer();
if (MaxCust >= count)
{
if (c.GetType() == typeof(SubscriberCustomer))
Customers[count] = new SubscriberCustomer(c.Name);
else
Customers[count] = new NormalCustomer(c.Name);
Customers[count].Name = c.Name;
Customers[count].Balance = c.Balance;
count++;
}
else
Console.WriteLine(" OUT OF RANGE ");
}
public void DisplayInfo()
{
for (int i = 0; i < count; i++)
{
Console.WriteLine("========================================");
Console.WriteLine("Customer Name : "+Customers[i].Name);
Console.WriteLine("Customer Balance : "+Customers[i].Balance);
Console.WriteLine("Customer Type : " + Customers[i].GetType());
Console.WriteLine("========================================");
}
}
public void SortByBalance()
{
for (int i = 0; i < count-1; i++)
for (int j = i + 1; j < count; j++)
{
Customer temp = new Customer();
if (Customers[i].Balance > Customers[j].Balance)
{
temp = Customers[i];
Customers[i] = Customers[j];
Customers[j] = temp;
}
}

}
public void SortByCustomerType()
{
for (int i = 0; i < count-1; i++)
for (int j = i + 1; j < count; j++)
{
Customer temp = new Customer();
if (Customers[i].GetType() == typeof(SubscriberCustomer))
{
temp = Customers[i];
Customers[i] = Customers[j];
Customers[j] = temp;
}
}
}
}

class Program
{
static void Main(string[] args)
{
Customer c;
Company p = new Company(3);
c = new SubscriberCustomer("Pierre Anshiloti");
c.Balance = 900;
p.Add(c);
c = new NormalCustomer("Paolo Maldini");
p.Add(c);
c = new SubscriberCustomer("Milan Rada");
p.Add(c);
p.SortByCustomerType();
p.DisplayInfo();
}
}
}