如果你用vc的话,就需要再打入一些字符,然后按 ctrl+z,来结束输入,之后代码会继续运行,getc循环将INPUT中的内容打印出来
#include <stdio.h>#include <stdlib.h>
#include <malloc.h>
#include <math.h>
#include <string.h>
struct user
{
char UName[8]//用户名
char Password[5] //密码
}Power[5],Access
typedef struct Filenode
{
char FName[11]//文件名
struct File *next
}File
typedef struct MFDnode
{
char UName[8] //用户名
struct MFDnode *right
File *down
}MFDnode,* DFlink
//字符串输入 scanf("%s",&Power[i].UName)(饥正此处取地址符可要可不要??)
// gets(Power[i].UName)两种方法均可
initPower() // 初始化用户名、密码数组 Power [10]
{
int i=0
for(ii<5i++)
{
printf("请输入埋陵第%d用户的用户名:",i+1)
scanf("%s",Power[i].UName)
// gets(Power[i].UName)
printf("请输入第%d位用户的密码:",i+1)
scanf("%s",Power[i].Password)
// gets(Power[i].Password)
}
for(i=0i<5i++)
{
printf("第%d位用户的用户名和密码为:",i+1)
printf("%s,%s\弯肢戚n",Power[i].UName,Power[i].Password)
}
printf("用户的用户名和密码初始化成功!\n")
}
int logging() //用户登录,验证用户名、密码,返回用户在Power中的下标
{
int i=0,a,b
printf("请输入您的用户名:")
scanf("%s",Access.UName)
// gets(Access.UName)
printf("请输入您的密码:")
scanf("%s",Access.Password)
// gets(Access.Password)
printf("您输入的用户名和密码为:")
printf("%s,%s\n",Access.UName,Access.Password)
for(i=0i<10i++)
{
a=strcmp(Power[i].UName,Access.UName)
b=strcmp(Power[i].Password,Access.Password)
if(a==0 &&b==0)
{
printf("用户UFD%d登陆成功!",i)
return (i)
}
}
if(i==10)
{
printf("用户名或密码错误!登录失败!")
}
return -1
}
DFlink CreateFromHead()
/*通过键盘输入表中元素值,利用头插法建单链表,并返回该单链表头指针L*/
{
DFlink head
MFDnode *s
char c[8]
int i,flag=1
head=(DFlink)malloc(sizeof(MFDnode))/*建立头结点*/
head->right=NULL/*建立空的单链表L*/
// printf("1111111\n")
while(flag) /* flag初值为1,当输入"$"时,置flag为0,建表结束*/
{
printf("请输入用户名:\n")
scanf("%s",c)
if(c[0]!='$')
{
s=(MFDnode*)malloc(sizeof(MFDnode))/*建立新结点s*/
strcpy(s->UName,c)
s->right=head->right/*将s结点插入表头*/
head->right=s
}
else
flag=0
}
if(head->right!=NULL)
{
head=head->right
printf("%s",head->right)
}
return head
}
void fileOP(int index)//对下标为index的用户创建、删除指定的文件
{
DFlink head
MFDnode *s
char c[8]
head=(MFDnode *)malloc(sizeof(MFDnode))
int flag=1
s->UName=Power[index].UName
while(flag)
{
c=getchar()
if(c!='$')
{
s=(MFDnode *)malloc(sizeof(MFDnode))
s->UName=c
s->down=head->down
head->down=s
}
else flag=0
}
}
void print(int index) // 输出下标为index的用户的全部文件名{
}
void main() //主函数
{
int r
DFlink head
head=(MFDnode*)malloc(sizeof(MFDnode))
head->right=NULL
initPower()
r=logging()
printf("%d\n",r)
printf("用头插法建立单链表,请输入链表数据,以$结束!\n")
head=CreateFromHead()
// fileOP(r)
}
大部分代码已写,剩下的你补充就行啦
你是想同时显示好几行数据,还是想实现按一下按钮,文本框就显示下一行数据呢?默认情况下,通过成员变量m_column获取的数据是该列的第一个数据,所以显示出来也是第一个数据;
如果想显示别的行里的数据,我知道的方法是使用过昌液册滤器:
// request data using ID as filter
bool CIsoView::Frequery(const int&ID)
{
m_pSet->m_IDparam = ID
m_pSet->m_strFilter = "[ID] = ?"
if(!m_pSet->Requery())
MessageBox(_T("Failed to require."))
return false
}
这段代码中的m_IDparam就是起到过滤作用的参数;由于Access的一张数据表中通常有一列自动编号ID,利用ID可以唯一的定位某一行的数据,那么把ID赋给m_IDparam,就可以过滤出想要的某一行埋渗数据。
假设第二行数据的ID是2,那么只要把2赋值给m_IDparam,将m_IDparam作为过滤耐宏参数作用于m_strFilter = "[ID] = ?"这个过滤器中,再调用Requery()函数,就可以令m_column得到column列第二行的数据。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)