学生选课管理系统-流程图
学生管理系统
关仁杰
一、简介:
本系统称为“学生选课管理系统\主要功能是实现对学生信息和教师信息的管理,以及学生成绩的管理.
该系统分为三级身份:管理员、教师、学生。 其中管理员的权限有:1)、添加学生或老师的信息,2)、删除学生或老师信息,3、修改学生或老师信息,4)查找学生或老师信息。
教师的权限:1)仅可以修改自己密码,2)查看所有关于自身的信息,3)修改其所授科目的学生科目的成绩.
学生的权限:仅可以修改自己的密码,查看所有有关自己的信息,另外还要可以选课。 二、设计思想; [1]:分别把学生信息、科目信息和教师-科目信息建立三个链表。 //科目信息
typedef struct subject_info { float SUB_notes[3]; //科目成绩 int SUB_csscore; //科目学分 char SUB_csname[32]; //科目名称 struct list_head list; }SUB; //学生信息
typedef struct STU_info { float STU_totalscore; //总分 int STU_id; //学号 int STU_age; //年龄 int STU_grade; //年级 int STU_place; //名次 char STU_name[32]; //姓名 char STU_psword[32]; //密码
SUB subject[3]; struct list_head list; }STU;
//教师信息:
typedef struct TCH_info { int TCH_id; //工号 char TCH_name[32]; //姓名 char TCH_psword[32]; //密码 SUB subject[1]; struct list_head list;
}TEC;
//管理员信息
typedef struct ADM_info { char ADM_usename[8]; char ADM_psword[6]; }ADM;
ADM use[1];
#define Y 'y’ #define N 'n' #define S_FLAG 's' #denfine T_FLAG ’t’ #define A_FLAG 'a’ void gettime();
void main_menu(); void stu_login(); void openf (char *filename); 存在
void tec_login(); void adm_login(); void adm_nextmenu(); void a_updt_stuinfo(); void a_updt_tecinfo(); void a_updt_myinfo(); 息
void a_add_stuinfo(); void a_add_tecinfo(); void a_mdify_stuinfo(); void a_del_info(char flag); void a_mdify_tecinfo(); void a_seek_stuinfo(); void a_seek_tecinfo(); void show (char flag); void save (char flag,char system); void check(char flag); void commom(); void a_show(char flag); void a_seek_info(char flag); void a_mdify_info(char flag); 师信息
void stu_nextmenu(int tmpid); void tec_nextmenu(int tmpid); void s_show_myinfo(int tmpid); void t_show_myinfo(int tmpid);
//获取当前时间 //主菜单 //学生登录 //判断文件是否//老师登录 //管理员登录 //管理员2级菜单 //操作学生信息 //操作老师信息 //操作管理员自身信//添加学生信息 //添加老师信息 //修改学生信息 //删除信息 //修改老师信息 //查找学生信息 //查找老师信息 //显示信息 //保存信息 //验证密码 //公用函数集合 //显示信息 //查找信息 //修改学生或老//学生菜单 //老师菜单
//学生显示自己信息 //教师显示自己信息
void s_updt_myinfo(int tmpid); void s_select_subject(int tmpid); void t_updt_stuinfo(int tmpid); void t_updt_myinfo(int tmpid); void readf(); void stu_sort(); float ave (float core[3]); float (*f)(float core[3]); int inputpsword(char *pass); *
[2]: 模块分析 //学生更新自己信息 //学生选课
//教授更新自己信息 //教授显示自己信息 //从文件中读取信息 //对学生链表排序 //求平均成绩 // //输入密码回显
E:exit 1:student 退出 stu_login student_nextmenu 开始 主界面 2:teacer 3:admin tec_login amd_login teacher_menu adminmenu student_nextmenu
stu_show_myinfo stu_update_mypsword stu_select_mysubject 返回上一级 \eacher
tec_show_myinfo() tec_update_mypsword(); tec_next_menu(); 返回上一级 tec_next_menu()
tec_ show_stuinfo() tec__update_stuscore(); 返回上一级
输入信息、保存 修改 保存 adm_nextmenu
ADM_update_stuinfo ADM_update_tecinfo ADM_updat_myinfo 返回上一级
Add del update show Add del update show change_mypsword [3]: 流程图
开始 主界面
1 2 3 4 stu_login tec_logiadm_login 1 、 2 、 3 、 4 exit N login Y login Y
login login
Y Y Y Y q
N
Y stu_login 1 2 、 2. 、 3 、 4 3 4 1
Y N N chag_pswod N Y Y Y Y tec_login 1 2 、 2. 、 3 、 4 3 4 1 return Y N N N show_info Y Y up_stuinfo Y chag_pswod Y adm_login 1、2.、3、4 1 2 3 4 return
Y
N updt_tecinfo N
chag_pswod N updt_stuinfo Y Y Y 三、 总结 《学生选课管理系统》,5天。 这之前学的C语言基础及C语言高级编程.对于程序设计来说这些就是指导性的理论,我学的还算认真,自我感觉良好。听说要做《学生选课管理系统》的时候,都有着霍霍欲试的冲动。然而5天的历程却诉说着理论与实践结合并非易事. 开始拿到这个小项目时候还真不知道怎么下手,像猎到刺猬的饿狼,虽饥渴难耐却又无从下嘴,只好看着猎物徘徊、踌躇。后经老师指教总算有点了头绪,真是“山重水复疑无路,柳暗花明又一村”。 我首先采取的就是化整为零的模块化分析,把整个系统分为:管理员模块、教师模块及学生三大模块,然后各个模块再按照不同的功能细分成不同的模块.然而我在运用此思想时有点误解。 我在写代码时,把代码模块化过了头了。我把每个函数都单列在每个相对应的文件里,搞得有点乱乱的。又经老师指点后,我把各模块下相应的函数都归并到一个文件里,这样就显得疏朗多了。
修正这点失误着实用了我不少时间,然而,接下来我又卡住了。因为系统需要操作大量的数据,所以就牵涉到如何把这些数据保存、读取、修改等操作。我最初的思想是把这么多数据在建立后就存入文件里,然后在需要操作时再读取文件信息进行操作.时间毕竟有限,这样想就这样做,然而结果并不像我预期的那样,我不知道哪里出了问题,先是梳理思路后是检查代码再者就是上网查找相关信息.几经曲折,总算离我预期结果不远时,又卡住了!
这已经是第四天了,无奈,只好在去吃饭的路上向我同桌取经。听了他说,“你连软件设计的基本思想都不懂\"之后我一脸迷惘。经他细心讲解才明白我这种思路做出来的程序要不断的存取数据,需要较多的系统资源,效率会很低。他给我提供了另外一种思想:在程序启动时把所需要的数据从文件里读到内存,然后直接在内存里操作,在需要时在进行保存。
呵呵,从我向他请教还没有10分钟,他就把我从迷惘中带回了透彻的光明。
这时,离时限还有一天半的时间,而我只是实现了程序的基本框架。但换了思路之后,我速度明显提高了,在剩下的时间里把程序的基本功能都实现了。看样子,交流真的很重要,遇到问题时最好不要一个人绞尽脑汁,要多交流请教啊!
因篇幅问题不能全部显示,请点此查看更多更全内容