大一C语言课设作业,日记管理系统

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<ctype.h>
#define PASS"123456"
struct stu{ /*信息结构体*/
  charname[20]; /*用户名*/
  charpass[20]; /*密码*/
  floatdate[50]; /*日期*/
  chardiary[50][2000];/*日记*/
  intn; /*日记篇数*/
}stu[100];
void secretword(char[]); /*密码隐藏函数 */
void delet(void); /*删除函数*/
void menu(int x); /*菜单*/
void read(void); /*打开文件,读取里面的数据*/
void save(); /*保存信息信息*/
void admin(void); /*管理员功能函数*/
void secretword(charkey[]); /*密码隐藏函数 */
void sget(int k,int l); /*日记输入*/
void logon(void); /*注册新账号*/
void sign(void); /*登录函数*/
intn; //用户数量
void secretword(charkey[])/*密码隐藏函数 */
{
  unsigned char c;
  int i=0;
  while((c=getch())!='\r')
  {
    if(i<20&&isprint(c)){
      key[i]=c;
       i++;
      putchar('*');
    }
    elseif(i>0&&c=='\b')
    {
      i--;
      putchar('\b');
      putchar('');
      putchar('\b');
    }
  }
  printf("\n");
  key[i]='\0';
}
void menu(intx)
/*菜单*/ {   system("color0E");   if(x==0)   {     printf("\n\n\n\t\t 日记管理系统\n");     printf("\t\t*** 1.账户登录 ***\n");     printf("\t\t*** 2.账户注册 ***\n");     printf("\t\t*** 3.管理员登录 ***\n");     printf("\t\t*** 0.退 出 ***\n");   }   if(x==1)   {     printf("\n\n\t\t*** 欢迎进入日记管理后台 ***\n");     printf("\t\t*** 1.查看所有用户 ***\n");     printf("\t\t*** 2.删除日记 ***\n");     printf("\t\t*** 3.修改日记 ***\n");     printf("\t\t*** 0.返回上一页 ***\n");   }   if(x==3)   {     printf("\n\n\t\t*** 个人日记管理 ***\n");     printf("\t\t*** 1.增加日记 ***\n");     printf("\t\t*** 2.浏览日记 ***\n");     printf("\t\t*** 3.查询日记 ***\n");     printf("\t\t*** 0.返回上一页 ***\n");   }     printf("\n\t\t请输入编号:");  }

 void read(
void) /*打开文件,读取里面的数据*/  {   FILE *fp;   int i=0;   if((fp=fopen("数据.txt","rb"))==NULL)/*读入空文件,rb表示打开一个二进制文件,允许读数据*/   {     n=0;     return;   }   do{     fread(&stu[n],sizeof(structstu),1,fp);     n++;     }while(feof(fp)==0);   n--;   fclose(fp);   }
void save(
void) /*保存信息信息*/ {   FILE *fp;   int i;   if((fp=fopen("数据.txt","wb"))==NULL)/*只打开或建立一个二进制文件,只允许写数*/ {   printf("\nCannotopenfile!\n");   exit(0); }   for(i=0;i<n;i++)   if(fwrite(&stu[i],sizeof(structstu),1,fp)!=1)/*将一批数据作为一个整体一性写入磁盘文件*/   printf("文件写入错误!\n");   fclose(fp); }
void admin(
void) /*管理员功能函数*/ {   intx,i,j,l,moneys,flag,k;   char c[20],name;   float temp;   printf("\t\t确认管理员\n\n");   printf("\t\t请输入管理员密码: ");   secretword(c);   if(strcmp(c,PASS)==0) //判断密码是否正确   {     do{     system("cls"); //清屏     menu(1); //打开管理员身份菜单界面     scanf("%d",&x); //输入选项     if(x==1) //查看所有用户     {       printf("用户名\t日记个数\n");       for(i=0;i<n;i++)         printf("%5s%12d\n",stu[i].name,stu[i].n);       printf("请输入用户名: ");       scanf("%s",c);       for(i=flag=0;i<n;i++)         if(strcmp(stu[i].name,c)==0)         {           for(j=0;j<stu[i].n;j++)           {           if((int)(stu[i].date[j]*100)%10!=0)             printf("%.2f\n",stu[i].date[j]);           else             printf("%.1f\n",stu[i].date[j]);           }           printf("请输入日期: ");           scanf("%f",&temp);           for(j=0;j<stu[i].n;j++)           {             if(temp==stu[i].date[j])             {               printf("%s\n",stu[i].diary[j]);               flag=1;             }           }         }       if(flag==0)       printf("未查询到日记信息\n");       }    else if(x==2) //选择性删除日记    {     printf("用户名\t日记个数\n");     for(i=0;i<n;i++)     printf("%5s%15d\n",stu[i].name,stu[i].n);     printf("请输入用户名: ");     scanf("%s",c);     for(i=flag=0;i<n;i++)     if(strcmp(stu[i].name,c)==0)     {       for(j=0;j<stu[i].n;j++)       {       if((int)(stu[i].date[j]*100)%10!=0)         printf("%.2f\n",stu[i].date[j]);       else         printf("%.1f\n",stu[i].date[j]);       }       printf("请要删除的日记日期: ");       scanf("%f",&temp);       for(j=0;j<stu[i].n;j++)       {         if(temp==stu[i].date[j])         {         for(k=j+1;k<stu[i].n;k++)         {         strcpy(stu[i].diary[k-1],stu[i].diary[k]);         stu[i].date[k-1]=stu[i].date[k];         }         stu[i].n--;         printf("删除成功\n");         flag=1;         }       }     }     if(flag==0) printf("未查询到日记信息\n");     }    else if(x==3) //修改日记    {     printf("用户名\t日记个数\n");     for(i=0;i<n;i++)     printf("%5s%12d\n",stu[i].name,stu[i].n);     printf("请输入用户名: ");     scanf("%s",c);     for(i=flag=0;i<n;i++)     if(strcmp(stu[i].name,c)==0)     {       for(j=0;j<stu[i].n;j++)       {       if((int)(stu[i].date[j]*100)%10!=0)         printf("%.2f\n",stu[i].date[j]);       else         printf("%.1f\n",stu[i].date[j]);       }       printf("请要修改的日记日期: ");       scanf("%f",&temp);       for(j=0;j<stu[i].n;j++)       {       if(temp==stu[i].date[j])       {         printf("请重新输入该日记日期: ");         scanf("%f",&stu[i].date[j]);         printf("请重新填写该日记:\n");         sget(i,j);         printf("修改成功\n");         flag=1;         break;       }       }     }     if(flag==0)     printf("未查询到日记信息\n");    }   else if(x==0)   return;   else   printf("\t\t输入错误返回主界面\n");   system("pause"); //暂停   system("cls");   }while(1); //判断条件为真   }   else   printf("\t\t密码错误,返回主菜单\n"); }
void logon(
void) /*注册新账号*/ {   int i;   char c[20];   printf("请输入账户名:");   scanf("%s",stu[n].name);   for(i=0;i<n;i++) //利用循环来找出所匹配账户   {   if(strcmp(c,stu[i].name)==0)   {     printf("已存在该用户名,请重新输入\n");     logon();     return;   }   }   printf("请输入密码:");   scanf("%s",stu[n].pass);   stu[n].n=0; //初始化存款   n++;   printf("创建成功,按任意键返回主菜单");   getchar(); }
void sget(intk,intl)
/*日记输入*/ {   int i,j,x;   char c[500];   for(i=0;i<2000;i++)   stu[k].diary[l][i]='\0';   while(1)   {     gets(c);     x=strlen(c);     if(c[x-1]!='Z')     {       strcat(stu[k].diary[l],c);       strcat(stu[k].diary[l],"\n");     }     else     {       c[strlen(c)-1]='\n';       c[strlen(c)]='\0';       strcat(stu[k].diary[l],c);       break;     }   } }
void user(intk)
/*用户管理*/ {   int i,j,x,y,flag;   float temp;   char ch;   do{     system("cls");     menu(3);     scanf("%d",&x);     if(x==1)     {     printf("请输入日记日期(例:输入 3.6表示 3月 6日): ");     scanf("%f",&stu[k].date[stu[k].n]);     printf("下面请输入日记具体内容(Z表示结束)\n");     sget(k,stu[k].n);     stu[k].n++;     printf("添加成功\n");     }     else if(x==2)     {     printf("日期:\n");     for(i=0;i<stu[k].n;i++)     {       if((int)stu[k].date[i]*100%10!=0)       printf("%.2f\n",stu[k].date[i]);       else       printf("%.1f\n",stu[k].date[i]);     }     printf("请输入日期: ");     scanf("%f",&temp);     for(i=flag=0;i<stu[k].n;i++)     {       if(temp==stu[k].date[i])       {       printf("%s\n",stu[k].diary[i]);       flag=1;       }     }     if(flag==0)     printf("未查询到此日期\n");     }     else if(x==3)     {     printf("请输入日期: ");     scanf("%f",&temp);     for(i=flag=0;i<stu[k].n;i++)     {       if(temp==stu[k].date[i])       {       printf("%s\n",stu[k].diary[i]);       flag=1;       }     }     if(flag==0)     printf("未查询到此日期\n");     }     else if(x==0)     return;     fflush(stdin);     system("pause");     }while(1);  }
voidsign(
void) /*登录函数*/ {   int i,j,k,x;   char c[20];   double temp;   printf("请输入用户名:");   scanf("%s",c);   for(i=0;i<n;i++)   {     if(strcmp(c,stu[i].name)==0)     {     j=0;     do{     printf("请输入密码(您有%d次机会):",3-j);     secretword(c);     j++;     }while(strcmp(c,stu[i].pass)!=0&&j!=3);     if(j==3)     {     printf("密码错误\n");     return;     }     user(i);     return;     }   }   printf("未查询到此用户名信息\n"); }
int main(
void) {   int x;   read();   do{     menu(0);     scanf("%d",&x);     system("cls");     system("color0E");     switch(x)     {       case1:sign();       break;       case2:logon();       break;       case3:admin();       break;       case0:return0;       default:printf("\t\t输入错误\n");     }     save();     printf("\n\t\t");     system("pause");     system("cls");     }while(x) }

当时不写日记,找了好久才找到转换为pdf格式的文件,差不多就这样把。

posted @ 2022-03-14 22:27  安良  阅读(307)  评论(0)    收藏  举报