大学毕业设计---基于c语言的教务系统软件

合集下载

学生管理系统c语言毕业设计

学生管理系统c语言毕业设计

学生管理系统C语言毕业设计一、引言学生管理系统是一套用于管理学生信息和相关功能的软件系统。

本毕业设计旨在基于C语言开发一个功能完善、操作简便的学生管理系统。

二、需求分析1.基本需求–通过系统可以添加、删除和修改学生信息。

–可以按照学号、姓名等条件进行学生信息的查询。

–可以对学生信息进行排序和统计。

–可以打印学生信息。

2.高级需求–系统可以设置权限,不同用户拥有不同的权限级别。

–可以对学生信息进行分班级管理。

–可以生成学生的成绩报表和班级排名。

三、系统设计1.数据结构设计–学生信息采用结构体进行组织,包括学号、姓名、性别、年龄等字段。

–使用链表或数组来存储学生信息。

2.模块设计–学生信息管理模块:实现学生信息的增删改查功能。

–学生信息排序模块:对学生信息进行排序。

–学生信息打印模块:将学生信息输出到文件或控制台。

–用户权限管理模块:实现用户权限管理功能。

–班级管理模块:对学生进行分班级管理。

–成绩报表模块:生成学生的成绩报表和班级排名。

四、系统实现1.开发环境和工具–开发语言:C语言–开发环境:Windows或Linux–开发工具:IDE(如Visual Studio Code、Code::Blocks等)2.实现步骤–定义学生信息的结构体。

–实现学生信息的增删改查功能。

–实现学生信息的排序功能。

–实现学生信息的打印功能。

–实现用户权限管理功能。

–实现班级管理功能。

–实现成绩报表功能。

五、系统测试1.单元测试–对每个模块进行单独的测试,保证各个功能的正确性。

2.集成测试–将所有模块进行集成,测试系统的整体功能和兼容性。

3.系统验收测试–由用户对系统进行验收测试,确认系统满足需求。

六、总结学生管理系统是一种简化和优化学生信息管理的工具。

本次毕业设计通过使用C语言,开发了一个功能完善的学生管理系统,实现了学生信息的增删改查、排序和打印等功能,同时还实现了用户权限管理、分班级管理和成绩报表功能。

经过测试和验收,系统达到了设计要求,并具备良好的稳定性和可扩展性,可以满足学校和教师对学生信息管理的需求。

c语言学生管理系统课程设计报告 (2)

c语言学生管理系统课程设计报告 (2)

C语言学生管理系统课程设计报告1. 引言学生管理系统是一项常见的计算机应用程序,广泛应用于学校、培训机构等教育机构中。

本文将介绍一个基于C语言开发的学生管理系统,该系统具有以下功能:学生信息的录入、查询、修改和删除,以及成绩信息的录入、查询、统计和排序。

2. 系统设计2.1 功能模块学生管理系统主要包括以下功能模块:•学生信息录入模块:用于录入学生的基本信息,包括学号、姓名、性别、年龄等。

•学生信息查询模块:提供根据学号或姓名查询学生信息的功能。

•学生信息修改模块:允许修改学生的各项信息。

•学生信息删除模块:提供学生信息的删除功能。

•成绩信息录入模块:用于录入学生的成绩信息,包括科目和成绩。

•成绩信息查询模块:提供根据学号或科目查询学生成绩的功能。

•成绩统计模块:对学生的成绩进行统计,包括总分和平均分。

•成绩排序模块:按照总分对学生进行排序。

2.2 数据结构学生信息和成绩信息可以使用结构体存储。

