题目

隐私信息管理系统

本题要求采用结构体数组(或链表)存储数据。具体要求如下:

(1) 程序执行时,首先要进行密码检测,以不让非法用户使用本程序。标准密码预先在程序中设定,程序运行时,若用户的输入密码和标准密码相同,则显示“口令正确!”并转去执行后续程序;若不相等,重新输入,3次都不相等则显示“您是非法用户!”并终止程序的执行。

(2) 现在每个人在不同网站都有用户名和密码等信息,还有银行卡号及密码信息,众多的信息经常忘记,最好的方法是将这些信息用文件的形式保存起来。但是很多私密数据(特别是密码)不能明文存储,比较保险的办法是采用密文存储,即先将密码明文加密成密文后,再进行存储。加密方法自行设计,例如输入密码明文为字符1,但存储时却存储的是其密文字符a,这只要通过ASCII值加一个整数值即可实现。

(3) 需要保护的数据信息包括编号,帐号位置,帐号描述,帐号名,密码等,如:

编号 帐号位置 帐号描述 帐号名 密码
1 https://next.xuetangx.com 学堂在线 xiangdesheng 123456
2 Welcome to Hangzhou Dianzi University Online Judge 杭电OJ acm002 654321
3 https://www.icourse163.org 中国大学MOOC 30047495@qq.com 123456

此表仅为示例,设计时请根据自己的设计确定由哪些信息组成结构体。

(4) 系统具体提供以下功能

Ø 系统以菜单方式工作。开始运行程序时要进行密码验证。

Ø 信息的录入功能、浏览功能。

Ø 信息的查询功能。按帐号名查询,如输入“acm”可查出上表第2条记录。

Ø 信息的删除、修改功能。

Ø 信息存入文件。信息中的密码必须要加密后才能存入文件,建议先输入一串字符作为加密密钥,对信息中的密码加密后再进行存储,即确保存入文件中的信息里面,“密码”是加密后的字符串。

Ø 将文件中的信息导入。与信息存入文件的过程相反,将密码解密后导入。


NOTICE

  • 本系统基于链表进行信息暂存。

  • 本系统存在以下问题:

    • 不存在主键,任何字段的值均可重复。

    • 存储时未按编号顺序进行排序。

  • 本系统是C语言课程学习成果的检验,仅供学习参考。

