一个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);
}
*/