定义如下:typedef struct {char id[20]; // 学生学号char name[20]; // 学生姓名char gender[5]; // 学生性别int age; // 学生年龄} Student;typedef struct {char id[20]; // 学生学号char subject[20]; // 科目float score; // 成绩} Score;通过结构体数组来存储多个学生的信息和成绩,如下所示:Student students[MAX_STUDENT_NUM];Score scores[MAX_SCORE_NUM];2.3 系统流程学生管理系统的流程图如下所示:graph LRA[学生信息录入] --> B[学生信息查询]A --> C[学生信息修改]A --> D[学生信息删除]A --> E[成绩信息录入]A --> F[成绩信息查询]A --> G[成绩统计]A --> H[成绩排序]3. 系统实现在C语言中,使用函数来实现不同的功能模块。

C语言的教务管理系统(2000行代码)

C语言的教务管理系统(2000行代码)

C语言教务管理系统一、程序结构图二、程序运行截图1. 个人信息简介2.修改颜色3.注册界面4. 信息保存至文件5.登录界面6.管理员录入信息7. 学生信息录入8.学生成绩录入9.学生课程表录入10.学生信息查询界面11学生信息查询12.学生成绩查询13.学生课表查询三、代码(一个cpp)#include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> #include <conio.h>#include"windows.h"#define student_num 1000 /*定义1000个学生*/#define teacher_num 5 /*定义5个老师(管理员)*/int is_my_student(struct student *p,int *size); /*声明返回第i+1个学生的函数*/ int is_my_teacher(struct teacher *p,int *size); /*声明返回第i+1个老师的函数*/ int length_student_name(char *p); /*声明验证用户名函数*/int length_student_password(char *p); /*声明验证密码长度函数*/int length_teacher_name(char *p); /*声明验证用户名函数*/int length_teacher_password(char *p); /*声明验证密码长度函数*/int show_menu_login(); /*声明登录菜单函数*/int show_menu_register(); /*声明注册菜单函数*/int show_teacher_select(); /*声明教师录入菜单函数*/int show_student_select(); /*声明学生查询菜单函数*/int student_register(struct student *ptr_student,int *size); /*声明学生注册函数*/ int teacher_register(struct teacher *ptr_teacher,int *size); /*声明老师注册函数*/ int vaild_student_name(char *p); /*声明验证用户名函数*/int vaild_student_password(char *p); /*声明验证密码函数*/int vaild_teacher_name(char *p); /*声明验证用户名函数*/int vaild_teacher_password(char *p); /*声明验证密码函数*/int vaild_two_password(char *p1,char *p2); /*声明验证两次密码是否相同函数*/ int yes_no_return(); /*声明选择是否返回上一层函数*/void load(); /*声明加载函数*/void register_(int *count1,int *count2); /*声明注册函数*/void display_student(struct student stu); /*声明显示学生信息函数*/void display_teacher(struct teacher tea); /*声明显示老师信息函数*/void student_file1(); /*将保存的学生的账号密码存入文件中*/ void student_file2(); /*将保存的学生的个人信息存入文件中*/ void student_file3(); /*将保存的学生的成绩存入文件中*/void teacher_file(); /*将保存的老师的账号密码存入文件中*/ void input_information(int count); /*声明输入学生信息函数*/void input_score_menu(int count); /*声明输入学生成绩函数*/void color(); /*声明选择窗体颜色函数*/void print_stu_information(int count_stu); /*声明输出账号为num的学生的信息函数*/void print_stu_score(int count_stu); /*声明输出账号为num的学生的成绩函数*/void show_menu(); /*声明初始化界面函数*/void input(); /*声明输入函数*/void menu1(); /*声明教师录入课程表主菜单函数*/void menu2(); /*声明学生查询课程表主菜单函数*/void rank(); /*声明显示时间顺序函数*/void querymenu3(); /*声明查询函数*/void looktime(); /*声明按照时间查询函数*/void looklessonname(); /*声明按照课程名查询函数*/void add(); /*声明保存函数*/void amend(); /*声明修改课程函数*/void amend1(); /*声明修改课程子函数*/void amendnews(int i); /*声明修改整个课程信息函数*/void amendtime(int i); /*声明修改课程时间函数*/void amendlessonname(int i); /*声明修改课程课程名函数*/void amendclassroom(int i); /*声明修改课程教室函数*/void deleted(); /*声明删除函数*/void add_score(int count); /*声明添加学生成绩函数*/void xiugai_score(int count); /*声明修改学生成绩函数*/void shanchu_score(int count); /*声明删除学生成绩函数*/void chaxun_score(int count); /*声明按要求查询学生成绩函数*/void paixu_score(int count); /*声明学生成绩排序函数*/void tongji_score(int count); /*声明学生成绩统计函数*/float chinese(int count); /*声明计算语文成绩最大值函数*/int chr(int count); /*声明计算语文成绩及格人数的函数*/ float english(int count); /*声明计算英语成绩最大值函数*/int ehr(int count); /*声明计算英语成绩及格人数的函数*/ float math(int count); /*声明计算数学成绩最大值函数*/int mhr(int count); /*声明计算数学成绩及格人数的函数*/ float computer(int count); /*声明计算计算机成绩最大值函数*/int thr(int count); /*声明计算计算机成绩及格人数的函数*/float PE(int count); /*声明计算体育成绩最大值函数*/int phr(int count); /*声明计算体育成绩及格人数的函数*/ float sum_score(int count); /*声明计算总分成绩最大值函数*/ void load_student(int a); /*声明启动学生函数*/void load_teacher(int a); /*声明启动老师函数*/struct student /*学生结构体*/{/*个人信息*/int student_id; /*账号*/char student_name[20]; /*姓名*/char password[16]; /*密码*/int age; /*年龄*/char qq[12]; /*QQ号*/char tel[12]; /*电话*/int grade; /*年级*//*各科成绩*/float chinese; /*语文分数*/float english; /*英语分数*/float math; /*数学分数*/float computer; /*计算机分数*/float PE; /*体育分数*/float sum; /*总分*//*课程表*/char time[10]; /*时间*/char lessonname[20]; /*课程名*/char teacher[20]; /*授课老师*/char classroom[10]; /*教室*/char hours[10]; /*第几节课*/int weeks; /*周时*/};struct teacher /*老师结构体*/ {int teacher_id; /*账号*/char teacher_name[20]; /*姓名*/char password[16]; /*密码*/};struct student our_student[student_num]; struct teacher our_teacher[teacher_num];void main() /*主函数*/{system("color f0"); /*初始化背景颜色*/show_menu(); /*制作人信息简介*/load();}void load() /*启动函数*/{int flag=1; /*控制循环结束的变量*/int a=0,b=0; /*记录已注册的学生的人数a为学生个数b为老师个数*/int *count1=&a,*count2=&b; /*指向学生人数和老师人数的指针*/int correct_student,correct_teacher;color();register_(count1,count2); /*注册学生和老师的帐号*/student_file1();teacher_file();while(flag){switch(show_menu_login()) /*显示登录菜单*/{case 1: /*选择1,进入学生登录*/if(correct_student=is_my_student(our_student,count1)){printf("\n ◆学生登录成功!\n");display_student(our_student[correct_student-1]);printf("\n");printf(" ");system("pause");load_student(a);}elseprintf("\n登录失败!\n");printf("\n");printf(" 提示:按Y退出登录界面,按N返回登录界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,进入老师登录,即管理员登录*/ if(correct_teacher=is_my_teacher(our_teacher,count2)){printf("\n ◆管理员登录成功!\n");display_teacher(our_teacher[correct_teacher-1]);printf("\n");printf(" ");system("pause");load_teacher(a);}elseprintf("\n登录失败!\n");printf("\n");printf(" 提示:按Y退出登录界面,按N返回登录界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,退出登录*/system("cls");flag=0;break;default:printf("请正确输入1-3:");system("cls");}}}void load_student(int a) /*启动学生函数*/{int flag=1;system("cls");while(flag){switch(show_student_select()){case 1: /*选择1,学生信息查询*/system("cls");print_stu_information(a);printf("\n");printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,学生成绩查询*/system("cls");print_stu_score(a);printf("\n");printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,学生课表查询*/menu2();printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 4: /*选择4,退出查询界面*/system("cls");flag=0;break;default:printf("请正确输入1-4:");system("cls");}}}void load_teacher(int a) /*启动老师函数*/{int flag=1;system("cls");while(flag){switch(show_teacher_select()){case 1: /*选择1,学生信息录入*/input_information(a);system("cls");student_file2();printf("\n 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,学生成绩录入*/input_score_menu(a);system("cls");student_file3();printf("\n 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,学生课表录入*/menu1();printf(" 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 4: /*选择4,退出管理界面*/system("cls");flag=0;break;default:printf("请正确输入1-4:");system("cls");}}}int length_student_name(char *p) /*验证用户名是否合法*/ {int l;l=strlen(p);if(l>20||l<1)return 0;elsereturn 1;}int vaild_student_name(char *p) /*判断用户名是否有效*/{int i=0;int len=strlen(p);if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) /*判断首字母是不是字母*/ {for(i=0;i<len;i++){if(!(p[i]='_'||(p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')||(p[i]>='0'&&p[i]<=' 9'))) /*判断后面的字符是否有效*/return 0;}return 1;}elsereturn 0;}int length_student_password(char *p) /*密码长度有效性验证*/{int len;len=strlen(p);if(len<6||len>16)return 0;elsereturn 1;}int vaild_student_password(char *p) /*密码的有效性验证*/{int i=0;for(;*p!='\0';p++){if(!((*p>='a'&&*p<='z')||(*p>'A'&&*p<'Z')||(*p>='0'&&*p<='9'))) return 0;}return 1;}int vaild_two_password(char *p1,char *p2) /*验证两次密码是否相同*/{if(strcmp(p1,p2)==0)return 1;elsereturn 0;}int student_register(struct student *ptr_student,int *size) /*完成注册功能*/{char password[16];char repassword[16];if(*size==student_num){puts(" ◆注册人数已满!");printf("\n");return 0;}system("cls");printf("\n\n");printf(" ★请输入注册学生姓名:");fflush(stdin);gets(ptr_student[*size].student_name);if(!(length_student_name(ptr_student[*size].student_name)&&vaild_student_name(ptr_student[*size].student_name))){printf(" ◆您输入的姓名无效,学生姓名在1-20之间,首字符为字母,后面必须为字母、数字或下划线!!!");return 0;}printf("\n");printf(" ★请输入注册密码:");fflush(stdin);gets(password);printf("\n");printf(" ★请再次输入注册密码:");fflush(stdin);gets(repassword);printf("\n");if(!vaild_two_password(password,repassword)){printf("\n №:两次输入的密码不一致!!!");printf("\n");return 0;}elsestrcpy(ptr_student[*size].password,password);if(!(length_student_password(ptr_student[*size].password)&&vaild_student_pa ssword(ptr_student[*size].password))){printf(" ◆您输入的密码无效,密码应在6-16位之间,密码只能包含字母和数字!!!");printf("\n");return 0;}printf(" ★您的编号为:%d,这将是您的登录账号!!!",ptr_student[*size].student_id=20150000+*size);return 1;}int is_my_student(struct student *p,int *size) /*如果登录成功则返回第i+1个学生的信息,否则返回0*/{int i;int zhanghao;char mima[18];system("cls");printf("\n\n");printf(" ★请输入您的账号:");scanf("%d",&zhanghao);fflush(stdin);printf("\n");printf(" ★请输入您的密码:");gets(mima);for(i=0;i<*size;i++){if((zhanghao==p[i].student_id)&&(strcmp(mima,p[i].password)==0)) return i+1;}return 0;}void display_student(struct student stu) /*显示学生信息*/{printf("\n ★您的账号是:%d\n",stu.student_id);}int length_teacher_name(char *p) /*验证用户名是否合法*/{int l;l=strlen(p);if(l>20||l<1)return 0;elsereturn 1;}int vaild_teacher_name(char *p) /*判断用户名是否有效*/{int i=0;int len=strlen(p);if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) /*判断首字母是不是字母*/ {for(i=0;i<len;i++){if(!(p[i]='_'||(p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')||(p[i]>='0'&&p[i]<=' 9'))) /*判断后面的字符是否有效*/return 0;}return 1;}elsereturn 0;}int length_teacher_password(char *p) /*密码长度有效性验证*/{int len;len=strlen(p);if(len<6||len>16)return 0;elsereturn 1;}int vaild_teacher_password(char *p) /*密码的有效性验证*/{int i=0;for(;*p!='\0';p++){if(!((*p>='a'&&*p<='z')||(*p>'A'&&*p<'Z')||(*p>='0'&&*p<='9'))) return 0;}return 1;}int teacher_register(struct teacher *ptr_teacher,int *size) /*完成注册功能*/{char password[16];char repassword[16];if(*size==teacher_num){puts(" ◆注册人数已满!");printf("\n");return 0;}system("cls");printf("\n\n");printf(" ★请输入注册教师姓名:");fflush(stdin);gets(ptr_teacher[*size].teacher_name);if(!(length_teacher_name(ptr_teacher[*size].teacher_name)&&vaild_teacher_na me(ptr_teacher[*size].teacher_name))){printf(" ◆您输入的姓名无效,教师姓名在1-20之间,首字符为字母,后面必须为字母、数字或下划线!!!");printf("\n");return 0;}printf("\n");printf(" ★请输入注册密码:");fflush(stdin);gets(password);printf("\n");printf(" ★请再次输入注册密码:");fflush(stdin);gets(repassword);printf("\n");if(!vaild_two_password(password,repassword)){printf("\n №:两次输入的密码不一致!!!");printf("\n");return 0;}elsestrcpy(ptr_teacher[*size].password,password);if(!(length_teacher_password(ptr_teacher[*size].password)&&vaild_teacher_password(ptr_teacher[*size].password))){printf(" ◆您输入的密码无效,密码应在6-16位之间,密码只能包含字母和数字!!!");printf("\n");return 0;}printf(" ★您的编号为:%d,这将是您的登录账号。

学生管理系统c语言毕业设计

学生管理系统c语言毕业设计

学生管理系统c语言毕业设计学生管理系统c语言毕业设计一、设计背景学生管理系统是一种较为常见的信息管理系统,可以管理学生的基本信息、课程安排、课程成绩等。

随着信息化时代的到来,学生管理系统越来越受到关注。

本设计旨在利用c语言设计一款基于控制台的学生管理系统,以方便学校管理学生信息。

二、系统需求1.数据库设计学生管理系统基于学生基本信息、课程信息、成绩信息等几个关键数据。

因此,需要设计数据库,存储这些数据。

具体数据项如下:● 学生基本信息:学生编号、学生姓名、性别、年龄、出生日期、班级等● 课程信息:课程编号、课程名称、授课老师、上课时间、授课地点等● 成绩信息:学生编号、课程编号、成绩等2.用户管理学生管理系统需要管理员登录,进行学生信息维护。

因此,需设计用户管理模块,实现用户的登录、注册、密码修改等功能。

3.模块设计学生管理系统应具有以下功能模块:● 学生信息管理:可以添加、修改、删除学生信息● 课程信息管理:可以添加、修改、删除课程信息● 成绩信息管理:可以录入、修改、删除学生成绩信息● 数据库管理:可以备份、还原、清空数据库4.界面设计本系统采用控制台界面,需要设计合适的菜单栏和操作界面。

界面简洁明了,易于操作。

三、系统实现1.数据库设计本系统采用文件存储方式,每个数据项分别用文件保存,以达到数据的读写。

2.用户管理为确保系统的安全性,需设计用户管理功能。

在用户登录时需要输入用户名和密码,验证通过后才能进入系统进行操作。

注册用户需填写基本信息,包括用户名、密码、姓名、性别、联系方式等。

3.模块实现学生信息管理、课程信息管理和成绩管理均采用CRUD(增删改查)模式,可以快速地对学生、课程和成绩进行修改。

数据管理界面提供数据库备份、还原和清空功能。

在备份和恢复时,需选择备份文件和目标文件夹,并设置备份文件的名称。

在数据清空时,需警告用户清空后不能恢复,以防误操作。

4.界面实现本系统采用控制台界面,采用菜单栏显示主要功能模块,在用户选择功能后,进入对应的操作界面。

学生管理系统c语言毕业设计

学生管理系统c语言毕业设计

学生管理系统c语言毕业设计学生管理系统是一个用于管理学生信息和学校日常运营的软件系统。

它能够帮助学校管理学生的个人信息、课程安排、成绩记录以及其他相关事务。

以下是关于学生管理系统的一些常见问题和解释:1. 学生管理系统是什么学生管理系统是一种软件系统,用于帮助学校管理学生信息和学校事务。

它可以存储学生的个人信息,包括姓名、年龄、性别、联系方式等。

同时,学生管理系统还提供了一系列功能,例如课程安排、成绩记录、考勤管理等。

2. 学生管理系统有哪些功能学生管理系统通常包含以下主要功能:-学生信息管理:可以记录学生的个人信息,包括姓名、年龄、性别、住址等。

-课程安排:可以安排学生的课程表,包括课程名称、教师信息、上课时间和地点等。

-成绩记录:可以记录学生的考试成绩和平时成绩,以便后续查询和统计。

-考勤管理:可以记录学生的出勤情况,包括迟到、早退、请假等。

-统计分析:可以根据学生的成绩和出勤情况进行统计分析,提供相关报表和图表。

3. 学生管理系统的优势是什么学生管理系统有以下几个优势:-提高工作效率:学生管理系统可以自动化学生信息的录入和管理,减少了手工操作的时间和错误。

-方便数据查询:学生管理系统可以快速查询和检索学生的个人信息、课程安排和成绩记录,提供了方便快捷的数据访问方式。

-信息安全性:学生管理系统可以设置权限和保护机制,保证学生信息的安全性和隐私保护。

4. 如何设计一个学生管理系统设计一个学生管理系统需要考虑以下几个方面:-数据库设计:需要设计一个合适的数据库结构来存储学生信息、课程安排和成绩记录等。

-用户界面设计:需要设计用户友好的界面,方便用户进行操作和查询。

-功能实现:根据需求,实现学生信息管理、课程安排、成绩记录等功能模块。

-数据安全性和权限控制:保证学生信息的安全性和隐私保护,设置合适的权限和保护机制。

希望以上解答对您的学生管理系统项目有所帮助。

如果您需要更具体的信息或具体的代码实现,还请进一步提供相关要求。

c教务系统课程设计

c教务系统课程设计

c 教务系统课程设计一、教学目标本课程旨在让学生了解教务系统的功能和结构,掌握教务系统的基本操作,培养学生运用教务系统进行教学管理的能力。

具体目标如下:1.知识目标:使学生了解教务系统的基本概念、功能和结构,理解教务系统在教学管理中的重要性。

2.技能目标:培养学生熟练操作教务系统,进行课程安排、学生管理、成绩统计等教学活动的能力。

3.情感态度价值观目标:培养学生对教务系统的兴趣,认识到教务系统在提高教学管理水平、促进教育教学改革中的作用,树立正确的信息技术应用观念。

二、教学内容1.教务系统概述:介绍教务系统的定义、功能、结构及其在教学管理中的重要性。

2.教务系统操作:讲解教务系统的安装、配置、登录等基本操作,以及课程安排、学生管理、成绩统计等功能的详细操作方法。

3.教务系统管理:阐述教务系统在教学管理中的应用,如教学计划管理、课程管理、学生管理等。

4.教务系统与教育教学改革:探讨教务系统在教育教学改革中的作用,以及如何利用教务系统提高教学管理水平。

三、教学方法1.讲授法:通过讲解教务系统的概念、功能、操作方法等,使学生掌握基本知识。

2.案例分析法:分析实际教学中运用教务系统的案例,使学生更好地理解教务系统在教学管理中的应用。

3.实验法:安排上机实验,让学生亲自动手操作教务系统,提高实际操作能力。

4.讨论法:学生就教务系统在使用过程中遇到的问题进行讨论,促进学生思考和解决问题。

四、教学资源1.教材:选用内容新颖、实用的教务系统教材,为学生提供理论指导。

2.参考书:推荐相关的教务系统参考书籍,拓展学生的知识视野。

3.多媒体资料:制作教学PPT、视频等多媒体资料,提高课堂教学效果。

4.实验设备:配置足够的计算机等实验设备,保证学生上机实验的需要。

五、教学评估本课程的教学评估采用多元化方式,全面客观地评价学生的学习成果。

评估方式包括:1.平时表现:通过课堂参与、提问、回答问题等环节,评估学生的学习态度和积极性。

原创c语言学生选课管理系统课程设计

原创c语言学生选课管理系统课程设计

原创C语言学生选课管理系统课程设计一、引言本文档旨在设计一个基于C语言的学生选课管理系统。

该系统旨在帮助学校管理学生的选课,并提供了学生选课、课程管理、成绩管理等功能。

通过该系统,学生和教师可以方便地进行选课和管理各项学业活动。

本文档将详细介绍该系统的设计与实现。

二、系统需求分析1. 用户角色该系统主要包括以下用户角色:•学生:能够进行选课、查看成绩等操作。

•教师:能够进行课程管理、成绩管理等操作。

•管理员:能够对学生和教师信息进行管理。

2. 功能需求根据用户角色的不同,该系统有以下几个主要功能需求:•学生选课:学生可以选择感兴趣的课程进行选课。

•课程管理:教师可以添加、修改和删除课程信息。

•成绩管理:教师可以录入学生成绩,并提供查询功能。

•用户信息管理:管理员可以管理学生和教师的信息,包括添加、修改和删除操作。

3. 非功能需求以下是该系统的一些非功能性需求:•用户友好性:系统界面简洁美观,操作简单易懂。

•数据安全性:用户数据应进行加密存储,保证数据的安全性。

•性能要求:系统可以同时处理多个用户的请求,响应时间不超过1秒。

三、系统设计与实现1. 系统架构本系统采用客户端-服务器模式,使用C语言编写。

2. 数据库设计系统使用文件存储学生和课程信息,以实现数据持久化。

每个学生和课程信息以一行字符串的形式存储,不同字段之间使用逗号分隔。

管理员可以通过对文件的读写操作来实现对学生和课程信息的管理。

3. 用户界面设计系统的用户界面使用文本方式呈现,通过文字菜单来进行操作选择。

使用者可以根据菜单提示进行相应的操作。

4. 功能模块设计本系统主要包括以下几个功能模块:学生选课模块、课程管理模块、成绩管理模块和用户信息管理模块。

•学生选课模块:学生可以浏览可选课程列表,并选择感兴趣的课程进行选课。

•课程管理模块:教师可以添加、修改和删除课程信息,并提供课程列表查询功能。

•成绩管理模块:教师可以录入学生成绩,并提供成绩查询功能。

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);}}/*====================================================================用户登录信息====================================================================*/。

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

