一个c语言系统

一个c语言学生教师信息系统。

#include<stdio.h>
#include<stdlib.h>
#include <string.h>
#include<time.h>
#include<conio.h>
#define MAX_SIZE 100
#define NUM 10000
#define N 5
char username[20]="1"; //初始用户名
char password[20]="1234";//初始密码
void menu();//菜单
void menudetali();//菜单详细目录
void aboutus();//关于我们
void dengLu();//登录
void adgood();//添加老师信息
void check_goods();//检查老师信息
void save();//保存现有信息
void readgood();//读取教师信息
void deletgoods();//删除教师信息
int findgoods(int cid); //根据教师编号号查数据。如找到,返回索引值(>=0),没找到返回-1
int findcust(int cid); //根据学生学号查找数据
void updategoods();//更新教师信息
void adcust();//添加学生信息
void check_cust();//检查学生信息
void deletecust();//删除学生信息
void updatecust();//更新学生信息
void readcust();//读取学生信息
void savec();//保存学生信息
void identifying_Code (char str[],int n);//生成验证码



int n1=0;
struct Cust{
    char tel[100];
    char cname[100];
    int score;
}; 
struct Cust arrcust[NUM]; //学生结构体变量

struct Goods//老师结构体变量
{
    int cid;
    char name[100];
    double cprice;
    
};
struct Goods arr[NUM];
int n1cust=0;


int main()
{

    int choice;

    do
    {
        system("cls");
        printf("\n============================================================================\n");
        printf("\t\t\t\t学生教师信息管理系统\n");
        printf("\t\t\t\t版本:v1.0\n");
        printf("\t\t\t\t1.登陆\n");
        printf("\t\t\t\t2.关于我们\n");
        printf("\t\t\t\t3.退出\n");
        printf("============================================================================\n");
        printf("\n请输入您的选项:(1,2,3):");
        fflush(stdin);
        scanf("%d",&choice);
        switch (choice) {
            case 1:
                dengLu();
                break;
            case 2:
            	system("cls");
                aboutus();
                system("pause");
                break;
            case 3:
            	system("cls");
                printf("系统安全退出...\n");
                exit(1);
            default:
                printf("\n没有这个选项,请确认输入\n请按任意建继续. . .");
        }
    
    }while(1);
    
    return 0;
}






void aboutus()
{
    printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
    printf("\t\t\t作者:9527\n");
    printf("\t\t\tQQ:119\n");
    printf("\t\t\t版本:V33.0\n");
    printf("\t\t\t版权所有,可以翻录..\n");
    printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
}

void dengLu()
{
    char uname[20];
    int n = 3,count=0;
    int flg = 0,flg1=1;
    char code[N+1],str[N+1];
    char pass[MAX_SIZE]="";//声明并开辟空间,注意如果不初始化会出现乱码 
    int asc=0,num1=0;
    printf("请输入用户名:");
    scanf("%s",uname);
    printf("请输入密码:");
	while(1)
        {
        asc=getch();
   		if(asc!=13)//数字'13'是回车键的ASCII代码值
   		{
    		pass[num1]+=(char)asc;
    		num1++;
   		 printf("*");//密码掩盖
   		}
   		else
  		 {
    			break;
  		 }
    }
    printf("\n");
    while (n) {
        identifying_Code(code,N);
        printf("请输入验证码<您还剩%d机会>:%s\n",n,code);
        scanf("%s",str);
        n--;
        if(strcmp(code,str) == 0) {            //区分大小写的验证码
             n = 0;
             flg = 1;
             printf("验证正确.\n");
        }
}
    if (flg == 0)
         printf("对不起,您的账号已锁定.\n");
    
        
    if(strcmp(uname,username)==0&&strcmp(pass,password)==0)
        {
            system("cls");
            printf("\n************************************************************************************************************************\n");
            printf("\n\n\n\t\t\t\t\t\t登录成功,欢迎您: %s\n\n\n",uname);
            printf("\n************************************************************************************************************************\n");
            system("pause");
            readgood();
            readcust();
            menu();
        }
    else
            printf("用户名和密码错误,请确认后重新登录...\n");
            system("pause");
            system("cls");
    
}

void menudetali()
{
	system("cls");
    printf("\n********************************************************************************\n");
    printf("学生教师信息管理系统成功登录:\n");
    printf("\t\t\t1.添加老师信息\n");
    printf("\t\t\t2.查看老师信息\n");
    printf("\t\t\t3.删除老师信息\n");
    printf("\t\t\t4.更新老师信息\n");
    printf("\t\t\t5.添加学生信息\n");
    printf("\t\t\t6.查看学生信息\n");
    printf("\t\t\t7.删除学生信息\n");
    printf("\t\t\t8.更新学生信息\n");
    printf("\t\t\t9.注销\n");
    printf("********************************************************************************\n");
    printf("请您输入你的选项(1,2,3,4,5,6,7,8,9):");
}
void menu()
{
    int number;
    int flag=10;
    
    do
    {
        menudetali();
        scanf("%d",&number);
        fflush(stdin);
        switch (number) {
            case 1:
                adgood();
                break;
            case 2:
                check_goods();
                break;
            case 3:
                deletgoods();
                break;
            case 4:
                updategoods();
                break;
            case 5:
            	adcust();
            	break;
            case 6:
            	check_cust();
            	break;
            case 7:
            	deletecust();
            	break;
            case 8:
            	updatecust();
            	break;
            case 9:
                flag=0;
                printf("注销用户...\n");
                save();
                savec();
                break;
                
            default:
                break;
        }
        
    }while(flag);
}