//默认密码:password#include <stdio.h>
#include <string.h>
#include <stdlib.h>typedef struct information{int num; //编号char location[80]; //账号位置char describe[10]; //账号描述char name[20]; //账号名char password[20]; //密码struct information *next;
} stu;int size=sizeof(stu); //链表节点的大小int select(); //操作菜单
stu* create(); //信息录入
void print(stu *head); //浏览全部信息
void search(stu *head); //根据用户名查询信息
stu* delete(stu *head); //根据用户名删除信息
//根据账号名修改信息
stu* modify(stu *head);
void change(stu *p, int n);
//
void filein(stu *head); //缓存信息导入到文件
stu* fileout(stu *head); //从文件中导出信息到缓存int main()
{char code[9]="password", in[9];int i, n, flag=0;stu *head=NULL;printf("--------欢迎来到隐私信息管理系统!--------\n\n");for(i=3; i>=1; i--){printf("请输入密码:");scanf("%s", in);if(strcmp(code, in)){if(i==1)break;printf("密码错误,你还有%d次机会!\n\n", i-1);}else{flag = 1;printf("密码正确,欢迎您!\n\n\n");break;}}if(!flag){printf("密码错误,你还有0次机会,将自动退出系统!\n");exit(0);}while(1){n = select();switch(n){case 1:printf("\n--------信息录入--------\n");head = create();break;case 2:printf("\n--------浏览全部信息--------\n");print(head);break;case 3:printf("\n--------根据账号名查询信息--------\n");search(head);break;case 4:printf("\n--------根据账号名删除信息--------\n");head = delete(head);break;case 5:printf("\n--------根据账号名删除信息--------\n");head = modify(head);break;case 6:printf("\n--------缓存信息导入到文件--------\n");filein(head);break;case 7:printf("\n--------从文件中导出信息到缓存--------\n");head = fileout(head);break;case 8:printf("再见~\n");exit(0);default:printf("ERROR!请输入正确的编号!\n\n");}}return 0;
}int select()
{int n;printf("--------操作目录--------\n");printf("1-信息录入\n");printf("2-浏览全部信息\n");printf("3-根据账号名查询信息\n");printf("4-根据账号名删除信息\n");printf("5-根据账号名修改信息\n");printf("6-缓存信息导入到文件\n");printf("7-从文件中导出信息到缓存\n");printf("8-退出系统\n\n");printf("请输入操作编号:");scanf("%d", &n);return n;
}stu* create()
{stu *head=NULL, *tail=NULL, *p;while(1){p = (stu*)malloc(size);printf("请输入编号(-1退出):");scanf("%d", &p->num);if(p->num==-1){printf("\n");break;}else{printf("请输入账号位置:");scanf("%s", p->location);printf("请输入账号描述:");scanf("%s", p->describe);printf("请输入账号名:");scanf("%s", p->name);printf("请输入密码:");scanf("%s", p->password);p->next = NULL;if(!head)head = p;elsetail->next = p;tail = p;printf("\n");}}return head;
}void print(stu *head)
{if(!head)printf("尚未录入任何信息!\n\n");else{stu *p;printf("***********************************************\n");printf("编号    账号位置    账号描述    账号名    密码\n");for(p=head; p!=NULL; p=p->next)printf("%-4d    %-8s    %-8s    %-8s  %-8s\n", p->num, p->location, p->describe, p->name, p->password);printf("***********************************************\n\n");}
}void search(stu *head)
{if(head==NULL){printf("尚未录入任何信息!\n\n");return;}stu *p;char a[20], t[2]="#";int flag=0;while(1){printf("请输入账号名(#退出):");scanf("%s", a);if(strcmp(a,t)){for(p=head; p!=NULL; p=p->next){if(!strcmp(p->name,a)){flag = 1;printf("***********************************************\n");printf("编号    账号位置    账号描述    账号名    密码\n");printf("%-4d    %-8s    %-8s    %-8s  %-8s\n", p->num, p->location, p->describe, p->name, p->password);printf("***********************************************\n\n");}}if(!flag)printf("查询失败!\n\n");}else{printf("\n");break;}}
}stu* delete(stu *head)
{if(!head){printf("尚未录入任何信息!\n\n");return NULL;}stu *ptr1, *ptr2;int flag;char a[20], t[2]="#";while(1){printf("请输入账号名(#退出):");scanf("%s", a);if(strcmp(a,t)){flag = 0;while(head!=NULL&&strcmp(head->name,a)==0){flag = 1;ptr2 = head;head = head->next;free(ptr2);}ptr1 = head;ptr2 = head->next;while(ptr2){if(!strcmp(ptr2->name,a)){flag = 1;ptr1->next = ptr2->next;free(ptr2);}elseptr1 = ptr2;ptr2 = ptr1->next;}if(!flag)printf("账号名不存在!\n\n");else{printf("删除成功!\n\n");}}else{printf("\n");return head;}}
}stu* modify(stu *head)
{if(head==NULL){printf("尚未录入任何信息!\n\n");return head;}stu *p;char a[20], t[2]="#";int flag, n;while(1){printf("请输入账号名(#退出):");scanf("%s", a);if(strcmp(a,t)){flag = 0;for(p=head; p!=NULL; p=p->next){if(!strcmp(p->name,a)){printf("\n--------修改目录--------\n");printf("1-编号\n");printf("2-账号位置\n");printf("3-账号描述\n");printf("4-账号名\n");printf("5-密码\n");printf("请输入编号:");scanf("%d", &n);while(n<1||n>5){printf("ERROR!请输入正确的编号:");scanf("%d", &n);}change(p, n);flag = 1;}}if(!flag)printf("账号名不存在!\n\n");else{printf("\n");break;}}}return head;
}void change(stu *p, int n)
{if(n==1){printf("请输入更改后的编号:");scanf("%d", &p->num);}else if(n==2){printf("请输入更改后的账号位置:");memset(p->location, 0, sizeof(p->location));scanf("%s", p->location);}else if(n==3){printf("请输入更改后的账号描述:");memset(p->describe, 0, sizeof(p->describe));scanf("%s", p->describe);}else if(n==4){printf("请输入更改后的账号名:");memset(p->name, 0, sizeof(p->name));scanf("%s", p->name);}else if(n==5){printf("请输入更改后的密码:");memset(p->password, 0, sizeof(p->password));scanf("%s", p->password);}printf("修改成功!\n\n");
}void filein(stu *head)
{FILE *fp;stu *p;int i;char file[20];printf("请输入文件名:");scanf("%s", file);if((fp=fopen(file, "w"))==NULL){printf("File open error!\n");exit(0);}for(p=head; p!=NULL; p=p->next){for(i=0; p->password[i]!='\0'; i++){p->password[i] += 22;}fprintf(fp, "%d     %s     %s     %s     %s\n", p->num, p->location, p->describe, p->name, p->password);}printf("导入成功!\n\n");for(p=head; p!=NULL; p=p->next){for(i=0; p->password[i]!='\0'; i++){p->password[i] -= 22;}}if(fclose(fp)){printf("Can not close the file!\n");exit(0);}
}stu* fileout(stu *head)
{FILE *fp;stu *p, *tail;int i;char file[20];printf("请输入文件名:");scanf("%s", file);if((fp=fopen(file, "r"))==NULL){printf("File open error!\n");exit(0);}head = tail = NULL;p = (stu*)malloc(size);fscanf(fp, "%d%s%s%s%s", &p->num, p->location, p->describe, p->name, p->password);while(!feof(fp)){p->next =NULL;if(!head)head = p;elsetail->next = p;tail = p;p = (stu*)malloc(size);fscanf(fp, "%d%s%s%s%s", &p->num, p->location, p->describe, p->name, p->password);}for(p=head; p!=NULL; p=p->next){for(i=0; p->password[i]!='\0'; i++){p->password[i] -= 22;}}printf("导出成功!\n\n");if(fclose(fp)){printf("Can not close the file!\n");exit(0);}return head;
}

