C语言课程设计报告——教务管理系统_第1页
C语言课程设计报告——教务管理系统_第2页
C语言课程设计报告——教务管理系统_第3页
C语言课程设计报告——教务管理系统_第4页
C语言课程设计报告——教务管理系统_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、功能说明:实现两种权限的身份登陆的教务管理系统*/#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&quo

2、t;/定义公告邮件地址#define logtimemsg "d:used login time.dat"/定义用户登录时间信息#define star_stu "d:stu_scname.dat"/定义学生起始文件信息#define stu_msg"d:stu.dat"/定义学生成绩信息地址#define mass_key "3110008758"/定义文件头部密码typedef struct student stu;#define sc_num 4/只设定4门科目,不允许改动#define uint unsig

3、ned int/*学生成绩管理系统结构*/struct studentchar num10;/*学生学号*/char name10;/*学生姓名*/uint scoresc_num;/*科目分数*/uint average;/*科目平均分*/stu *next;st;char gettemp=0;/*管理员身份识别结构*/typedef struct username user;struct usernamechar username20;/char password20;use;/*时间登录信息*/struct Logtimechar userlogin20;struct tm;char l

4、ogc;/登录次数typedef struct Logtime logtime;/=/定义通讯协议/=#define mass_max200/定义信息量struct Massageint cont;/文件数量char username15;/发送人char massmass_max;/信息mas;typedef struct Massage massage;/=/=char userlogin10;char sc_namesc_num10;/*以上是学生信息*/char welcome(void);/*用户界面,返回0,则表示退出系统*/*=学生信息操作=*/stu*creat();/*建立链

5、表*/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_

6、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)

7、;/*学生信息按学号排序*/*=学生用户登录=*/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 d

8、elemsg(void);/删除信息void chagesbject(void);/*修改课程信息*/*=用户登录信息=*/void setlogintime(void);/*记录用户登录时间*/void dislogintime(void);/*显示用户登录信息*/void setused(void);/*注册新用户资料*/char usedcheckname(char *name);/*用户信息检查,若存在用户,则返回1,否则返回0*/char usedcheckpass(char *name,char *password);/*查看用户名密码是否符合*/*=存储操作=*/char sav

9、e(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 name15;system("color b5")

10、;memset(name,'0',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,mass_key)!=0)printf("文件载入出错!t N为退出 回车键继续.:");i=getchar();if(i='n')|(i='N')fclose(fp);