河南理工大学毕业设计(论文)任务书专业班级学生姓名一、题目二、起止日期年月日至年月日三、主要任务与要求指导教师职称学院领导签字(盖章)年月日河南理工大学毕业设计(论文)评阅人评语题目评阅人职称工作单位年月日河南理工大学毕业设计(论文)评定书题目指导教师职称年月日河南理工大学毕业设计(论文)答辩许可证答辩前向毕业设计答辩委员会(小组)提交了如下资料:1、设计(论文)说明共页2、图纸共张3、指导教师意见共页4、评阅人意见共页经审查,专业班同学所提交的毕业设计(论文),符合学校本科生毕业设计(论文)的相关规定,达到毕业设计(论文)任务书的要求,根据学校教学管理的有关规定,同意参加毕业设计(论文)答辩。

指导教师签字(盖章)年月日根据审查,准予参加答辩。

答辩委员会主席(组长)签字(盖章)年月日河南理工大学毕业设计(论文)答辩委员会(小组)决议学院专业班同学的毕业设计(论文)于年月日进行了答辩。

根据学生所提供的毕业设计(论文)材料、指导教师和评阅人意见以及在答辩过程中学生回答问题的情况,毕业设计(论文)答辩委员会(小组)做出如下决议。

一、毕业设计(论文)的总评语二、毕业设计(论文)的总评成绩:三、答辩组组长签名:答辩组成员签名:答辩委员会主席:签字(盖章)年月日基于c语言的教务系统软件设计摘要本系统依据开发要求主要应用于教育系统,完成对日常的教育工作中学生成绩档案的数字化管理。

