用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);
}
#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);
}
相关文章推荐
- vc++学习篇(二)——打印和视频功能的实现
- vc++学习篇(二)——打印和视频功能的实现
- VC 实现 Netstat 功能
- 在VC对话框中实现打印功能
- [VC/MFC]使用CTabCtrl控件实现属性页功能
- VB的ShowInTaskbar功能分析以及用VC的实现
- 最简单的在VC中用MFC中FTP下载功能的实现
- 快速实现托盘功能--VC
- 用VC++实现上网拨号功能
- VC写的Flash动画播放组件 ,实现透明播放Flash动画及交互功能,类似迅雷及PPS广告动画
- vc++实现打印功能
- 在VC中实现FTP功能
- VB的ShowInTaskbar功能分析以及用VC的实现 如何隐藏对话框在工具栏上的按钮
- 在VC中实现FTP功能
- VB的ShowInTaskbar功能分析以及用VC的实现
- VC实现关机、重启、休眠功能
- 在Delphi中实现类似VC++的Configuration功能
- 用VC实现屏幕拾色功能
- VC常用功能及实现方法
- VC起航--实现画线功能