通用会员管理系统,课程设计。我只需要对应的程序。告诉我使用方法,能...

发布网友 发布时间:2022-04-23 03:06

我来回答

3个回答

热心网友 时间:2022-04-15 02:59

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

//主文件结构体
struct MasterFile{
char username[20]; //用户名
char password[20]; //用户名密码
char flag; //标志
struct MasterFile *next;
};
//用户文件结构体
struct UserFile{
int fnum; //文件编号
char fname[20]; //文件名
int flength; //文件长度
char flag; //标志
char fpw[20]; //文件保护码
struct UserFile *link;
};
//全局变量
int shoudsave; //存储标记
int usingnum; //当前用户标记
struct MasterFile MFD[20]; //主目录
struct UserFile UFD[20][20]; //用户目录

//寻找主目录空闲区
struct MasterFile*MoveMFDToLast(){

for(int i=0;i<20;i++){
if(MFD[i].flag==0)
usingnum=i;
return &MFD[i];
}
return NULL;
}
//查找用户
struct MasterFile*SearchMFD(char str[]){
for(int i=0;i<20;i++){
if(strcmp(str,MFD[i].username)==0){
usingnum=i;
return &MFD[i];
}
}
return NULL;
}
//寻找用户目录空闲区
struct UserFile *MoveUFDToLast(){
for(int i=0;i<20;i++){
if(UFD[usingnum][i].flag==0)
return &UFD[usingnum][i];
}
return NULL;
}
//查找用户文件
struct UserFile *SearchUFD(int num){
for(int i=0;i<20;i++){
if(UFD[usingnum][i].fnum==num)
return &UFD[usingnum][i];
}
return NULL;
}
//删除用户文件目录
void LeftMoveUFD(int num){
for(int i=0;i<20;i++){
if(UFD[usingnum][i].fnum==num){
for(int j=i;j<19;j++){
UFD[usingnum][i].flag=UFD[usingnum][i+1].flag;
UFD[usingnum][i].flength=UFD[usingnum][i+1].flength;
strcpy(UFD[usingnum][i].fname,UFD[usingnum][i+1].fname);
UFD[usingnum][i].fnum=UFD[usingnum][i+1].fnum;
strcpy(UFD[usingnum][i].fpw,UFD[usingnum][i+1].fpw);
UFD[usingnum][i].link=UFD[usingnum][i+1].link;
}
}
}
}

//用户登陆
void Login(){
char flag1,flag2,flag3;
char str1[20],str2[20],str3[20],str4[20];
struct MasterFile *p;
printf("你是已有用户吗(y/n)?");
scanf("%s",&flag1);
if(flag1=='n'){ //新用户登录
printf("请创建新的用户:(y/n)");
scanf("%s",&flag2);
if(flag2=='n'){
printf("你已退出了系统!\n");
exit(1);
}else{
printf("请输入你的用户名:");
scanf("%s",&str1);
printf("请输入口令:");
scanf("%s",&str2);
p=MoveMFDToLast();
strcpy(p->username,str1);
strcpy(p->password,str2);
p->flag=1;
printf("%d",MFD[usingnum].flag);
p->next=NULL;
shoudsave=1; //存储标记
}
}else{ //旧用户登录
while(1){
printf("请输入你的用户名:"); //输入用户名
scanf("%s",&str3);
p=SearchMFD(str3);
if(p==NULL){
printf("对不起,你输入的用户名不存在!\n");
printf("继续(y)还是放弃(n)?");
scanf("%s",&flag3);
if(flag3=='y') continue;
else{
printf("你已退出了系统!\n");
exit(1);
}
}else{
while(1){
printf("请输入口令:"); //输入口令
scanf("%s",&str4);
if(strcmp(str4,p->password)!=0){
printf("对不起,你输入的口令不正确,请重新输入.\n");
continue;
}else break;
}
}break;
}
}
}

