Εργασία στη C

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
ConstantinosNos
Δημοσιεύσεις: 1
Εγγραφή: 06 Ιουν 2016 02:51

Εργασία στη C

Δημοσίευση από ConstantinosNos » 06 Ιουν 2016 03:47

Καλά ξημερώματα σε όλους!Είμαι καινούριος εδώ και γράφω αυτό το ποστ με σκοπό τη βοήθειά σας σε μια εργασία μου,η οποία έχει ως εξής:
Στην εργασία αυτή θα προσομοιώσετε τη λειτουργία καταγραφής, ενημέρωσης και έκδοσης λογαριασμών μιας εταιρίας κινητής τηλεφωνίας. Πιο συγκεκριμένα να υλοποπιήσετε 3 αρχεία πηγαίου κώδικα (.c) και αντίστοιχα εκτελέσιμα.
 symvolaio.c
 kartokiniti.c
 manager.c ( λειτουργεί ως διεπαφή μεταξύ των αρχείων δεδομένων και των δύο προηγούμενων αρχείων κώδικα, καθώς και τα τα ενεργοποιεί στην αρχή μέσω της fork-exec)
Αρχεία εισόδου:
 programmata.txt
Έχει μορφή (και έχει μόνο 2 γραμμές):
V120 s 20 120 120 0.04 0.05 CU k 0.08 0.09
που μεταφράζεται ως εξής: Το V120 είναι πρόγραμμα συμβολαίου (s) με πάγιο 20 ευρώ το μήνα, με 120 δωρεάν λεπτά και 120 sms, και τα επιπλέον χρεώνονται με 0.04 ευρώ το κάθε λεπτό ομιλίας και 0.05 ευρώ το κάθε sms. Το CU είναι καρτοκινητό (k) και η χρέωσηζ θα είναι 0.08 ευρώ το κάθε λεπτό ομιλίας και 0.09 ευρώ το κάθε sms.
 pelates.txt
Έχει μορφή :
6911111111 V120 6922222222 CU . . .
που μεταφράζεται ως εξής: Το 6911111111 είναι κινητό του προγράμματος συμβολαίου V120 (περιγράφεται παραπάνω). Το 6922222222 είναι καρτοκινητό CU.
 kiniseis.txt
Έχει μορφή :
6911111111 esteile sms
6911111111 milise 15 lepta
6922222222 esteile sms
6922222222 milise 7 lepta
6922222222 ananeosi 10 euro pliromes posa.txt 6922222222 ypoloipo ekkatharisi apodesmeusi . . .
Tο πρόγραμμά σας θα πρέπει να υποστηρίζει τη σωστή ενημέρωση των λογαριασμών που αντιστοιχεί στις 9 λειτουργίες που φαίνονται στο ανωτέρω αρχείο:
1. αποστολή sms από χρήστη συμβολαίου
2. ομιλία χρήστη συμβολαίου
3. αποστολή sms από χρήστη καρτοκινητού (θα ενημερώνει αν εστάλει ή όχι, λόγω χαμηλού υπολοίπου)
4. ομιλία χρήστη καρτοκινητού (θα ενημερώνει αν μετά το τέλος της κλήσης το υπόλοιπο έγινε αρνητικό, οπότε και δε θα επιτρέπονται άλλες κλήσεις ή μηνύματα, μέχρι να γίνει ανέωση χρόνου και το υπόλοιπο γίνει θετικό)
5. ανανέωση χρόνου για καρτοκινητά
6. εκτύπωση ποσών πληρωμής για όλους τους χρήστες συμβολαίου (στο τέλος του μήνα)
7. επιστροφή υπολοίπου για χρήστες καρτοκινητού
8. μηδενισμός μετρητών (εκκαθάριση) χρηστών συμβολαίου (στην αρχή του μήνα)
9. αποδέσμευση όλων των δομών
10. γενίκευση προγράμματος για πολλά προγράμματα καρτοκινητής και πολλά προγράμματα συμβολαίου (αρχείο programmata.txt, με πάνω από δύο γραμμές)


so far,αυτός είναι ο κώδικάς μου

Κώδικας: Επιλογή όλων

