第22章 C语言实现教学管理系统

合集下载

c语言教务管理系统

c语言教务管理系统
student表课程course表选修关系表sc文件系统作业用c或c语言编写应用程序建立3个数据文件分别保存学生信息课程信息和选修信息并且完成以下任务
实验一 文件管理 一、实验目的 1.了解数据管理技术之文件系统管理数据的 特点; 2.掌握应用程序存取数据文件的方法; 3.通过实际体会与比较,为后面感受数据库 系统管理数据的优课程数据库,包括学生表 student,课程表course和选修表sc,如下表 所示:
Student表
课程course表
选修关系表SC
文件系统作业
用C或C++语言编写应用程序,建立3个数据文件分别保存学 生信息、课程信息和选修信息,并且完成以下任务: 1.编写数据插入功能模块,将以上各个数据表的数据分 别插入到对应的数据文件中,并显示输出各个数据表的数 据信息; 2.编写数据修改功能模块,将所有学生的年龄增加1岁, 并显示输出所有学生的信息; 3.编写数据删除功能模块,删除学号为95004的学生记录, 并显示输出所有学生的信息。 4.编写数据查询功能模块,查询选修了课程名为“信息系 统”的学生学号和姓名。

C语言教师管理系统

C语言教师管理系统

通信与信息工程学院高级语言课程设计班级:电子信息工程1503姓名:周阳刘锦谷静霆学号:1507050314 1507050321 1507050334指导教师:刘晓佩李远征王静倪云峰设计时间:2016-07-04 ~ 2016-07-24成绩:评语:通信与信息工程学院二〇一七年一、课程设计要求设计教师工作管理系统,并拥有如下功能。

1.计算并显示每个老师在一个学期中所教课程的总工作量。

2.输入教师姓名可以查询教师信息。

3.可以浏览并删改教师信息。

4.完成教师信息二、程序的功能设计三、程序的数据结构C 语言使用结构体来扩展自定义的数据类型,数据结构如下: #pragma pack (4) //设置结构体的对其方式 typedef struct TEACH {//数据域char ArrTeachNum[10]; //教工号 char ArrTeachName[10]; //姓名 char ArrTeachSex[4]; //性别 char ArrTitle[10]; //职称 char ArrSubject[20]; //所教课程 char ArrClass[36]; //所教班级 unsigned int ClassNum ; //班级数目 unsigned int TheoryClaHour ; //理论课时主函数添加一个教师的信息 VoidAddTeaMsg(TE ACHER Teacher);删除一个教师的信息VoidDeleTeacher(PTEACH pNode);查找一个教师信息PTEACHSearchTeach(char * Name);显示所有教师信息保存voidShowAllTeach er(void );unsigned int practicerClaHour ; //实践课时unsigned int AllClaHour ; //总课时//指针域struct TEACH *pNext; //指向下一个节点}四、程序的函数设计1.函数的功能描述main函数功能:调用菜单函数所示的函数;Menu()函数功能:显示给用户所有的功能AddTeaMsg()函数功能:增一个教师信息SearchTeach()函数功能:查找一个教师信息DeleTeacher()函数功能:删除一个教师信息ShowAllTeacher()函数功能:显示所有老师信息2.函数的调用关系main函数调用所有的子函数来完成相应操作;查找,删除,修改信息函数都必须调用查找函数。

c语言教师信息管理系统设计

c语言教师信息管理系统设计

c语言教师信息管理系统设计C语言教师信息管理系统设计,是一项对于教师信息进行管理的系统设计,目的在于提高教师工作的效率和管理的准确性。

该系统的开发主要涉及软件工程、信息管理以及数据库等多方面知识,下面将从以下几个方面进行详细阐述。

1.需求分析系统的需求分析是系统设计中必不可少的一部分。

系统需求的分析包括对所需的功能和性能进行系统性及完整性的描述和定义,主要是围绕教师信息管理所需的功能模块展开,包括教师个人信息、考勤管理、课表管理、教学资源、工资管理等方面,并根据需求分析结果,进一步确定系统设计方向与需求。

2.系统设计在需求分析的基础上,可进行系统设计。