11、exit(1);elseprintf("nn数据将重新初始化!n");printf("nn请输入4门科目名称n");memset(name,'0',sizeof(name);fwrite(name,sizeof(name),5,fp);strcpy(name,mass_key);rewind(fp);fwrite(name,sizeof(name),1,fp);for(i=0;i<sc_num;i+)printf("nn第%d门科目名称 : ",i+1);scanf("%s",sc_namei

12、);if(fwrite(sc_namei,sizeof(sc_namei),1,fp)!=1)printf("nntttt保存出错!n");getchar();exit(1);elseif(fp=NULL)printf("n文件错误!");fscanf(fp,"%s%s%s%s",sc_name0,sc_name1,sc_name2,sc_name3);fclose(fp);fp=fopen(share,"w");/为防止文件在后面打开错误fclose(fp);fp=fopen(manager,"w&qu

13、ot;);fclose(fp);fp=fopen(outmsg,"w");fclose(fp);doj=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,"

14、;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 username20;char userpass20;

15、char i,wrong_cont=0,key=0,weling=1,back=0;char temp;system("color b5");while(weling)dosystem("cls");printf("t*欢迎进入教务管理系统*n");printf("t* *n");printf("t* 1.用户登录 *n");printf("t* *n");printf("t* 2.用户注册 *n");printf("t* *n");p

16、rintf("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("您输入的命

17、令为: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')&a

18、mp;&(i!='5');switch(i)case '1':system("cls");memset(username,'0',sizeof(username);memset(userpass,'0',sizeof(userpass);printf("nt请输入用户名 :t");scanf("%s",username);printf("nt请输入学号 :t");scanf("%s",userpass);temp=stuch

19、eck(username,userpass);if(temp=0)printf("没有学生档案信息!请注册.n");getchar();break;else if(temp=1)memset(userlogin,'0',sizeof(userlogin);strcpy(userlogin,username);printf("nt学生成绩登录有效!");getchar();return 1;getchar();/=break;case '2':system("cls");memset(username,&

20、#39;0',sizeof(username);memset(userpass,'0',sizeof(userpass);printf("nt请输入用户名 :t");scanf("%s",username);printf("nt请输入学号 :t");scanf("%s",userpass);while(cheknum(userpass)!=1)printf("您的输入格式有误,请重新输入!n");printf("按回车键继续.n");getchar()

21、;memset(userpass,'0',sizeof(userpass);printf("nt请输入学号 :t");scanf("%s",userpass);if(newlogin(username,userpass)printf("nt注册成功!用户名:%st学号:%s",username,userpass);getchar();break;case '3':dosystem("cls");memset(username,'0',sizeof(username);

22、memset(userpass,'0',sizeof(userpass);printf("nt请输入用户名 :t");scanf("%s",username);printf("nt请输入密码 :t");scanf("%s",userpass);if(usedcheckpass(username,userpass)=0)wrong_cont+;if(wrong_cont=3)printf("nt输入次数大于3次!请按回车键退出系统!n");getchar();weling=0;re

23、turn 0;key=1;printf("nt按1选择返回主菜单nt按0继续输入用户验证码n");doback=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");prin

24、tf("nntt欢迎%s进入学生管理系统n",username);memset(userlogin,'0',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()/

25、*建立链表*/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<stu_num;i+

26、)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

27、)printf("nn输入格式出错!不能带数字或下划线!n");printf("nn请重新输入学生姓名: ");scanf("%s",p1->name); do printf("nn请输入学生%s成绩 :",sc_namej); scanf("%d",&p1->scorej);while(100<p1->scorej)|(p1->scorej<0)printf("nn成绩格式出错!n ");getchar();printf(&quo

28、t;nn请重新输入学生成绩 : ");scanf("%d",&p1->scorej);p1->average+=p1->scorej;j+;while(j<sc_num);j=0;p1->average=p1->average/4;if(i=0)head->next=p1;/*分清楚是head->next=p还是head=p*/p2=p1;p1->next=NULL;else p2->next=p1;p2=p1;p2->next=NULL;/*产生新的节点*/fwrite(p1,sizeof

29、(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<j;i+)if('0'>numi)|('9'<numi)return 0;exit(1);return 1;/*=检查学生姓名是否符合格式

30、,若正确,则返回1,否则返回0=*/char chekname(char *name)/*检查学生姓名是否符合格式*/char i;for(i=0;i<strlen(name);i+)/*if('A'>namei)|('Z'<namei)&&('a'>namei)|('z'<namei)/if(namei<18)return 0;exit(1);*/return 1;/*=显示学生成绩情况=*/void display(stu *head)/*显示用户信息*/stu *p1;ch

31、ar i=0;p1=head->next;system("cls");if(p1!=NULL)while(p1!=NULL)if(i=0)printf("姓名t学号t %st %st %st%st平均分 n",sc_name0,sc_name1,sc_name2,sc_name3);i+;printf("%st%st %dt %dt%dt%dt%dn",p1->name,p1->num,p1->score0,p1->score1,p1->score2,p1->score3,p1->ave

32、rage); p1=p1->next;getchar();elseprintf("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

33、",p2->num);while(!cheknum(p2->num)printf("nn输入格式错误!请重新输入学号 : ");scanf("%s",p2->num);printf("nn请输入学生的姓名 : ");scanf("%s",p2->name);while(!chekname(p2->name)printf("nn输入格式出错!不能带数字或下划线!n");printf("nn请重新输入学生姓名: ");scanf("

34、;%s",p2->name); do printf("nn请输入学生%s成绩 :",sc_namej); scanf("%d",&p2->scorej);while(100<p2->scorej)|(p2->scorej<0)printf("nn成绩格式出错!n ");getchar();printf("nn请重新输入学生成绩 : ");scanf("%d",&p2->scorej);p2->average+=p2->

35、;scorej;j+;while(j<sc_num);p2->average=p2->average/4;if(head->next=NULL)printf("n原链表为空!");getchar();head->next=p2;elsewhile(p1->next!=NULL)p1=p1->next;p1->next=p2;p2->next=NULL;display(head);getchar();/*=删除学生信息=*/stu* delname(stu*head,char *stu_name)/*根据学生姓名删除用户信

36、息*/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=ge

37、tchar();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;/*删除头部接点*/elsep2->next=p1->next;printf("nntttt成功删除用户信息!nnttt按回车键继续.n");free(p1);return head;

38、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)print

39、f("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')|

40、(i='N')printf("nn输入错误!t请重新输入 :");i=getchar();if(i='y')|(i='Y')if(j=0)head->next=p1->next;elsep2->next=p1->next;printf("nntttt成功删除用户信息!nnttt按回车键继续.n");free(p1);return head;else return head;p2=p1;p1=p1->next;j+;printf("nn没有此用户信息!n按回车键继续.n

41、");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(st

42、rcmp(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_name0,sc_name1,sc_name2,sc_name3);printf("%st%stt %dt %dt%dt%dt%dn",p1->name,p1->num,p1->score0,p1->score1,

43、p1->score2,p1->score3,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*)m

44、alloc(sizeof(stu);system("cls");if(head=NULL)printf("nntt没有存储学生信息!t操作错误!n");return head;p1=head;while(p1->next!=NULL)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_name0,sc_name1,sc_name2,sc_name3);printf("%st%stt %dt %dt%dt%dt%dn",p1->name,p1->num,p1->score0,p1->score1,p1->score2,p1->score3,p1->average);getchar();return p1;p1=p1->next;printf(&quo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论