| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1519 人关注过本帖
标题:求大佬修改一下或者解释一下
取消只看楼主 加入收藏
我是锤头
Rank: 1
等 级:新手上路
帖 子:6
专家分:5
注 册:2018-12-12
收藏
 问题点数:0 回复次数:2 
求大佬修改一下或者解释一下
如何构建一个总目录,选择录入项目,然后提示录入,完成后返回总目录,在显示总目录 然后在选着别的项目比如查看 删除项目;
怎么搭建这个要求 解释下理论也行 没思路





程序代码:
/*

 * films3.c

 *

 *  Created on: 2018年12月19日

 *      Author: Administrator

 */
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "List.h"

/*    */
/*void showmoives(Item item); */
void Showmovies(Item item);
char * s_gets(char * st,int n);


/*main  */
int main(void)
{
    List movies;
    Item temp;
    InitializeList(&movies);

    if(ListIsfull(&movies))
      {
        fprintf(stderr,"No memory list available! Bye! \n");
                exit(1);
      }

    puts("Enter first movie title: \n");
    while (s_gets(temp.title,TSIZE) != NULL && temp.title[0] != '\0')
    {
        puts("Enter your rating<0-10> \n");
        scanf("%d",&temp.rating);
        while(getchar() !='\n')
            continue;
        if(AddItem(temp,&movies) == false)
        {
            fprintf(stderr,"Problem allocation memory!\n"); // stderr mean
            break;
        }
        if(ListIsfull(&movies))
        {
            puts("The List is now full!! \n");
            break;
        }
        puts("Enter next movies title(empty line to stop:");
    }

    /*显示 */
    if(ListIsempty(&movies))
       printf("No data entered.");
    else
    {
        printf("Here is the movie list:\n");
              Traverse(&movies,Showmovies);
    }



    printf("You entered %d movies.\n",ListItemCount(&movies));

    /*清理 */
    EmptyTheList(&movies);
    printf("Bye!\n");

   return 0;

}

void Showmovies(Item item)
{
    printf("Movies: %s Rating: %d\n",item.title,item.rating);

}
/**/
char * s_gets(char *st,int n)
{
    char * ret_val;
    char * find;

    ret_val=fgets(st,n,stdin);
     if(ret_val)
     {
        find = strchr(st,'\n');
        if(find)
            *find='\0';
        else
            while(getchar() !='\n')
            continue;
     }

    return ret_val;

}


/*List.c*/
/*

 * List.c

 *

 *  Created on: 2018年12月19日

 *      Author: Administrator

 */

/*#include<stdio.h>
#include[color=#800000]<stdlib.h>
#include <stdbool.h>
#include"List.h"
[/color]*/
/*

 *

 typedef int BOOL;
#define true 1
#define false 0
*
*/
/*接口函数  */
static void CopyToNode(Item item,Node *pnod);



/*void InitializeList( List * plist)
{
    *plist == NULL;
}
*/
void InitializeList(List * plist)
{
    *plist = NULL;
}

/*链表为空,返回true */
_Bool ListIsempty(const List * plist)
{
    if(*plist == NULL)
                return true;
            else
                return false;
}




/*链表满,返回true*/
_Bool ListIsfull(const List *plist)
{
            Node *pt;
            _Bool full;
            pt=(Node *)malloc(sizeof(Node));
            if(pt == NULL)
                full = true;
            else
                full = false;

            return full;
}




/*返回节点数量  */
unsigned int ListItemCount (const  List * plist)
{
    unsigned int count=0;

            Node * pnode=* plist;//设置链表


           while(pnode != NULL)
           {
             ++count;
             pnode=pnode->next;

           }

            return count;
}






/*创建储存项的的节点,并将其添加至有plist指向链表末尾(较慢的实现 )*/
bool AddItem(Item item,List *plist)
{
    Node * pnew ,* scan;

             scan = (*plist);
            pnew=(Node *)malloc(sizeof(Node));
            if(pnew == NULL)
                return false;
            CopyToNode(item,pnew);
            pnew->next=NULL;
            if(scan==NULL)      /*空链表所以把pnew放到链表的开头*/
                *plist = pnew;
            else
            {
                while(scan->next != NULL)
                    scan=scan->next;/*找到链表末尾*/
                scan->next=pnew;/* 把pnew赋值scan.next*/
            }
            return true;
}





/*局部函数定义*/
//static void CopyToNode(item,pnew)
/*

 *

 {
pnew->next = NULL;
if(scan == NULL)
    *plist = pnew;
else
  {
    while(scan->next != NULL)
        scan =scan->next;
        scan->next = pnew;
  }


 retun true;
}
*/

/*访问每个函数并执行pfun指向的函数 */
void Traverse(const List * plist ,void (*pfun)(Item item))
{
    Node *pnode = *plist;

            while(pnode != NULL)
            {
                (*pfun)(pnode->item);/*把函数应运于链表的每一项 */
                pnode= pnode->next;/*前进到下一项 */
            }
}







/*释放malloc分配的内存*/
/*   */
void EmptyTheList(List * plist)
{
    Node * psave;
            while(*plist != NULL)
            {
                psave = (*plist)->next;
                free(plist);
                *plist=psave;
            }
}



static void CopyToNode(Item item,Node *pnod)
{
    pnod->item =item;
}




程序代码:
/*

 * List.h

 *

 *  Created on: 2018年12月19日

 *      Author: Administrator

 */

#ifndef LIST_H_
#define LIST_H_
#include <stdbool.h>
/*enum bool {false,true};*/

/*特定程序声明*/
#define TSIZE 45
struct film
{
    char title[TSIZE];
    unsigned int rating;
};

/*一般类型定义*/

typedef struct film Item;

typedef struct node
{

    Item item;
    struct node *next;
} Node;

typedef Node * List;

/*初始化函数*/
void InitializeList(List * plist);

bool ListIsempty(const List *plist);
bool ListIsfull(const List * plist);
unsigned int ListItemCount(const List *plist);
bool AddItem(Item item,List *plist);

void Traverse(const List *plist,void(*pfun)(Item item));
void EmptyTheList(List *plist);

#endif /* LIST_H_ */
搜索更多相关主题的帖子: List void Item NULL Node 
2019-01-03 11:17
我是锤头
Rank: 1
等 级:新手上路
帖 子:6
专家分:5
注 册:2018-12-12
收藏
得分:0 
新手一个 希望录入数据直接进ACCESS 大体的思路能描述下,实现了在贴进来
2019-01-03 11:34
我是锤头
Rank: 1
等 级:新手上路
帖 子:6
专家分:5
注 册:2018-12-12
收藏
得分:0 
回复 3楼 wp231957
大佬 是想加进去数据库 类似Access ,上面的程序只是初步的程序,有什么推荐的书或者程序 可以在加些数据库的程序链接在一起
2019-01-04 14:05
快速回复:求大佬修改一下或者解释一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.134381 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved