C语言实现财务管理系统

本文实例为大家分享了C语言实现财务管理系统的具体代码,供大家参考,具体内容如下

包括

1.录入班级成员信息
2.排序
3.修改学生信息
4.删除指定学号学生
5.查找学生
6.添加财务信息
7.查询详细表
8.显示所有学生信息
9.退出

详细事项:本系统包括管理员登录和普通同学登录,两种登录方式的权限不一样,例如:同学登录只能修改自己学号的信息。初次使用(本地文件为空)需要初始化系统。每次使用完一个功能,会自动返回主函数。使用时需要注意本地文件是否齐全,包括:student.txt(储存学生信息),account.txt(储存财务信息),zh1.txt(储存账户信息),zh2.txt(储存账户信息),file2.txt(储存密码信息),file1.txt(储存密码信息)。本代码使用链表和文件系系统。本代码只是抱砖引玉。

/*首次使用,进行系统初始化 */
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>
#include<windows.h>
#include<conio.h>
char password[9];   //记录密码
char password2[9];  //记录密码
int log;   //登录状态函数
int ac;
struct student
{
 char num[15];   //学号
 char name[20];  //姓名
 char sex;       //性别
 int age;       //年龄
 int clas;      //班级
 char mail[20];  //邮箱
 char number[13]; //电话号码
};
typedef struct node{    //定义一个结构体
 struct student data;
 struct node *next;
}s;
void in(s *head);  //信息的读取
void menu();        //菜单函数
void add(s *head);           //录入函数
void dele(s *head);          //删除函数
void mod(s *head);           //修改函数
void query(s *head);         //查询函数
void sort(s *head);          //排序函数
void account();             //财务收入
void print() ;              //显示总财务
void printall();            //显示所有学生信息
void out(s *head);  //信息的存储
void in(s *head)
{
    FILE *fp;
    s *p;
    fp = fopen("student.txt","r");
    while (!feof(fp))
    {
        p= (s*)malloc(sizeof(s));
        fscanf(fp,"%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,&p->data.sex,&p->data.age,&p->data.clas,p->data.mail,p->data.number);
        p->next=NULL;
  s *last=head->next;
  if(last!=NULL){          //当链表不为空时 ,才可以让last=head
     while(last->next){    //当last不为空时 ,当while结束时,这个last指向的就是最后一个结点
      last=last->next;
     }
     last->next=p;
  }else{
   head->next=p;  //链表为空
  }
    }
    fclose(fp);
}

void out(s *head)
{
 s *p;
 FILE *fp;
 if((fp=fopen("student.txt","w"))==NULL){
  printf("File open error!\n");
  exit(0);
 }
 for(p=head->next;p;p=p->next)    //把学生信息存进文件中
    fprintf(fp,"%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number);
 fclose(fp);
}
void menu()
{
 char ch[6],*m,ch2;
 system("cls");   /*实现清屏操作,即清除之前输入的东西*/
 s *head=(s*)malloc(sizeof(s));
 head->next=NULL;
 int i;
 if(log==1)
 {
 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");
 for(i=1;i<=50;i++)   //分割线
  printf("-");
 printf("\n请选择(可多选):");
 scanf("%s",ch);
 m=ch;
 for(;*m!='\0';m++) //用数组指针实现多函数操作
 {
  switch(*m){
  case '1':system("cls");add(head);break;
     case '2':system("cls");sort(head);break;
     case '3':system("cls");mod(head);break;
        case '4':system("cls");dele(head);break;
     case '5':system("cls");query(head);break;
     case '6': account();break;
     case '7': print();break;
     case '8':printall();break;
        case '9':exit(0);
   }
 }
    system("cls");
 }
 if(log==2)
 {
 printf("因为权限问题,您只能使用一下功能\n");
 printf("3.修改学生信息\n");
 printf("4.查询信息\n");
 printf("6.添加财务信息\n");
 printf("7.查询详细表\n");
 printf("8.显示所有学生信息\n");
 printf("9.退出\n");
 for(i=1;i<=50;i++)   //分割线
  printf("-");
 printf("\n请选择(可多选):");
 scanf("%s",ch);
 m=ch;
 for(;*m!='\0';m++) //用数组指针实现多函数操作
 {
  switch(*m){
     case '3':system("cls");mod(head);break;
        case '4':system("cls");dele(head);break;
        case '6': account();break;
     case '7': print();break;
     case '8':printall();break;
        case '9':return;
   }
 }
    system("cls");
 }
}
void add(s *head)
{    //录入函数
 FILE *fp;
    int i,temp=0,sum;      //temp用来标记邮箱 sum用来标记电话号码的位数
 int x;
 system("cls");
 s *p;
 do{
  p=(s*)malloc(sizeof(s));    //申请一个内存;
  printf("请输入学号:\n");
  scanf("%s",p->data.num);    //获取学号
  s *q;
  q=head->next;               //指针指向下一个
  while(q!=NULL){    //p已经指向尾部了,所以要定义一个别的指针来做for循环遍历
   if(strcmp(p->data.num,q->data.num)==0){
    getchar();
    printf("学号重复,请重新输入:\n");
    scanf("%s",p->data.num);
   }
   q=q->next;
  }
  getchar();
  printf("\n请输入姓名:\n");
  scanf("%s",p->data.name);
  getchar();
  printf("\n请输入性别(男生填m,女生填w):\n");
  scanf("%c",&p->data.sex);
  while(1){
   if((p->data.sex=='w')||(p->data.sex=='m'))
       break;
      else{
      getchar();   //要在每一项输入之后,读入任意一个字符才能下一步操作
   printf("性别符号输入错误,请重新输入:\n");  //防止出入其他符号
   scanf("%c",&p->data.sex);
    }
  }
  getchar();
  printf("\n请输入年龄:\n");
  scanf("%d",&p->data.age);
  getchar();
  printf("\n请填入班级,仅数字:\n");
  scanf("%d",&p->data.clas);
  getchar();
  printf("\n请输入邮箱(必须有@):\n");
  scanf("%s",p->data.mail);
  while(1){
   for(i=0;p->data.mail[i]!='\0';i++){
   if(p->data.mail[i]=='@'){
    temp=1;
   }
    }
      if(temp==0){
   printf("邮箱中不包含@,请重新输入:\n");
   scanf("%s",p->data.mail);
     }else break;
  }
  getchar();
  printf("\n请输入电话号码,必须是11位:\n");
  scanf("%s",p->data.number);
  while(1){
   sum=0;
   for(i=0;p->data.number[i]!='\0';i++){
     sum+=1;
     }
      if(sum!=11){
        getchar();
     printf("号码位数超过11位或者少于11位,请重新输入:\n");
     scanf("%s",p->data.number);
     }else break;
  }
  p->next=NULL;
  s *last=head->next;
  if(last!=NULL){          //当链表不为空时 ,才可以让last=head
     while(last->next){    //当last不为空时 ,当while结束时,这个last指向的就是最后一个结点
      last=last->next;
     }
     last->next=p;
  }else{
   head->next=p;  //链表为空
  }
  getchar();
     printf("\n是否还要继续录入,是请输入1,否请输入0\n");
  scanf("%d",&x);
         if(x==0) break;
   if(x==1)
  system("cls");    //清空屏幕
 }while(1);
 if((fp=fopen("student.txt","a"))==NULL){
  printf("File open error!\n");
  exit(0);
 }
 for(p=head->next;p;p=p->next)    //把学生信息存进文件中
    fprintf(fp,"%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number);
 fclose(fp);
 printf("\n信息已经存入文件\n");
 system("pause");
 s *k;
 p=head->next;
 while(p!=NULL){    //清空链表,只剩head,方便之后的操作
  k=p->next;
  free(p);
  p=k;
 }
 head->next=NULL;
 if(x==0)
 menu();

}
void dele(s *head)
{   //删除函数
 int temp=0,i,flag2;
 in(head);   //信息的读取
 s *p,*q;
    char numb[15];
    FILE *fpw=fopen("tmp.txt","w");
 char ch1;
 ch1='-';
 system("cls");
 printf("请输入学号:");
 scanf("%s",numb);
 for(q=head,p=head->next;p;q=p,p=p->next){ //遍历链表,条件是p存在
  if(strcmp(numb,p->data.num)==0){
   temp=1;
   system("cls");
   printf("学生信息如下:");
   printf("学号:%s\n",p->data.num);
   printf("姓名:%s\n",p->data.name);
   printf("性别:%c\n",p->data.sex);
   printf("年龄:%d\n",p->data.age);
   printf("班级:%d\n",p->data.clas);
   printf("邮箱:%s\n",p->data.mail);
   printf("电话号码:%s\n",p->data.number);
   for(i=1;i<=50;i++){    //分割线
    printf("%c",ch1);
   }
   printf("\n");
   printf("是否要删除此学生信息?(1或2)\n");
   scanf("%d",&flag2);
   if(flag2==2)
   {
      printf("取消删除,三秒后返回主菜单");
      Sleep(3000);
      menu();
   }
   if(flag2==1){
    if(q){
     q->next=p->next;   //将前一个指针指向要删除的后一个结点
     out(head);
    }
    else{
     head->next=p->next;
     out(head);
    }
    free(p);
    printf("信息已删除");
       printf("三秒后返回主菜单");
    Sleep(3000);
    menu();
   }
  }
 }
 if(temp==1){   //如果temp等于一说明信息已经删除,把改过后的链表重新写入文件中
  out(head);
 }
 if(temp==0){    //没有找到学生的信息
  for(i=1;i<=50;i++)
    printf("%c",ch1);
  printf("\n没有找到此学生信息,按任意键退出\n");
  printf("三秒后返回主菜单");
  Sleep(3000);
  menu();
 }
 s *k;
 p=head->next;
 while(p!=NULL){    //清空链表,只剩head,方便之后的操作
  k=p->next;
  free(p);
  p=k;
 }
 head->next=NULL;
}
void mod(s *head)
{   //修改函数
    int nums;
 FILE *fp;
 system("cls");    //清空屏幕
 s *p,*q;   //作为链表中的指针
 in(head);
 char *m;   //用来控制修改的信息编号
 int temp=0;
 int i,sui,ban,j=1;//代表修改的年龄班级
 char num1[15];
 char ch[8];
 char xuehao[15],ming[20],xingbie,youxiang[20],haoma[20];//代表要修改的信息名
 printf("请输入要修改的学生的学号:\n");
 getchar();
 scanf("%s",num1);
    nums= atoi(num1);
//  printf("%d",nums);
     if(log==2)
  {
   if(nums != ac)
     {
   while(j)
   {
           printf("您只能修改自己的信息,请输入正确信息");
     scanf("%s",num1);
    nums= atoi(num1);
     if(ac==nums)
     {
      j=0;
     }
   }

  }
   } 

 for(p=head->next;p;p=p->next){   //遍历列表,寻找与输入相同的学号
  if(strcmp(num1,p->data.num)==0){
   temp=1;     //找到信息后的标记
   printf("1.学号:%s\n",p->data.num);     //找到后显示出完整信息
   printf("2.姓名:%s\n",p->data.name);
   printf("3.年龄:%d\n",p->data.age);
   printf("4.班级:%d\n",p->data.clas);
   printf("5.邮箱:%s\n",p->data.mail);
   printf("6.电话号码:%s\n",p->data.number);
   printf("0.退出\n");
   for(i=1;i<=50;i++){  //分割线
    printf("-");
   }
   printf("\n");
   printf("请输入要修改信息的相应序号(可多选):\n");
   scanf("%s",ch);
   getchar();
   m=ch;
   for(;*m!='\0';m++){    //用循环来解决修改多个学生信息的问题
   switch(*m){
    case '1':printf("请输入要修改学号的内容:\n");
             scanf("%s",xuehao);
       strcpy(p->data.num,xuehao);break;
    case '2':printf("\n请输入要修改姓名的内容:\n");
             scanf("%s",ming);
             strcpy(p->data.name,ming);break;
    case '3':printf("\n请输入要修改年龄的内容:\n");
             scanf("%d",&sui);
             p->data.age=sui;break;
    case '4':printf("\n请输入要修改班级的内容:\n");
             scanf("%d",&ban);
             p->data.clas=ban;break;
    case '5':printf("\n请输入要修改邮箱的内容:\n");
             scanf("%s",youxiang);
             strcpy(p->data.mail,youxiang);break;
    case '6':printf("\n请输入要修改电话号码的内容:\n");
             scanf("%s",haoma);
             strcpy(p->data.number,haoma);break;
    case '0':break;
   }
  }
     getchar();
     printf("修改后的信息如下:\n");
     printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number);//输出修改后的信息
        system("pause");//防止闪屏
   }
 }
 if(temp==1){   //如果temp等于一说明信息已经删除,把改过后的链表重新写入文件中
  out(head);
 }

    if(temp==0){   //没找到学生信息
     printf("没有此学生的信息\n");
     system("pause");
 }
 s *k;
 p=head->next;
 while(p!=NULL){    //清空链表,只剩head,方便之后的操作
  k=p->next;
  free(p);
  p=k;
 }
 head->next=NULL;
 printf("三秒后返回主菜单");
 Sleep(3000);
 menu();
}
void query(s *head)
{   //查询函数
 s *p;    //p用来遍历查找的内容
 in(head);
 p=head->next;
 system("cls");
 int i,sui,ban,temp=0;   //temp用来标记是否找到信息
 char ch;
 char xuehao[15],ming[20],xingbie,youxiang[20],haoma[20];  //用来输入查找的信息
 printf("1.学号\n");
 printf("2.姓名\n");
 printf("3.年龄\n");
 printf("4.班级\n");
 printf("5.邮箱\n");
 printf("6.电话号码\n");
 printf("7.显示所有学生的信息\n");
 printf("0.退出\n");
 for(i=1;i<=50;i++){
  printf("-");     //分割线
 }
 printf("\n");
 printf("请选择输入要查询的信息编号:\n");
 getchar();
 ch=getchar();
 if(ch=='1'){
  getchar();
  printf("请输入要查找的信息内容:\n");
     scanf("%s",xuehao);
     temp=1;
     while(p){
      if(strcmp(xuehao,p->data.num)==0){   //找到的话输出
        printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number);
       system("pause");
      }
      p=p->next;
     }
 }
  if(ch=='2'){
  getchar();
  printf("请输入要查找的信息内容:\n");
     scanf("%s",ming);
     temp=1;
     while(p){
      if(strcmp(ming,p->data.name)==0){
        printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number);
        system("pause");
      }
      p=p->next;
     }
 }
  if(ch=='3'){
  getchar();
  printf("请输入要查找的信息内容:\n");
     scanf("%c",&xingbie);
     temp=1;
     while(p){
      if(xingbie==p->data.sex){
       printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number);
         system("pause");
      }
        p=p->next;
     }
 }
  if(ch=='4'){
  getchar();
  printf("请输入要查找的信息内容:\n");
     scanf("%d",&sui);
     temp=1;
     while(p){
      if(sui==p->data.age){
        printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number);
      system("pause");
      }
     p=p->next;
     }
 }
  if(ch=='5'){
  getchar();
  printf("请输入要查找的信息内容:\n");
     scanf("%d",&ban);
     temp=1;
    while(p){
      if(ban==p->data.clas){
        printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number);
      system("pause");
      }
      p=p->next;
     }
 }
  if(ch=='6'){
  getchar();
  printf("请输入要查找的信息内容:\n");
     scanf("%s",youxiang);
     temp=1;
     while(p){
      if(strcmp(youxiang,p->data.name)==0){
        printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number);
          system("pause");
        }
     p=p->next;
     }
 }
  if(ch=='7'){
  getchar();
  printf("请输入要修查找的信息内容:\n");
     scanf("%s",haoma);
     temp=1;
     while(p){
      if(strcmp(haoma,p->data.name)==0){
        printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number);
      system("pause");
      }
      p=p->next;
     }
 }
  if(ch=='8'){
  getchar();
  temp=1;
          while(p){
      printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",p->data.num,p->data.name,p->data.sex,p->data.age,p->data.clas,p->data.mail,p->data.number);
      system("pause");
     p=p->next;
     }
 }
 if(temp==0)
 {
  printf("没有找到此学生的信息\n");
  printf("三秒后返回主菜单");
  Sleep(3000);
  menu();
 }
 s *k;
 p=head->next;
 while(p!=NULL){    //清空链表,只剩head,方便之后的操作
  k=p->next;
  free(p);
  p=k;
 }
 head->next=NULL;
 printf("查询完毕\n");
 printf("三秒后返回主菜单");
 Sleep(3000);
 menu();
}
void sort(s *head)
{    //排序函数

 system("cls");     //清空屏幕
 s *p,*q;
 in(head);
 q=head;
 p=head->next;
 s *w;
 w=head->next;
 char ch;
 printf("请输入要排序的内容(1是学号、2是年龄):\n");
 getchar();
 scanf("%c", &ch);
 if (ch == '1'){
  s *temp = (s*)malloc(sizeof(s));
  while (p != NULL)
  {
   while (p->next != NULL)     //按照学号大小排序
   {
    if (strcmp(p->data.num, p->next->data.num)<0)
    {
     temp->data = p->data;
     p->data = p->next->data;
     p->next->data = temp->data;
    }
    p = p->next;
   }
   p = q->next;
   q = p;
  }
 }
 else{
  s *temp = (s*)malloc(sizeof(s));
  while (p != NULL)
  {
   while (p->next != NULL)    //按照年龄大小排序
   {
    if (p->data.age < p->next->data.age)
    {
     temp->data = p->data;
     p->data = p->next->data;
     p->next->data = temp->data;
    }
    p = p->next;
   }
   p = q->next;
   q = p;
  }
 }
 printf("\n排序后的信息如下:\n");
 while (w != NULL){      //将排序后的链表输出
  printf("%s\t%s\t%c\t%d\t%d\t%s\t%s\n",w->data.num,w->data.name,w->data.sex,w->data.age,w->data.clas,w->data.mail,w->data.number);
  w = w->next;
 }system("pause");
 out(head);
 s *k;
 p=head->next;
 while(p!=NULL){    //清空链表,只剩head,方便之后的操作
  k=p->next;
  free(p);
  p=k;
 }
 head->next=NULL;
 printf("三秒后返回主菜单");
 Sleep(3000);
 menu();
}
void account()
{
 int n;
 char date[25];
 char item[40];
 char s1[45];
 char count[12];
 FILE *fp;

 if((fp=fopen("account.txt","at"))==NULL)
 {
  printf("Cannot open file strike any key exit!");
  getch();
  exit(1);
 }
 printf("请输入次数");
 scanf("%d",&n);
 while(n)
 {
  printf("请输入姓名\n");
  scanf("%s",&s1);
  fputs(s1,fp);
  printf("请输入日期\n");
  scanf("%s",&date);
  fputs(date,fp);
  printf("请输入名称\n");
  scanf("%s",&item);
  fputs(item,fp);
  printf("请输入金额");
  scanf("%s",&count);
   fputs(count,fp);
  n--;
 }
    fclose(fp);
 printf("三秒后返回主菜单");
 Sleep(3000);
 menu();
}
void print()
{   //打印所有财务数据
 char str[10000];
 FILE *fp;
 int qq;
 if((fp=fopen("account.txt","rt"))==NULL)
 {
  printf("Cannot open file strike any key exit!");
  getch();
  exit(1);
 }
   fgets(str,1000,fp);    //获取文件内容
      printf("%s",str);     //打印内容 

 printf("\n");
    printf("1返回主菜单");fclose(fp); //关闭文件
    scanf("%d",&qq);
    if(qq==1)
    {
     menu();
 }

 }