系统设计包含了以下几个方面,包括架构设计、数据设计、接口设计、编码实现等,具体涉及到0号架构、界面设计、算法设计、数据库设计等,不断优化并改善系统架构,以提高系统的灵活性与可维护性。

3.数据库管理数据库管理是系统设计的重要部分。

设计一个合理的数据库,是提高系统运行效率和智能管理的基础。

在教师信息的管理中,数据的存储和查询是一个必要的环节,并且数据中应包括教师姓名、年龄、身份证号码、工资情况等。

因此,在进行数据库管理时,可采用MySQL 等数据库,并通过SQL语句进行数据的增删改查。

4.系统测试系统测试主要是对已经开发的系统进行测试,以验证系统设计和编码是否达到预期要求,并排除系统开发中可能出现的错误和漏洞,保证系统的功能完整性和稳定性。

系统测试主要包括单元测试、集成测试、系统测试等多个环节,同时也应该依据不同的设备和基础环境进行测试,确保系统能够适应不同的运行环境。

综上,C语言教师信息管理系统设计,是一项系统性的工程,要想做好这项工作,需要多专业知识的综合运用,并不断进行系统优化和改进,以满足教学管理的需要。

同时,还需要注意系统的安全性和保密性问题,确保系统开发过程中,教师个人的信息被保护得当。

(完整word版)教务管理系统C语言代码

