1、学生选课管理系统 流程图学生管理系统关仁杰一、简介:本系统称为“学生选课管理系统”,主要功能是实现对学生信息和教师信息的管理,以及学生成绩的管理。该系统分为三级身份:管理员、教师、学生。其中管理员的权限有:1)、添加学生或老师的信息,2)、删除学生或老师信息,3、修改学生或老师信息,4)查找学生或老师信息。教师的权限:1)仅可以修改自己密码,2)查看所有关于自身的信息,3)修改其所授科目的学生科目的成绩。学生的权限:仅可以修改自己的密码,查看所有有关自己的信息,另外还要可以选课。二、设计思想;1:分别把学生信息、科目信息和教师科目信息建立三个链表。/科目信息 typedef struct su
2、bject_info float SUB_notes3; /科目成绩 int SUB_csscore; /科目学分 char SUB_csname32; /科目名称 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_name32; /姓名 char STU_psword32; /密码 SUB subject3; struct
3、list_head list;STU;/教师信息:typedef struct TCH_info int TCH_id; /工号 char TCH_name32; /姓名 char TCH_psword32; /密码 SUB subject1; struct list_head list;TEC;/管理员信息typedef struct ADM_info char ADM_usename8; char ADM_psword6; ADM;ADM use1;#define Y y#define N n#define S_FLAG s#denfine T_FLAG t#define A_FLAG a
4、 void gettime(); /获取当前时间void main_menu(); /主菜单void stu_login(); /学生登录void openf (char *filename); /判断文件是否存在void tec_login(); /老师登录void adm_login(); /管理员登录void adm_nextmenu(); /管理员2级菜单void a_updt_stuinfo(); /操作学生信息void a_updt_tecinfo(); /操作老师信息void a_updt_myinfo(); /操作管理员自身信息void a_add_stuinfo(); /添加
5、学生信息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(); /
6、公用函数集合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); /教师显示自己信息void s_updt_myinfo(int tmpid); /学生更新自己信息v
7、oid 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 core3); /求平均成绩float (*f)(float core3); /int inputpsword(char *pass); /输入密码回显 *2: 模块分析开始 主界面 E:exit 1:student 2:teace
8、r 3:admin 退出 stu_login tec_login amd_login student_nextmenu teacher_menu adminmenustudent_nextmenu stu_show_myinfo stu_update_mypsword stu_select_mysubject 返回上一级teacher tec_show_myinfo() tec_update_mypsword(); tec_next_menu(); 返回上一级tec_next_menu() tec_ show_stuinfo() tec_update_stuscore(); 返回上一级 输入信
9、息、保存 修改 保存adm_nextmenu ADM_update_stuinfo ADM_update_tecinfo ADM_updat_myinfo 返回上一级 Add del update show Add del update show change_mypsword3: 流程图 1 2 3 4 N Y Y Y Y Y Yq N Y 1 2 3 4 Y N N N Y Y Y Y 1 2 3 4 Y N N N Y Y Y Y 1 2 3 4 Y N N N Y Y Y三、总结学生选课管理系统,5天。这之前学的C语言基础及C语言高级编程。对于程序设计来说这些就是指导性的理论,我学的还
10、算认真,自我感觉良好。听说要做学生选课管理系统的时候,都有着霍霍欲试的冲动。然而5天的历程却诉说着理论与实践结合并非易事。开始拿到这个小项目时候还真不知道怎么下手,像猎到刺猬的饿狼,虽饥渴难耐却又无从下嘴,只好看着猎物徘徊、踌躇。后经老师指教总算有点了头绪,真是“山重水复疑无路,柳暗花明又一村”。我首先采取的就是化整为零的模块化分析,把整个系统分为:管理员模块、教师模块及学生三大模块,然后各个模块再按照不同的功能细分成不同的模块。然而我在运用此思想时有点误解。 我在写代码时,把代码模块化过了头了。我把每个函数都单列在每个相对应的文件里,搞得有点乱乱的。又经老师指点后,我把各模块下相应的函数都归
11、并到一个文件里,这样就显得疏朗多了。修正这点失误着实用了我不少时间,然而,接下来我又卡住了。因为系统需要操作大量的数据,所以就牵涉到如何把这些数据保存、读取、修改等操作。我最初的思想是把这么多数据在建立后就存入文件里,然后在需要操作时再读取文件信息进行操作。时间毕竟有限,这样想就这样做,然而结果并不像我预期的那样,我不知道哪里出了问题,先是梳理思路后是检查代码再者就是上网查找相关信息。几经曲折,总算离我预期结果不远时,又卡住了!这已经是第四天了,无奈,只好在去吃饭的路上向我同桌取经。听了他说,“你连软件设计的基本思想都不懂”之后我一脸迷惘。经他细心讲解才明白我这种思路做出来的程序要不断的存取数据,需要较多的系统资源,效率会很低。他给我提供了另外一种思想:在程序启动时把所需要的数据从文件里读到内存,然后直接在内存里操作,在需要时在进行保存。呵呵,从我向他请教还没有10分钟,他就把我从迷惘中带回了透彻的光明。这时,离时限还有一天半的时间,而我只是实现了程序的基本框架。但换了思路之后,我速度明显提高了,在剩下的时间里把程序的基本功能都实现了。看样子,交流真的很重要,遇到问题时最好不要一个人绞尽脑汁,要多交流请教啊!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1