//菜单
void menu(){
printf("\n********************************************************************************");
printf("\t1列文件目录\t\t\t\t\t2创建文件\n");
printf("\t3删除文件\t\t\t\t\t4读文件\n");
printf("\t5写文件\t\t\t\t\t\t0退出系统\n");
printf("********************************************************************************\n");
}
//列文件目录
void Dir(){
if(MFD[usingnum].next==0) printf("目前你不存在任何文件!\n");
else{
for(int i=0;i<20;i++){
if(UFD[usingnum][i].flag==1)
printf("文件编号\t%d\t文件名\t%s\t文件长度\t%d\t保护码\t%s\n",UFD[usingnum][i].fnum,UFD[usingnum][i].fname,UFD[usingnum][i].flength,UFD[usingnum][i].fpw);
}
}
}

//创建文件
void Create(){
FILE *fp;
int num;
struct UserFile *f;
char str1[20],str2[20];
printf("请输入你要创建的文件名:"); //输入文件信息
scanf("%s",&str1);
printf("请输入文件编号:");
scanf("%d",&num);
printf("请输入文件保护码:");
scanf("%s",&str2);
fp=fopen(str1,"w"); //创建文件
f=MoveUFDToLast(); //寻找用户目录空闲区
if(&UFD[usingnum][0]==f) //连接主目录
MFD[usingnum].next=(struct MasterFile*)f;
f->link=(struct UserFile*)fp; //设置用户目录
MFD[usingnum].next=(struct MasterFile*)&UFD[usingnum][0];
strcpy(f->fname,str1);
strcpy(f->fpw,str2);
f->fnum=num;
f->flength=0;
f->flag=1;
fclose(fp);
shoudsave=1; //设置存储标记
printf("文件已创建!\n");
}
//删除文件
void Delete(){
struct UserFile *f;
int num;
printf("请输入你要删除的文件编号:");
scanf("%d",&num);
f=SearchUFD(num); //查找用户文件
if(f==NULL) {
printf("你要删除的文件不存在!\n");
}else{
LeftMoveUFD(num); //删除用户文件目录
printf("文件已删除!\n");
}
shoudsave=1; //设置存储标记
}
//读文件
void Read(){
char ch;
struct UserFile *f;
FILE *fp;
int num;
printf("请输入你要读的文件的编号:");
scanf("%d",&num);
f=SearchUFD(num); //查找文件
if(f==NULL){
printf("你输入的文件不存在!\n");
}else{
if((fp=fopen(f->fname,"r"))==NULL){ //打开指定文件
printf("不能打开该文件!\n");
exit(0);
}
}
ch=fgetc(fp); //输出文件内容
while(ch!=EOF){
putchar(ch);
ch=fgetc(fp);
}
printf("\n");
fclose(fp); //关闭文件
printf("文件已读完毕!\n");
}
//写文件
void Write(){
char ch;
struct UserFile *f;
FILE *fp;
int num;
printf("请输入你要写的文件的编号:");
scanf("%d",&num);
f=SearchUFD(num); //查找文件
if(f==NULL){
printf("你输入的文件不存在!\n");
}else{
if((fp=fopen(f->fname,"wr"))==NULL){ //打开指定文件
printf("不能打开该文件!\n");
exit(0);
}
}
printf("请按字符输入内容(以'#'表示结束符)"); //写入文件
scanf("%s",&ch);
while(ch!='#'){
fwrite(&ch,1,1,fp);
scanf("%s",&ch);
}
fclose(fp); //关闭文件
shoudsave=1; //设置存储标记
printf("文件写入完毕!\n");
}
//保存
void Save(){
FILE *fpm,*fpu;
int flag=1,count=0;
fpm=fopen("F:\\MasterFile.txt","wb"); //打开主文件
if(fpm==NULL){
printf("\n提示:重新打开主文件信息文件时发生错误!\n");
exit(1);
}
for(int i=0;i<20;i++)
fwrite(&MFD[i],sizeof(struct MasterFile),1,fpm); //保存主文件目录信息
fclose(fpm);
printf("主文件目录信息保存完毕!\n");
fpu=fopen("F:\\UserFile.txt","wb"); //打开用户文件
if(fpu==NULL){
printf("\n提示:重新打开用户目录信息文件时发生错误!\n");
exit(1);
}
for(int j=0;j<20;j++) //保存用户文件目录信息
fwrite(&UFD[j],sizeof(struct UserFile),20,fpu);
fclose(fpu);
printf("用户文件目录信息保存完毕!\n");
}

