码迷,mamicode.com
首页 > 移动开发 > 详细

第二节课作业电信15-2lhz150206227

时间:2016-06-20 22:29:39      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:文本文件   字符串   write   英文   电信   

设计和编写应用系统

一文件操作

写一个字符串到一个文件中,是什么方式呢?显示到屏幕上是默认的输出文件,如果是硬盘中的一个文件,首先要打开一个文件,然后才能往里写,那么就要告诉程序这个文件在什么地方,按照什么样的方式打开(读、写、读和写、添加、覆盖等),然后打开后要给这个打开的文件一个符号(指针变量),表示后续的读和写都是针对这个文件的,而不是到屏幕的,这个指针变量以后就代表了文件自身了。

       定义一个代表文件的符号(指针变量)       FILE *英文指针变量名;

打开文件的语句是                                       fopen(文件位置,打开模式);(文件位置,例如c://                                                                                                            test.txt;打开模式有几种,r(read):读,w(write): 写,a(append): 追加)

t(text): 文本文件,可省略不写

b(banary): 二进制文件

+: 读和写

一般是rt+,也可以写成r+,w+,就是读和写,能保留原来的内容。

例如:所以打开C盘下my目录中的文件c:\my\test.txt的语句是

fp=fopen"c://my/test.txt""r+";

这个时候如果打开的文件出问题的话,往一个空指针里面写东西是比较危险的,很容易把系统弄崩溃了。所以在后续的读写操作前,最好测试一下,打开文件后这个文件指针fp是否还是空的,如果是空的话,就不能往下执行了。所以语句变成了这样

if((fp=fopen" c://my/test.txt ""r+") == NULL)  

{

    printf("文件没有正确打开,不能往下执行了. \n")     

    exit(1);    

}

完整的程序

#include<stdio.h>

int main()

{

   FILE *fp;

   if((fp=fopen("c://my/test.txt","r+"))==NULL)  

   {

      printf("文件没有正确打开,不能往下执行了. \n");

  return(1);

   }

}

你会看到,程序报错,因为没有my这个目录,所以你要在C盘下先建立一个my目录,然后建立一个test.txt文件。或者你打开方式选择写和读,如果没有目录或者文件的话,程序会自动帮你建一个文件。就是这样

if((fp=fopen("c://my/test.txt","w+"))==NULL)  


这就是基本的文件的读写语句。

二能存储多个信息的结构体和结构体变量

定义一种形式,一个变量同时记录很多的信息,这就是结构体。

结构体首先要定义,因为每个程序用到的组合在一起的信息不一样,所以 第一行用struct告诉程序,下面是一个结构体

struct 英文名称 

{  分别定于变量;

};

定义 struct 英文名称 a[];

例如:

#include<stdio.h>


struct stu  

{   int num; /*学号*/

    char name[20];/*姓名*/

char sex[5];/*性别*/

int age;/*年龄*/

char sclass[20];/*班级*/

};

int main()

{

struct stu a;

printf("依次输入学号,姓名,性别,年龄,班级,用回车分割,系统会显示输入的内容 \n");

scanf("%d%s%s%d%s",&a.num,&a.name,&a.sex,&a.age,&a.sclass);

printf("以下是刚才输入的信息保存到stu类型变量a中后的结果 \n");

printf("%d%s%s%d%s",&a.num,&a.name,&a.sex,&a.age,&a.sclass);

}

三函数的应用和结构化程序设计

按照功能,将不同的代码放到一起,用大括号括起来,然后给这段代码起个名字表示,然后还要设置上参数,以便使用这个函数的时候向里传递实际的值。

int main()

{  

  int i,sum;

  pagedis();

  check();

  menu();   

}

四用户安全认证


这个函数中,用到了gets()函数,从键盘接收一个字符,还有strcmp(字符串1,字符串2),比较两个字符串是否一致,注意不能用”==”来判断两个数组是否相等,只能用”==”判断数组的元素是否相等。


void check()

{

   char userName[5];/*用户名*/

   char userPWD[5];/*密码*/

   int i,sum;

   system("color 4E");

   for(i = 1; i < 4; i++)

   {

      /*用户名和密码均为abcde;*/

    printf("   用户名和密码均为abcde\n\n");

        printf("\n       请输入您的用户名:");

        gets(userName);

        

        printf("\n       请输入您的密码:");

        gets(userPWD);

        

        if ((strcmp(userName,"abcde")==0) && (strcmp(userPWD,"abcde")==0))/*验证用户名和密码*/

        {

            printf("用户名和密码正确,显示主菜单");

            return;

        }

        else

        {

            if (i < 3)

            {

                printf("用户名或密码错误,提示用户重新输入");

                printf("用户名或密码错误,请重新输入!");

            }

            else

            {

                printf("连续3次输错用户名或密码,退出系统。");

                printf("您已连续3次将用户名或密码输错,系统将退出!");

                exit(1);

            }

        }

   }

}

下面是我根据这节课内容修改的教师工资管理系统

 

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

#include"conio.h"

#define PAGE 3

#define MAX 1000

#define N 5

int k=0;

  /*结构体类型*/

typedef struct

{   int num;/*职工号*/

    char name[20];/*姓名*/

  char sex[5];/*性别*/

  int age;/*年龄*/

  char teadentclass[20];/*班级*/

  int money;/*工资*/

}TEACHERS;

 

int read_file(TEACHERS tea[])

{ FILE *fp;

    int i=0;

  if((fp=fopen("tea.txt","rt"))==NULL)

  {printf("\n\n*****库存文件不存在!请创");

   return 0;

  }

  while(feof(fp)!=1)

    {

  fread(&tea[i],sizeof(TEACHERS),1,fp);

  if(tea[i].num==0)

            break;

  else

            i++;

  }

  fclose(fp);

  return i;

}

void save_file(TEACHERS tea[],int sum)

{FILE*fp;

 int i;

 if((fp=fopen("tea.txt","wb"))==NULL)

 {printf("写文件错误!\n");

  return;

 }

  for(i=0;i<sum;i++)

     if(fwrite(&tea[i],sizeof(TEACHERS),1,fp)!=1)

               printf("写文件错误!\n");

     fclose(fp);

}

 

 

/*创建教师信息*/

int input(TEACHERS tea[])

{  int i,x;

  for(i=0;i<1000;i++)

   {

    system("cls");  

    printf("\n\n                 录入教师信息  (最多%d)\n",MAX);

    printf("               ----------------------------\n");

   

        printf("\n                     %d个教师",k+1);

      printf("\n 请输入教师的职工号:");

        scanf("%d",&tea[k].num);

        printf("\n 请输入教师的姓名:");

        scanf("%s",tea[k].name);

           printf("\n 请输入教师的性别:");

        scanf("%s",tea[k].sex);

        printf("\n 请输入教师的年龄:");   

        scanf("%d",&tea[k].age);  

        printf("\n 请输入教师的班级:");

        scanf("%s",tea[k].teadentclass);        

        printf("\n 请输入教师的工资:");

        scanf("%d",&tea[k++].money);

        printf("\n 请按1键返回菜单或按0键继续创建");

            scanf("%d",&x);

            if(x)

              break;

   }

     

      return k;

}

 

 

/*删除教师信息*/

void deletel(TEACHERS tea[])

  { system("cls");

   char Teaname2[20];

   int i,j;

  printf("请输入教师姓名:");

  scanf("%s",Teaname2);

  printf("\n");

  for(i=0;i<k;i++)

  if(strcmp(tea[i].name,Teaname2)==0)   

    for(j=0;j<20;j++)

      tea[i].name[j]=tea[i+1].name[j];

   k--;

 

 

  printf("删除成功\n");

  printf("按任意键加回车返回主菜单!");

  scanf("%d",&i);

  getchar();

}

 

/*打印教师信息*/                                                                                                                                                                                                                                                        

void output(TEACHERS tea[])

{ system("cls");

   int i;

  for(i=0;i<k;i++)  

    printf("职工号:%d,姓名:%s,性别:%s,年龄:%d,班级:%s,工资: %d\n",tea[i].num,tea[i].name,

              tea[i].sex,tea[i].age,tea[i].teadentclass,tea[i].money);

  printf("按任意键加回车返回主菜单!");

  scanf("%d",&i);

  getchar();

}

 

/*查询教师信息*/

void inquire(TEACHERS tea[])

  { int i;

    int num;

    system("cls");

    printf("     \n\n请输入您要查找的教师的职工号");

    scanf("%d",&num);

    for(i=0;i<k;i++)

      if(num==tea[i].num)

        printf("\n\n\n职工号:%d,姓名:%s,性别:%s,年龄:%d,班级:%s,工资: %d\n",tea[i].num,tea[i].name,

             tea[i].sex,tea[i].age,tea[i].teadentclass,tea[i].money);

    printf("按任意键加回车返回主菜单!");

  scanf("%d",&i);

    getchar();

  }

 

 

/*修改教师信息*/

void change(TEACHERS tea[])

  {  int num,i,choice;

    system("cls");

   printf("\n\n\n     请输入您要修改的教师的职工号");

    scanf("%d",&num);

    for(i=0;i<k;i++)

    { if(num==tea[i].num)

        printf("\n职工号:%d,姓名:%s,性别:%s,年龄:%d,班级:%s,工资: %d\n",tea[i].num,tea[i].name,

             tea[i].sex,tea[i].age,tea[i].teadentclass,tea[i].money);

 

    printf("\n\n\n     ********请输入您想要修改的数据********\n\n");

    printf("                1. 职工号\n\n");

    printf("                2. 姓名\n\n");

   printf("               3. 性别\n\n");

    printf("                4. 年龄\n\n");

    printf("                5. 班级\n\n");

    printf("                6. 工资\n\n");

    printf("                 请选择(1-6:");

    scanf("%d",&choice);

    switch(choice)

    {case 1:{

                   printf("\n   请输入你改的新职工号");

             scanf("%d",&tea[i].num);

                        break;

                        }

     case 2:{

                   printf("\n   请输入你改的新姓名");

             scanf("%s",tea[i].name);

                        break;

                       }

     case 3:{

                   printf("\n   请输入你改的新性别");

             scanf("%s",tea[i].sex);

                        break;

                       }

     case 4:{

                   printf("\n   请输入你改的新年龄");

             scanf("%d",&tea[i].age);

                        break;

                       }

     case 5:{

                   printf("\n   请输入你改的新班级");

             scanf("%s",tea[i].teadentclass);

                        break;

                       }

     case 6:{

                   printf("\n   请输入你改的新工资");

             scanf("%d",&tea[i].money);

                        break;

                       }

    }

   

     printf("职工号:%d,姓名:%s,性别:%s,年龄:%d,班级:%s,工资: %d\n",tea[i].num,tea[i].name,

             tea[i].sex,tea[i].age,tea[i].teadentclass,tea[i].money);

      printf("按任意键加回车返回主菜单!");

     scanf("%d",&i);

     break;

   }

}

 

 

/*教师工资信息排名*/

void sort(TEACHERS tea[])

  {  int i,j,n=1,x;

    system("cls");

    int t;

      for(i=0;i<k-1;i++)

            for(j=i+1;j<k;j++)

                     if(tea[i].money<tea[j].money)

                     { t=tea[i].money;

                       tea[i].money=tea[j].money;

                       tea[j].money=t;

              t=tea[i].num;

                       tea[i].num=tea[j].num;

                       tea[j].num=t;

 

                     }

    for(i=0;i<k;i++)

            printf("排名    职工号    工资\n %d       %d       %d\n",n++,tea[i].num,tea[i].money);

    printf("按任意键加回车返回主菜单!");

   scanf("%d",&x);

    getchar();

  }

 

void pagedis()

{

  printf(" \n\n\n                   **********************************\n");

  printf("                   *                                *\n");

  printf("                   *                                *\n");

  printf("                   *                                *\n");

  printf("                   *     欢迎进入教师信息管理系统   *\n");

  printf("                   *                                *\n");

  printf("                   *                                *\n");

  printf("                   *                                *\n");

  printf("                   **********************************\n");

   

}

void check()

{

   char userName[5];/*用户名*/

   char userPWD[5];/*密码*/

   int i,sum;

  system("color 4E");

   for(i = 1; i < 4; i++)

   {

      /*用户名和密码均为abcde;*/

      printf("   用户名和密码均为abcde\n\n");

        printf("\n       请输入您的用户名:");

        gets(userName);

       

        printf("\n       请输入您的密码:");

        gets(userPWD);

       

        if ((strcmp(userName,"abcde")==0) && (strcmp(userPWD,"abcde")==0))/*验证用户名和密码*/

        {

            printf("用户名和密码正确,显示主菜单");

            return;

        }

        else

        {

            if (i < 3)

            {

                printf("用户名或密码错误,提示用户重新输入");

                printf("用户名或密码错误,请重新输入!");

            }

            else

            {

                printf("连续3次输错用户名或密码,退出系统。");

                printf("您已连续3次将用户名或密码输错,系统将退出!");

                exit(1);

            }

        }

   }

}

void menu()

{

  TEACHERS tea[20];

  int choice,k,sum;

  sum=read_file(tea);

  if(sum==0)

  {  printf("首先录入基本库存信息!按回车后进入*****\n");

      getch();

    sum=input(tea);

   }

 

  do

  { system("cls");  

    printf("\n\n\n               ********教师信息管理系统********\n\n");

    printf("                      1. 创建教师信息\n\n");

    printf("                      2. 打印教师信息\n\n");

   printf("                     3. 查询教师信息\n\n");

    printf("                      4. 修改教师信息\n\n");

    printf("                      5. 删除教师信息\n\n");

    printf("                      6. 教师工资信息排名\n\n");

    printf("                      0. 退出系统\n\n");

    printf("                       请选择(0-6:");

    scanf("%d",&choice);

    switch(choice)

    {

      case 1: k=input(tea); break;/*创建教师信息*/

      case 2: output( tea) ; break;/*打印教师信息*/

      case 3: inquire(tea); break;/*查询教师信息*/

      case 4: change(tea); break;/*修改教师信息*/

      case 5: deletel(tea); break;/*删除教师信息*/

      case 6: sort(tea); break;/*教师工资信息排名*/

      case 0: break;

    }

  }while(choice!=0);

  save_file(tea,sum);

}

int main()

{  

   

 

  int i,sum;

  pagedis();

  check();

  menu();   

 

}                   

}


第二节课作业电信15-2lhz150206227

标签:文本文件   字符串   write   英文   电信   

原文地址:http://11733306.blog.51cto.com/11723306/1791134

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!