开发本系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化。

目前,学校工作繁杂、资料重多,虽然各类管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,目前还没有一套完整的、统一的系统。

因此,开发一套适和大众的、兼容性好的系统是很有必要的。

本系统在开发过程中,注意使其符合操作的业务流程,并力求系统的全面性、通用性,使得本系统不只适用于一家教育机构。

在开发方法的选择上,选择了生命周期法与原型法相结合的方法,遵循系统调查研究、系统分析、系统设计和系统实施四个主要阶段进行设计,而在具体的设计上,采取了演化式原型法,随着用户的使用及对系统了解的不断加深,对某一部分或几部分进行重新分析、设计、实施。

本论文主要从系统分析、系统设计、系统实施与使用等几个方面进行介绍【关键词】成绩管理成绩查询 C语言面向过程This system according to the development requirements are mainly applied in education system of education, the daily work of the digital archives management of student performance. This system can make the college development staff to reduce the working pressure, educational and teaching to the various services and information management, also can reduce the use of force, accelerate query speed, strengthen management, as well as the national departments about the pace of normalization, make each management standardized.At present, the school work multifarious, material more, though various management information system has entered the university, but has not been popular, and for students' performance management, it has been a complete and unified system. Therefore, the development of a suitable and the populace, compatibility good system is very necessary.This system in the process of development, pay attention to the operation of the business process, and strive to system of comprehensive, generalization, makes this system not only applicable to a education institutions. On the choice of methods in the development life cycle method, a method of combining with the prototype, follow the system research and systematic analysis, system design and system implementation, four main stages, and the specific design in the design, taking the evolution as users of prototype, the use of system and the deepening understanding of a part or a few parts for analysis, design and implementation. This thesis mainly from the system analysis, system design and system implementation and use etc.【Key Words】Achievement Management Achievement Query C Programming Language Procedure-Oriented第1章绪论 ....................................................................................... 错误!未定义书签。

