2023年C语言课程设计报告——教务管理系统.docx

上传人:w*** 文档编号:81588377 上传时间:2023-03-24 格式:DOCX 页数:53 大小:23.87KB
返回 下载 相关 举报
2023年C语言课程设计报告——教务管理系统.docx_第1页
第1页 / 共53页
2023年C语言课程设计报告——教务管理系统.docx_第2页
第2页 / 共53页
点击查看更多>>
资源描述

《2023年C语言课程设计报告——教务管理系统.docx》由会员分享,可在线阅读,更多相关《2023年C语言课程设计报告——教务管理系统.docx(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2023年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 logtimem

2、sg 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 num10; /*学生学号*/ char name10; /*学生姓名*/ uint scoresc_num; /*

3、科目分数*/ uint average; /*科目平均分*/ stu *next; st; char gettemp=0; /*管理员身份识别结构*/ typedef struct username user; struct username char username20;/ char paword20; use; /*时间登录信息*/ struct Logtime char userlogin20; struct tm; ; char logc;/登录次数 typedef struct Logtime logtime; /= /定义通讯协议 /= #define ma_max 200 st

4、ruct Maage /定义信息量 int cont; /文件数量 char username15; /发送人 char mama_max;/信息 mas; typedef struct Maage maage; /= /= char userlogin10; char sc_namesc_num10; /*以上是学生信息*/ char welcome(void);/*用户界面,返回0,则表示退出系统*/ /* = 学生信息操作 = */ stu*creat();/*建立链表*/ void display(stu *head);/*显示用户信息*/ void insert(stu *head)

5、;/*增加学生信息*/ 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

6、(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(v

7、oid);/*进入普通用户登录界面*/ 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 cha

8、gesbject(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)

9、;/*保存用户数据*/ 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); memset

10、(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,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,0,

11、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_namei); if(fwrite(sc_namei,sizeof(sc_namei),1,fp)!=1) printf(nntttt保存出错!n); getchar(); exit(1); if(fp=NULL) printf(n文件错误!); fscanf(fp,%s%s%s

12、%s,sc_name0,sc_name1,sc_name2,sc_name3); 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(); wh

13、ile(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 we

14、lcome(void) char username20; char userpa20; 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); pri

15、ntf(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

16、1: system(cls); memset(username,0,sizeof(username); memset(userpa,0,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,0,sizeof(userlogin)

17、; strcpy(userlogin,username); printf(nt学生成绩登录有效!); getchar(); return 1; getchar(); /= break; case 2: system(cls); memset(username,0,sizeof(username); memset(userpa,0,sizeof(userpa); printf(nt请输入用户名 :t); scanf(%s,username); printf(nt请输入学号 :t); scanf(%s,userpa); while(cheknum(userpa)!=1) printf(您的输入格式

18、有误,请重新输入!n); printf(按回车键继续.n); getchar(); memset(userpa,0,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,0,sizeof(username); memset(userpa,0,sizeof(userpa); prin

19、tf(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输入错误!

20、按回车键继续.); 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,0,sizeof(userlogin); strcpy(userlogin,username); /记录用户 登录信息 return 2; while(key); back=0; weling=1; break; return 2; case 4: setused();/*注册新管理员资料*

21、/ 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请输入要录入的学生人数: );

22、 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-na

23、me); do printf(nn请输入学生%s成绩 :,sc_namej); scanf(%d,&p1-scorej); while(100scorej)|(p1-scorej printf(nn成绩格式出错!n ); getchar(); printf(nn请重新输入学生成绩 : ); scanf(%d,&p1-scorej); p1-average+=p1-scorej; j+; while(javerage=p1-average/4; if(i=0) /*分清楚是head-next=p还是 head-next=p1; head=p*/ p2=p1; p1-next=NULL; else

24、 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(0numi)|(9 /* =

25、显示学生成绩情况 = */ void display(stu *head)/*显示用户信息*/ for(i=0;i /*if(Anamei)|(Znamei)|(znext; 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,

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

27、um) 分 printf(nn输入格式错误!请重新输入学号 : ); scanf(%s,p2-num); printf(nn请输入学生的姓名 : ); scanf(%s,p2-name); while(!chekname(p2-name) do printf(nn请输入学生%s成绩 :,sc_namej); scanf(%d,&p2-scorej); while(100scorej)|(p2-scorej printf(nn成绩格式出错!n ); getchar(); printf(nn请重新输入学生成绩 : ); scanf(%d,&p2-scorej); printf(nn输入格式出错!不

28、能带数字或下划线!n); printf(nn请重新输入学生姓名: ); scanf(%s,p2-name); p2-average+=p2-scorej; 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

29、,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

30、)|(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); ge

31、tchar(); 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学号

32、为:%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

33、(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(p

34、1-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,p1-score2,p1-score3,p1-average); getchar(); return p1; p1=p1-next; printf(nn

35、tt找不到相关用户信息!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; w

36、hile(p1-next!=NULL) p1-name,p1-num,p1-score0,p1-score1,p1-score2,p1-score3,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_name0,sc_name1,sc_name2,sc_name3); printf(%st%stt %dt %dt%dt%dt%dn, p1=p1-next; printf(n

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