//主函数
void main(){
FILE *fpm,*fpu; //文件指针
int sel;
char ch;
char jian;
printf("\t\t\t\t文件管理系统\n\t\t\t\t\n");
fpm=fopen("F:\\MasterFile.txt","rb"); //打开主文件目录信息文件
if(fpm==NULL) {
printf("\n提示:主文件目录信息文件还不存在,是否创建?(y/n)\n");
scanf("%s",&jian);
if(jian=='y'||jian=='Y')
fpm=fopen("F:\\MasterFile.txt","wb"); //创建主文件目录的文件
else exit(0);
}
fpu=fopen("F:\\UserFile.txt","rb"); //打开用户文件目录信息文件
if(fpu==NULL){
printf("\n提示:用户文件目录信息文件还不存在,是否创建?(y/n)\n");
scanf("%s",&jian);
if(jian=='y'||jian=='Y')
fpu=fopen("F:\\UserFile.txt","wb"); //创建用户文件目录的文件
else exit(0);
}
printf("文件正在打开,请稍等...");
for(int i=0;i<20;i++) //读取主文件目录信息
fread(&MFD[i],sizeof(struct MasterFile),1,fpm); //将文件的内容放入接点中
fclose(fpm); // 关闭文件
while(!feof(fpu)){ //读取用户目录文件信息
for(int i=0;i<20;i++){
if(fread(&UFD[i][0],sizeof(struct UserFile),20,fpu)) //将文件的内容放入接点中
MFD[i].next=(struct MasterFile*)&UFD[i][0];
}
}
fclose(fpu); //关闭文件
printf("\n文件已导入完毕!\n");
Login(); //用户登录
while(1) { //菜单操作
menu();
printf("请你选择操作:");
scanf("%d",&sel);
if(sel==0){ //保存文件信息
if(shoudsave==1){
getchar();
printf("\n资料已经改动,是否将改动保存到文件中(y/n)?\n");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save();
}
printf("\n你已经退出系统,再见!\n");
break;
}
switch(sel){
case 1:Dir();break; //列文件目录
case 2:Create();break; //创建文件
case 3:Delete();break; //删除文件
case 4:Read();break; //读文件
case 5:Write();break; //写文件
default: printf("你输的选项有误,请重新输入!\n");break;
}
}
}

热心网友 时间:2022-04-15 04:17

// login.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "login.h"
#include "loginDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CLoginApp

BEGIN_MESSAGE_MAP(CLoginApp, CWinApp)
//{{AFX_MSG_MAP(CLoginApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLoginApp construction

CLoginApp::CLoginApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CLoginApp object

CLoginApp theApp;

/////////////////////////////////////////////////////////////////////////////
// CLoginApp initialization

BOOL CLoginApp::InitInstance()
{
AfxEnableControlContainer();

::CoInitialize(NULL); //初始化

m_pComm.CreateInstance("ADODB.Connection");

try
{
CString connect="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=manage;Data Source=(local)";
m_pComm->Open(_bstr_t(connect),"","",adModeUnknown); //打开数据源
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage()); //输出错误信息
return -1;
}

// m_pRecord.CreateInstance("ADODB.Recordset");

// Standard initialization
// If you are not using these features and wish to rece the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.

#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif

CLoginDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
dlg.DoModal();
}

// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}

int CLoginApp::ExitInstance()
{
// TODO: Add your specialized code here and/or call the base class
m_pComm->Close();
::CoUninitialize(); //取消
DestroyWindow((HWND)m_pMainWnd);
return CWinApp::ExitInstance();
}

热心网友 时间:2022-04-15 05:52

我们这样的软件卖1500元,还是不给代码的!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com