大一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格式的文件,差不多就这样把。

浙公网安备 33010602011771号