1.设计登录界面,输入用户名,密码,如果用户密码正确,进入菜单,如果错误,要求重新输入用户名,密码。超过三次不正确,提示,退出程序。
2.记事本里面的每条信息包括日期、时间、内容、重要程度三项信息,重要程度要求用枚举变量实现,里面包括高、中、低三项供选择。
3.记事本里面的每条信息日期、时间要求取系统时间自动生成;
4.录入功能能增加信息,主要增加内容和选择重要程度;
5.输出所有记事信息;
6.能够删除指定日期指定时间信息。
请编写出符合下列要求的程序(C语言)?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 技术专家团-小桥流水 2021-12-12 22:18关注
先贴运行结果:
(1)登录(2)登录后的界面
(3)新增记录
(4)显示所有记录
(5)删除及删除以后的数据
代码
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> //重要程度 enum ELevel { e_level_high, e_level_mid, e_level_low }; //定义日志信息 struct DataInfo { char tt[20]; char data[100]; enum ELevel level; }; struct DataInfo g_all[200]; //定义全局变量存储信息 int g_nmb=0; //日志的实际数量 int login() { char user[]="zhangsan"; char password[]="123"; char un[30],pwd[30]; int tms=0; printf("请输入用户名:"); while(tms <3) { scanf("%s",un); if(strcmp(un,user)==0) break; else { tms++; if(tms==3) { printf("输入错误超过3次,退出程序"); system("pause"); return 0; } else printf("用户名输入错误,请重新输入:"); } } tms = 0; printf("请输入密码:"); while(tms <3) { scanf("%s",pwd); if(strcmp(pwd,password)==0) break; else { tms++; if(tms==3) { printf("输入错误超过3次,退出程序"); system("pause"); return 0; } else printf("用户名输入错误,请重新输入:"); } } printf("欢迎使用本系统!\n"); system("pause"); return 1; } //菜单 int menu() { int opt; system("cls"); //清屏 printf("1.新增记录\n"); printf("2.输出所有信息\n"); printf("3.删除指定信息\n"); printf("4.退出系统\n"); printf("请输入您的选择:"); scanf("%d",&opt); return opt; } void gettmstr(char now_date[]) { time_t rawtime; struct tm * timeinfo; time ( &rawtime ); timeinfo = localtime ( &rawtime ); sprintf(now_date,"%04d-%02d-%02d %02d:%02d:%02d",(1900+timeinfo->tm_year),(1+timeinfo->tm_mon), timeinfo->tm_mday,timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec); now_date[19] = 0; } //清空输入缓存 void safe_flush(FILE *fp) { int ch; while( (ch = fgetc(fp)) != EOF && ch != '\n' ); } //插入数据 void insertData() { struct DataInfo dt; int level; system("cls"); gettmstr(dt.tt); printf("请输入需要插入的内容:"); safe_flush(stdin); //清空输入缓存 gets(dt.data); printf("请选择日志等级:(2:高 1:中 0:低)"); while(1) { scanf("%d",&level); if(level>=0 && level<=2) break; else printf("请输入0-2之间的数:"); } if(level == 2) dt.level = e_level_high; else if(level == 1) dt.level = e_level_mid; else dt.level = e_level_low; g_all[g_nmb++] = dt; printf("插入成功\n"); system("pause"); } //显示全部数据 void showAll() { int i=0; system("cls"); printf("日期 等级 内容\n"); for (i=0;i<g_nmb;i++) { printf("%s ",g_all[i].tt); if(g_all[i].level == e_level_high) printf("高 "); else if (g_all[i].level == e_level_mid) printf("中 "); else printf("低 "); printf("%s\n",g_all[i].data); } system("pause"); } //是否包含字符串 int findstr(char*big ,char* smal) { int i,j,lenb,lens; int nmb = 0; lenb = strlen(big); lens = strlen(smal); nmb = 0; if(lens > lenb) return 0; i = 0; while(i < lenb-lens+1) { for (j = 0; j < lens;j++) { if(big[i+j] != smal[j]) break; } if (j == lens) //说明找到 { nmb++; return 1; i += lens; }else i++; } return 0; } //删除指定数据 void del() { char buf[100]={0}; char tt[20]={0}; int i,j,k,nmb=0,op=0; system("cls"); printf("请输入需要删除的日志日期(如:2021-02-03 20:00、2021-02-03 20、2021-02-03):"); gets(tt); safe_flush(stdin); printf("满足条件的记录有:\n"); //输出所有符合要求的数据 for (i=0;i<g_nmb;i++) { if(findstr(g_all[i].tt,tt)) { nmb++; printf("(%d) ",nmb); printf("%s ",g_all[i].tt); if(g_all[i].level == e_level_high) printf("高 "); else if (g_all[i].level == e_level_mid) printf("中 "); else printf("低 "); printf("%s\n",g_all[i].data); } } if(nmb == 0) { printf("未找到改日期的日志"); system("pause"); return ; } printf("请输入需要删除的日志序号:"); while(1) { scanf("%d",&op); if(op >=1 && op <= nmb) break; else printf("未找到该序号的日志,请重新输入:"); } //删除 k=0; for (i=0;i<g_nmb;i++) { if(findstr(g_all[i].tt,tt)) { k++; if(k == op) { for(j=i;j<g_nmb-1;j++) g_all[j] = g_all[j+1]; g_nmb -=1; printf("删除成功!\n"); break; } } } system("pause"); } //处理登录后的事物 void deal() { int opt; while(1) { opt = menu(); switch(opt) { case 1: insertData(); break; case 2: showAll(); break; case 3: del(); break; case 4: printf("谢谢使用,再见!\n"); system("pause"); return ; } } } int main() { int opt; printf("--------------------------------\n"); printf(" 欢迎使用记事本系统 \n"); printf(" 1.登录 \n"); printf(" 2.退出 \n"); printf("--------------------------------\n"); printf("请输入您的选择:"); scanf("%d",&opt); switch(opt) { case 1: if(login()) deal(); break; case 2: printf("谢谢使用,再见!\n"); system("pause"); return 0; } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
- ¥15 gdf格式的脑电数据如何处理matlab
- ¥20 重新写的代码替换了之后运行hbuliderx就这样了
- ¥100 监控抖音用户作品更新可以微信公众号提醒
- ¥15 UE5 如何可以不渲染HDRIBackdrop背景
- ¥70 2048小游戏毕设项目
- ¥20 mysql架构,按照姓名分表
- ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
- ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
- ¥15 linux驱动,linux应用,多线程