用vc实现备忘录功能

#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <stdlib.h>
#include<conio.h>
#define NULL 0
#define LEN sizeof(struct content)
struct content
{
 int num;        //编号

 char title[20];//标题

 char body[800];//正文
 
 char alerter[30]; //提醒时间

 struct content *next;
};//定义一个结构题

int TOTAL_NUM = 0;//项目总数

struct content *head = NULL;

void welcome (); //欢迎界面
void mainmenu (); //主界面
void record (); //记录数据
void insert(struct content *stu);   //添加新信息
void display(struct content *stu);  //显示该备忘
void displayAll (); //显示所有备忘
void query_by_num (); //按编号查询备忘
void readData (); //读取文件里项目的备忘
void writeData (); //向文件写入备忘
void freeAll (); //清空链表内容
void del (); //删除备忘
void change (); //更改备忘
void devise (struct content *p);    //选择备忘内容




int main (void)
{
    welcome ();
 //显示主菜单
    mainmenu ();
 return 0;
}
//显示欢迎信息


void welcome ()
{
    system("COLOR B");
    printf ("           +----------------------------------------------------+\n");
    printf ("           |                                                    |\n");
    printf ("           |             备份您的点滴,记录您的生活             |\n");
printf ("           |                                                    |\n");
    printf ("           |                   欢迎使用爱备份                   |\n"); 
    printf ("           +----------------------------------------------------+\n");
}

//系统主菜单

void mainmenu ()
{
    int choice;
    choice = -1;
    readData ();
 printf ("\n温馨提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n");
    do
    {
  printf ("\n\n");
  printf ("\t\t--------------------------------------------\n");
  printf ("\t\t+        科研项目管理系统管理系统           +\n");
  printf ("\t\t--------------------------------------------\n");
  printf ("\t\t+        [1]----添加备忘                    |\n");
  printf ("\t\t+        [2]----浏览所有备忘                |\n");
  printf ("\t\t+        [3]----查询指定备忘                |\n");
  printf ("\t\t+        [4]----删除备忘信息                |\n");
  printf ("\t\t+        [5]----修改备忘                    |\n");
  printf ("\t\t+        [0]----退出系统                    |\n");
  printf ("\t\t+*·*·*·*·*·*·*·*·*·*·*·*·*·*·*|\n");
  printf ("\t\t--------------------------------------------\n");
  
  printf ("请输入您的选择:");


  scanf ("%d", &choice);

        switch (choice)
        {


    case 0:
                writeData ();
                freeAll ();
                exit (0);
   case 1:
                record ();
                break;
   case 2:
                displayAll ();
                break;
   case 3:
                query_by_num ();
                break;
   case 4:
                del ();
                break;
   case 5:
                change ();
                break;
            default:
                printf ("\n木有这功能哦  ^_^");
                break;
        }
    }
    while (choice != 0);
}
//********************************************************写入备忘********************************************************

void record ()
{
 struct content *p0;

 p0 = (struct content *)malloc(LEN);

 printf ("请输入编号:");
 scanf ("%ld",&p0->num);
 printf ("请输入标题:");
scanf ("%s",p0->title);
printf ("请输入内容:");
scanf ("%s",p0->body);
printf ("请设置提醒时间:");
scanf ("%s",p0->alerter);
insert (p0);




 printf ("该备忘记录为:\n");




  printf ("-------------------------------------------------------------------------------\n");
  printf ("编号\t标题\t\t内容\t提醒时间\n");
 display (p0);
}
void insert (struct content *stu)
{
 struct content *p0, *p1, *p2;
 p1 = head;
 p0 = stu;

 if (head == NULL)
 {
  head = p0;
  p0->next = NULL;
 }
 else
 {
  while ((p0->num > p1->num)&&(p1->next != NULL))
  {
   p2 = p1;
   p1 = p1->next;
  }
  if (p0->num <= p1->num)
  {

   if (head == p1)
   head = p0;
   else
   p2->next = p0;
   p0->next = p1;
  }
  else
  {
   p1->next = p0;
   p0->next = NULL;
  }
 }
 TOTAL_NUM++;
}
//********************************************************浏览单个备忘********************************************************
void display (struct content *p)
{
 printf ("%d\t%s\t%s\t%s\t\n", p->num, p->title, p->body, p->alerter);
}
//********************************************************浏览全部备忘********************************************************
void displayAll()
{
 struct content *p;

 printf("所有备忘录:%d\n", TOTAL_NUM);
 p = head;
 if (head != NULL)
 {
  printf ("编号\t标题\t\t内容\t提醒时间\n");
  printf("-------------------------------------------------------------------------------\n");
  do
  {
   display(p);
   p = p->next;
  }
  while(p->next!= NULL);
 }
 printf ("\n");

}


