Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Danh sách sinh viên,các bạn giúp mình với

  1. #1
    Ngày gia nhập
    12 2008
    Bài viết
    6

    Mặc định Danh sách sinh viên,các bạn giúp mình với

    Mình làm bài danh sách sinh viên,có câu xóa danh sách sinh viên mình bị lỗi,mình không xóa được ngẫu nhiên bất kỳ sinh viên mà phải xóa từ dưới lên trên,sinh viên thứ 1 mình không xóa được.Mình muốn xóa sinh viên bất kỳ thì phải làm sao.Các bạn giúp mình với
    Đây là code của mình

    C Code:
    1. #include<conio.h>
    2. #include<stdio.h>
    3. #include<string.h>
    4. #include<stdlib.h>
    5.  
    6. const int SIZE=100;
    7.  
    8. typedef struct sinhvien
    9. {
    10.     char mssv[8];
    11.     char hoten[30];
    12.     char ngaysinh[12];
    13.     char lop[8];
    14.     float toan,ly,hoa;
    15. };
    16.  
    17. void nhapthongtin(sinhvien &sv);
    18. void xuatthongtin(sinhvien sv, int x, int y);
    19. void nhaptatca(sinhvien sv[], int &n);
    20. void xuattatca(sinhvien sv[], int &n);
    21. void hoanvi(sinhvien &a,sinhvien &b);
    22. void sapxep(sinhvien sv[],int n);
    23. void hoanvikq(float &a,float &b);
    24. void xuattong2(sinhvien sv, int x, int y,float tong);
    25. void xuattong1(sinhvien sv[], int &n,float tong[]);
    26. void sskqht(sinhvien sv[],int &n,float tong[]);
    27. void search(sinhvien sv[],int n,char tim[8]);
    28. void update(sinhvien sv[],int n);
    29. int search1(sinhvien sv[],int n,char tim[8]);
    30. void addsv(sinhvien sv[],int &n);
    31. int search2(sinhvien sv[],int n,char tim[8]);
    32. void minussv(sinhvien sv[],int &n);
    33. void sapxepten(sinhvien sv[],int n);
    34. void main()
    35. {
    36.     clrscr();
    37.     sinhvien sv[SIZE];
    38.     float tong[SIZE];
    39.     int siso;
    40.     char tim[8];
    41.     int key,quit;
    42.     while(1)
    43.     {
    44.         do
    45.         {
    46.             clrscr();
    47.             printf("            Danh sach sinh vien ");
    48.             printf("\n\n1.Nhap danh sach sinh vien");
    49.             printf("\n2.Xuat danh sach sinh vien");
    50.             printf("\n3.Sap xep danh sach theo ho ten");
    51.             printf("\n4.Sap xep danh sach theo ket qua mon Toan");
    52.             printf("\n5.Sap xep danh sach theo ket qua hoc tap");
    53.             printf("\n6.Tim kiem sinh vien");
    54.             printf("\n7.Cap nhat thong tin sinh vien");
    55.             printf("\n8.Them sinh vien vao danh sach");
    56.             printf("\n9.Xoa sinh vien ra khoi danh sach");
    57.             printf("\n10.Thoat khoi chuong trinh");
    58.             printf("\n\nXin moi ban chon: ");
    59.             scanf("%d",&key);
    60.             switch(key)
    61.             {
    62.                 case 1:
    63.                 {
    64.                     nhaptatca(sv,siso);
    65.                     getch();
    66.                 }break;
    67.  
    68.                 case 2:
    69.                 {       clrscr();
    70.                     xuattatca(sv,siso);
    71.                     getch();
    72.                 }break;
    73.                 case 3:
    74.                 {
    75.                     clrscr();
    76.                     sapxepten(sv,siso);
    77.                     getch();
    78.  
    79.                 }break;
    80.                 case 4:
    81.                 {
    82.                     clrscr();
    83.                     sapxep(sv,siso);
    84.                     getch();
    85.                 }break;
    86.  
    87.                 case 5:
    88.                 {
    89.                     clrscr();
    90.                     sskqht(sv,siso,tong);
    91.                     getch();
    92.                 }break;
    93.  
    94.                 case 6:
    95.                 {
    96.                     clrscr();
    97.                     search(sv,siso,tim);
    98.                     getch();
    99.                 }break;
    100.  
    101.                 case 7:
    102.                 {       clrscr();
    103.                     update(sv,siso);
    104.                     getch();
    105.                 }break;
    106.  
    107.                 case 8:
    108.                 {       clrscr();
    109.                     addsv(sv,siso);
    110.                     getch();
    111.                 }break;
    112.  
    113.                 case 9:
    114.                 {       clrscr();
    115.                     minussv(sv,siso);
    116.                     getch();
    117.  
    118.                 }break;
    119.                 case 10:
    120.                 {
    121.                     quit=1;
    122.  
    123.                 }break;
    124.             }
    125.         }while(key<10&&key>0);
    126.     if(quit)
    127.         exit(0);
    128.     }
    129. }
    130.  
    131. void nhapthongtin(sinhvien &sv)
    132. {
    133.     float diem;
    134.     printf("\nNhap ma so sinh vien: ");
    135.     fflush(stdin);
    136.     gets(sv.mssv);
    137.     printf("\nNhap ho va ten sinh vien: ");
    138.     fflush(stdin);
    139.     gets(sv.hoten);
    140.     printf("\nNhap ngay sinh sinh vien: ");
    141.     fflush(stdin);
    142.     gets(sv.ngaysinh);
    143.     printf("\nNhap lop: ");
    144.     fflush(stdin);
    145.     gets(sv.lop);
    146.     printf("Nhap diem toan: ");
    147.     scanf("%f",&diem);
    148.     sv.toan=diem;
    149.     printf("\nNhap diem ly: ");
    150.     scanf("%f",&diem);
    151.     sv.ly=diem;
    152.     printf("\nNhap diem hoa: ");
    153.     scanf("%f",&diem);
    154.     sv.hoa=diem;
    155. }
    156.  
    157. void xuatthongtin(sinhvien sv, int x, int y)
    158. {
    159.     gotoxy(x+4,y);  puts(sv.mssv);
    160.     gotoxy(x+13,y); puts(sv.hoten);
    161.     gotoxy(x+27,y); puts(sv.ngaysinh);
    162.     gotoxy(x+41,y); puts(sv.lop);
    163.     gotoxy(x+49,y); printf("%.2f",sv.toan);
    164.     gotoxy(x+58,y); printf("%.2f",sv.ly);
    165.     gotoxy(x+65,y); printf("%.2f",sv.hoa);
    166. }
    167.  
    168. void nhaptatca(sinhvien sv[], int &n)
    169. {
    170.     do
    171.     {
    172.         printf("Nhap si so cua lop: ");
    173.         scanf("%d",&n);
    174.     }while(n<=0);
    175.  
    176.     for(int i=0; i<n; i++)
    177.     {
    178.         printf("\nSinh vien thu %d",i+1);
    179.         nhapthongtin(sv[i]);
    180.     }
    181. }
    182.  
    183. void xuattatca(sinhvien sv[], int &n)
    184. {
    185.  
    186.     int x=1,y=3;
    187.     printf("STT MSSV     HO VA TEN     NGAY SINH     LOP     TOAN     LY     HOA");
    188.     for(int i=0; i<n; i++)
    189.     {
    190.         gotoxy(x+1,y);
    191.         printf("%d",i+1); //so thu tu
    192.         xuatthongtin(sv[i],x,y++);
    193.     }
    194. }
    195. void hoanvi(sinhvien &a,sinhvien &b)
    196. {
    197.     sinhvien temp;
    198.     temp=a;
    199.     a=b;
    200.     b=temp;
    201. }
    202. void sapxep(sinhvien sv[],int n)
    203. {
    204.  
    205.     for(int i=0;i<n-1;i++)
    206.     {
    207.         for(int j=i+1;j<n;j++)
    208.         {
    209.             if(sv[i].toan<sv[j].toan)
    210.                 hoanvi(sv[j],sv[i]);
    211.         }
    212.     }
    213.     xuattatca(sv,n);
    214. }
    215. void hoanvikq(float &a,float &b)
    216. {
    217.     float temp;
    218.     temp=a;
    219.     a=b;
    220.     b=temp;
    221. }
    222. void xuattong2(sinhvien sv, int x, int y,float tong)
    223. {
    224.     gotoxy(x+4,y);  puts(sv.mssv);
    225.     gotoxy(x+13,y); puts(sv.hoten);
    226.     gotoxy(x+27,y); puts(sv.ngaysinh);
    227.     gotoxy(x+41,y); puts(sv.lop);
    228.     gotoxy(x+49,y); printf("%.2f",sv.toan);
    229.     gotoxy(x+58,y); printf("%.2f",sv.ly);
    230.     gotoxy(x+65,y); printf("%.2f",sv.hoa);
    231.     gotoxy(x+73,y); printf("%.2f",tong);
    232. }
    233. void xuattong1(sinhvien sv[], int &n,float tong[])
    234. {
    235.  
    236.     int x=1,y=3;
    237.     printf("STT MSSV     HO VA TEN     NGAY SINH     LOP     TOAN     LY     HOA     TONG");
    238.     for(int i=0; i<n; i++)
    239.     {
    240.         gotoxy(x+1,y);
    241.         printf("%d",i+1); //so thu tu
    242.         xuattong2(sv[i],x,y++,tong[i]);
    243.     }
    244. }
    245. void sskqht(sinhvien sv[],int &n,float tong[])
    246. {
    247.     for(int k=0;k<n;k++)
    248.     {
    249.         tong[k]=sv[k].toan+sv[k].ly+sv[k].hoa;
    250.     }
    251.     for(int i=0;i<n-1;i++)
    252.     {
    253.         for(int j=i+1;j<n;j++)
    254.         {
    255.             if(tong[i]<tong[j])
    256.             {
    257.                 hoanvi(sv[j],sv[i]);
    258.                 hoanvikq(tong[j],tong[i]);
    259.             }
    260.         }
    261.     }
    262.     xuattong1(sv,n,tong);
    263. }
    264.  
    265. void search(sinhvien sv[],int n,char tim[8])
    266. {
    267.     int x=1,y=3,p=0;
    268.     fflush(stdin);
    269.     printf("\n nhap vao sinh vien can tim:");
    270.     gets(tim);
    271.     for(int i=0;i<n;i++)
    272.     {
    273.         if(strcmp(sv[i].mssv,tim)==0)
    274.             {
    275.             xuatthongtin(sv[i],x,y);
    276.             p++;
    277.             }
    278.  
    279.     }
    280.     if(p==0)
    281.         printf("\n ko co sv nay");
    282. }
    283.  
    284. void update(sinhvien sv[],int n)
    285. {
    286.     char tim[8];float diem;
    287.     fflush(stdin);
    288.     printf("\n nhap vao sinh vien can thay doi thong tin:");gets(tim);
    289.     for(int i=0;i<n;i++)
    290.     {
    291.         if(strcmp(sv[i].mssv,tim)==0)
    292.         {
    293.             printf("\ndiem toan:");scanf("%f",&diem);
    294.             sv[i].toan=diem;
    295.             printf("\ndiem ly:");scanf("%f",&diem);
    296.             sv[i].ly=diem;
    297.             printf("\ndiem hoa:");scanf("%f",&diem);
    298.             sv[i].hoa=diem;
    299.         }
    300.     }
    301.         clrscr();
    302.     xuattatca(sv,n);
    303.  
    304. }
    305. int search1(sinhvien sv[],int n,char tim[8])
    306. {
    307.  
    308.     int p=0;
    309.     for(int i=0;i<n;i++)
    310.     {
    311.         if(strcmp(sv[i].mssv,tim)==0)
    312.         p=1;
    313.  
    314.     }
    315.     return p;
    316. }
    317.  
    318. void addsv(sinhvien sv[],int &n)
    319. {
    320.  
    321.     char tim[8];float diem;
    322.     fflush(stdin);
    323.     printf("\n nhap vao ma so:");
    324.     gets(tim);
    325.     if(search1(sv,n,tim)!=1)
    326.     {
    327.         strcpy(sv[n].mssv,tim);
    328.         printf("\nNhap ho va ten sinh vien: ");
    329.         fflush(stdin);
    330.         gets(sv[n].hoten);
    331.         printf("\nNhap ngay sinh sinh vien: ");
    332.         fflush(stdin);
    333.         gets(sv[n].ngaysinh);
    334.         printf("\nNhap lop: ");
    335.         fflush(stdin);
    336.         gets(sv[n].lop);
    337.         printf("Nhap diem toan: ");
    338.         scanf("%f",&diem);
    339.         sv[n].toan=diem;
    340.         printf("\nNhap diem ly: ");
    341.         scanf("%f",&diem);
    342.         sv[n].ly=diem;
    343.         printf("\nNhap diem hoa: ");
    344.         scanf("%f",&diem);
    345.         sv[n].hoa=diem;
    346.         n=n+1;
    347.         clrscr();
    348.         xuattatca(sv,n);
    349.     }
    350.  
    351.  
    352. }
    353. int search2(sinhvien sv[],int n,char tim[8])
    354. {
    355.  
    356.     int p=0;
    357.     for(int i=0;i<n;i++)
    358.     {
    359.         if(strcmp(sv[i].mssv,tim)==0)
    360.         p=i;
    361.  
    362.     }
    363.     return p;
    364. }
    365.  
    366. void minussv(sinhvien sv[],int &n)
    367. {
    368.  
    369.     char tim[8];
    370.     fflush(stdin);
    371.     printf("\n nhap vao ma so:");
    372.     gets(tim);
    373.     if(search2(sv,n,tim)>0)
    374.     {
    375.         for(int i=search2(sv,n,tim);i<n;i++)
    376.         {
    377.             strcpy(sv[i].mssv,sv[i+1].mssv);
    378.             strcpy(sv[i].hoten,sv[i+1].hoten);
    379.             strcpy(sv[i].ngaysinh,sv[i+1].ngaysinh);
    380.             strcpy(sv[i].lop,sv[i+1].lop);
    381.             sv[i].toan=sv[i+1].toan;
    382.             sv[i].ly=sv[i+1].ly;
    383.             sv[i].hoa=sv[i+1].hoa;
    384.         }
    385.         n=n-1;
    386.         clrscr();
    387.         xuattatca(sv,n);
    388.     }
    389.  
    390. }
    391.  
    392. void sapxepten(sinhvien sv[],int n)
    393. {
    394.     for (int i=0;i<n-1;i++)
    395.         for (int j=i+1;j<n;j++)
    396.         {
    397.             int ch = strcmp(sv[i].hoten,sv[j].hoten);
    398.             if (ch > 0)
    399.             {
    400.                 hoanvi(sv[i],sv[j]);
    401.             }
    402.         }
    403.     clrscr();
    404.     xuattatca(sv,n);
    405. }
    *Vui lòng bọc code vào tag code cho mọi người dễ theo dõi.
    Đã được chỉnh sửa lần cuối bởi QuangHoang : 09-02-2009 lúc 06:04 AM.

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Qua hàm nhập ta thấy sinh viên được nhaptatca từ vị trí 0. Vậy kết quả tìm kiếm ở hàm search2 của bạn cũng cần trả về vị trí 0 là vị trí đầu tiên.

    C Code:
    1. int search2(sinhvien sv[],int n,char tim[8])
    2. {
    3.  
    4.     int p=-1;                                ////////
    5.     for(int i=0;i<n;i++)
    6.     {
    7.         if(strcmp(sv[i].mssv,tim)==0)
    8.         p=i;
    9.  
    10.     }
    11.     return p;
    12. }
    13.  
    14. void minussv(sinhvien sv[],int &n)
    15. {
    16.  
    17.     char tim[8];
    18.     fflush(stdin);
    19.     printf("\n nhap vao ma so:");
    20.     gets(tim);
    21.     int t = search2(sv,n,tim);
    22.     if(t>=0)                           ///////
    23.     {
    24.         for (int i=t; i<n-1; i++)     ///////
    25.         {
    26.             strcpy(sv[i].mssv,sv[i+1].mssv);
    27.             strcpy(sv[i].hoten,sv[i+1].hoten);
    28.             strcpy(sv[i].ngaysinh,sv[i+1].ngaysinh);
    29.             strcpy(sv[i].lop,sv[i+1].lop);
    30.             sv[i].toan=sv[i+1].toan;
    31.             sv[i].ly=sv[i+1].ly;
    32.             sv[i].hoa=sv[i+1].hoa;
    33.         }
    34.         n--;
    35.         clrscr();
    36.         xuattatca(sv,n);
    37.     }
    38.  
    39. }

    Bài của bạn làm như vậy là khá rùi, tuy nhiên không tận dụng hết các hàm để phải viết nhiều hàm chức năng gần giống nhau, bạn chỉ cần linh hoạt hơn trong giá trị trả về và không xuất kết luận trong hàm thì ta có thể tận dụng nó tốt hơn trong các hàm tiếp sau, vd: hàm search() và hàm update().

  3. #3
    Ngày gia nhập
    12 2008
    Bài viết
    6

    Cám ơn bạn nhiều

Các đề tài tương tự

  1. Sắp xếp danh sách sinh viên theo thứ tự abc. Giúp mình sửa lỗi?
    Gửi bởi edogawaconan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 08-05-2012, 07:12 PM
  2. Xử lý danh sách sinh viên bằng liên kết đơn. Mong mọi người chỉ giúp
    Gửi bởi zalrol trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 18-01-2011, 08:07 PM
  3. Tối ưu code quản lý danh sách sinh viên. Mọi người giúp đỡ?
    Gửi bởi trieuvan.n01 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 08-01-2011, 08:10 PM
  4. Bài tập C: Danh sách sinh viên trên C, giúp mình sửa lỗi?
    Gửi bởi phamdankhoi trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 15-05-2009, 03:12 PM
  5. Tạo mảng chứa danh sách các sinh viên, giúp em với?
    Gửi bởi thanh_it trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 20-04-2009, 11:39 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn