您的位置:首页 > 其它

用vc实现备忘录功能

2014-12-22 21:15 871 查看
#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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: