Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: [ Solved ] Xin sửa giúp bài :quản lý sách thư viện

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

    Mặc định [ Solved ] Xin sửa giúp bài :quản lý sách thư viện

    1. Viết chương trình quản lý sách trong thư viện, mỗi cuốn sách bao gồm các thông tin sau:
    Mã sách: số nguyên
    Tên sách: chuỗi
    Tác giả: chuỗi
    Số lượng: số nguyên
    Cài đặt các hàm sau:
    • Xem thông tin 1 cuốn sách dựa vào mã sách
    • Tìm cuốn sách có số lượng nhiều nhất và xuất tất cả thông tin liên quan đến cuốn sách này
    • Tính tổng số sách có trong thư viện
    • Sắp xếp các cuốn sách tăng dần theo mã sách

    Các bạn xem dùm mình và chỉ giúp mình câu:Tìm cuốn sách có số lượng nhiều nhất và xuất tất cả thông tin liên quan đến cuốn sách này.thanks
    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<alloc.h>
    #include<stdlib.h>
    
    #define TRUE 1
    #define FALSE 0
    
    typedef struct sach
    { 	int masach;
    	char tensach[20];
    	char tentacgia[20];
    	int soluong;
    };
    
    struct node
    {	sach info;
    	struct node *next;
    };
    
    typedef node *NODEPTR;
    
    NODEPTR getnode(void)
    {	NODEPTR p;
    	p=(NODEPTR)malloc(sizeof(struct node));
    	return(p);
    }
    
    void initialize(NODEPTR *plist)
    {	*plist=NULL;
    }
    
    int empty(NODEPTR *plist)
    { return(*plist == NULL ? TRUE : FALSE);
    }
    
    void push(NODEPTR *plist,sach x)
    {	NODEPTR p;
    	p=getnode();
    	p->info=x;
    	p->next=*plist;
    	*plist=p;
    }
    
    void traverse(NODEPTR *plist)
    {	NODEPTR p;
    	int stt=0;
    	p=*plist;
    	if(p==NULL)
    		printf("khong co cuon sach nao trong thu vien!!!\n");
    	else
    	{	while(p!=NULL)
    		{	printf("\n %d %8d %17s %17s %5d",stt++,p->info.masach,p->info.tensach,p->info.tentacgia,p->info.soluong);
    			p=p->next;
    		}
    	}
    }
    
    NODEPTR search(NODEPTR *plist,int x)
    {	NODEPTR p;
    	p=*plist;
    	while(p->info.masach!=x&&p!=NULL)
    		p=p->next;
    	return(p);
    }
    
    NODEPTR searchmax(NODEPTR *plist,int max)
    {	NODEPTR p;
    	max=0;
    	p=*plist;
    	for(p=*plist;p->next!=NULL;p=p->next)
    	{	max=p->info.soluong;
    
    }
    
    void selectionsort(NODEPTR *plist)
    {	NODEPTR p,q,pmin;
    	sach min;
    	for(p=*plist;p->next!=NULL;p=p->next)
    	{	min=p->info;
    		pmin=p;
    		for(q=p->next;q!=NULL;q=q->next)
    			if(min.masach>q->info.masach)
    			{	min=q->info;
    				pmin=q;
    			}
    		pmin->info=p->info;
    		p->info=min;
    	}
    }
    
    NODEPTR total(NODEPTR *plist)
    {	NODEPTR p,t=0;
    	for(p=*plist;p->next!=NULL;p=p->next)
    		t+=p->info.soluong;
    	return(t);
    }
    
    void main()
    {	NODEPTR plist;
    	sach s;
    	NODEPTR p;
    	int point,menu;
    	clrscr();
    	initialize(&plist);
    	do
    	{   //clrscr();
    		printf("\n\n");
    		printf("\nCHUONG TRINH QUAN LY SACH THU VIEN\n");
    		printf("Cac chuc nang\n");
    		printf("1.xem danh sach cac sach\n");
    		printf("2.them sach vao danh sach\n");
    		printf("3.xem thong tin 1 cuon sach theo masach\n");
    		printf("4.tim cuon sach co soluong nhiu nhat & xem thong tin cua no\n ");
    		printf("5.tinh tong so sach\n");
    		printf("6.sap xep tang dan theo masach\n");
    		printf("7.thoat\n");
    		printf("Chuc nang ban chon la:");
    		scanf("%d",&menu);
    		switch(menu)
    		{
    			case 1:
    			{	printf("xem danh sach cac sach\n");
    				printf("STT  Masach       Tensach            Tentacgia      Soluong\n");
    				traverse(&plist);
    				break;
    			}
    			case 2:
    			{	printf("1.them sach vao danh sach\n");
    				printf("nhap vao masach:");
    				scanf("%d",&s.masach);
    				printf("nhap vao tensach:");
    				scanf("%s",&s.tensach);
    				printf("nhap vao tentacgia:");
    				scanf("%s",&s.tentacgia);
    				printf("nhap vao soluong:");
    				scanf("%d",&s.soluong);
    				push(&plist,s);
    				break;
    			}
    			case 3:
    			{	printf("3.xem thong tin 1 cuon sach bang masach\n");
    				printf("\n masach can tim:");
    				scanf("%d",&s.masach);
    				p=search(&plist,s.masach);
    				if(p==NULL)
    					printf("ko co sach theo masach %d can tim",s.masach);
    				else
    				{	printf("masach %d co trong danh sach",s.masach);
    					printf("STT  Masach       Tensach            Tentacgia      Soluong\n");
    					traverse(&plist);
    				}
    				break;
    			}
    			case 4:
    			{	printf("4.tim sach co soluong nhiu nhat va in ra thong tin ve sach do\n");
    
    				break;
    			}
    			case 5:
    			{	printf("5.tinh tong so sach co trong thu vien\n");
    				printf("tong so sach la:%d",total(&plist));
    				break;
    			}
    			case 6:
    			{	printf("6.sap xep sach theo ma sach\n");
    				selectionsort(&plist);
    				printf("danh sach theo masach tu nho-->lon sau khi duoc sap xep\n");
    				traverse(&plist);
    				break;
    			}
    			case 7:
    			{	printf("thoat");
    				break;
    			}
    		}
    	}
    	while(menu!=7);
    }
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    04 2008
    Bài viết
    336

    Code:
    NODEPTR searchmax(NODEPTR *plist,int max)
    {	NODEPTR p;
    	max=0;
    	p=*plist;
    	for(p=*plist;p->next!=NULL;p=p->next)
    	{	max=p->info.soluong;  }
    
    }
    chài ... code này bạn tự viết hay của ai viết mà có cái lỗi thiếu dấu ngoặc vậy ?
    code ra gió bão

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

    thiếu sót....mình muốn hỏi 2 hàm là total và searchmax cua mình só sai gì ko?
    bác cũng trả lời dùm bài bên C.thanks

  4. #4
    Ngày gia nhập
    09 2007
    Bài viết
    724

    C Code:
    1. //với hàm này của bạn thì nó sẽ trả về giá trị infor.soluong cuối cùng của list của bạn.
    2.  
    3. NODEPTR searchmax(NODEPTR *plist,int max)
    4. {   NODEPTR p;
    5.     max=0;
    6.     p=*plist;
    7.     for(p=*plist;p->next!=NULL;p=p->next)
    8.     {   max=p->info.soluong;}
    9.  
    10. }
    11. //nên sửa thành thế này.
    12. NODEPTR searchmax(NODEPTR *plist,int max)
    13. {   NODEPTR p, pResult;
    14.     max=0;
    15.     p = *plist;
    16.        pResult = p;
    17.     for(;p->next!=NULL;p=p->next)
    18.        {
    19.             if(max < p->info.soluong) // nếu giá trị hiện hành max nhỏ hơn giá trị soluong tại con trỏ đang xét (p) thì lưu lại giá tri của con trỏ đó.
    20.           {
    21.                 pResult = p; // lưu lại p hiện hành  
    22.                 max=p->info.soluong;}
    23.         }
    24.        
    25.  
    26. //hàm trên không biết bạn muốn lấy về cái gì nhưng ở đây zkday sẽ lấy về  p có giá trị MAX
    27.        return pResult;
    28. }
    29. // hàm này không hiểu mục đích của bạn là muốn làm gì nhưng đọc qua thấy là bạn tính tổng số lượng  có trong list;
    30. //nên zkday sửa lại như sau:
    31. int total(NODEPTR *plist)
    32. {   NODEPTR p;
    33.         int t = 0;
    34.     for(p=*plist;p->next!=NULL;p=p->next)
    35.         t+=p->info.soluong;
    36.     return(t);
    37. }


    chúc bạn thành công.

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

    thanks...mình sẽ sửa lại
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

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

  1. Cần giúp đỡ add Slideshow viết bằng Jquery vào MVC 4 !!!
    Gửi bởi steven2211 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 21-07-2013, 03:16 PM
  2. Roadshow – Hình thức quảng cáo hiệu quả.
    Gửi bởi thoa.etv trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 10-10-2012, 10:58 AM
  3. viết chương trình quản lý khách sạn sử dụng kế thừa và đa xạ
    Gửi bởi andythieu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 25-01-2011, 10:51 AM
  4. Xin sửa giúp bài struct :quản lý sách thư viện
    Gửi bởi mynameisrat trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 20-09-2008, 02:38 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