C语言课程设计报告——教务管理系统_c语言课程设计报告

2020-02-27 其他范文 下载本文

C语言课程设计报告——教务管理系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言课程设计报告”。

功能说明:实现两种权限的身份登陆的教务管理系统 */ #include “stdio.h” #include “stdlib.h” #include “string.h” #include “time.h” #include “memory.h” #define share “d:share.dat”

//定义邮件地址

#define manager “d:manager.dat”

#define outmsg

“d:outmsg.dat” //定义管理员邮件地址

//定义公告邮件地址 //定义用户登录时间信息 //定义学生起始文件信息

//定义学生成绩信息地址 #define logtimemsg “d:used login time.dat” #define star_stu

“d:stu_scname.dat”

#define stu_msg

#define ma_key “3110008758” typedef struct student stu;#define sc_num 4

#define uint unsigned int

“d:stu.dat”

//定义文件头部密码

//只设定4门科目,不允许改动

/*学生成绩管理系统结构*/ struct student {

char num[10];/*学生学号*/ char name[10];/*学生姓名*/ uint score[sc_num];/*科目分数*/ uint average;/*科目平均分*/ stu *next;

}st;char gettemp=0;/*管理员身份识别结构*/ typedef struct username user;struct username { char username[20];// char paword[20];}use;/*时间登录信息*/ struct Logtime { char userlogin[20];struct tm;};char logc;//登录次数

typedef struct Logtime logtime;//============ //定义通讯协议

//============

#define ma_max 200 struct Maage {

//定义信息量

int cont;

//文件数量 char username[15];//发送人

char ma[ma_max];//信息 }mas;typedef struct Maage maage;

//============ //============ char userlogin[10];char sc_name[sc_num][10];/*以上是学生信息*/

char welcome(void);/*用户界面,返回0,则表示退出系统*/ /* ====================== 学生信息操作

====================== */ stu*creat();/*建立链表*/ void display(stu *head);/*显示用户信息*/ void insert(stu *head);/*增加学生信息*/ stu* delname(stu*head,char *stu_name);/*根据学生姓名删除用户信息*/ stu* delnum(stu *head,char *stu_num);/*根据学生学号删除用户信息*/ stu* checkname(stu *head,char *stu_name);/*输出指定学生的信息*/ stu* checknum(stu *head,char *stu_num);/*输出指定学生学号的学生信息*/ void changsc_name(stu *head,char *name);/*修改用户成绩*/ void changsc_num(stu *head,char *num);/*修改用户成绩*/ void waring(void);/*产生警告信息*/ char cheknum(char *num);/*检查学生学号是否符合格式*/ char chekname(char *name);/*检查学生姓名是否符合格式*/ char chekscore(char score);/*检查学生分数是否符合格式*/ stu* sortscore(stu *head);/*学生按平均成绩排序*/ stu* sortnum(stu *head);/*学生信息按学号排序*/ /* ====================== 学生用户登录

====================== */ char stulogin(void);/*进入普通用户登录界面*/ char stucheck(char *nam,char *stnum);/*查找是否存在该学生信息*/ char newlogin(char *nam,char *stnum);/*注册学生信息*/ void disnewst(void);/*获得学生信息*/ /* ====================== 系统管理选择,管理员权限

====================== */ void stu_system(void);/*对各种操作集中管理*/ void sentmsg(void);/*发送公告*/ char readmsg(void);/*浏览信息*/ char delemsg(void);//删除信息

void chagesbject(void);/*修改课程信息*/ /* ====================== 用户登录信息

====================== */ void setlogintime(void);/*记录用户登录时间*/ void dislogintime(void);/*显示用户登录信息*/ void setused(void);/*注册新用户资料*/ char usedcheckname(char *name);/*用户信息检查,若存在用户,则返回1,否则返回0*/ char usedcheckpa(char *name,char *paword);/*查看用户名密码是否符合*/ /* ====================== 存储操作

====================== */ char save(stu *head);/*保存用户数据*/ char disload();/*显示用户信息*/ stu* load(void);/*加载用户数据*/ void clrtxt(char *str);/*清除文本信息*/ char* creat_txt(char *username);/*根据用户名,创建一个用户文件*/ FILE* chekuser(char *username);/*根据用户名,查找是否有此用户信息,若无,返回NULL*/ /* ======================---------------main函数----------====================== */ void main(){

FILE *fp;char i,j;char name[15];system(“color b5”);memset(name,'',sizeof(name));if((fp=fopen(star_stu ,“r+”))==NULL){ printf(“将新建文件!n”);} fp=fopen(star_stu ,“w+”);fread(name,sizeof(name),1,fp);if(strcmp(name,ma_key)!=0){

printf(“文件载入出错!t N为退出 回车键继续...:”);i=getchar();if((i=='n')||(i=='N')){

} else { fclose(fp);exit(1);

} else {

} printf(“nn数据将重新初始化!n”);printf(“nn请输入4门科目名称n”);memset(name,'',sizeof(name));fwrite(name,sizeof(name),5,fp);strcpy(name,ma_key);rewind(fp);fwrite(name,sizeof(name),1,fp);for(i=0;i

} printf(“nn第%d门科目名称 : ”,i+1);scanf(“%s”,sc_name[i]);

if(fwrite(sc_name[i],sizeof(sc_name[i]),1,fp)!=1){

} printf(“nntttt保存出错!n”);getchar();exit(1);

if(fp==NULL)printf(“n文件错误!”);fscanf(fp,“%s%s%s%s”,sc_name[0],sc_name[1],sc_name[2],sc_name[3]);} fclose(fp);fp=fopen(share,“w”);fclose(fp);fp=fopen(manager,“w”);fclose(fp);fp=fopen(outmsg,“w”);fclose(fp);do { j=welcome();if(j==1){

system(“cls”);printf(“tt欢迎进入学生用户中心系统!”);setlogintime();

//为防止文件在后面打开错误

j=stulogin();} else if(j==2)

{ setlogintime();stu_system();} }while(j!=0);

//为防止文件未关闭,倒置文件内容 fp=fopen(share,“w”);丢失

} fclose(fp);fp=fopen(manager,“w”);fclose(fp);fp=fopen(outmsg,“w”);fclose(fp);fp=fopen(logtimemsg,“w”);fclose(fp);fp=fopen(star_stu,“w”);fclose(fp);fp=fopen(stu_msg,“w”);fclose(fp);/* ======================---------------------------初始化用户界面---------------------------====================== */ //返回1,则进入stu用户界面 //返回0,则表示退出

//返回2,则表示进入管理员界面 char welcome(void){ char username[20];

char userpa[20];char i,wrong_cont=0,key=0,weling=1,back=0;char temp;system(“color b5”);while(weling){ do{ system(“cls”);printf(“t*********************欢迎进入教务管理系统********************n”);printf(“t*

*n”);printf(“t*

1.用户登录

*n”);printf(“t*

*n”);printf(“t*

2.用户注册

*n”);printf(“t*

*n”);

printf(“t*

3.管理员登陆

*n”);printf(“t*

*n”);printf(“t*

4.管理员注册

*n”);printf(“t*

*n”);printf(“t*

5.退出系统

*n”);printf(“t*

*n”);printf(“t===============n”);printf(“t

请按命令提示操作n”);printf(“nnn”);printf(“nnn”);printf(“您输入的命令为:t”);i=getchar();if((i!='1')&&(i!='2')&&(i!='3')&&(i!='4')&&(i!='5')){ printf(“n输入错误的指令!请按命令提示操作 1-3n”);getchar();} }while((i!='1')&&(i!='2')&&(i!='3')&&(i!='4')&&(i!='5'));switch(i){

case '1': {

system(“cls”);memset(username,'',sizeof(username));memset(userpa,'',sizeof(userpa));printf(“nt请输入用户名 :t”);scanf(“%s”,username);printf(“nt请输入学号 :t”);scanf(“%s”,userpa);temp=stucheck(username,userpa);if(temp==0){

} {

} printf(“没有学生档案信息!请注册...n”);getchar();break;else if(temp==1)memset(userlogin,'',sizeof(userlogin));strcpy(userlogin,username);

printf(“nt学生成绩登录有效!”);getchar();return 1;

getchar();//======================= break;} case '2': {

} system(“cls”);memset(username,'',sizeof(username));memset(userpa,'',sizeof(userpa));printf(“nt请输入用户名 :t”);scanf(“%s”,username);printf(“nt请输入学号 :t”);scanf(“%s”,userpa);while(cheknum(userpa)!=1){

printf(“您的输入格式有误,请重新输入!n”);printf(“按回车键继续...n”);getchar();memset(userpa,'',sizeof(userpa));printf(“nt请输入学号 :t”);scanf(“%s”,userpa);} if(newlogin(username,userpa))printf(“nt注册成功!用户名:%st学号:%s”,username,userpa);getchar();break;case '3': {

do

{

system(“cls”);memset(username,'',sizeof(username));memset(userpa,'',sizeof(userpa));printf(“nt请输入用户名 :t”);scanf(“%s”,username);printf(“nt请输入密码 :t”);scanf(“%s”,userpa);if(usedcheckpa(username,userpa)==0){

wrong_cont++;if(wrong_cont==3){ printf(“nt输入次数大于3次!请按回车键退出系统!n”);

getchar();weling=0;return 0;} key=1;printf(“nt按1选择返回主菜单nt按0继续输入用户验证码n”);do {

back=getchar();

if((back!='1')&&(back!='0')){

}

printf(“nt输入错误!按回车键继续...”);getchar();}while((back!='1')&&(back!='0'));if(back=='1')key=0;} else {

key=0;weling =0;system(“cls”);printf(“nntt欢迎%s进入学生管理系统n”,username);memset(userlogin,'',sizeof(userlogin));strcpy(userlogin,username);

//记录用户

登录信息

return 2;} }while(key);back=0;weling=1;break;return 2;} case '4': {

} setused();/*注册新管理员资料*/ weling=1;break;case '5': { weling=0;

} /*

return 0;}

} } return 1;======================---------------建立链表----------====================== */ stu*creat()/*建立链表*/ {

char i,j;char stu_num;stu *p1, *p2;stu *head;FILE *fp;fp=fopen(stu_msg,“w+”);head=(stu*)malloc(sizeof(stu));head->next=NULL;p1=p2=(stu*)malloc(sizeof(stu));i=0,j=0;system(“cls”);printf(“nn请输入要录入的学生人数: ”);scanf(“%d”,&stu_num);for(i=0;i

system(“cls”);p1->average=0;printf(“nn请输入学生学号: ”);scanf(“%s”,p1->num);while(!cheknum(p1->num)){ printf(“nn输入格式错误!请重新输入学号 : ”);scanf(“%s”,p1->num);} printf(“nn请输入学生姓名 : ”);scanf(“%s”,p1->name);while(!chekname(p1->name)){ printf(“nn输入格式出错!不能带数字或下划线!n”);

printf(“nn请重新输入学生姓名: ”);scanf(“%s”,p1->name);}

do

{

printf(“nn请输入学生%s成绩 :”,sc_name[j]);

scanf(“%d”,&p1->score[j]);

while((100

score[j])||(p1->score[j]

{

printf(“nn成绩格式出错!n ”);getchar();printf(“nn请重新输入学生成绩 : ”);scanf(“%d”,&p1->score[j]);

} p1->average+=p1->score[j];j++;}while(javerage=p1->average/4;if(i==0)

/*分清楚是head->next=p还是

{

head->next=p1;head=p*/

p2=p1;

}

} p1->next=NULL;} else { p2->next=p1;p2=p1;p2->next=NULL;

/*产生新的节点*/ } fwrite(p1,sizeof(stu),1,fp);p1=(stu*)malloc(sizeof(stu));display(head);getchar();fclose(fp);return head;/* ====================== 检查学生学号是否符合格式,若正确,则返回1,否则返回0 ====================== */ char cheknum(char *num)/*检查学生学号是否符合格式*/ { char i;

/*获取字符串长度*/

} char j=strlen(num);for(i=0;i

} if(('0'>num[i])||('9'

}

/* ====================== 显示学生成绩情况

====================== */ void display(stu *head)/*显示用户信息*/ { for(i=0;i

} /*if(('A'>name[i])||(('Z'name[i]))||('z'next;system(“cls”);if(p1!=NULL){

while(p1!=NULL)

{

if(i==0)

{

printf(“姓名t学号t

%st

%st

%st%st

平均n”,sc_name[0],sc_name[1],sc_name[2],sc_name[3]);

i++;

}

printf(“%st%st %dt %dt%dt%dt%dn”,p1->name,p1->num,p1->score[0],p1->score[1],p1->score[2],p1->score[3],p1->average);

p1=p1->next;

}

getchar();} else {

printf(“ttt链表为空!nnn请按回车键继续...n”);

getchar();} } /* ====================== 插入学生信息

====================== */ void insert(stu *head)/*增加学生信息*/ { stu *p1,*p2;char j=0;p1=head->next;p2=(stu*)malloc(sizeof(stu));/*创建新的学生信息*/

p2->average=0;

system(“cls”);

printf(“nn请输入要增加的学生学号: ”);

scanf(“%s”,p2->num);

while(!cheknum(p2->num)){

printf(“nn输入格式错误!请重新输入学号 : ”);scanf(“%s”,p2->num);} printf(“nn请输入学生的姓名 : ”);scanf(“%s”,p2->name);while(!chekname(p2->name)){

}

do

{

printf(“nn请输入学生%s成绩 :”,sc_name[j]);

scanf(“%d”,&p2->score[j]);while((100

score[j])||(p2->score[j]

{

printf(“nn成绩格式出错!n ”);getchar();printf(“nn请重新输入学生成绩 : ”);scanf(“%d”,&p2->score[j]);printf(“nn输入格式出错!不能带数字或下划线!n”);printf(“nn请重新输入学生姓名: ”);scanf(“%s”,p2->name);} p2->average+=p2->score[j];j++;}while(javerage=p2->average/4;if(head->next==NULL){

} else {

} while(p1->next!=NULL)p1=p1->next;p1->next=p2;p2->next=NULL;printf(“n原链表为空!”);getchar();head->next=p2;display(head);getchar();} /* ====================== 删除学生信息

====================== */ stu* delname(stu*head,char *stu_name)/*根据学生姓名删除用户信息*/ {

stu *p1,*p2;char i,j=0;system(“cls”);if(head->next==NULL){ printf(“nn没有学生信息!t操作错误!n”);return head;} p1=head->next;p2=p1;while(p1!=NULL){

if(strcmp(p1->name,stu_name)==0){

printf(“nn你所删除的学生姓名为: %st学号为:%sn”,p1->name,p1->num);printf(“nn确定为:y,取消为nt:”);i=getchar();

while(!((i=='y')||(i=='Y')||(i=='n')||(i=='N'))){

printf(“nn输入错误!t请重新输入 :”);} i=getchar();if((i=='y')||(i=='Y')){ if(j==0)

} { } else { } printf(“nntttt成功删除用户信息!nnttt按回车键继续...n”);free(p1);return head;p2->next=p1->next;head->next=p1->next;/*删除头部接点*/ else { return head;

}

} } j++;p2=p1;p1=p1->next;} printf(“nntt没有此用户记录信息!n按回车键继续n”);getchar();system(“cls”);display(head);getchar();return head;/* ====================== 删除学生信息(以学号为对象)====================== */ stu* delnum(stu *head,char *stu_num)/*根据学生学号删除用户信息*/ {

stu *p1,*p2;char i,j=0;system(“cls”);if(head->next==NULL){ printf(“nntt没有存储学生信息!nntt操作错误!n”);return head;} p1=head->next;p2=p1;while(p1->next!=NULL){

if(strcmp(p1->num,stu_num)==0){

printf(“nn你所删除的学生姓名为: %st学号为:%sn”,p1->name,p1->num);printf(“nn确定为:y,取消为nt:”);i=getchar();

{

} while(!((i=='y')||(i=='Y')||(i=='n')||(i=='N')))printf(“nn输入错误!t请重新输入 :”);i=getchar();

}

}

if((i=='y')||(i=='Y')){

} if(j==0){ head->next=p1->next;} else { }

printf(“nntttt成功删除用户信息!nnttt按回车键继续...n”);free(p1);return head;p2->next=p1->next;else

return head;} p2=p1;p1=p1->next;j++;printf(“nn没有此用户信息!n按回车键继续...n”);getchar();system(“cls”);display(head);getchar();return head;/* ====================== 输出指定学生信息(以学生姓名为对象)====================== */ stu* checkname(stu *head,char *stu_name)/*输出指定学生的信息*/ {

stu *p1;system(“cls”);if(head==NULL){

printf(“nntt没有存储学生信息!t操作错误!n”);getchar();return head;

} } p1=head;while(p1->next!=NULL){ if(strcmp(p1->name,stu_name)==0)

{

printf(“nn你所查找的学生信息如下n”);printf(“ nn%st学号为:%sn”,p1->name,p1->num);printf(“姓名t学号tt %st %st %st%st平均分 n”, sc_name[0],sc_name[1],sc_name[2],sc_name[3]);printf(“%st%stt %dt %dt%dt%dt%dn”,p1->name,p1->num,p1->score[0],p1->score[1],p1->score[2],p1->score[3],p1->average);

} getchar();return p1;} p1=p1->next;printf(“nntt找不到相关用户信息!n按回车键继续...n”);getchar();system(“cls”);display(head);getchar();return(stu*)NULL;/* ====================== 输出指定学生信息(以学生学号为对象)====================== */ stu* checknum(stu *head,char *stu_num)/*输出指定学生学号的学生信息*/ {

stu *p1,*p2;p2=(stu*)malloc(sizeof(stu));system(“cls”);if(head==NULL){ printf(“nntt没有存储学生信息!t操作错误!n”);return head;} p1=head;

} while(p1->next!=NULL){

p1->name,p1->num,p1->score[0],p1->score[1],p1->score[2],p1->score[3],p1->average);

getchar();return p1;if(strcmp(p1->num,stu_num)==0){

printf(“nn你所查找的学生信息如下n”);printf(“ %st学号为:%sn”,p1->name,p1->num);printf(“姓名t学号tt %st %st %st%st平均分 n”, sc_name[0],sc_name[1],sc_name[2],sc_name[3]);printf(“%st%stt %dt %dt%dt%dt%dn”, } p1=p1->next;} printf(“nntt找不到相关用户信息!n按回车键继续...n”);getchar();return(stu*)NULL;/* ====================== 修改指定学生信息(以学生姓名为对象)====================== */ void changsc_name(stu *head,char *name)/*修改用户成绩*/ { stu *p;

char j=0;system(“cls”);p=checkname(head,name);if(p!=NULL){

p->average=0;printf(“nn请输入学生新的学号: ”);scanf(“%s”,p->num);while(!cheknum(p->num)){ printf(“nn输入格式错误!请重新输入学号 :n ”);scanf(“%s”,p->num);}

do

}

{

printf(“nn请输入学生成绩%s :”,sc_name[j]);

scanf(“%d”,&p->score[j]);while((100

score[j])||(p->score[j]

{

j++;

} printf(“nn成绩格式出错!n ”);getchar();printf(“nn请重新输入学生成绩 : ”);scanf(“%d”,&p->score[j]);

p->average+=p->score[j];

}while(j

p->average=p->average/4;

printf(“nntt用户数据更新完毕!n请按回车键退出...n”);

getchar();system(“cls”);display(head);

getchar();} /* ====================== 修改指定学生信息(以学生学号为对象)====================== */ void changsc_num(stu *head,char *num)/*修改用户成绩*/ {

stu *p2;char j=0;system(“cls”);p2=checknum(head,num);if(p2!=NULL){

p2->average=0;printf(“nn请输入学生姓名: ”);scanf(“%s”,p2->name);while(!chekname(p2->name)){ printf(“nn输入格式错误!请重新输入学号 : ”);scanf(“%s”,p2->name);}

do

{

}

printf(“nn请输入学生成绩%s :”,sc_name[j]);

scanf(“%d”,&p2->score[j]);while((100

score[j])||(p2->score[j]

{

printf(“nn成绩格式出错!n ”);

j++;

} getchar();printf(“nn请重新输入学生成绩 : ”);scanf(“%d”,&p2->score[j]);

p2->average+=p2->score[j];

}while(j

p2->average=p2->average/4;

printf(“nntt用户数据更新完毕!请按回车键退出...n”);

getchar();} /* ====================== ====================== ============================存储操作类函数========================== ====================== ====================== */ /* ====================== 加载学生信息

====================== */ stu* load(void)/*加载用户数据*/ {

FILE *fp;stu *p,*head,*p1;char i=0,j=0;fp=fopen(stu_msg,“r”);rewind(fp);head=(stu*)malloc(sizeof(stu));p1=p=(stu *)malloc(sizeof(stu));while(fread(p,sizeof(stu),1,fp)==1){

if(i==0){ head->next=p;p1=p;

}

} } else { p1->next=p;p1=p;p1->next=NULL;} i++;p=(stu*)malloc(sizeof(stu));j++;if(j==0){

printf(“nnttt没有数据信息可载入!n”);head=NULL;free(p);getchar();} fclose(fp);return head;/* ====================== 显示学生信息

====================== */ char disload()/*显示用户信息*/ {

FILE *fp;stu *p1;char i=0;p1=(stu*)malloc(sizeof(stu));if((fp=fopen(stu_msg,“r+”))==NULL)fp=fopen(stu_msg,“w+”);rewind(fp);while(fread(p1,sizeof(stu),1,fp)==1){ printf(“%st%st %dt %dt%dt%dt%dn”,p1->name,p1->num,p1->score[0],p1->score[1],p1->score[2],p1->score[3],p1->average);

i++;

//fread(p1,sizeof(stu),1,fp);} fclose(fp);if(i==0)

} /* { printf(“nttt文件中不含学生信息!nttt按回车键继续...n”);getchar();} else {

} printf(“nttt一共记录了%d名学生信息!nttt按回车键继续...n”,i);getchar();====================== 保存学生信息

====================== */ char save(stu *head)/*保存用户数据*/ {

stu *p;FILE *fp;stu stt;char i=0;p=head->next;system(“cls”);clrtxt(stu_msg);fp=fopen(stu_msg,“w”);rewind(fp);// if(head->next!=NULL){ while(p!=NULL)

{

fwrite(p,sizeof(stu),1,fp);p=p->next;i++;} if(i==0){

} else { printf(“没有保存数据!n”);getchar();fclose(fp);return 0;

} fclose(fp);return 1;} } else {

} fclose(fp);return 0;

fclose(fp);return 0;/* ====================== 创建文本信息

====================== */ char* creat_txt(char *username)/*根据用户名,创建一个用户文件*/ {

char name[20];FILE *fp;strcpy(name,“d:”);strcat(name,username);strcat(name,“.txt”);fp=fopen(name,“w+”);system(“cls”);if(fp!=NULL){

} else {

} printf(“nntt无法创建用户文件!nntt请按回车键继续...n”);getchar();fclose(fp);return name;//printf(“nn文件路径为:%snn”,name);//printf(“nntt用户文件创建成功!nntt请按回车键继续...n”);//getchar();fclose(fp);return name;} /* ====================== 清除文本信息

====================== */ FILE* chekuser(char *username)/*根据用户名,查找是否有此用户信息,若无,返回NULL*/ { }

/* ====================== 清除文本信息

====================== */ void clrtxt(char *str)/*清除文本信息*/ {

char clrmem[10];char semem[40];FILE *fp;int i=0,j=0;if((fp=fopen(str,“r”))==NULL){ printf(“nt无此文件!”);getchar();} else {

fclose(fp);fp=fopen(str,“w”);memset(clrmem,'',sizeof(clrmem));rewind(fp);for(i=0;i

if(fwrite(clrmem,sizeof(clrmem),1,fp)!=1){

if(j==0){ printf(“nntt文件清除失败!nntt请按回车键继续...n”);getchar();break;} else { //printf(“nntt文件清除成功!nntt请按回车键继续...n”);//getchar();break;

} /*

}

} } else j++;} fclose(fp);====================== 用户登录信息

====================== */ void setlogintime(void)/*记录用户登录时间*/ {

FILE *fp;int y,m,d,hour,min,sec;time_t T;

struct tm *timeinfo;

// 一个可以包含时间信息的长整型

// 得到机器的日历时间 time(&T);

if((fp=fopen(logtimemsg,“a+”))==NULL){ fp=fopen(logtimemsg,“w”);} time(&T);

// 得到机器的日历时间

timeinfo = localtime(&T);时间格式的指针

} /*

// 将日历时间转换为当地时间,timeinfo 是一个// 年份

// 月份 // 日期 y=timeinfo->tm_year + 1900;m=timeinfo->tm_mon + 1;d=timeinfo->tm_mday;

hour=timeinfo->tm_hour;min=timeinfo->tm_min;sec=timeinfo->tm_sec;fwrite(userlogin,sizeof(userlogin),1,fp);fwrite(timeinfo,sizeof(struct tm),1,fp);//写入用户登陆信息

printf(“nnntt登陆时间为:ntt%d年 %d月 %d日 %d时 %d分 %d秒nnn”, y, m, fclose(fp);d,hour,min,sec);====================== 用户登录信息

====================== */ void dislogintime(void)/*显示用户登录信息*/ { FILE *fp;int y,m,d,hour,min,sec;

struct tm *timeinfo;char name[10];int i=0;timeinfo=(struct tm*)malloc(sizeof(struct tm));fp=fopen(logtimemsg,“r+”);if(fp==NULL){

} else { memset(name,'',sizeof(name));while(fread(name,sizeof(name),1,fp)==1){ fread(timeinfo,sizeof(struct tm),1,fp);y=timeinfo->tm_year + 1900;m=timeinfo->tm_mon + 1;d=timeinfo->tm_mday;

hour=timeinfo->tm_hour;min=timeinfo->tm_min;sec=timeinfo->tm_sec;

// 年份ins // 月份 // 日期 printf(“nntt找不到文件信息!nntt按回车键继续...n”);getchar();i++;printf(“nt第%d次登陆时间为:%d年 %d月 %d日 %d时 %d分 %d秒t%s用户登录”,i,y, m, d,hour,min,sec,name);

} memset(name,'',sizeof(name));} if(i==0)printf(“n没有记录用户登录时间!n”);getchar();free(timeinfo);fclose(fp);} /* ====================== 用户登录信息

====================== */ void setused(void)/*注册新用户资料*/ {

FILE *fp;char chekpaword[20];char lgway[20];char i=0;system(“cls”);memset(use.paword,'',sizeof(use.paword));memset(chekpaword,'',sizeof(chekpaword));memset(use.username,'',sizeof(use.username));do{ printf(“nn请输入用户名:t”);scanf(“%s”,use.username);printf(“nn请输入用户密码:t”);scanf(“%s”,use.paword);printf(“nn请再次输入密码:t”);scanf(“%s”,chekpaword);if(strcmp(use.paword,chekpaword)!=0){

printf(“nntt密码不匹配!n按回车键继续n”);getchar();i=1;memset(use.paword,'',sizeof(use.paword));memset(chekpaword,'',sizeof(chekpaword));memset(use.username,'',sizeof(use.username));

//10检查用户密码输入

} else i=0;} while(i);strcpy(lgway,creat_txt(use.username));clrtxt(lgway);fp=fopen(lgway,“w+”);if(fp!=NULL){

rewind(fp);/*清除文本信息*/ if(fwrite(&use,sizeof(use),1,fp)==1){

rewind(fp);memset(use.username,'',sizeof(use.username));memset(use.paword,'',sizeof(use.paword));fscanf(fp,“%s%s”,use.username,use.paword);/////////////////////////////////此处写有问题!

//fread(&use,sizeof(use),1,fp);

//printf(“您保存的用户名为:%sn”,use.username);

} /*

} else {

} else {

//printf(“您保存的密码是:%sn”,use.paword);//printf(“nntt数据保存成功!n按回车键继续...n”);//getchar();fclose(fp);printf(“n数据保存失败!n按回车键继续...n”);getchar();fclose(fp);} printf(“n用户注册失败!n按回车键继续...n”);getchar();fclose(fp);} fclose(fp);====================== 用户登录信息

====================== */ char usedcheckname(char *username)/*用户信息检查*/ {

char name[20];FILE *fp;system(“color b5”);strcpy(name,“d:”);strcat(name,username);strcat(name,“.txt”);fp=fopen(name,“r+”);rewind(fp);if(fp!=NULL){

} else { printf(“nntt用户名输入错误!nntt请按回车键继续...n”);getchar();fclose(fp);return 1;

return 0;} } /* ====================== 检查输入密码是否正确

====================== */ char usedcheckpa(char *user,char *pa)/*查看用户名密码是否符合*/ {

char filename[20];FILE *fp;memset(filename,'',sizeof(filename));strcpy(filename,“d:”);strcat(filename,user);strcat(filename,“.txt”);if((fp=fopen(filename,“r”))==NULL){ printf(“n操作错误!不存在此用户!n”);getchar();return 0;} //printf(“n文件名为:%sn”,filename);getchar();memset(use.username,'',sizeof(use.username));memset(use.paword,'',sizeof(use.paword));if(fp==NULL){

printf(“nntt用户名错误!nntt请按回车键继续...n”);getchar();fclose(fp);return 0;} rewind(fp);fread(&use,sizeof(use),1,fp);//printf(“用户名:%st密码:%sn”,use.username,use.paword);//getchar();if(strcmp(use.paword,pa)==0){

system(“cls”);printf(“nntt密码输入正确!nntt请按回车键继续...n”);getchar();fclose(fp);return 1;

} /* } else { printf(“nntt密码输入错误!nntt请按回车键继续...n”);getchar();

} fclose(fp);return 0;====================== 系统管理选择

====================== */ void stu_system(void)/*对各种操作集中管理*/ {

FILE *fp;stu *head,*temp_str;char menue[8],reg[8],temp[10];char key=0,i=0,quet=0,insert_num;char str3[10];char loginout=0;system(“color b4”);head=load();do { quet=0;loginout=0;system(“color b5”);

getchar();while(head==NULL){

} while(!quet){ do{ system(“cls”);printf(“tt学生成绩管理系统ttt管理员%s登录n”,userlogin);printf(“t==============n”);printf(“t||tt0.修改课程信息n”);system(“cls”);printf(“数表为空,请至少输入一个学生信息!n”);head=creat();

printf(“t||n”);printf(“t||tt1.查看学生信息tt2.增加学生信息n”);printf(“t||n”);printf(“t||tt3.删除学生信息tt4.修改学生信息n”);printf(“t||n”);printf(“t||tt5.查找学生信息tt6.广播信息管理n”);printf(“t||n”);printf(“t||tt7.历史登录信息tt8.注销用户信息n”);printf(“t||n”);printf(“t||tt9.整理学生信息tta.退出系统n”);printf(“t==============n”);printf(“tttttt请按命令操作n”);printf(“您输入的命令是:t”);i=getchar();if(!((i>='0')||(i='0')||(i

case '0': { chagesbject();break;} case '1': {

} system(“cls”);printf(“姓名t学号t %st %st %st%st平均分 n”, sc_name[0],sc_name[1],sc_name[2],sc_name[3]);disload(head);printf(“nntt按回车键返回...nn”);getchar();break;case '2': {

system(“cls”);printf(“n请输入要增加学生的个数:t”);scanf(“%d”,&insert_num);for(temp[2]=0;temp[2]

break;} case '3': { do

{ system(“cls”);display(head);printf(“t==============================”);printf(“nt请输入删除方式:t”);printf(“nt1.以学号方式”);printf(“nt2.以姓名方式”);printf(“nt3.退出”);printf(“nt==============================”);printf(“n”);printf(“您的选择是: t”);temp[3]=getchar();if(!((temp[3]=='1')||(temp[3]=='2')||(temp[3]=='3'))){ printf(“n您的输入格式不正确,请重新输入!n按回车键继续...”);getchar();} }while(!((temp[3]=='1')||(temp[3]=='2')||(temp[3]=='3')));if(temp[3]=='1'){

} else {

memset(str3,'',sizeof(str3));printf(“n请输入您要删除的学生姓名:t”);scanf(“%s”,str3);head=delname(head,str3);system(“cls”);display(head);save(head);getchar();memset(str3,'',sizeof(str3));printf(“n请输入您要删除的学生学号:t”);scanf(“%s”,str3);head=delnum(head,str3);system(“cls”);display(head);save(head);getchar();

} break;} case '4': {

do { system(“cls”);display(head);printf(“==============================”);printf(“nt请输入修改方式:t”);printf(“nt1.以学号方式”);printf(“nt2.以姓名方式”);printf(“nt3.退出”);printf(“n==============================”);printf(“nnnnn”);printf(“您的选择是: t”);temp[4]=getchar();if(!((temp[4]=='1')||(temp[4]=='2')||(temp[4]=='3'))){ printf(“n您的输入格式不正确,请重新输入!n按回车键继续...”);getchar();} }while(!((temp[4]=='1')||(temp[4]=='2')||(temp[4]=='3')));if(temp[4]=='1'){

} memset(str3,'',sizeof(str3));printf(“n请输入您要修改的学生学号:t”);scanf(“%s”,str3);changsc_num(head,str3);save(head);else if(temp[4]=='2'){

memset(str3,'',sizeof(str3));printf(“n请输入您要修改的学生姓名:t”);scanf(“%s”,str3);changsc_name(head,str3);save(head);} break;} case '5': {

} {

do { system(“cls”);printf(“t==============================”);printf(“ntt请输入查找方式:t”);printf(“ntt1.以学号方式”);printf(“ntt2.以姓名方式”);printf(“ntt3.退出”);printf(“tn==============================”);printf(“n”);printf(“您的选择是: t”);temp[5]=getchar();if(!((temp[5]=='1')||(temp[5]=='2')||(temp[5]=='3'))){ printf(“n您的输入格式不正确,请重新输入!n按回车键继续...”);getchar();} }while(!((temp[5]=='1')||(temp[5]=='2')||(temp[5]=='3')));if(temp[5]=='1'){

memset(str3,'',sizeof(str3));printf(“n请输入您要查找的学生学号:t”);scanf(“%s”,str3);checknum(head,str3);getchar();} else if(temp[5]=='2'){ memset(str3,'',sizeof(str3));printf(“n请输入您要查找的学生姓名:t”);scanf(“%s”,str3);

checkname(head,str3);

getchar();} break;case '6': do { system(“cls”);printf(“t==============================”);printf(“nt请输入信息管理操作:n”);printf(“nt1.发布公告n”);

} printf(“nt2.删除信息n”);printf(“nt3.查看信息n”);printf(“nt4.退出”);printf(“nt==============================”);printf(“n”);printf(“您的选择是: t”);temp[6]=getchar();if(!((temp[6]>'0')&&(temp[6]

printf(“n您的输入格式不正确,请重新输入!n按回车键继续...”);getchar();} }while(!((temp[6]>'0')&&(temp[6]

case '1': {

sentmsg();break;} case '2': {

}

while(delemsg());break;case '3': {

}

while(readmsg());break;case '4': { }

break;//disload();break;} break;case '7': {

system(“cls”);dislogintime();getchar();

getchar();break;} case '8': {

} case '9': {

do { system(“cls”);printf(“t==============================”);printf(“nt请输入信息管理操作:n”);printf(“nt1.学号排序n”);printf(“nt2.平均分信息n”);printf(“nt3.退出”);printf(“nt==============================”);printf(“n”);printf(“您的选择是: t”);temp[9]=getchar();if(!((temp[9]>'0')&&(temp[9]

//先退出系统,然后进入用户登录界面

} }while(!((temp[9]>'0')&&(temp[9]

case '1': {

head=sortnum(head);save(head);disload(head);getchar();break;} case '2': {

}

}

}

head=sortscore(head);save(head);disload(head);getchar();break;break;case 'a': {

} quet=1;loginout=0;do {

system(“cls”);printf(“nnt您将退出教务管理系统...n”);printf(“nntY:确认退出ttN:返回n”);printf(“nnn”);printf(“您的选择是:t”);i=getchar();if(!((i=='y')||(i=='Y')||(i=='n')||(i=='N'))){

printf(“n您的输入有误!请按回车键继续...”);getchar();menue[7]=1;} else menue[7]=0;} while(menue[7]);if((i=='N')||(i=='n'))quet=0;break;} } if(quet==1){

} }while(loginout);}

/* ====================== 学生用户登录

====================== */ char stulogin(void)/*进入普通用户登录界面*/ {

char temp[6];//定义数据项的变量 int tem[6];char going[6];FILE *fp;maage *msg;//定义信息载体 char key,i,logout=0;while(!logout){ do { system(“cls”);printf(“

%s学生登录n”,userlogin);printf(“t=============================================n”);printf(“tt欢迎进入学生信息中心n”);printf(“n”);printf(“tt1.查看学生信息n”);printf(“n”);printf(“tt2.给管理员留言n”);printf(“n”);printf(“tt3.查看广播n”);printf(“n”);printf(“tt4.发送广播n”);printf(“n”);printf(“tt5.查看公告n”);printf(“n”);printf(“tt6.注销用户n”);printf(“t=============================================n”);printf(“

请按数字进行菜单选择n”);printf(“n您的选择是:t”);key=getchar();if(!((key>'0')&&(key

} printf(“n您的输入有误,请重新输入!”);printf(“nn请按回车键继续...”);getchar();

//如果不是选择退出

}while(!((key>'0')&&(key

} case '2': {

system(“cls”);msg=(maage*)malloc(sizeof(maage));

memset(msg->username,'',sizeof(msg->username));//清除数组内容 strcpy(msg->username,“学生”);strcpy(msg->username,userlogin);

//加载用户名 printf(“n您最大能留言的字数不超过ma_max个英文字符”);printf(“nnt请输入您要留言的信息,按回车键结束:t”);scanf(“%s”,msg->ma);fp=fopen(manager,“a+”);fwrite(msg,sizeof(maage),1,fp);fclose(fp);

printf(“n留言成功!按回车键继续...”);getchar();getchar();free(msg);

//结束操作 disnewst();getchar();getchar();break;

//显示学生信息

break;} case '3': {

system(“cls”);msg=(maage*)malloc(sizeof(maage));fp=fopen(share,“r”);memset(msg,'',sizeof(maage));//清除信息内容 going[5]=1;rewind(fp);while((fread(msg,sizeof(maage),1,fp)!=0)){ printf(“%s用户:t”,msg->username);printf(“%s:nn”,msg->ma);

//结束操作 } fclose(fp);

printf(“n退出成功!按回车键继续...”);

} getchar();getchar();free(msg);break;case '4': {

} system(“cls”);msg=(maage*)malloc(sizeof(maage));

memset(msg->username,'',sizeof(msg->username));//清除数组内容 strcpy(msg->username,“学生”);strcpy(msg->username,userlogin);

//加载用户名

system(“cls”);printf(“nt您最大能留言的字数不能超过200个英文字符”);printf(“nn请输入您要留言的信息,按回车键结束:t”);scanf(“%s”,msg->ma);fp=fopen(share,“a+”);fwrite(msg,sizeof(maage),1,fp);fclose(fp);

//结束操作

printf(“n信息发送成功!按回车键继续...”);getchar();getchar();free(msg);break;case '5': {

system(“cls”);msg=(maage*)malloc(sizeof(maage));fp=fopen(outmsg,“r”);memset(msg,'',sizeof(maage));//清除信息内容 going[5]=1;rewind(fp);while((fread(msg,sizeof(maage),1,fp)!=0)){ printf(“%s用户:t”,msg->username);printf(“%s:nn”,msg->ma);

//结束操作 } fclose(fp);printf(“n退出成功!按回车键继续...”);getchar();getchar();free(msg);break;

}

} } } case '6': { system(“cls”);do{

} printf(“ntt您将退出学生用户中心n”);printf(“nttY:确认tN:取消”);printf(“nn您的选择是:t”);temp[5]=getchar();}while(!((temp[5]=='y')||(temp[5]=='Y')||(temp[5]=='n')||(temp[5]=='N')));if(temp[5]=='y'||temp[5]=='Y'){ } return 1;break;/* ====================== 学生用户登录返回0,则说明文件不存在,返回1,则说明找到用户信息,返回2,说明刚注册了该用户信息

====================== */ char stucheck(char *nam,char *stnum)/*查找是否存在该学生信息*/ {

FILE *fp;/*用于打开用户数据库*/ stu *st;/*目的用于寻找学生信息*/ st=(stu*)malloc(sizeof(stu));fp=fopen(stu_msg,“r”);if(fp==NULL){

} rewind(fp);while((fread(st,sizeof(stu),1,fp))==1){ if((strcmp(st->name,nam)==0)&&(strcmp(st->num,stnum)==0))/*核实用户名和学号printf(“ntt没有用户数据!请重新注册用户信息...”);getchar();return 0;是否正确*/

{

memset(userlogin,'',sizeof(userlogin));

} strcpy(userlogin,st->name);

/*存在该学生用户,保存用户姓名*/

}

printf(“ntt用户存在!请按回车键继续...”);getchar();fclose(fp);

return 1;

/*关闭学生文件*/

/*操作成功*/ if(strcmp(st->name,nam)==0){

} printf(“ntt用户名存在,学号错误!请按回车键继续...n”);getchar();fclose(fp);return 2;} fclose(fp);printf(“ntt学生用户不存在n”);getchar();return 3;

/* ====================== 学生用户登录返回0,则说明文件不存在,返回1,则说明找到用户信息,返回2,说明刚注册了该用户信息

====================== */ char newlogin(char *nam,char *stnum)/*注册学生信息*/ {

char i=0;FILE *fp;stu *st;st=(stu*)malloc(sizeof(stu));i=stucheck(nam,stnum);switch(i){

case 0: {

fp=fopen(stu_msg,“w”);printf(“ntt%s信息将被注册...”,nam);getchar();memset(st->num,'',sizeof(st->num));memset(st->name,'',sizeof(st->name));

/*对数据进行清零*/ /*对数据进行清零*/

strcpy(st->name,nam);

strcpy(st->num,stnum);

st->score[0]=0;

st->score[1]=0;

st->score[2]=0;

st->score[3]=0;

st->average=0;

fwrite(st,sizeof(stu),1,fp);

fclose(fp);

return 1;

}

case 1:

{

return 0;

break;

}

case 2:

{

return 0;

break;

}

case 3:

{

memset(userlogin,'',sizeof(userlogin));

strcpy(userlogin,st->name);

fp=fopen(stu_msg,“a”);

printf(“ntt%s信息将被注册...”);

memset(st->num,'',sizeof(st->num));

memset(st->name,'',sizeof(st->name));

strcpy(st->name,nam);

strcpy(st->num,stnum);

st->score[0]=0;

st->score[1]=0;

st->score[2]=0;

st->score[3]=0;

st->average=0;

fwrite(st,sizeof(stu),1,fp);

fclose(fp);

return 1;

}

default :return 0;} }

/*保存学生信息*/

/*对数据进行清零*/ /*对数据进行清零*/

/*保存学生信息*/ /* ====================== 显示学生用户信息

====================== */ void disnewst(void)/*获得学生信息*/ {

stu *p;FILE *fp;char temp,full=0;printf(“姓名t学号t %st %st %st%st平均分 n”, sc_name[0],sc_name[1],sc_name[2],sc_name[3]);

fp=fopen(stu_msg,“r”);p=(stu*)malloc(sizeof(stu));do {

if(fread(p,sizeof(stu),1,fp)==1){ if(strcmp(userlogin,p->name)==0)

{ full=1;

/*已找到用户信息*/ /*退出循环*/

} else { temp=0;

full =0;temp =1;} } else { temp=0;} }while(temp);if(full==1){ printf(“%st%st %dt %dt%dt%dt%dn”,p->name,p->num,p->score[0],p->score[1],p->score[2],p->score[3],p->average);} getchar();else { printf(“nntt找不到学生用户信息!按回车键继续...”);

} /* getchar();getchar();} fclose(fp);

/*关闭文件信息*/ ====================== 发送公告

====================== */ void sentmsg(void)/*发送公告*/ {

} /* ====================== 浏览公告

====================== */ char readmsg(void)/*浏览信息*/ { FILE *fp;maage *msg;FILE *fp;maage *msg;int i=0;fp=fopen(outmsg,“a+”);if(fp==NULL){ } fp=fopen(outmsg,“w+”);msg=(maage*)malloc(sizeof(maage));system(“cls”);printf(“nn请输入您要公布的信息,按回车键结束:t”);memset(msg,'',sizeof(maage));//清除 scanf(“%s”,msg->ma);strcpy(msg->username,“管理员”);strcpy(msg->username,userlogin);fwrite(msg,sizeof(maage),1,fp);printf(“nn公告发布成功!”);getchar();getchar();free(msg);fclose(fp);

int i=0;char key=0;char chose,temp=1;do{ system(“cls”);printf(“======================================n”);printf(“请输入您要浏览的信息:”);printf(“ n”);printf(“1.管理员邮箱n”);printf(“n”);printf(“2.学生共享信息n”);printf(“n”);printf(“3.公告邮箱信息n”);printf(“n”);printf(“4.退出”);printf(“n======================================n”);printf(“tttt请按照提示选择nn”);printf(“nn您的选择是:t”);key=getchar();if(!((key>'0')&&(key'0')&&(key

case '1': { fp=fopen(manager,“r”);

msg=(maage*)malloc(sizeof(maage));memset(msg,'',sizeof(maage));rewind(fp);while((fread(msg,sizeof(maage),1,fp)==1)){

} printf(“%s用户:t”,msg->username);printf(“%sn”,msg->ma);memset(msg,'',sizeof(maage));getchar();getchar();free(msg);fclose(fp);return 1;

break;} case '2': { msg=(maage*)malloc(sizeof(maage));

} fp=fopen(share,“r”);memset(msg,'',sizeof(maage));//清除信息内容 rewind(fp);while((fread(msg,sizeof(maage),1,fp))!=0){ printf(“%s用户:t”,msg->username);printf(“%s:nn”,msg->ma);

} fclose(fp);printf(“nn信息读取完毕!按回车键继续...”);//结束操作 getchar();getchar();free(msg);return 1;break;case '3': { fp=fopen(outmsg,“r”);msg=(maage*)malloc(sizeof(maage));

memset(msg,'',sizeof(maage));rewind(fp);while((fread(msg,sizeof(maage),1,fp)==1)&&temp){ printf(“%s用户:t”,msg->username);printf(“%sn”,msg->ma);memset(msg,'',sizeof(maage));} getchar();getchar();free(msg);fclose(fp);return 1;break;} case '4': { return 0;break;

}

/* } } ====================== 浏览公告

====================== */ char delemsg(void)//删除信息 {

FILE *fp;maage *msg;int i=0;char key=0;char chose,temp=1;do{ system(“cls”);printf(“======================================n”);printf(“请输入您要删除的信息:”);printf(“ n”);printf(“1.管理员邮箱n”);printf(“n”);printf(“2.学生共享信息n”);printf(“n”);printf(“3.公告信息n”);printf(“n”);printf(“4.退出”);printf(“n======================================n”);printf(“tttt请按照提示选择nn”);printf(“nn您的选择是:t”);key=getchar();if(!((key>'0')&&(key

printf(“n您的输入有误,请按回车键继续...n”);getchar();} }while(!((key>'0')&&(key

《C语言课程设计报告——教务管理系统.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
C语言课程设计报告——教务管理系统
点击下载文档
相关专题 c语言课程设计报告 报告 管理系统 教务 c语言课程设计报告 报告 管理系统 教务
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文