C语言课程设计报告教务管理系统.docx
- 文档编号:6469901
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:80
- 大小:127.46KB
C语言课程设计报告教务管理系统.docx
《C语言课程设计报告教务管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告教务管理系统.docx(80页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告教务管理系统
功能说明:
实现两种权限的身份登陆的教务管理系统
*/
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"time.h"
#include"memory.h"
#defineshare"d:
\\share.dat"//定义邮件地址
#definemanager"d:
\\manager.dat"//定义管理员邮件地址
#defineoutmsg"d:
\\outmsg.dat"//定义公告邮件地址
#definelogtimemsg"d:
\\usedlogintime.dat"//定义用户登录时间信息
#definestar_stu"d:
\\stu_scname.dat"//定义学生起始文件信息
#definestu_msg"d:
\\stu.dat"//定义学生成绩信息地址
#definemass_key"3110008758"//定义文件头部密码
typedefstructstudentstu;
#definesc_num4//只设定4门科目,不允许改动
#defineuintunsignedint
/*学生成绩管理系统结构*/
structstudent
{
charnum[10];/*学生学号*/
charname[10];/*学生姓名*/
uintscore[sc_num];/*科目分数*/
uintaverage;/*科目平均分*/
stu*next;
}st;
chargettemp=0;
/*管理员身份识别结构*/
typedefstructusernameuser;
structusername
{
charusername[20];//
charpassword[20];
}use;
/*时间登录信息*/
structLogtime
{
charuserlogin[20];
structtm;
};
charlogc;//登录次数
typedefstructLogtimelogtime;
//==========================================================
//定义通讯协议
//==========================================================
#definemass_max200//定义信息量
structMassage
{
intcont;//文件数量
charusername[15];//发送人
charmass[mass_max];//信息
}mas;
typedefstructMassagemassage;
//==========================================================
//==========================================================
charuserlogin[10];
charsc_name[sc_num][10];
/*以上是学生信息*/
charwelcome(void);/*用户界面,返回0,则表示退出系统*/
/*
====================================================================
学生信息操作
====================================================================
*/
stu*creat();/*建立链表*/
voiddisplay(stu*head);/*显示用户信息*/
voidinsert(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);/*输出指定学生学号的学生信息*/
voidchangsc_name(stu*head,char*name);/*修改用户成绩*/
voidchangsc_num(stu*head,char*num);/*修改用户成绩*/
voidwaring(void);/*产生警告信息*/
charcheknum(char*num);/*检查学生学号是否符合格式*/
charchekname(char*name);/*检查学生姓名是否符合格式*/
charchekscore(charscore);/*检查学生分数是否符合格式*/
stu*sortscore(stu*head);/*学生按平均成绩排序*/
stu*sortnum(stu*head);/*学生信息按学号排序*/
/*
====================================================================
学生用户登录
====================================================================
*/
charstulogin(void);/*进入普通用户登录界面*/
charstucheck(char*nam,char*stnum);/*查找是否存在该学生信息*/
charnewlogin(char*nam,char*stnum);/*注册学生信息*/
voiddisnewst(void);/*获得学生信息*/
/*
====================================================================
系统管理选择,管理员权限
====================================================================
*/
voidstu_system(void);/*对各种操作集中管理*/
voidsentmsg(void);/*发送公告*/
charreadmsg(void);/*浏览信息*/
chardelemsg(void);//删除信息
voidchagesbject(void);/*修改课程信息*/
/*
====================================================================
用户登录信息
====================================================================
*/
voidsetlogintime(void);/*记录用户登录时间*/
voiddislogintime(void);/*显示用户登录信息*/
voidsetused(void);/*注册新用户资料*/
charusedcheckname(char*name);/*用户信息检查,若存在用户,则返回1,否则返回0*/
charusedcheckpass(char*name,char*password);/*查看用户名密码是否符合*/
/*
====================================================================
存储操作
====================================================================
*/
charsave(stu*head);/*保存用户数据*/
chardisload();/*显示用户信息*/
stu*load(void);/*加载用户数据*/
voidclrtxt(char*str);/*清除文本信息*/
char*creat_txt(char*username);/*根据用户名,创建一个用户文件*/
FILE*chekuser(char*username);/*根据用户名,查找是否有此用户信息,若无,返回NULL*/
/*
====================================================================
---------------main函数----------
====================================================================
*/
voidmain()
{
FILE*fp;
chari,j;
charname[15];
system("colorb5");
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("文件载入出错!
\tN为退出回车键继续...:
");
i=getchar();
if((i=='n')||(i=='N'))
{
fclose(fp);
exit
(1);
}
else
{
printf("\n\n数据将重新初始化!
\n");
printf("\n\n请输入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 { printf("\n\n第%d门科目名称: ",i+1); scanf("%s",sc_name[i]); if(fwrite(sc_name[i],sizeof(sc_name[i]),1,fp)! =1) { printf("\n\n\t\t\t\t保存出错! \n"); getchar(); exit (1); } } } } else { 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("\t\t欢迎进入学生用户中心系统! "); setlogintime(); j=stulogin(); } elseif(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,则表示进入管理员界面 charwelcome(void) { charusername[20]; charuserpass[20]; chari,wrong_cont=0,key=0,weling=1,back=0; chartemp; system("colorb5"); 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("\n\n\n"); printf("\n\n\n"); printf("您输入的命令为: \t"); i=getchar(); if((i! ='1')&&(i! ='2')&&(i! ='3')&&(i! ='4')&&(i! ='5')) { printf("\n输入错误的指令! 请按命令提示操作1-3\n"); getchar(); } }while((i! ='1')&&(i! ='2')&&(i! ='3')&&(i! ='4')&&(i! ='5')); switch(i) { case'1': { system("cls"); memset(username,'\0',sizeof(username)); memset(userpass,'\0',sizeof(userpass)); printf("\n\t请输入用户名: \t"); scanf("%s",username); printf("\n\t请输入学号: \t"); scanf("%s",userpass); temp=stucheck(username,userpass); if(temp==0) { printf("没有学生档案信息! 请注册...\n"); getchar(); break; } elseif(temp==1) { memset(userlogin,'\0',sizeof(userlogin)); strcpy(userlogin,username); printf("\n\t学生成绩登录有效! "); getchar(); return1; } getchar(); //======================= break; } case'2': { system("cls"); memset(username,'\0',sizeof(username)); memset(userpass,'\0',sizeof(userpass)); printf("\n\t请输入用户名: \t"); scanf("%s",username); printf("\n\t请输入学号: \t"); scanf("%s",userpass); while(cheknum(userpass)! =1) { printf("您的输入格式有误,请重新输入! \n"); printf("按回车键继续...\n"); getchar(); memset(userpass,'\0',sizeof(userpass)); printf("\n\t请输入学号: \t"); scanf("%s",userpass); } if(newlogin(username,userpass)) printf("\n\t注册成功! 用户名: %s\t学号: %s",username,userpass); getchar(); break; } case'3': { do { system("cls"); memset(username,'\0',sizeof(username)); memset(userpass,'\0',sizeof(userpass)); printf("\n\t请输入用户名: \t"); scanf("%s",username); printf("\n\t请输入密码: \t"); scanf("%s",userpass); if(usedcheckpass(username,userpass)==0) { wrong_cont++; if(wrong_cont==3) { printf("\n\t输入次数大于3次! 请按回车键退出系统! \n"); getchar(); weling=0; return0; } key=1; printf("\n\t按1选择返回主菜单\n\t按0继续输入用户验证码\n"); do { back=getchar(); if((back! ='1')&&(back! ='0')) { printf("\n\t输入错误! 按回车键继续..."); getchar(); } }while((back! ='1')&&(back! ='0')); if(back=='1') key=0; } else { key=0; weling=0; system("cls"); printf("\n\n\t\t欢迎%s进入学生管理系统\n",username); memset(userlogin,'\0',sizeof(userlogin)); strcpy(userlogin,username);//记录用户登录信息 return2; } }while(key); back=0; weling=1; break; return2; } case'4': { setused();/*注册新管理员资料*/ weling=1; break; } case'5': { weling=0; return0; } } } return1; } /* ==================================================================== ---------------建立链表---------- ==================================================================== */ stu*creat()/*建立链表*/ { chari,j; charstu_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("\n\n请输入要录入的学生人数: "); scanf("%d",&stu_num); for(i=0;i { system("cls"); p1->average=0; printf("\n\n请输入学生学号: "); scanf("%s",p1->num); while(! cheknum(p1->num)) { printf("\n\n输入格式错误! 请重新输入学号: "); scanf("%s",p1->num); } printf("\n\n请输入学生姓名: "); scanf("%s",p1->name); while(! chekname(p1->name)) { printf("\n\n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 教务 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)