//添加货物函数,循环内先输入一次数据,用total来计算每次录入了多少个,用n1来计算一共有多少个数据
void adgood()
{
    int total=0;
    printf("是否想输入老师信息:(y/n) ");
    fflush(stdin);
    char choice;
    scanf("%c",&choice);
    while(choice=='y')
    {
        printf("请录入第%d个老师的信息:\n",n1+1);
        srand((int)time(0));
        arr[n1].cid = rand()%100000+1;
        printf("商品编号为:%d\n",arr[n1].cid);
        printf("请输入老师工资:\n");
        scanf("%lf",&arr[n1].cprice);
        fflush(stdin);
        printf("请输入老师名称:\n");
        scanf("%s",arr[n1].name);
        fflush(stdin);
        printf("是否继续?(y/n)\n");
        scanf("%c",&choice);
        n1++;
        total++;
    }; 
    printf("本次录入老师完毕,新录入%d,共计上线有%d个老师\n",total,n1);
    system("pause");
}




/*
if((fp=fopen("data.txt","rt"))==NULL)
 {
    printfI("文件不存在");
 }
 fread(数组,size,count,fp)
 */

void save()
{
    FILE *fp;
    fp=fopen("exdataple.txt", "wt");
    fwrite(arr,sizeof(struct Goods),n1,fp);
    fclose(fp);
    printf("成功保存%d个老师数据\n",n1);
}

void readgood()
{
    FILE * fp;
    if((fp=fopen("exdataple.txt", "rt"))==NULL){
        printf("并且没有exdataple.txt这个文件\n");
        return;
    }
    n1=0;
    while (fread(&arr[n1], sizeof(struct Goods),1,fp)>0) {
        n1++;
    }
    fclose(fp);
    printf("读取文件成功,一共获取%d个老师.",n1);
}


void deletgoods(){
	system("cls");
    int cid,index,i;
    printf("请输入要删除的老师编号: ");
    scanf("%d",&cid);
    index = findgoods(cid);
    if(index==-1){
        printf("没有这个老师%d,请确认后删除\n",cid);
        system("pause");
        return;
    }
    for(i=index+1;i<n1;i++){
        arr[i-1]=arr[i];
    }
    n1--;
    printf("删除老师编号为%d的元素成功,目前系统中还有%d个老师\n",cid,n1);
    system("pause");
}

int findgoods(int cid)
{
    int i;
    for(i=0;i<n1;i++){
        struct Goods c=arr[i];
        if(c.cid==cid)
            return i;
    }
    return -1;
}

int findcust(int cid)
{
    int i;
    for(i=0;i<n1;i++){
        struct Cust c=arrcust[i];
        if(c.score==cid)
            return i;
    }
    return -1;
}

void updategoods()
{
    int cid,index;
    printf("请输入要更新的老师编号: ");
    scanf("%d",&cid);
    index = findgoods(cid);
    if(index==-1){
        printf("没有这个老师%d,请确认后更新\n",cid);
        system("pause");
        return;
    }
    struct Goods com=arr[index];
    printf("待更新老师原信息:\n");
    printf("老师编号\t老师名\t\t工资\n");
    printf("%d\t\t%s\t\t%4.1lf\n",com.cid,com.name,com.cprice);
    
    printf("请输入更新后的名称: ");
    scanf("%s",com.name);
    printf("请输入更新后的工资: ");
    scanf("%lf",&com.cprice);
    
    arr[index]=com;
    printf("更新成功...\n");
    system("pause");
    
}
int qwq=0;
void check_goods()
{
	system("cls");
    double average=0,sum=0;
    
    struct Goods max=arr[0],min=arr[0];
    qwq=0;
    for(;qwq<n1;qwq++){
        sum+=arr[qwq].cprice;
    }
    average=sum/n1;
    qwq=1;
    for(;qwq<n1;qwq++){
        int j=0;
        if(max.cprice<arr[qwq].cprice){
            j=qwq;
            max=arr[qwq];
        }
    }
    qwq=1;
    for(;qwq<n1;qwq++){
        int j=0;
        if(min.cprice>arr[qwq].cprice){
            j=qwq;
            min=arr[qwq];
        }
    }
    printf("本系统中老师信息如下:\n");
    printf("=======================================\n");
    printf("老师编号\t老师名称\t工资\n");
    qwq=0;
    for(;qwq<n1;qwq++)
    {
        printf("%d\t\t%s\t\t%4.1lf\n",arr[qwq].cid,arr[qwq].name,arr[qwq].cprice);
    }
    printf("\n=======================================\n");
    
    printf("本系统中共计%d个老师,其中最高工资为:%.1lf,它是%s,最低工资为%.1lf\n,它是%s,平均值工资为:%6.1lf,",            n1,max.cprice,max.name,min.cprice,min.name,average);
	system("pause");
}