void printall()
{    //打印所有是学生信息函数
 char str[1000];
 FILE *fp;
 int qq;
 if((fp=fopen("student.txt","rt"))==NULL)
 {
  printf("Cannot open file strike any key exit!");
  getch();
  exit(1);     //找不到文件退出程序
 }
    while((fgets(str,1024,fp))!=NULL)

             {
                   printf(str);
             }     //打印内容
    fclose(fp);                  //关闭文件
  printf("1返回主菜单");
  scanf("%d",&qq);
  if(qq==1)
  {
  menu();
       }
}
void first()
{    //读取文件
 FILE *fp,*fp1;    /*定义文件指针*/
 char s[9],s1[9],s2[9],s3[9],ch,n;
 int i;
 ch='_';
 if((fp=fopen("file.txt","r"))==NULL)
 {
  printf("\n 请进行初始化操作!\n");
  for(i=1;i<=50;i++)/*用来做分割线*/
     printf("%c",ch);
  getch();   /*是输入一个字符,但不显示在屏幕上*/
  do{
   printf("\n 设置密码,不得超过八位数 \n");
   for(i=0;i<8&&((s[i]=getch())!=13);i++)    /*13代表的是回车*/
       putch('*'); /*显示字符*/
   printf("\n 再确认一次密码 \n");
   for(i=0;i<8&&((s1[i]=getch())!=13);i++)
       putch('*');
   s[i]='\0';
   s1[i]='\0';
   if(strcmp(s,s1)!=0)   /*判断两次密码输入是否一致*/
     printf("\n 两次密码输入不一致,请重新输入 \n");
   else break;
  } while(1);   /*当括号里是1时表示无限循环*/
   if((fp1=fopen("file.txt","w"))==NULL){
    printf("\n 系统创建失败,请按任意键退出 \n");  /*打开文件,把密码存进去*/
    getch();
    exit(1);
   }
  for(i=0;s[i]!='\0';i++)
      putw(s[i],fp1);     /*将数组元素(即密码)放入文件中*/
  fclose(fp1);            /*关闭文件*/
  printf("\n 系统初始化成功,按任意键退出后,再重新进入 \n");
  getch();
  exit(1);
 }
 else{
     i=0;
  while(!feof(fp)&&i<8)
      s2[i++]=getw(fp);  /*从文件读出字符赋给数组*/
  s2[i]='\0';
  strcpy(password,s2);   /*将数组s2的字符复制给password*/
//     enroll();
 }
 if((fp=fopen("file2.txt","r"))==NULL)
 {
  printf("\n 请进行初始化操作!\n");
  for(i=1;i<=50;i++)/*用来做分割线*/
     printf("%c",ch);
  getch();   /*是输入一个字符,但不显示在屏幕上*/
  do{
   printf("\n 设置密码,不得超过八位数 \n");
   for(i=0;i<8&&((s[i]=getch())!=13);i++)    /*13代表的是回车*/
       putch('*'); /*显示字符*/
   printf("\n 再确认一次密码 \n");
   for(i=0;i<8&&((s1[i]=getch())!=13);i++)
       putch('*');
   s[i]='\0';
   s1[i]='\0';
   if(strcmp(s,s1)!=0)   /*判断两次密码输入是否一致*/
     printf("\n 两次密码输入不一致,请重新输入 \n");
   else break;
  } while(1);   /*当括号里是1时表示无限循环*/
   if((fp1=fopen("file2.txt","w"))==NULL){
    printf("\n 系统创建失败,请按任意键退出 \n");  /*打开文件,把密码存进去*/
    getch();
    exit(1);
   }
  for(i=0;s[i]!='\0';i++)
      putw(s[i],fp1);     /*将数组元素(即密码)放入文件中*/
  fclose(fp1);            /*关闭文件*/
  printf("\n 系统初始化成功,按任意键退出后,再重新进入 \n");
  getch();
  exit(1);
 }
 else{
     i=0;
  while(!feof(fp)&&i<8)
      s3[i++]=getw(fp);  /*从文件读出字符赋给数组*/
  s2[i]='\0';
  strcpy(password2,s3);   /*将数组s2的字符复制给password*/

 }
//  enroll();
}
void enroll()
{     //登录函数
    int flag=0;
 int i,n=5;
 char str[9];
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\n");
 printf("\n");
 printf("              ----------------------------------------------------------------               \n");
 printf("              |               欢迎使用财务管理系统                            |              \n");
 printf("              |                                                               |              \n");
 printf("              |              请选择登录方式:1管理员登录       2班级成员登录  |              \n");
 printf("              ----------------------------------------------------------------               \n");
 if(getch()=='1')
 {
  log=1;
 }else
 {
  log=2;
 }
    switch(log)
    {
     case 1:
                 printf("请输入账号\n");
                 scanf("%d",&ac);
              while(n)
                 {
               printf("\n");
            printf("请输入密码");
      for(i=0;i<8&&((str[i]=getch())!=13);i++)
        putch(str[i]);   //获取键盘输入的内容
      str[i]='\0';
      for(int j=0;j<i;j++)
      {
      if(str[j]!=password[j])
      {
          flag=1;           //判断输入的密码和本地文件内的密码是否相同
      }
      else{
      flag=0;
      }
         }
                        if(flag)
                        {
                         printf("输入错误密码");
                         n--;     //密码错误可用次数减一
      }
         if(flag==0)
         {
          break;             //密码正确退出循环
      }
        }
        if(n=0 )
     {
      printf("你输入五次错误密码,请退出");
      getch();
      exit(1);  /*非正常运行导致退出程序*/
     }
              break;
     case 2:
                 printf("请输入账号\n");
                 scanf("%d",&ac);
              while(n)
              {
               printf("\n");
            printf("请输入密码");
      for(i=0;i<8&&((str[i]=getch())!=13);i++)
        putch(str[i]);                 //获取键盘输入的内容
      str[i]='\0';
      for(int j=0;j<i;j++)
      {
      if(str[j]!=password2[j])
      {
       flag=1;            //判断输入的密码和本地文件内的密码是否相同
      }
      else{
       flag=0;
      }
      }
      if(flag)
                        {
                         printf("你输入错误密码");
                         n--;  //密码错误可用次数减一
      }
      if(flag==0)
         {
          break;   //密码正确退出循环
      }
     }
     if(n=0)
     {
      printf("你输入五次错误密码,请退出");
      getch();
      exit(1);  /*非正常运行导致退出程序*/
     }

              break;

  default:    printf("您输入了无效数字");
              break; 

 }

}
int main()
{
 first(); //启动初始化函数
 enroll(); //启动登录函数
  menu(); //启动菜单函数
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言实现财务管理系统

    本文实例为大家分享了C语言实现财务管理系统的具体代码,供大家参考,具体内容如下 包括 1.录入班级成员信息 2.排序 3.修改学生信息 4.删除指定学号学生 5.查找学生 6.添加财务信息 7.查询详细表 8.显示所有学生信息 9.退出 详细事项:本系统包括管理员登录和普通同学登录,两种登录方式的权限不一样,例如:同学登录只能修改自己学号的信息.初次使用(本地文件为空)需要初始化系统.每次使用完一个功能,会自动返回主函数.使用时需要注意本地文件是否齐全,包括:student.txt(储存学生信息

  • C语言学生成绩管理系统小设计

    本文实例为大家分享了C语言学生成绩管理系统的具体代码,供大家参考,具体内容如下 一.本设计涉及的重要C语言知识有: 1.单链表的各种操作 2.文件流的操作 3.单链表的排序 二.本设计主要以下几个模块组成 1.学生成绩添加模块 2.学生成绩删除模块 3.学生成绩修改模块 4.学生成绩检索模块 5.学生成绩显示模块(包括成绩排序) 6.学生成绩保存模块 效果图: 本设计大概5.6百行代码左右,通过这个设计,本人感觉C语言熟练了很多, 希望能对像我一样的C语言菜鸟同学会有点帮助,废话少说,咱们上代码

  • C语言学生成绩管理系统课程设计

    学生成绩管理系统是比较适合初学者的.它涵盖了c语言几乎知识.对于学了c语言的人,把这个课程设计搞好(当然自己能设计出来是要有很好的基础).不管自己能不能够完成,最重要的是能弄懂.参考其他资料,试着自己编写是不错的选择.这个课程设计也是我参照资料,自己编写的.自己适当地增加了一些功能.不过,编的不够那么专业吧. #include<stdio.h> #include<string.h> #include<stdlib.h> #define size 100 char* cl

  • C语言实现图书管理系统

    目前为止跟着学校进度学习C语言大概半年左右,基础学习只学到了指针,学得非常浅.说实话,起初对C语言的印象---只是一个学习计算机语言的敲门砖,对具体C语言如何应用等,非常迷茫.直到大一下半学期的高级语言设计课程之后,试过dos运行的图形化界面的完整小程序,才发现C语言的魅力. ok,废话不多说了,下面是我第二节课的作品----C语言的图书管理系统.一个简单的小程序.并非纯原创,是基于网络搜索到的"学生管理系统"改编而成的.通过直接浏览.修改一个完整的代码,我的收获颇丰.我认为这样比枯燥

  • C语言学生信息管理系统小项目

    本文为大家分享了C语言学生信息管理系统小项目,供大家参考,具体内容如下 /* 运行环境:我是在linux里面用gcc编译的,在windows里应该也能运行,用的一些文件库函数都是c标准库,没有用linux的系统调用(纠正一下:system("clear")这个系统调用是linux的,windows里面用system("cls") ) (1)问题描述 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等.试设计一学生信息管理系统,使之能提供以下功

  • C语言学生学籍管理系统课程设计

    C语言学生学籍管理系统做了好长时间的,里面有点小问题,希望大佬找到并帮忙改改,注意输入密码三次错误会自动注销用户,密码123456 代码: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> struct student { char xuehao[100];//输入学号 char name[100];//输入姓名 char sex[100];//输入性别 int

  • C语言职工信息管理系统源码

    本文实例为大家分享了C语言职工信息管理系统的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> struct worker { char ID[20];//工号 char name[20];//姓名 char sex[5];//性别 char born[20];//生日 char edu[20];//学历 char po

  • C语言学生成绩管理系统源代码

    大学C语言实训课,C语言学生成绩管理系统,供大家参考,具体内容如下 #include<stdio.h> #include<string.h> #include<math.h> struct student { int num; char name[20]; float pingshi; float shiyan; float kaoshi; double zongping; }stu[4]; void main() { void a(); void b(); void

  • C语言实现病例管理系统

    本文实例为大家分享了C语言实现病例管理系统的具体代码,供大家参考,具体内容如下 通过十字交叉链表实现一个病例管理系统,可以查找.删除.更新信息. #include"stdio.h" #include"stdlib.h" #include"string.h" typedef struct hospital_info{ char dise_num[10]; /*病历编号*/ char ke[10]; /*门诊科别*/ char date[11]; /

  • C语言版医院管理系统

    本文实例为大家分享了C语言实现医院管理系统的具体代码,供大家参考,具体内容如下 #include "stdio.h" #include "string.h" #include "stdlib.h" #include "malloc.h" #define NULL 0 typedef struct { int num; char name[10]; int age; char sex; }people; //一个患者的信息 ty

随机推荐