主题:[讨论]【求助】C语言数据管理源代码,问题多了,大家帮忙完善下
大家帮我改下源代码,不要和我说什么程序通过,你试着输入些数据就会发现问题了,我试过了说程序可执行,但修改数据模块好像有点问题,另外我想把/*创建链表,完成数据录入功能,新结点在表头插入*/改成从表尾插入,可是自己改老出错,不得已写成表头插入,下面是源代码(还有加密没弄,不会。。。)
1)程序执行时,首先要进行密码检测,以不让非法用户使用本程序。标准密码预先在程序中设定,程序运行时,若用户的输入密码和标准密码相同,则显示“口令正确!”,并转去执行后续程序,若不想等责重新输入,3次不行等则显示“您是非法用户!!”,并终止程序执行。
2)将自己需要保护的数据加密后存入指定文件中。现在每个人在不同网站都有用户名和密码等信息,还有银行卡卡号及密码信息,众多的信息经常忘记,现在我们可通过C编程将其加密后存入指定的文件中。(至少要对密码加密,加密方法不限,简单加密方法如将字符的ASCII值加2)
3)需要保护的数据信息包括编号,账号位置,账号描述,账号名,密码等如:
**********************************************************************
编号 账号位置 账号描述 账号名 密码
1 http://www.hnust.cn 科大邮箱 daxiang@hnust.edu.cn 123456
2 http://mail.wo.com.cn 手机邮箱 13187323020@wo.com.cn 654321
3 http://wwww.pudn.com/ 程序开发网 xiangdesheng 123456
**********************************************************************
4)对指定文件中的信息要能进行添加、删除和明文显示等功能
5)具体提供以下功能:
1.开始运行程序是要进行密码验证
2.系统以菜单方式工作
3.带保护数据的录入功能(用文件保存)----输入。要求通过命令行给出文件名,设程序可执行名为jiami.exe,baocunshujude文件起名为my.dat,则要在DOS窗口输入命令jiami my.dat(也可以在VC6中设置程序参数my.dat)。若文件my.dat已经存在,则在该文件中追加数据,如果不存在,则新建。
4.保护数据的明文浏览功能----输出
5.保护数据的查询功能----算法。按账号名查询,如输入“xiang”查询,上表中两条记录均应查询出来
6.保护数据的删除、修改功能----算法
7.数据信息存入文件或激昂文件中的数据信息导入
6)主要应用点:数组、指针、结构体、文件
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
#include "string.h"
#define N 50
typedef struct stu
{
char address[N]; //账号位置
char score[N]; //账号描述
char name[N]; //账号名
char order[N]; //密码
struct stu *next;
}STUDENT;
/*菜单函数,返回值为整数*/
int menu_select()
{
char s[3];
int c;
printf("\n ***************主菜单**************\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");
printf(" 9. 退出\n");
printf(" ***********************************\n\n");
do
{
printf(" 请选择操作(1-9):");
scanf("%s",s);
c=atoi(s);
}while(c<0||c>9); /*选择项不在0~9之间重输*/
return(c); /*返回选择项,主程序根据该数调用相应的函数*/
}
/*创建链表,完成数据录入功能,新结点在表头插入*/
STUDENT *create()
{
STUDENT *h=NULL,*info; /*h:头结点指针;info:新结点指针*/
for(;;)
{
info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/
if(!info) /*如果指针info为空*/
{
printf("\n内存分配失败");
return NULL; /*返回空指针*/
}
printf("\n请按如下提示输入相关信息.\n\n");
printf("输入账号位置(输入'#'跳出):"); /*如果输入首字符为#则结束输入*/
scanf("%s",info->address);
if(info->address[0]=='#') break;
printf("输入账号描述:");
scanf("%s",info->score);
printf("输入账号名:");
scanf("%s",info->name);
printf("输入密码:");
scanf("%s",info->order);
info->next=h;
h=info;
}
return(h); /*返回头指针*/
}
1)程序执行时,首先要进行密码检测,以不让非法用户使用本程序。标准密码预先在程序中设定,程序运行时,若用户的输入密码和标准密码相同,则显示“口令正确!”,并转去执行后续程序,若不想等责重新输入,3次不行等则显示“您是非法用户!!”,并终止程序执行。
2)将自己需要保护的数据加密后存入指定文件中。现在每个人在不同网站都有用户名和密码等信息,还有银行卡卡号及密码信息,众多的信息经常忘记,现在我们可通过C编程将其加密后存入指定的文件中。(至少要对密码加密,加密方法不限,简单加密方法如将字符的ASCII值加2)
3)需要保护的数据信息包括编号,账号位置,账号描述,账号名,密码等如:
**********************************************************************
编号 账号位置 账号描述 账号名 密码
1 http://www.hnust.cn 科大邮箱 daxiang@hnust.edu.cn 123456
2 http://mail.wo.com.cn 手机邮箱 13187323020@wo.com.cn 654321
3 http://wwww.pudn.com/ 程序开发网 xiangdesheng 123456
**********************************************************************
4)对指定文件中的信息要能进行添加、删除和明文显示等功能
5)具体提供以下功能:
1.开始运行程序是要进行密码验证
2.系统以菜单方式工作
3.带保护数据的录入功能(用文件保存)----输入。要求通过命令行给出文件名,设程序可执行名为jiami.exe,baocunshujude文件起名为my.dat,则要在DOS窗口输入命令jiami my.dat(也可以在VC6中设置程序参数my.dat)。若文件my.dat已经存在,则在该文件中追加数据,如果不存在,则新建。
4.保护数据的明文浏览功能----输出
5.保护数据的查询功能----算法。按账号名查询,如输入“xiang”查询,上表中两条记录均应查询出来
6.保护数据的删除、修改功能----算法
7.数据信息存入文件或激昂文件中的数据信息导入
6)主要应用点:数组、指针、结构体、文件
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
#include "string.h"
#define N 50
typedef struct stu
{
char address[N]; //账号位置
char score[N]; //账号描述
char name[N]; //账号名
char order[N]; //密码
struct stu *next;
}STUDENT;
/*菜单函数,返回值为整数*/
int menu_select()
{
char s[3];
int c;
printf("\n ***************主菜单**************\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");
printf(" 9. 退出\n");
printf(" ***********************************\n\n");
do
{
printf(" 请选择操作(1-9):");
scanf("%s",s);
c=atoi(s);
}while(c<0||c>9); /*选择项不在0~9之间重输*/
return(c); /*返回选择项,主程序根据该数调用相应的函数*/
}
/*创建链表,完成数据录入功能,新结点在表头插入*/
STUDENT *create()
{
STUDENT *h=NULL,*info; /*h:头结点指针;info:新结点指针*/
for(;;)
{
info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/
if(!info) /*如果指针info为空*/
{
printf("\n内存分配失败");
return NULL; /*返回空指针*/
}
printf("\n请按如下提示输入相关信息.\n\n");
printf("输入账号位置(输入'#'跳出):"); /*如果输入首字符为#则结束输入*/
scanf("%s",info->address);
if(info->address[0]=='#') break;
printf("输入账号描述:");
scanf("%s",info->score);
printf("输入账号名:");
scanf("%s",info->name);
printf("输入密码:");
scanf("%s",info->order);
info->next=h;
h=info;
}
return(h); /*返回头指针*/
}