|
|
- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -
|
|
|
กระทู้ #933 [C] (จาก IP: 203.113.32.13)
ช่วยหน่อยนะคะ ใกล้ส่งอาจานแล้วเปนโปรเจคใหญ่ด้วย(ใช้ข้อมูลประเภทstructure++pointer)
ออกแบบการเขียนโปรแกรม(source code)ซึ่งเก็บข้อมูลนักศึกษา10คน(ใน note pad++ดึงข้อมูลมาใช้)ข้อมูลประกอบด้วย 1.ชื่อ-นามสกุล 2.เพศ วันเกิด และอายุ 3.ประวัติการลงทะเบียนเรียนแต่ละรายวิชาทั้ง 2ภาคเรียน(ผลการเรียน) 4.เกรดเฉลี่ยแต่ละภาคเรียน++เกรดเฉลี่ยรวม 5.งานอดิเรก
|
จากคุณ
:
yui / kyzerser@hotmail.com [2007-02-19 01:03:34]
|
|
ความคิดเห็น #25398 (จาก IP: 203.146.147.190)
ถึงน้องๆนักเรียนนักศึกษา
ขอให้ลองทำกันดูก่อนนะครับ คิดเกมส์ง่ายๆเช่น เกมส์ Hi-low ใช้พวก ramdom เข้าช่วย หรือพวกเกมส์เป่ายิ่งฉุบแบบเล่นกะคอม หรือ อะไรอื่นๆง่ายๆ ที่ใกล้ตัว อาจหาตัวอย่างที่เป็นพวก ภาษาอื่นๆที่คล้ายๆกันมาดูก็ได้ เช่น เรียน c อาจจะไปดูโค้ดเกมส์ javascript แบบง่ายๆ มาแกะการทำงาน ออกมาเป็น flowchart แล้วค่อยมาเขียนบน c ลองคิดแล้วค่อยๆทำ กันไปครับ
ถ้าน้องไม่รู้จักคำความ ทำด้วยตัวเอง น้องก็ต้องยืมจมูกคนอื่นหายใจอยู่วันยังค่ำ มีคำถาม ติด error อะไรก็มาถามใน webboard ได้ คิดว่าคงมีคนใจดีมีเมตตา มาช่วยตอบ แต่หากประมาณว่า เขียนให้หน่อย ทำได้ด้วย ช่วยให้ได้ คงมีแต่คนเอือมระอา
อีกอย่างอยากฝากถึง บรรดา ครู อาจารย์ด้วย ผมเองก็เคยเป็นครูสอนครับ อย่าเร่งรัดเค้ามาก ไม่งั้นเด็กๆก็จะเกลียด programming ไม่อยากเรียน จนในที่สุด ผลร้ายก็จะตกอยู่กับเด็ก อาจจะเอาโค้ดของคนเก่งมาให้เค้าสอนเพื่อนๆคนที่ทำไม่ได้ด้วย ว่าเค้าคิดได้อย่างไร และทำได้ยังไง เพื่อให้เด็กสอนกันเองด้วย อันนี้เป็นแค่มุมมองผมนะครับ
ขอบคุณครับ |
จากคุณ
:
sup98 [2007-02-19 13:22:49]
|
|
ความคิดเห็น #25401 (จาก IP: 203.113.33.10)
อันนี้ลองทำกะเพื่อนดูมันยังงงอยู่อ่ะ ถ้าอยากจะเพิ่มให้มีรายวิชาแต่ละวิชาต้องทำยังงัย
#include<stdio.h> #include<string.h> #include<conio.h>
struct { char name[30],surname[30]; int ID,gender,dd,mm,yyyy,age,term,termsubj[8]; struct {char code[8];int credit; float grade;}regist[8][12]; float gpa; char hobby[30]; }std[11],*pstd[10];
int n,mode;// n=number of students void edit(); void finput(); void output(int n,int mode); void report(); void poutput(int n,int mode); void sort(); int rep(int j); void search(); void calGPA(int n); void month(int n); void save();
//************************************************************************************************************ void calGPA(int n) { int i,j; float weight=0,sumcredit=0,credit; for(i=0;i<std[n].term;i++) for(j=0;j<std[n].termsubj[i];j++) { credit = std[n].regist[i][j].credit; weight=weight+(credit*std[n].regist[i][j].grade); sumcredit=sumcredit+credit; } std[n].gpa=weight/sumcredit; } //************************************************************************************************************ void report() { int i,j,n; FILE *fp; fp= fopen("Report.dat","w"); system("cls"); for(i=0;i<10;i++) { printf("%-2d ",i+1); output(i,1); }
printf("Report menu\n1 : Report one student data\n2 : Report all student data\nPlease enter 1 or 2 :"); scanf("%d",&n);
if(n==1) //Report one { printf("Choose student number :"); scanf("%d",&n); n=n-1; output(n,0); //wirte data to file fprintf(fp,"%d",std[n].ID);
if (std[n].gender==1) fprintf(fp,"\nMr "); else if(std[n].gender==2) fprintf(fp,"\nMiss "); fprintf(fp,"%s ",std[n].name); //fprintf(fp,"\ngender : %d",std[n].gender); fprintf(fp,"\nBirthdate : %d %d %d",std[n].dd,std[n].mm,std[n].yyyy); fprintf(fp,"\nterm : %d ",std[n].term); for(i=0;i<std[n].term;i++) { fprintf(fp,"\nsubject : %d",std[n].termsubj[i]); for(j=0;j<std[n].termsubj[i];j++) fprintf(fp,"\n%s %d %.2f", std[n].regist[i][j].code, std[n].regist[i][j].credit, std[n].regist[i][j].grade); } fprintf(fp,"\n Cumulative GPA : %.2f",std[n].gpa); fprintf(fp,"\nHobby : %s\n\n",std[n].hobby); } else if(n==2)//Report all { for(n=0;n<10;n++) { output(n,0); //Write data to file fprintf(fp,"%d",std[n].ID);
if (std[n].gender==1) fprintf(fp,"\nMr "); else if(std[n].gender==2) fprintf(fp,"\nMiss "); fprintf(fp,"%s ",std[n].name); //fprintf(fp,"\ngender : %d",std[n].gender); fprintf(fp,"\nBirthdate : %d %d %d",std[n].dd,std[n].mm,std[n].yyyy); fprintf(fp,"\nterm : %d ",std[n].term); for(i=0;i<std[n].term;i++) { fprintf(fp,"\nsubject : %d",std[n].termsubj[i]); for(j=0;j<std[n].termsubj[i];j++) fprintf(fp,"\n%s %d %.2f", std[n].regist[i][j].code, std[n].regist[i][j].credit, std[n].regist[i][j].grade); } fprintf(fp,"\n Cumulative GPA : %.2f",std[n].gpa); fprintf(fp,"\nHobby : %s\n\n",std[n].hobby); } } fclose(fp); } //************************************************************************************************************ void sort() {
int i,j,style; char cont; do{
//reset array of pointer system("cls"); for(i=0;i<n;i++) pstd[i]=&std[11]; printf("\n\nSort mode : \n1 : Sort by ID\n2 : Sort by name\n3 : Sort by GPA\nPlease enter 1-3 :"); scanf("%d",&mode); printf("\nSort style\n1 : Increasing\n2 : Decreasing\nPlease enter 1 or 2 :"); scanf("%d",&style); if(style==1) { for(i=0;i<n;i++) if(i==0) { pstd[0]=&std[0];
for(j=0;j<n;j++) if((std[j].ID<pstd[i]->ID&&mode==1) || (strncmp(std[j].name,pstd[i]->name,30)<0&&mode==2) || (std[j].gpa<pstd[i]->gpa&&mode==3)) pstd[i]=&std[j]; } else if(i!=0) { //Assign the initial value of P[i] by selecting from the unselected (by P) member in A. for(j=0;j<n;j++) if(rep(j)==0) pstd[i]=&std[j]; for(j=0;j<n;j++) // When there is one A less than value in *P[i] , P changes to point at the new A. if(((std[j].ID<pstd[i]->ID&&mode==1) || (strncmp(std[j].name,pstd[i]->name,30)<0&&mode==2) || (std[j].gpa<pstd[i]->gpa&&mode==3))&& rep(j)==0) pstd[i]=&std[j]; } } else if(style==2) { for(i=0;i<n;i++) if(i==0) { pstd[0]=&std[0];
for(j=0;j<n;j++) if((std[j].ID>pstd[i]->ID&&mode==1) || (strncmp(std[j].name,pstd[i]->name,30)>0&&mode==2) || (std[j].gpa>pstd[i]->gpa&&mode==3)) pstd[i]=&std[j]; } else if(i!=0) { //Assign the initial value of P[i] by selecting from the unselected (by P) member in A. for(j=0;j<n;j++) if(rep(j)==0) pstd[i]=&std[j]; for(j=0;j<n;j++) // When there is one A less than value in *P[i] , P changes to point at the new A. if(((std[j].ID>pstd[i]->ID&&mode==1) || (strncmp(std[j].name,pstd[i]->name,30)>0&&mode==2) || (std[j].gpa>pstd[i]->gpa&&mode==3))&& rep(j)==0) pstd[i]=&std[j]; } } for(i=0;i<n;i++) poutput(i,1);
printf("\nContinue sorting? y/n :"); do{ //cont='a'; scanf("%c",&cont); scanf("%c",&cont);
}while(cont!='y'&&cont!='n'); }while(cont=='y'); }
//************************************************************************************************************ int rep(int j) { int i,repeat=0; for(i=0;i<10;i++) if(pstd[i]==&std[j]) repeat++; return(repeat); } //************************************************************************************************************ void search() { int resultNum,schID,i,j; char schName,cont; float schGPA; do{ resultNum=0; //reset array of pointer for(i=0;i<n;i++) pstd[i]=&std[11]; system("cls"); printf("\n\nSearch menu : Please enter 1 - 4\n1 : ID\n2 : First character of name\n3 : GPA more than ...\n4 : GPA less than ...\nChoose number : "); scanf("%d",&mode);
printf("\nEnter value to search :"); switch(mode) { case 1: {scanf("%d",&schID);};break; case 2: {scanf("%s",&schName);};break; case 3: {scanf("%f",&schGPA);};break; case 4: {scanf("%f",&schGPA);};break; } for(i=0;i<10;i++) { for(j=0;j<10;j++) if(((mode==1&&schID==std[j].ID)||(mode==2&&schName==std[j].name[0])||(mode==3&&schGPA<=std[j].gpa)||(mode==4&&schGPA>=std[j].gpa))&&rep(j)==0) { pstd[i]=&std[j]; resultNum++; j=10;//break j out of loop. } } printf("\nFind %d result",resultNum); if(resultNum!=0&&resultNum!=1) printf("s\n"); for(i=0;i<resultNum;i++) poutput(i,1);
//Search menu printf("\n\nContinue searching? y/n :"); do{ // scanf("%c",&cont); scanf("%c",&cont); }while(cont!='y'&&cont!='n'); }while(cont=='y');
} //************************************************************************************************************ void edit() {
int i,j,n; char cont;
//choose one of students to edit. do{ //present exist student data in brief for(i=0;i<10;i++) { printf("%-2d ",i+1); output(i,1); } printf("\nWhich student do you want to edit :"); scanf("%d",&n); n=n-1; //adjust index and order of variable to be equal. output(n,0);//show full data of the student. do{ printf("\n\nEdit menu : Please enter 1 - 5\n1 : ID\n2 : Gender and Name\n3 : Birthdate\n4 : Registration\n5 : Hobby\n Choose number : "); scanf("%d",&mode); switch(mode){ case 1:{ printf("\nID :"); scanf("%d",&std[n].ID); } break; case 2:{ printf("\nGender (1 for male ,2 for female):"); scanf("%d",&std[n].gender); printf("\nName :"); scanf("%s",&std[n].name); printf("\nSurname :"); scanf("%s",&std[n].surname); strcat(std[n].name," "); strcat(std[n].name,std[n].surname); }break; case 3:{ printf("\nBirthdate (dd mm yyyy) :"); scanf("%d %d %d",&std[n].dd,&std[n].mm,&std[n].yyyy);}break; case 4:{ printf("\nNumber of semester :"); scanf("%d",&std[n].term); for(i=0;i<std[n].term;i++) { printf("\nnumber of subjects in term %d :",i+1); scanf("%d",&std[n].termsubj[i]); for(j=0;j<std[n].termsubj[i];j++) { printf("\nSubject code :"); scanf("%s",&std[n].regist[i][j].code); printf("\nSubject credit :"); scanf("%d",&std[n].regist[i][j].credit); printf("\nSubject GPA :"); scanf("%f",&std[n].regist[i][j].grade); } } }break; case 5:{ printf("\nHobby :"); gets(std[n].hobby); gets(std[n].hobby);}break;
}//end of switch. printf("Continue editing the current student? y/n :"); do{ scanf("%c",&cont); //scanf("%c",&cont); }while(cont!='y'&&cont!='n'); }while(cont=='y');//end of do while1
printf("Continue editing anything? y/n :"); do{ scanf("%c",&cont); scanf("%c",&cont); }while(cont!='y'&&cont!='n'); }while(cont=='y');//end of do while menu } //************************************************************************************************************ void finput() { int i,j,k; // char temp; FILE *fp; fp= fopen("stdData.txt","r"); for(i=0;i<n;i++) { fscanf(fp,"%d",&std[i].ID); fscanf(fp,"%s %s",&std[i].name,&std[i].surname); strcat(std[i].name," "); strcat(std[i].name,std[i].surname); fscanf(fp,"%d",&std[i].gender); fscanf(fp,"%d %d %d",&std[i].dd,&std[i].mm,&std[i].yyyy); fscanf(fp,"%d",&std[i].term);
for(j=0;j<std[i].term;j++) { fscanf(fp,"%d",&std[i].termsubj[j]); for(k=0;k<std[i].termsubj[j];k++) { fscanf(fp,"%s",&std[i].regist[j][k].code); fscanf(fp,"%d",&std[i].regist[j][k].credit); fscanf(fp,"%f",&std[i].regist[j][k].grade); } }
//Let fgets skip the enter sign and point to the new line. fgets(std[i].hobby,3,fp); fgets(std[i].hobby,sizeof(std[i].hobby),fp); } fclose(fp); }
//************************************************************************************************************ void main() { char cont; n=10; finput(); //use var mode to be an index before using as menu mode for(mode=0;mode<10;mode++) calGPA(mode); //Main menu of program. do{ system("cls"); printf("*********************************************************"); printf("\n*\t\t Student Data Manager\t\t\t*"); printf("\n*********************************************************"); printf("\n*\t\tWhat do you want to do?\t\t\t*"); printf("\n*\t\t1 : Search\t\t\t\t*"); printf("\n*\t\t2 : Edit\t\t\t\t*"); printf("\n*\t\t3 : Sort\t\t\t\t*"); printf("\n*\t\t4 : Report\t\t\t\t*"); printf("\n*\t\t5 : Save changes\t\t\t*"); printf("\n*\t\t6 : Quit\t\t\t\t*"); printf("\n*********************************************************"); printf("\n\t\tPlease enter 1-6 :"); //printf(""); scanf("%d",&mode); switch(mode) { case 1: search();break; case 2: edit();break; case 3: sort();break; case 4: report();break; case 5: save();break; default : break; } printf("\n\nContinue working? y/n :"); do{ scanf("%c",&cont); scanf("%c",&cont); }while(cont!='y'&&cont!='n'); }while(cont=='y'); system("cls"); } //************************************************************************************************************ void month(int n) { switch (n) { case 1 : printf("Jan");break; case 2: printf("Feb");break; case 3: printf("Mar");break; case 4: printf("Apr");break; case 5: printf("May");break; case 6: printf("June");break; case 7: printf("July");break; case 8: printf("Aug");break; case 9: printf("Sep");break; case 10: printf("Oct");break; case 11: printf("Nov");break; case 12: printf("Dec");break; } }
void output(int n,int mode) { int i,j;
if(mode==1) { printf("%d",std[n].ID); printf("\t%-30s ",std[n].name); printf("\t%.2f\n",std[n].gpa); }
else if(mode==0) { printf("\n\n\n%d",std[n].ID); if (std[n].gender==1) printf("\nMr "); else if(std[n].gender==2) printf("\nMiss ");
printf("%s ",std[n].name); //printf("\ngender : %d",std[n].gender); printf("\nBirthdate : %d ",std[n].dd); month(std[n].mm); printf(" %d",std[n].yyyy); printf("\nterm : %d ",std[n].term); for(i=0;i<std[n].term;i++) { printf("\n\nsubject : %d",std[n].termsubj[i]); for(j=0;j<std[n].termsubj[i];j++) printf("\n%s %d %.2f", std[n].regist[i][j].code, std[n].regist[i][j].credit, std[n].regist[i][j].grade); } printf("\nCumulative GPA : %.2f",std[n].gpa); printf("\nHobby : %s",std[n].hobby); } } //************************************************************************************************************ void poutput(int n,int mode) { int i,j;
if(mode==0) { printf("\n%d",pstd[n]->ID); printf("\n%s ",pstd[n]->name); if (pstd[n]->gender==1) printf("\nMr "); else if(pstd[n]->gender==2) printf("\nMiss "); // printf("\ngender : %d",pstd[n]->gender); printf("\nBirthdate : %d",pstd[n]->dd); month(pstd[n]->mm); printf("\nBirthdate : %d",pstd[n]->yyyy); printf("\nterm : %d ",pstd[n]->term); //i=0;j=0; for(i=0;i<pstd[n]->term;i++) { printf("\nsubject : %d",pstd[n]->termsubj[i]); for(j=0;j<pstd[n]->termsubj[i];j++) printf("\n%s %d %.2f", pstd[n]->regist[i][j].code, pstd[n]->regist[i][j].credit, pstd[n]->regist[i][j].grade); } printf("\nCumulative GPA : %.2f",pstd[n]->gpa); printf("\nHobby : %s",pstd[n]->hobby); } else if(mode==1) { printf("\n%d",pstd[n]->ID); printf("\t%-30s ",pstd[n]->name); printf("\t%.2f ",pstd[n]->gpa);
} } //************************************************************************************************************
void save() { int i,j,k; FILE *fp; fp = fopen("stdData.txt","w");
for(i=0;i<n;i++) { fprintf(fp,"%d\n",std[i].ID); fprintf(fp,"%s\n",std[i].name); fprintf(fp,"%d\n",std[i].gender); fprintf(fp,"%d %d %d\n",std[i].dd,std[i].mm,std[i].yyyy); fprintf(fp,"%d\n",std[i].term);
for(j=0;j<std[i].term;j++) { fprintf(fp,"%d\n",std[i].termsubj[j]); for(k=0;k<std[i].termsubj[j];k++) { fprintf(fp,"%s ",std[i].regist[j][k].code); fprintf(fp,"%d ",std[i].regist[j][k].credit); fprintf(fp,"%.2f \n",std[i].regist[j][k].grade); } } fprintf(fp,"%s\n",std[i].hobby); } fclose(fp); printf("Data saved\n"); }
|
จากคุณ
:
yui [2007-02-19 19:28:01]
|
|
ความคิดเห็น #25402 (จาก IP: 203.146.147.190)
คนทำยังจะงง แล้วคนอื่นจะไม่งง เอาเหอ
ถ้าไม่อยากงง ให้เขียน flowchart ก่อนการเขียนโปรแกรม มันช่วยได้แยะ เวลาเราทำความเข้าใจกับการทำงานของมัน
ผมไล่คร่าวๆ น่าจะเพิ่ม struct {char code[8];int credit; float grade;}registA[8][12];
เข้าไป มังครับ เดาว่าเป็นแต่ละวิชา แต่เพิ่มอย่างเดียวไม่ได้ ต้องไปเพิ่มโค้ดในส่วนอื่นๆด้วย |
จากคุณ
:
sup98 [2007-02-20 08:54:21]
|
|
|
- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -
|
|
|
|
|