(完整word版)教务管理系统C语言代码
studentNumber2.close();
find=false;
system("pause");
}
//***************************删除学生信息**************************************************
void list(){
int n=0;
int n=0;
cout<<"请输入要删除的学号:";
cin>>deleteNumber;
fstream fileNumber("number.txt",ios::in|ios::out);
fstream fileNumber2("number.txt",ios::in|ios::out);
fstream fileName("name.txt",ios::in|ios::out);
int menu(){
system("cls");
int n=1,select=-1;
cout<<endl<<endl<<endl;
cout<<setw(68)<<"★C★S★U★学生档案管理系统★C★S★U★"<<endl<<endl;
cout<<setw(26)<<n++<<"◆※输入学生信息※◆1"<<endl<<endl;
};
//******************************

c课程设计教室管理系统

c课程设计教室管理系统

c课程设计教室管理系统一、教学目标本节课的教学目标是让学生掌握教室管理系统的基本概念、功能和操作方法。

具体包括以下三个方面:1.知识目标:使学生了解教室管理系统的起源、发展及其在教育领域的应用;让学生熟悉教室管理系统的各个功能模块,如课程安排、座位分配、考勤管理等。

2.技能目标:培养学生能够熟练操作教室管理系统,进行课程安排、座位分配、考勤管理等操作;培养学生能够运用教室管理系统进行数据分析,为教育教学提供支持。

3.情感态度价值观目标:培养学生对教室管理系统的认同感,认识到教室管理系统在提高教育教学质量、促进教育教学改革方面的重要作用;培养学生热爱教育事业、服务社会的责任感。

二、教学内容本节课的教学内容主要包括以下几个部分:1.教室管理系统的基本概念:介绍教室管理系统的定义、起源和发展历程,以及其在教育领域的应用。

2.教室管理系统的功能模块:详细讲解教室管理系统的主要功能模块,如课程安排、座位分配、考勤管理等,并通过实例展示各模块的操作方法。

3.教室管理系统的操作方法:对学生进行实际操作训练,使学生熟练掌握教室管理系统的操作技巧。

4.教室管理系统的数据分析与应用:介绍如何运用教室管理系统进行数据分析,为教育教学提供支持。

三、教学方法为了达到本节课的教学目标,我们将采用以下几种教学方法:1.讲授法:通过讲解教室管理系统的基本概念、功能模块和操作方法,使学生掌握相关知识。

2.案例分析法:通过分析实际案例,使学生更好地理解教室管理系统的应用。

3.实验法:对学生进行实际操作训练,使学生熟练掌握教室管理系统的操作技巧。

4.讨论法:学生进行分组讨论,分享学习心得,互相学习,提高学习效果。

四、教学资源为了保证本节课的教学质量,我们将准备以下教学资源:1.教材:选用符合课程标准的教材,为学生提供系统、全面的学习材料。

2.参考书:提供相关领域的参考书籍,丰富学生的知识视野。

3.多媒体资料:制作精美的PPT,直观地展示教室管理系统的功能和操作方法。

C语言课程设计-教材管理系统

C语言课程设计-教材管理系统

C语言课程设计-教材管理系统一、教学目标本课程的目标是使学生掌握C语言的基本语法、数据结构和算法,能够运用C 语言编写简单的应用程序。

通过本课程的学习,学生应达到以下知识目标:1.理解C语言的基本语法,包括数据类型、运算符、控制结构等。

2.掌握C语言的基本数据结构,包括数组、链表、栈和队列。

3.了解常用的算法,包括排序算法、查找算法和动态规划算法。

4.能够使用C语言编写简单的程序,解决实际问题。

5.能够使用C语言进行调试,找出程序中的错误并加以修正。

6.能够阅读和理解C语言的程序代码,进行程序设计。

情感态度价值观目标:1.培养学生的编程兴趣,使学生能够主动学习编程。

2.培养学生的团队协作精神,使学生在团队项目中能够有效合作。

3.培养学生的创新意识,使学生能够尝试使用编程解决实际问题。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构和算法。

具体的教学大纲如下:1.C语言的基本语法:数据类型、运算符、控制结构等。

2.C语言的基本数据结构:数组、链表、栈和队列。

3.常用的算法:排序算法、查找算法和动态规划算法。

每个部分的教学内容都将结合实际的编程案例进行讲解,使学生能够更好地理解和应用所学知识。

三、教学方法本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

通过多样化的教学方法,激发学生的学习兴趣和主动性。

1.讲授法:用于讲解C语言的基本语法、数据结构和算法。

2.讨论法:用于讨论编程问题,促进学生之间的交流和合作。

3.案例分析法:通过分析实际的编程案例,使学生更好地理解和应用所学知识。

4.实验法:通过编写和调试程序,培养学生的编程能力和问题解决能力。

四、教学资源本课程将使用教材《C语言程序设计》作为主要教学资源,同时辅以参考书、多媒体资料和实验设备。

教材和参考书将用于引导学生学习,多媒体资料将用于丰富教学内容,实验设备将用于培养学生的编程能力和问题解决能力。

五、教学评估本课程的评估方式包括平时表现、作业和考试。

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 "d:\\stu.dat" //定义学生成绩信息地址#define mass_key "3110008758" //定义文件头部密码typedef struct student stu;#define sc_num 4 //只设定4门科目,不允许改动#define uint unsigned int/*学生成绩管理系统结构*/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 password[20];}use;/*时间登录信息*/struct Logtime{char userlogin[20];struct tm;};char logc;//登录次数typedef struct Logtime logtime;//========================================================== //定义通讯协议//==========================================================#define mass_max 200 //定义信息量struct Massage{int cont; //文件数量char username[15]; //发送人char mass[mass_max];//信息}mas;typedef struct Massage massage;//========================================================== //========================================================== 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 usedcheckpass(char *name,char *password);/*查看用户名密码是否符合*//*====================================================================存储操作====================================================================*/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,'\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);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<sc_num;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();}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 userpass[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("\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;}else if(temp==1){memset(userlogin,'\0',sizeof(userlogin));strcpy(userlogin,username);printf("\n\t学生成绩登录有效!");getchar();return 1;}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;return 0;}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); //记录用户登录信息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("\n\n请输入要录入的学生人数: ");scanf("%d",&stu_num);for(i=0;i<stu_num;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输入格式出错!不能带数字或下划线!\n");printf("\n\n请重新输入学生姓名: ");scanf("%s",p1->name);}do{printf("\n\n请输入学生%s成绩:",sc_name[j]);scanf("%d",&p1->score[j]);while((100<p1->score[j])||(p1->score[j]<0)){printf("\n\n成绩格式出错!\n ");getchar();printf("\n\n请重新输入学生成绩: ");scanf("%d",&p1->score[j]);}p1->average+=p1->score[j];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(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'>num[i])||('9'<num[i])){return 0;exit(1);}}return 1;}/*==================================================================== 检查学生姓名是否符合格式,若正确,则返回1,否则返回0==================================================================== */char chekname(char *name)/*检查学生姓名是否符合格式*/{char i;for(i=0;i<strlen(name);i++){/*if(('A'>name[i])||(('Z'<name[i])&&('a'>name[i]))||('z'<name[i]))/if(name[i]<18){return 0;exit(1);}*/}return 1;}/*==================================================================== 显示学生成绩情况==================================================================== */void display(stu *head)/*显示用户信息*/{stu *p1;char i=0;p1=head->next;system("cls");if(p1!=NULL){while(p1!=NULL){if(i==0){printf("姓名\t学号\t %s\t %s\t %s\t%s\t平均分\n",sc_name[0],sc_name[1],sc_name[2],sc_name[3]);i++;}printf("%s\t%s\t %d\t %d\t%d\t%d\t%d\n",\p1->name,p1->num,p1->score[0],p1->score[1],p1->score[2],p1->score[3],p1->average);p1=p1->next;}getchar();}else{printf("\t\t\t链表为空!\n\n\n请按回车键继续...\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("\n\n请输入要增加的学生学号: ");scanf("%s",p2->num);while(!cheknum(p2->num)){printf("\n\n输入格式错误!请重新输入学号: ");scanf("%s",p2->num);}printf("\n\n请输入学生的姓名: ");scanf("%s",p2->name);while(!chekname(p2->name)){printf("\n\n输入格式出错!不能带数字或下划线!\n");printf("\n\n请重新输入学生姓名: ");scanf("%s",p2->name);}do{printf("\n\n请输入学生%s成绩:",sc_name[j]);scanf("%d",&p2->score[j]);while((100<p2->score[j])||(p2->score[j]<0)){printf("\n\n成绩格式出错!\n ");getchar();printf("\n\n请重新输入学生成绩: ");scanf("%d",&p2->score[j]);}p2->average+=p2->score[j];j++;}while(j<sc_num);p2->average=p2->average/4;if(head->next==NULL){printf("\n原链表为空!");getchar();head->next=p2;}else{while(p1->next!=NULL)p1=p1->next;p1->next=p2;p2->next=NULL;}display(head);getchar();}/*====================================================================删除学生信息====================================================================*/stu* delname(stu*head,char *stu_name)/*根据学生姓名删除用户信息*/{stu *p1,*p2;char i,j=0;system("cls");if(head->next==NULL){printf("\n\n没有学生信息!\t操作错误!\n");return head;}p1=head->next;p2=p1;while(p1!=NULL){if(strcmp(p1->name,stu_name)==0){printf("\n\n你所删除的学生姓名为: %s\t学号为:%s\n",p1->name,p1->num);printf("\n\n确定为:y,取消为n\t:");i=getchar();while(!((i=='y')||(i=='Y')||(i=='n')||(i=='N'))){printf("\n\n输入错误!\t请重新输入:");i=getchar();}if((i=='y')||(i=='Y')){if(j==0){head->next=p1->next;/*删除头部接点*/}else{p2->next=p1->next;}printf("\n\n\t\t\t\t成功删除用户信息!\n\n\t\t\t按回车键继续...\n");free(p1);return head;}else{return head;}}j++;p2=p1;p1=p1->next;}printf("\n\n\t\t没有此用户记录信息!\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("\n\n\t\t没有存储学生信息!\n\n\t\t操作错误!\n");return head;}p1=head->next;p2=p1;while(p1->next!=NULL){if(strcmp(p1->num,stu_num)==0){printf("\n\n你所删除的学生姓名为: %s\t学号为:%s\n",p1->name,p1->num);printf("\n\n确定为:y,取消为n\t:");i=getchar();while(!((i=='y')||(i=='Y')||(i=='n')||(i=='N'))){printf("\n\n输入错误!\t请重新输入:");i=getchar();}if((i=='y')||(i=='Y')){if(j==0){head->next=p1->next;}else{p2->next=p1->next;}printf("\n\n\t\t\t\t成功删除用户信息!\n\n\t\t\t按回车键继续...\n");free(p1);return head;}elsereturn head;}p2=p1;p1=p1->next;j++;}printf("\n\n没有此用户信息!\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("\n\n\t\t没有存储学生信息!\t操作错误!\n");getchar();return head;}p1=head;while(p1->next!=NULL){if(strcmp(p1->name,stu_name)==0){printf("\n\n你所查找的学生信息如下\n");printf(" \n\n%s\t学号为:%s\n",p1->name,p1->num);printf("姓名\t学号\t\t %s\t %s\t %s\t%s\t平均分\n",\sc_name[0],sc_name[1],sc_name[2],sc_name[3]);printf("%s\t%s\t\t %d\t %d\t%d\t%d\t%d\n",\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("\n\n\t\t找不到相关用户信息!\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("\n\n\t\t没有存储学生信息!\t操作错误!\n");return head;}p1=head;while(p1->next!=NULL){if(strcmp(p1->num,stu_num)==0){printf("\n\n你所查找的学生信息如下\n");printf(" %s\t学号为:%s\n",p1->name,p1->num);printf("姓名\t学号\t\t %s\t %s\t %s\t%s\t平均分\n",\sc_name[0],sc_name[1],sc_name[2],sc_name[3]);printf("%s\t%s\t\t %d\t %d\t%d\t%d\t%d\n",\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("\n\n\t\t找不到相关用户信息!\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("\n\n请输入学生新的学号: ");scanf("%s",p->num);while(!cheknum(p->num)){printf("\n\n输入格式错误!请重新输入学号:\n ");scanf("%s",p->num);}do{printf("\n\n请输入学生成绩%s :",sc_name[j]);scanf("%d",&p->score[j]);while((100<p->score[j])||(p->score[j]<0)){printf("\n\n成绩格式出错!\n ");getchar();printf("\n\n请重新输入学生成绩: ");scanf("%d",&p->score[j]);}p->average+=p->score[j];j++;}while(j<sc_num);p->average=p->average/4;printf("\n\n\t\t用户数据更新完毕!\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("\n\n请输入学生姓名: ");scanf("%s",p2->name);while(!chekname(p2->name)){printf("\n\n输入格式错误!请重新输入学号: ");scanf("%s",p2->name);}do{printf("\n\n请输入学生成绩%s :",sc_name[j]);scanf("%d",&p2->score[j]);while((100<p2->score[j])||(p2->score[j]<0)){printf("\n\n成绩格式出错!\n ");getchar();printf("\n\n请重新输入学生成绩: ");scanf("%d",&p2->score[j]);}p2->average+=p2->score[j];j++;}while(j<sc_num);p2->average=p2->average/4;printf("\n\n\t\t用户数据更新完毕!请按回车键退出...\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("\n\n\t\t\t没有数据信息可载入!\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("%s\t%s\t %d\t %d\t%d\t%d\t%d\n",\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("\n\t\t\t文件中不含学生信息!\n\t\t\t按回车键继续...\n");getchar();}else{printf("\n\t\t\t一共记录了%d名学生信息!\n\t\t\t按回车键继续...\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){printf("没有保存数据!\n");getchar();fclose(fp);return 0;}else{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){//printf("\n\n文件路径为:%s\n\n",name);//printf("\n\n\t\t用户文件创建成功!\n\n\t\t请按回车键继续...\n");//getchar();fclose(fp);return name;}else{printf("\n\n\t\t无法创建用户文件!\n\n\t\t请按回车键继续...\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("\n\t无此文件!");getchar();}else{fclose(fp);fp=fopen(str,"w");memset(clrmem,'\0',sizeof(clrmem));rewind(fp);for(i=0;i<40;i++){if(fwrite(clrmem,sizeof(clrmem),1,fp)!=1){if(j==0){printf("\n\n\t\t文件清除失败!\n\n\t\t请按回车键继续...\n");getchar();break;}else{//printf("\n\n\t\t文件清除成功!\n\n\t\t请按回车键继续...\n");//getchar();break;}}elsej++;}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("\n\n\n\t\t登陆时间为:\n\t\t%d年%d月%d日%d时%d分%d秒\n\n\n", y, m, d,hour,min,sec);fclose(fp);}/*====================================================================用户登录信息====================================================================*/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){printf("\n\n\t\t找不到文件信息!\n\n\t\t按回车键继续...\n");getchar();}else{memset(name,'\0',sizeof(name));while(fread(name,sizeof(name),1,fp)==1){fread(timeinfo,sizeof(struct tm),1,fp);y=timeinfo->tm_year + 1900; // 年份insm=timeinfo->tm_mon + 1; // 月份d=timeinfo->tm_mday; // 日期hour=timeinfo->tm_hour;min=timeinfo->tm_min;sec=timeinfo->tm_sec;i++;printf("\n\t第%d次登陆时间为:%d年%d月%d日%d时%d分%d秒\t%s用户登录",i,y, m, d,hour,min,sec,name);memset(name,'\0',sizeof(name));}if(i==0)printf("\n没有记录用户登录时间!\n");getchar();free(timeinfo);fclose(fp);}}/*====================================================================用户登录信息====================================================================*/。

C语言教师管理系统代码

C语言教师管理系统代码

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <conio.h>/*函数声明*/void input(); // 此函数功能是输入教师信息int menu();//此函数是一个菜单//学号:struct data{int year;int month;int day;};struct teacher{char num[15];char name[30];struct data bir;char sex;float jbgz;float jt;};int menu(){int n;printf("1. 实现教师信息的录入\n");printf("2. 求每个教师的总工资,并输出\n");printf("3. 按总工资从高到低排序,输出教师信息\n");printf("4. 查找指定姓名的教师信息,假设不存在,给出提示信息\n");printf("5. 查找根本工资最高的教师信息\n");printf("6. 修改指定职工号的职工信息\n");printf("7. 程序结束\n");printf("************************************************\n");printf("请输入你要执行的操作:\n");scanf("%d",&n);while( n<1 || n>7){printf("请重新输入\n");scanf("%d",&n);}return n;}//实现教师信息录入void input(struct teacher a[],int n){int i;printf("石家庄经济学院\n");for(i=0;i<n;i++){printf("请输入教师工作号:");scanf("%s",a[i].num);printf("请输入教师姓名:");scanf("%s",a[i].name);printf("请输入教师出生日期:");scanf("%d%d%d",&a[i].bir.year,&a[i].bir.month,&a[i].bir.day);printf("请输入教师性别:");getchar();scanf("%c",&a[i].sex);printf("请输入教师根本工资:");scanf("%f",&a[i].jbgz);printf("请输入教师津贴:");scanf("%f",&a[i].jt);}}//实现教师信息输出void output(struct teacher a[],int n){int i;printf("工作号,姓名,出生日期,性别,根本工资,津贴,总工资:\n");for(i=0;i<n;i++)printf("%s %s %d %d %d %c %f %f %f\n",a[i].num,a[i].name,a[i].bir.year,a[i].bir.month,a[i].bir .day,a[i].sex,a[i].jbgz,a[i].jt,a[i].jbgz+a[i].jt);}//按工资从高到低排序,输出教师信息void sortbyzgz (struct teacher a[],int n){int i,j,k;struct teacher temp;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if((a[j].jbgz+a[j].jt)>(a[i].jbgz+a[i].jt))k=j;if(k!=i){temp=a[i];a[i]=a[k];a[k]=temp;}}output(a,n);}//查找指定姓名的教师信息,假设不存在,给出提示信息void searchbyname(struct teacher a[],int n){char name[20];int flag=0;int i;printf("请输入要查找的教师姓名:\n");getchar();gets(name);for(i=0;i<n;i++){if(strcmp(name,a[i].name)==0){printf("工作号,姓名,出生日期,性别,根本工资,津贴,总工资:\n");printf("%s %s %d %d %d %c %f %f %f\n",a[i].num,a[i].name,a[i].bir.year,a[i].bir.month,a[i].bir.day, a[i].sex,a[i].jbgz,a[i].jt,a[i].jbgz+a[i].jt);flag=1;}}if(flag==0)printf("查无此人!\n");}//查找根本工资最高的教师信息void searchbyjbgz(struct teacher a[],int n){struct teacher temp;int i;temp=a[0];for(i=1;i<n;i++){if(a[i].jbgz>temp.jbgz)temp=a[i];}printf("工作号,姓名,出生日期,性别,根本工资,津贴,总工资:\n");printf("%s %s %d %d %d %c %f %f %f\n",temp.num,,temp.bir.year,temp.bir.month,te mp.bir.day,temp.sex,temp.jbgz,temp.jt,temp.jbgz+temp.jt);}//修改指定职工号得教师信息void repeat(struct teacher a[],int n){char temp[20];int flag=0;int i;printf("请输入要修改的职工号:\n");getchar();gets(temp);for(i=0;i<n;i++){if(strcmp(temp,a[i].num)==0){printf("%s %s %d %d %d %c %f %f %f\n",a[i].num,a[i].name,a[i].bir.year,a[i].bir.month,a[i].bir.day, a[i].sex,a[i].jbgz,a[i].jt,a[i].jbgz+a[i].jt);printf("请重新输入职工号.姓名.出生日期.性别.根本工资.津贴:\n");scanf("%s %s %d %d %d %c %f %f",a[i].num,a[i].name,&a[i].bir.year,&a[i].bir.month,&a[i].bir.day, &a[i].sex,&a[i].jbgz,&a[i].jt);flag=1;}}if(flag==0)printf("查无此人!\n");printf("修改后的教师信息:\n");printf("职工号.姓名.出生日期.性别.根本工资.津贴.总工资:\n");for(i=0;i<n;i++)printf("%s %s %d %d %d %c %f %f %f\n",a[i].num,a[i].name,a[i].bir.year,a[i].bir.month,a[i].bir .day,a[i].sex,a[i].jbgz,a[i].jt,a[i].jbgz+a[i].jt);}void main(){int num;struct teacher tea[3];while(num=menu()){switch(num){case 1: input(tea,3); break;case 2: output(tea,3);break;case 3: sortbyzgz(tea,3);break;case 4: searchbyname(tea,3);break;case 5: searchbyjbgz(tea,3);break;case 6: repeat(tea,3);break;case 7: exit(0);}getch(); //按任意键继续system("cls"); //清屏}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

22.1.1
概述
教学管理系统是学校教务部门日常工作的重要组成部 分,其处理信息量很大。教学管理系统操作对象主要包括: 教师、学生、教务管理员、课程及选课信息。教学管理系统 的开发实现,需要读者能很好掌握前面各个章节介绍的知识 点才能顺利进行。
22.1.2
实例中的相关文件
根据前面的项目描述可知教学管理系统需要数据库和 文件支持才能运行。因此,系统中的主要文件就是Access和 SQL Server数据库文件,以及实现读取文件数据方式登录所 涉及的账号文件和学生信息文件。 读者在使用前需要创建数据库,然后在该数据库上建 立各个表,每一个表的逻辑结构及各表之间的关系在自定义 数据库章节中详细描述。
22.4
数据库操作
数据库操作是管理信息系统功能模块的核心部分,也 是系统设计的难点。本节将结合教学管理系统功能分别讨论 登录模块、数据表读取模块、数据表添加及删除模块设计的 实现过程。
22.4.1

登录模块
登录模块功能主要是对登录者的身份和密码正确性进 行验证,用户成功登录后可根据登录者的身份不同,分别进 入相应的操作界面,完成对应的界面初始化。
22.2.1
各数据文件准备
由于教学管理系统需要处理学生、教师、课程、选课 及管理员5个对象。而描述每个对象需要一组信息,而这些 具有相同特性、属于同一数据对象的数据元素用结构体来存 储比较合适。因此,分别给五个对象添加结构体的定义。
22.2.2
自定义文件数据读取函数
用户选择文件登录和查看学生数据时需要对文件进行 读取,并把数据写入到链表的结点中。下面以读取学生基本 信息为例介绍文件读取函数的设计及实现过程。在读取文件 前要注意对应文件的格式,本例中数据文件格式是txt格式 ,数据与数据间用“|”分隔,每一条记录为单独一行,行与 行之间用回车分隔。
22.4.2
数据读取
对选择的某个数据表进行读取操作需要先打开数据表 。由于可以选择多个不同表,因此在设计时,考虑用字符数 组作为形参,接收构造的打开表的字符串。另外,选择不同 的数据表读取时,其对象对应的结构体也不同。所以,需要 保存用户的选择,而且为了便于对读取的数据进一步操作, 也把每一条记录链接到对应结构体的头指针上。
数据删除
教学管理系统也支持对指定的数据表进行数据删除操 作。数据表的删除是通过构造DELETE语句,使用 _CommandPtr类型的Execute()函数完成对数据表数据的删 除。该功能模块使用DeleteTable()封装。
22.5
系统部署和运行
开发出的教学管理系统要正确运行还需要做好几方面 的工作:数据文件的准备、数据库和数据表的建立、用户参 数定制等。下面分别进行介绍。
22.1.3
实例程序的相关功能
开发的教学管理系统主要完成对学生、教师、课程、 选课等信息的浏览、查找、添加、修改、删除等功能。
22.2
自定义数据文件
教学管理系统中不仅实现了读取管理员文件数据进行 登录,而且实现了对学生数据文件的读取和写入操作。本节 中将讨论保存各数据文件结构体的定义,并介绍文件数据读 取和写入函数的具体实现过程。
22.4.3
数据添加
本系统支持对指定的数据表进行数据添加操作。数据 表的添加是通过保存用户输入的各个数据项,并构造插入的 INSERT语句,借助_CommandPtr类型的Execute()函数直接 对数据表操作实现的。由于数据添加操作使用比较频繁,故 用InsertTable()封装。
22.4.4
22.5.3
用户参数定制
系统在开始运行时需要提供一些初始信息设置等。例 如,引入ADO库文件。使用ADO前必须通过引入符号 #import引入ADO库文件,以使编译器能正确编译。
22.6
小结
本章完整地介绍了用C语言开发教学管理系统详细过程 。讨论了系统功能模块、数据文件、数据库设计相关内容。 重点讲解了数据文件的读取和写入操作、数据库的读取、添 加和删除操作功能模块设计过程,通过了解项目的设计实现 过程让读者比较直观地学习掌握Access和SQL Server数据库 编程方法。同时,学会对项目进行需求分析、找到合适的数 据结构储存数据,提高分析问题、解决问题的能力。
第22章
C语言实现教学管理系统
教学管理系统不仅满足教师查询教学的课程安排情况 ,学生可查询所学课程、选课成绩信息,还可以实现对课程 、教师及学生信息的添加、删除和修改等操作。
22.1
项目概述
随着计算机应用的不断深入,各行各业几乎都与计算 机有密切的联系,实现了不同程度的自动化操作。教学管理 系统可为学校教师、学生及教务管理员对各个对象数据的管 理提供了方便,使其能更好地了解数据的更新信息,从而提 高教学管理效率,保障教学工作顺利开展。
22.2.3
自定义文件数据写入函数
当向学生文件中添加数据时,要考虑原数据中是否有 相同的学号。因此,需要对原数据结点进行遍历,如果没有 相同的数据,则提示用户输入各项数据。最后,把该条记录 写入到文件中保存。
22.3
数据库设计及连接
数据库设计是管理系统设计中一个重要的环节。良好 的数据库设计可以简化开发过程,使系统功能更加明确。本 系统分别采用Access和SQL Server两种数据库来存储数据, 下面以Access数据库为例讲解数据库的设计过程及数据库连 接的实现。
22.3.1
定义各数据表
本系统数据库名称为test,有学生数据表(student)、 教师数据表(teacher)、课程数据表(course)、选课数据 表(sc)及管理员数据表(admin)5个表。
22.3.2
自定义数据库连接函数
用数据库连接部分设计过程相对繁琐些,考虑到读者 选择Access或SQL Server数据库不同,数据库名称及服务器 名称不同,在程序设计中用变量来构造连接字符串。
22.5.1
数据文件的准备
系统运行后选择文件登录方式时,需要admin.txt文件 ,该文件内容的数据格式要统一。另外,系统中为了演示通 过对文件的读写操作,也需要student.txt文件。
22.5.2
数据库、数据表建立
系统运行后选择连接数据库登录方式时需要读取各数 据表,故在运行系统前需完成数据库、数据表的创建。数据 库名称可以随意设置,但数据库中的5个数据表名称和表的 结构必须与本实例中提供的一致。另外,也可直接使用随书 光盘中提供的数据库。
相关文档
最新文档