《C语言课程设计报告——教务管理系统.doc》由会员分享,可在线阅读,更多相关《C语言课程设计报告——教务管理系统.doc(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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/定义公告地址#define logtimemsg d:used login time.dat/定义用户登录时间信息#define star_stu d:stu_same.dat/定义学生起
2、始文件信息#define stu_msgd:stu.dat/定义学生成绩信息地址#define mass_key 3110008758/定义文件头部密码typedef struct student stu;#define sc_num 4/只设定4门科目,不允许改动#define uint unsigned int/*学生成绩管理系统构造*/struct studentchar num10;/*学生学号*/char name10;/*学生XX*/uint scoresc_num;/*科目分数*/uint average;/*科目平均分*/stu *next;st;char gettemp=0;
3、/*管理员身份识别构造*/typedef struct username user;struct usernamechar username20;/char password20;use;/*时间登录信息*/struct Logtimechar userlogin20;struct tm;char logc;/登录次数typedef struct Logtime logtime;/=/定义通讯协议/=#define mass_max200/定义信息量struct Massageint cont;/文件数量char username15;/发送人char massmass_max;/信息mas;
4、typedef struct Massage massage;/=/=char userlogin10;char sc_namesc_num10;/*以上是学生信息*/char wele(void);/*用户界面,返回0,那么表示退出系统*/*=学生信息操作=*/stu*creat();/*建立链表*/void display(stu *head);/*显示用户信息*/void insert(stu *head);/*增加学生信息*/stu* delname(stu*head,char *stu_name);/*根据学生XX删除用户信息*/stu* delnum(stu *head,char
5、*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);/*检查学生学号是否符合格式
6、*/char chekname(char *name);/*检查学生XX是否符合格式*/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);/*注
7、册学生信息*/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
8、);/*注册新用户资料*/char usedcheckname(char *name);/*用户信息检查,假设存在用户,那么返回1,否那么返回0*/char usedcheckpass(char *name,char *password);/*查看用户名密码是否符合*/*=存储操作=*/char save(stu *head);/*保存用户数据*/char disload();/*显示用户信息*/stu* load(void);/*加载用户数据*/void clrtxt(char *str);/*去除文本信息*/char* creat_txt(char *username);/*根据用户名,创
9、立一个用户文件*/FILE* chekuser(char *username);/*根据用户名,查找是否有此用户信息,假设无,返回NULL*/*=-main函数-=*/void main()FILE *fp;char i,j;char name15;system(color b5);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)pri
10、ntf(文件载入出错!t N为退出回车键继续.:);i=getchar();if(i=n)|(i=N)fclose(fp);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;inext=NULL;p1=p2=(stu*)malloc(sizeof(stu);i=0,j=0;syst
11、em(cls);printf(nn请输入要录入的学生人数: );scanf(%d,&stu_num);for(i=0;iaverage=0;printf(nn请输入学生学号: );scanf(%s,p1-num);while(!cheknum(p1-num)printf(nn输入格式错误!请重新输入学号 : );scanf(%s,p1-num);printf(nn请输入学生XX : );scanf(%s,p1-name);while(!chekname(p1-name)printf(nn输入格式出错!不能带数字或下划线!n);printf(nn请重新输入学生XX: );scanf(%s,p1-
12、name); do printf(nn请输入学生%s成绩 :,sc_namej); scanf(%d,&p1-scorej);while(100scorej)|(p1-scorejscorej);p1-average+=p1-scorej;j+;while(javerage=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(stu),1,fp);p1=(stu*)m
13、alloc(sizeof(stu);display(head);getchar();fclose(fp);return head;/*=检查学生学号是否符合格式,假设正确,那么返回1,否那么返回0=*/char cheknum(char *num)/*检查学生学号是否符合格式*/char i;/*获取字符串长度*/char j=strlen(num);for(i=0;inumi)|(9numi)return 0;exit(1);return 1;/*=检查学生XX是否符合格式,假设正确,那么返回1,否那么返回0=*/char chekname(char *name)/*检查学生XX是否符合格式
14、*/char i;for(i=0;inamei)|(Znamei)|(znamei)/if(nameinext;system(cls);if(p1!=NULL)while(p1!=NULL)if(i=0)printf(XXt学号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-average); p1=p1-next;getchar();else
15、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请
16、输入学生的XX : );scanf(%s,p2-name);while(!chekname(p2-name)printf(nn输入格式出错!不能带数字或下划线!n);printf(nn请重新输入学生XX: );scanf(%s,p2-name); do printf(nn请输入学生%s成绩 :,sc_namej); scanf(%d,&p2-scorej);while(100scorej)|(p2-scorejscorej);p2-average+=p2-scorej;j+;while(javerage=p2-average/4;if(head-next=NULL)printf(n原链表为空!
17、);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)/*根据学生XX删除用户信息*/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你所删除的学生XX为: %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;/*删除头部接点*/
限制150内