C语言课程设计-隐私信息管理系统相关推荐

  1. c语言用链表写管理系统程序,c语言课程设计职工信息管理系统单链表实现程序源代码-20210401015126.docx-原创力文档...

    文档编制序号:[KKIDT-LLE0828-LLETD298-POI08] 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08] C语言课程设计职工信息管理系统单链表实现程序源代 ...

  2. c语言课程设计宠物店,c语言课程设计-宠物店信息管理系统.doc

    c语言课程设计-宠物店信息管理系统 合肥学院 计算机科学与技术系 课程设计报告 2012-2013学年第二学期 课程面向过程综合设计课程设计名称宠物(小动物)店信息管理系统 学生姓名宋俊 学号 专业班 ...

  3. c语言课程设计 职工信息管理系统,C语言课程设计-职工信息管理系统程序设计.doc...

    C语言课程设计-职工信息管理系统程序设计 C语言课程设计报告 设计题目:职工信息管理系统程序设计 课程设计评语2 目 录3 1.课程论文题目4 2.程序设计思路4 3.功能模块图5 4.数据结构设计5 ...

  4. C语言 课程设计——职工信息管理系统

    C语言 课程设计--职工信息管理系统 提示:该课程设计是本人第一次制作,有诸多不足之处,希望王对你有些许帮助!!! 文章目录 C语言 课程设计--职工信息管理系统 前言 一.首先定义一个结构体数组 二 ...

  5. C语言课程信息管理系统课程设计,c语言课程设计学生信息管理系统.doc

    c语言课程设计学生信息管理系统 课程设计报告 课程名称: 高级语言程序设计课程设计 姓 名: 汤璞君 班级学号: BX1209 121003410937 指导教师: 吉顺如 完成日期: 2013.6. ...

  6. C语言课程设计建筑工地信息,c语言课程设计建筑工地信息管理系统

    c语言课程设计建筑工地信息管理系统 (31页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 29.9 积分 1C 语言课程设计 名称:建筑工地信息管理系统学 ...

  7. 员工信息管理系统语言论文c,C语言课程设计 职工信息管理系统.doc

    C语言课程设计 职工信息管理系统.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. ...

  8. c语言编制学生课程信息管理系统,C语言课程设计-学生信息管理系统.doc

    - III -- III - 中国海洋大学 青岛学院 C语言课程设计报告书 题 目 学生信息管理系统 学生姓名 指导教师 学 院 专业班级 组内分工 姓名 主要任务 占系统比例 学生信息的查看,主函数 ...

  9. c语言课程设计歌曲管理,C语言课程设计-歌曲信息管理系统.doc

    C语言课程设计实习报告 专 业: 学 号: 班级序号: 姓 名: 指导教师: C语言程序设计报告 (实习日期: 2010-8至2010-9) 一.C语言课程设计的目的:? 高级语言课程设计是学习完&l ...

最新文章

  1. ubuntu搭建Tomcat7.0
  2. Java Graphics2D类的绘图方法
  3. Janus流媒体服务器框架分析
  4. 前端微信签名验证工具_微信小程序API 用户数据的签名验证和加解密
  5. 技术干货 | 应用性能提升 70%,探究 mPaaS 全链路压测的实现原理和实施路径
  6. 今天需要修复的bug
  7. Java多线程多个线程之间共享数据
  8. 安装centos linux7,安装centos7
  9. nginx信号量(平滑重启/升级/重读日志)
  10. SVN主干合并到分支
  11. python三维点云投影(二)
  12. 关于整车上下电流程和电源管理
  13. 中科院计算机所沈阳待遇怎么样,中科院沈阳计算技术研究所计算机技术怎么样...
  14. hibernate的检索策略(抓取策略)
  15. stc单片机“全自动下载”(程序版)
  16. 华为开源平台harmonyos,华为开源平台上线 方舟编译器和鸿蒙系统开源
  17. 2022数学建模国赛ABC题思路
  18. 使用jQuery完成下拉菜单
  19. android apn xml,android 批改默认APN
  20. ADC VS参考电压在测量时和AD值的大小对应关系

热门文章

  1. JS--JavaScript访问节点(childNodes、parentNode、firstChild、lastChild、nextSibling、previousSibling)
  2. C程序设计--案例(2015年江苏大学程序设计考研试题 -- 编程题)
  3. java reflections_关于java:java反射工具Reflections用法
  4. python pynput 按两下耳机播放键切换下一首歌“Key.media_next“
  5. 图文详解Linux基础经典教程(04)——配置子网IP和网关
  6. 浅谈Fortran语言
  7. 以高科技传情达意,戴森如何以“洞察力”打造情人节贴心好礼?
  8. K-ROSET版本更新功能与授权验证发展史
  9. 又有专家来瞎扯了:年轻人工资低可能是能力不够
  10. 【安全归约】第一讲 | Definitions定义(算法和安全模型)