void adcust()
{
	int total=0;
    printf("是否想输入学生:(y/n) ");
    fflush(stdin);
    char choice;
    scanf("%c",&choice);
    while(choice=='y')
    {
        printf("请录入第%d个学生的信息:\n",n1cust+1);
        printf("输入学生的电话号码: \n");
        scanf("%s",&arrcust[n1cust].tel);
        printf("请输入学生学号:\n");
        scanf("%d",&arrcust[n1cust].score);
        fflush(stdin);
        printf("请输入学生名:\n");
        scanf("%s",arrcust[n1cust].cname);
        fflush(stdin);
        printf("是否继续?(y/n)\n");
        scanf("%c",&choice);
        n1cust++;
        total++;
    };
    printf("本次录入学生完毕,新录入%d,共计上线有%d个学生\n",total,n1cust);
    system("pause");
	
	
}

void check_cust()
{
	int qwq;
	system("cls");

    printf("本系统中学生信息如下:\n");
    printf("=======================================\n");
    printf("学生电话\t\t学生学号\t\t学生名称\n");
    qwq=0;
    for(;qwq<n1cust;qwq++)
    {
        printf("%s\t\t\t%d\t\t\t%s\n",arrcust[qwq].tel,arrcust[qwq].score,arrcust[qwq].cname);
    }
    printf("\n=======================================\n");
    
    printf("本系统中共计%d个学生\n",n1cust);
	system("pause");


}

void deletecust()
{
	system("cls");
    int cid,index,i;
    printf("请输入要删除的学生学号: ");
    scanf("%d",&cid);
    index = findcust(cid);
    if(index==-1){
        printf("没有这个学生%d,请确认后删除\n",cid);
        system("pause");
        return;
    }
    for(i=index+1;i<n1cust;i++){
        arrcust[i-1]=arrcust[i];
    }
    n1cust--;
    printf("删除学生号为%d的学生成功,目前系统中还有%d个学生\n",cid,n1cust);
    system("pause");
}

void updatecust(){
	
	system("cls");
	int cid,index;
    printf("请输入要更新的学生score: ");
    scanf("%d",&cid);
    index = findcust(cid);
    if(index==-1){
        printf("没有这个学生%d,请确认后更新\n",cid);
        system("pause");
        return;
    }
    struct Cust com=arrcust[index];
    printf("待更新学生原信息:\n");
    printf("学生电话\t学生分数\t\t学生名\n");
    printf("%s\t\t%d\t\t\t%s\n",com.tel,com.score,com.cname);
    
    printf("请输入更新后的学生名称: \n");
    scanf("%s",com.cname);
    printf("请输入更新后的分数: \n");
    scanf("%d",&com.score);
    
    arrcust[index]=com;
    printf("更新完毕...\n");
    system("pause");
	
}

void readcust()
{
	FILE * fp;
    if((fp=fopen("custdata.txt", "rt"))==NULL){
        printf("并且没有custdata.txt这个文件\n");
        return;
    }
    n1cust=0;
    while (fread(&arrcust[n1cust], sizeof(struct Cust),1,fp)>0) {
        n1cust++;
    }
    fclose(fp);
    printf("读取文件成功,一共获取%d个学生.",n1cust);
	
	
}
void savec(){
	FILE *fp;
    fp=fopen("custdata.txt", "wt");
    fwrite(arrcust,sizeof(struct Cust),n1cust,fp);
    fclose(fp);
    printf("成功保存%d个学生数据\n",n1cust);
	
	
	
}
void identifying_Code (char str[],int n)
{
    int i,j,len;
    char pstr[] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJLMNOPQRSTUVWXYZ";
    len = strlen(pstr);         //求字符串pstr的长度
    srand(time(0));
    for (i = 0;i < n; i++) {
         j = rand()%len;        //生成0~len-1的随机数
         str[i] = pstr[j];
     }
     str[i] = '\0';
}

/*void transe()
{

	char pass[MAX_SIZE]="";//声明并开辟空间,注意如果不初始化会出现乱码
	int asc=0,num=0;
	printf("insert your password\n");
    while(1)
       {
        asc=getch();
   		if(asc!=13)//数字'13'是回车键的ASCII代码值
   		{
    		pass[num]+=(char)asc;
    		num++;
   			printf("*");//密码掩盖
   		}
   		else
  		{
    		break;
  		}
}
      printf("\n");
      printf("%s\n",pass);
}
*/
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值