//********************************************************按编号查询备忘********************************************************
void query_by_num ()
{
 int num;
 struct content *p1;

 printf("请输入查询编号:");
 scanf("%d", &num);
 if(head==NULL)
 {
  printf("亲,木有这个记录哈!\n");
  return;
 }

 p1 = head;
 while (num!=p1->num && p1->next!=NULL)
 p1 = p1->next;


 if (num == p1->num)
 {
  printf ("编号\t标题\t\t内容\t提醒时间\n");
  printf ("-------------------------------------------------------------------------------\n");
  display (p1);
 }
 else
 printf ("没有此记录,请核对!");
}


//********************************************************写入文件********************************************************
void writeData ()
{
 FILE*  fp;//文件指针
 struct content *p;


fp = fopen("1.txt", "w");

    if (!fp)
    {
  printf("文件打开错误!");
  return;
    }

 fprintf(fp,"%d\n", TOTAL_NUM);
    for(p = head; p!= NULL; p= p->next)
    {
        fprintf(fp,"%d\t%s\t%s\t%s\n", p->num, p->title, p->body, p->alerter);
    }
    fclose (fp);

}


//********************************************************清空链表********************************************************

void freeAll ()
{
 struct content *p1, *p2;

 p1 = p2=head;
 while(p1)
 {
  p2=p1->next;
  free (p1);
  p1 = p2;
 }
}
//********************************************************读取文件********************************************************

void readData ()
{
 FILE*  fp;//文件指针
 struct content *p1, *p2;
    fp = fopen("1.txt", "r");
    if (!fp)
    {
  printf("文件打开错误!");
        return;
    }

 fscanf(fp,"%d\n", &TOTAL_NUM);
 head = p1 = p2 = (struct content *)malloc(LEN);
 fscanf(fp,"%d\t%s\t%s\t%s\n", &p1->num, p1->title, p1->body, p1->alerter);
 while(!feof(fp))
 {
  p1 = (struct content *)malloc(LEN);
 fscanf(fp,"%d\t%s\t%s\t%s\n", &p1->num, p1->title, p1->body, p1->alerter);
  p2->next = p1;
  p2 = p1;
 }
 p2->next = NULL;
 fclose(fp);
}
//********************************************************删除备忘********************************************************

void del ()
{
 struct content *p1, *p2;
 long int num;

 if (head == NULL)
 {
  printf("无此项目记录!\n");
  return;
 }


 printf("请输入您要删除的编号:");
 scanf("%ld", &num);
 p1 = head;
 while (num != p1->num && p1->next != NULL)
 {
  p2 = p1;
  p1 = p1->next;
 }
 if(num == p1->num)
 {
  if(p1 == head)
  head = p1->next;
  else p2->next = p1->next;
  free(p1);
  TOTAL_NUM--;
 }
 else
 printf("没有此项目,请核对!\n");
}




//********************************************************修改备忘********************************************************


void change ()
{
 struct content *p1, *p2;
 long int num;
 if (head == NULL)
 {
  printf ("无此该编号信息!\n");
  return;
 }
 printf ("请输入您要修改的备忘编号:");


 scanf ("%d", &num);
 p1 = head;
 while (num != p1->num && p1->next != NULL)
 {
  p2 = p1;
  p1 = p1->next;
 }
 if(num == p1->num)
 devise (p1);
 else
 printf("没有备忘信息,请核对!\n");
}



void devise (struct content *p)
{
 int choice = -1;
   
    do
    {
        printf("请选择您要修改的项目的信息内容:\n");
        printf("                +--------------------------+\n");
        printf("                | 编号              请按 1 |\n");
        printf("                | 标题              请按 2 |\n");
        printf("                | 正文              请按 3 |\n");
        printf("                | 提醒时间       请按 4 |\n");
        printf("                | 取消              请按 0 |\n");
        printf("                +--------------------------+\n");
        printf("请输入您的选择:");
        scanf("%d", &choice);
        switch (choice)
        {
            case 0:
    return;
            case 1:
                printf("请输入新编号:");
    scanf("%d", &p->num);
                break;
            case 2:
                printf("请修改标题:");
    scanf("%s", p->title);
                break;
   case 3:
                printf("请输入编辑正文:");
    scanf("%s", p->body);
                break;
   case 4:
                printf("请重置提醒时间:");
    scanf("%s", p->alerter);
                break;
            default:
                printf("\n无效选项!");
                break;
        }
    }
    while(choice != 0);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值