#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#include<windows.h>
#include<stdlib.h>
struct subscriber
&#123;
char phonenumber&#91;9&#93;;
float amount;
&#125;s;
void addrecords&#40;&#41;;
void listrecords&#40;&#41;;
void modifyrecords&#40;&#41;;
void payment&#40;&#41;;
char get;
int main&#40;&#41;
&#123;	int password;
	int phonenumber;
	char choice;



	system&#40;"cls"&#41;;

	printf&#40;"\n\n\n\n\n\n\n\n\n**********************************************************************"&#41;;
	printf&#40;"\n\t\t---TELECOMMUNICATION COMPANY SYSTEM---"&#41;;
	printf&#40;"\n\t\t****************************************************************"&#41;;
	Sleep&#40;2000&#41;;
	getch&#40;&#41;;
    system&#40;"cls"&#41;;
	while &#40;1&#41;
	&#123;
		system&#40;"cls"&#41;;
		printf&#40;"\n enter\n A &#58; Prosthese neo arithmo.\n L &#58; Katagrafh arithmwn"&#41;;
		printf&#40;"\n M &#58; Tropopoihse arithmwn.\n P &#58; Plhrwmh"&#41;;
		choice=getche&#40;&#41;;
		choice=toupper&#40;choice&#41;;
		switch&#40;choice&#41;
		&#123;
			case 'P'&#58;
				payment&#40;&#41;;break;
			case 'A'&#58;
				addrecords&#40;&#41;;break;
			case 'L'&#58;
				listrecords&#40;&#41;;break;
			case 'M'&#58;
				modifyrecords&#40;&#41;;break;
			case 'E'&#58;
				system&#40;"cls"&#41;;
				printf&#40;"\n\n\t\t\t\tEUXARISTOUME"&#41;;
				Sleep&#40;2000&#41;;
				exit&#40;0&#41;;
				break;
			default&#58;
				system&#40;"cls"&#41;;
				printf&#40;"Lathos eisodos"&#41;;
				printf&#40;"\nPathste opoiodhpote koumpi gia na sunexisete"&#41;;
				getch&#40;&#41;;
		&#125;
	&#125;
&#125;
void addrecords&#40;&#41;
&#123;
	FILE *f;
	char test;
	f=fopen&#40;"c&#58;/pelates_10.txt","ab+"&#41;;
	if&#40;f==0&#41;
	&#123;   f=fopen&#40;"c&#58;/pelates_10.txt","wb+"&#41;;
		system&#40;"cls"&#41;;
		printf&#40;"Parakalw perimenete"&#41;;
		printf&#40;"/nPathste opoiodhpote koumpi gia na sunexisete"&#41;;
		getch&#40;&#41;;
	&#125;
	while&#40;1&#41;
	&#123;
		system&#40;"cls"&#41;;
		printf&#40;"\n Plhktrologiste ton arithmo&#58;"&#41;;
		scanf&#40;"%s",&s.phonenumber&#41;;
		fflush&#40;stdin&#41;;
		printf&#40;"\n Plhktrologiste to poso&#58;"&#41;;
		scanf&#40;"%f",&s.amount&#41;;
		fwrite&#40;&s,sizeof&#40;s&#41;,1,f&#41;;
		fflush&#40;stdin&#41;;
		system&#40;"cls"&#41;;
		printf&#40;"1 To arxeio prostethike me epituxia"&#41;;
		printf&#40;"\n Press esc key to exit, any other key to add other record&#58;"&#41;;
		test=getche&#40;&#41;;
		if&#40;test==27&#41;
			break;
	&#125;
	fclose&#40;f&#41;;
&#125;
void listrecords&#40;&#41;
&#123;
	FILE *f;
	int i;
	if&#40;&#40;f=fopen&#40;"c&#58;/pelates_10.txt","rb"&#41;&#41;==NULL&#41;
		exit&#40;0&#41;;
	system&#40;"cls"&#41;;
	printf&#40;"Phone Number\tAmount\n"&#41;;
	for&#40;i=0;i<79;i++&#41;
		printf&#40;"-"&#41;;
	while&#40;fread&#40;&s,sizeof&#40;s&#41;,1,f&#41;==1&#41;
	&#123;
		printf&#40;"\n%-10s\t\t%-20s\t\tRs. %.2f /-",s.phonenumber,s.amount&#41;;
	&#125;
	printf&#40;"\n"&#41;;
	for&#40;i=0;i<79;i++&#41;
		printf&#40;"-"&#41;;

fclose&#40;f&#41;;
getch&#40;&#41;;
&#125;