1.1 学籍管理系统概述 ................................................................ 错误!未定义书签。

1.2 面向过程编程的基础知识 .................................................... 错误!未定义书签。

第2章需求分析 ............................................................................... 错误!未定义书签。

2.1 目标 ........................................................................................ 错误!未定义书签。

2.2 要求 ........................................................................................ 错误!未定义书签。

2.3 学生成绩管理系统的功能 .................................................... 错误!未定义书签。

第3章概要设计......................................................................... 错误!未定义书签。

3.1主模块 ................................................................................ 错误!未定义书签。

3.2 添加学生信息 ........................................................................ 错误!未定义书签。

3.3 显示学生信息 ......................................................................... 错误!未定义书签。

3.4 排序学生信息 ........................................................................ 错误!未定义书签。

3.5 查找学生信息 .......................................................................... 错误!未定义书签。

第4章详细设计与实现 ..................................................................... 错误!未定义书签。

第5章流程图 ..................................................................................... 错误!未定义书签。

第6章源代码 ..................................................................................... 错误!未定义书签。

6.1 数据结构与函数声明的头文件 ............................................ 错误!未定义书签。

6.2主控程序模块 .................................................................... 错误!未定义书签。

6.3添加学生模块 .................................................................... 错误!未定义书签。

相关文档
最新文档