void searchrecords&#40;&#41;
&#123;
	FILE *f;
	char phonenumber&#91;20&#93;;
	int flag=1;
	f=fopen&#40;"c&#58;/pelates_10.txt","rb+"&#41;;
	if&#40;f==0&#41;
		exit&#40;0&#41;;
	fflush&#40;stdin&#41;;
	system&#40;"cls"&#41;;
	printf&#40;"Enter Phone Number to search in our database"&#41;;
	scanf&#40;"%s", phonenumber&#41;;
	while&#40;fread&#40;&s,sizeof&#40;s&#41;,1,f&#41;==1&#41;
	&#123;
		if&#40;strcmp&#40;s.phonenumber,phonenumber&#41;==0&#41;
		&#123;	system&#40;"cls"&#41;;
			printf&#40;" Record Found "&#41;;
			printf&#40;"\n\nPhonenumber&#58; %s\nName&#58; %s\nAmount&#58; Rs.%0.2f\n",s.phonenumber,s.amount&#41;;
			flag=0;
			break;
		&#125;
		else if&#40;flag==1&#41;
		&#123;	system&#40;"cls"&#41;;
			printf&#40;"Requested Phone Number Not found in our database"&#41;;
		&#125;
	&#125;
	getch&#40;&#41;;
	fclose&#40;f&#41;;
&#125;
void modifyrecords&#40;&#41;
&#123;
	FILE *f;
	char phonenumber&#91;20&#93;;
	long int size=sizeof&#40;s&#41;;
	if&#40;&#40;f=fopen&#40;"c&#58;/pelates_10.txt","rb+"&#41;&#41;==NULL&#41;
		exit&#40;0&#41;;
	system&#40;"cls"&#41;;
	printf&#40;"Enter phone number of the subscriber to modify&#58;"&#41;;
	scanf&#40;"%&#91;^\n&#93;",phonenumber&#41;;
	fflush&#40;stdin&#41;;
	while&#40;fread&#40;&s,sizeof&#40;s&#41;,1,f&#41;==1&#41;
	&#123;
		if&#40;strcmp&#40;s.phonenumber,phonenumber&#41;==0&#41;
		&#123;
			system&#40;"cls"&#41;;
			printf&#40;"\n Eisagete arithmo tilefwnou&#58;"&#41;;
			scanf&#40;"%s",&s.phonenumber&#41;;
			printf&#40;"\n Eisagete poso&#58; "&#41;;
			scanf&#40;"%f",&s.amount&#41;;
			fseek&#40;f,-size,SEEK_CUR&#41;;
			fwrite&#40;&s,sizeof&#40;s&#41;,1,f&#41;;
			break;
		&#125;
	&#125;
	fclose&#40;f&#41;;
&#125;
void payment&#40;&#41;
&#123;
	FILE *f;
	char phonenumber&#91;20&#93;;
	long int size=sizeof&#40;s&#41;;
	float amt;
	int i;
	if&#40;&#40;f=fopen&#40;"c&#58;/pelates_10.txt","rb+"&#41;&#41;==NULL&#41;
		exit&#40;0&#41;;
	system&#40;"cls"&#41;;
	printf&#40;"Enter phone number of the subscriber for payment"&#41;;
	scanf&#40;"%&#91;^\n&#93;",phonenumber&#41;;
	fflush&#40;stdin&#41;;
	while&#40;fread&#40;&s,sizeof&#40;s&#41;,1,f&#41;==1&#41;
	&#123;
		if&#40;strcmp&#40;s.phonenumber,phonenumber&#41;==0&#41;
		&#123;
			system&#40;"cls"&#41;;
			printf&#40;"\n Phone No.&#58; %s",s.phonenumber&#41;;
			printf&#40;"\n Trexon poso&#58; %f",s.amount&#41;;
			printf&#40;"\n"&#41;;
			for&#40;i=0;i<79;i++&#41;
				printf&#40;"-"&#41;;
			printf&#40;"\n\nEissagete to poso plirwmis &#58;"&#41;;
			fflush&#40;stdin&#41;;
			scanf&#40;" %f",&amt&#41;;
			s.amount=s.amount-amt;
			fseek&#40;f,-size,SEEK_CUR&#41;;
			fwrite&#40;&s,sizeof&#40;s&#41;,1,f&#41;;
			break;
		&#125;
	&#125;
	system&#40;"cls"&#41;;
	printf&#40;"Euxaristoume %s "&#41;;
	getch&#40;&#41;;
	fclose&#40;f&#41;;
&#125;

πως μπορώ να τα διαχωρίσω σε 3 αρχεία;Αny ideas? :roll:

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες