Linux环境下C语言《学生选课管理系统》全源代码含流程图个人总结对您有用的话顶一下.docx

上传人:b****8 文档编号:11129288 上传时间:2023-02-25 格式:DOCX 页数:86 大小:34.60KB
下载 相关 举报
Linux环境下C语言《学生选课管理系统》全源代码含流程图个人总结对您有用的话顶一下.docx_第1页
第1页 / 共86页
Linux环境下C语言《学生选课管理系统》全源代码含流程图个人总结对您有用的话顶一下.docx_第2页
第2页 / 共86页
Linux环境下C语言《学生选课管理系统》全源代码含流程图个人总结对您有用的话顶一下.docx_第3页
第3页 / 共86页
Linux环境下C语言《学生选课管理系统》全源代码含流程图个人总结对您有用的话顶一下.docx_第4页
第4页 / 共86页
Linux环境下C语言《学生选课管理系统》全源代码含流程图个人总结对您有用的话顶一下.docx_第5页
第5页 / 共86页
点击查看更多>>
下载资源
资源描述

Linux环境下C语言《学生选课管理系统》全源代码含流程图个人总结对您有用的话顶一下.docx

《Linux环境下C语言《学生选课管理系统》全源代码含流程图个人总结对您有用的话顶一下.docx》由会员分享,可在线阅读,更多相关《Linux环境下C语言《学生选课管理系统》全源代码含流程图个人总结对您有用的话顶一下.docx(86页珍藏版)》请在冰豆网上搜索。

Linux环境下C语言《学生选课管理系统》全源代码含流程图个人总结对您有用的话顶一下.docx

Linux环境下C语言《学生选课管理系统》全源代码含流程图个人总结对您有用的话顶一下

//第一部分:

结构体、流程图、总结………………Page1

//第二部分C语言源代码………………Page10

 

//第一部分

 

一、简介:

本系统称为“学生选课管理系统”,主要功能是实现对学生信息和教师信息的管理,以及学生成绩的管理。

该系统分为三级身份:

管理员、教师、学生。

其中管理员的权限有:

1)、添加学生或老师的信息,2)、删除学生或老师信息,3、修改学生或老师信息,4)查找学生或老师信息。

教师的权限:

1)仅可以修改自己密码,2)查看所有关于自身的信息,3)修改其所授科目的学生科目的成绩。

学生的权限:

仅可以修改自己的密码,查看所有有关自己的信息,另外还要可以选课。

二、设计思想;

[1]:

分别把学生信息、科目信息和教师—科目信息建立三个链表。

//科目信息

typedefstructsubject_info

{

floatSUB_notes[3];//科目成绩

intSUB_csscore;//科目学分

charSUB_csname[32];//科目名称

structlist_headlist;

}SUB;

//学生信息

typedefstructSTU_info

{

floatSTU_totalscore;//总分

intSTU_id;//学号

intSTU_age;//年龄

intSTU_grade;//年级

intSTU_place;//名次

charSTU_name[32];//姓名

charSTU_psword[32];//密码

SUBsubject[3];

structlist_headlist;

}STU;

//教师信息:

typedefstructTCH_info

{

intTCH_id;//工号

charTCH_name[32];//姓名

charTCH_psword[32];//密码

SUBsubject[1];

structlist_headlist;

}TEC;

//管理员信息

typedefstructADM_info

{

charADM_usename[8];

charADM_psword[6];

}ADM;

ADMuse[1];

#defineY'y'

#defineN'n'

#defineS_FLAG's'

#denfineT_FLAG't'

#defineA_FLAG'a'

voidgettime();//获取当前时间

voidmain_menu();//主菜单

voidstu_login();//学生登录

voidopenf(char*filename);//判断文件是否存在

voidtec_login();//老师登录

voidadm_login();//管理员登录

voidadm_nextmenu();//管理员2级菜单

voida_updt_stuinfo();//操作学生信息

voida_updt_tecinfo();//操作老师信息

voida_updt_myinfo();//操作管理员自身信息

voida_add_stuinfo();//添加学生信息

voida_add_tecinfo();//添加老师信息

voida_mdify_stuinfo();//修改学生信息

voida_del_info(charflag);//删除信息

voida_mdify_tecinfo();//修改老师信息

voida_seek_stuinfo();//查找学生信息

voida_seek_tecinfo();//查找老师信息

voidshow(charflag);//显示信息

voidsave(charflag,charsystem);//保存信息

voidcheck(charflag);//验证密码

voidcommom();//公用函数集合

voida_show(charflag);//显示信息

voida_seek_info(charflag);//查找信息

voida_mdify_info(charflag);//修改学生或老师信息

voidstu_nextmenu(inttmpid);//学生菜单

voidtec_nextmenu(inttmpid);//老师菜单

voids_show_myinfo(inttmpid);//学生显示自己信息

voidt_show_myinfo(inttmpid);//教师显示自己信息

voids_updt_myinfo(inttmpid);//学生更新自己信息

voids_select_subject(inttmpid);//学生选课

voidt_updt_stuinfo(inttmpid);//教授更新自己信息

voidt_updt_myinfo(inttmpid);//教授显示自己信息

voidreadf();//从文件中读取信息

voidstu_sort();//对学生链表排序

floatave(floatcore[3]);//求平均成绩

float(*f)(floatcore[3]);//

intinputpsword(char*pass);//输入密码回显*

 

[2]:

模块分析

开始

主界面

 

E:

exit1:

student2:

teacer3:

admin

 

退出stu_logintec_loginamd_login

 

student_nextmenuteacher_menuadminmenu

 

student_nextmenu

 

 

stu_show_myinfostu_update_mypswordstu_select_mysubject返回上一级

 

\teacher

 

 

tec_show_myinfo()tec_update_mypsword();tec_next_menu();返回上一级

 

tec_next_menu()

 

 

tec_show_stuinfo()tec__update_stuscore();返回上一级

 

输入信息、保存修改

 

保存

 

adm_nextmenu

 

 

ADM_update_stuinfoADM_update_tecinfoADM_updat_myinfo返回上一级

AdddelupdateshowAdddelupdateshowchange_mypsword

 

[3]:

流程图

 

开始

1、2、3、4

主界面

 

1234

tec_login

adm_login

stu_login

exit

N

login

login

YY

login

 

login

 

YYYY

 

q

 

stu_login

 

N

 

return

sign_sub

show_info

1、2.、3、4

Y

 

1234

Y

N

N

chag_pswod

N

YYY

 

tec_login

 

Y

up_stuinfo

chag_pswod

show_info

1、2.、3、4

 

1234

return

Y

N

N

N

 

YYY

 

adm_login

 

Y

 

1、2.、3、4

 

1234

return

Y

 

updt_tecinfo

N

chag_pswod

N

 

updt_stuinfo

N

YYY

 

三、总结

《学生选课管理系统》,5天。

这之前学的C语言基础及C语言高级编程。

对于程序设计来说这些就是指导性的理论,我学的还算认真,自我感觉良好。

听说要做《学生选课管理系统》的时候,都有着霍霍欲试的冲动。

然而5天的历程却诉说着理论与实践结合并非易事。

开始拿到这个小项目时候还真不知道怎么下手,像猎到刺猬的饿狼,虽饥渴难耐却又无从下嘴,只好看着猎物徘徊、踌躇。

后经老师指教总算有点了头绪,真是“山重水复疑无路,柳暗花明又一村”。

我首先采取的就是化整为零的模块化分析,把整个系统分为:

管理员模块、教师模块及学生三大模块,然后各个模块再按照不同的功能细分成不同的模块。

然而我在运用此思想时有点误解。

我在写代码时,把代码模块化过了头了。

我把每个函数都单列在每个相对应的文件里,搞得有点乱乱的。

又经老师指点后,我把各模块下相应的函数都归并到一个文件里,这样就显得疏朗多了。

修正这点失误着实用了我不少时间,然而,接下来我又卡住了。

因为系统需要操作大量的数据,所以就牵涉到如何把这些数据保存、读取、修改等操作。

我最初的思想是把这么多数据在建立后就存入文件里,然后在需要操作时再读取文件信息进行操作。

时间毕竟有限,这样想就这样做,然而结果并不像我预期的那样,我不知道哪里出了问题,先是梳理思路后是检查代码再者就是上网查找相关信息。

几经曲折,总算离我预期结果不远时,又卡住了!

这已经是第四天了,无奈,只好在去吃饭的路上向我同桌取经。

听了他说,“你连软件设计的基本思想都不懂”之后我一脸迷惘。

经他细心讲解才明白我这种思路做出来的程序要不断的存取数据,需要较多的系统资源,效率会很低。

他给我提供了另外一种思想:

在程序启动时把所需要的数据从文件里读到内存,然后直接在内存里操作,在需要时在进行保存。

呵呵,从我向他请教还没有10分钟,他就把我从迷惘中带回了透彻的光明。

这时,离时限还有一天半的时间,而我只是实现了程序的基本框架。

但换了思路之后,我速度明显提高了,在剩下的时间里把程序的基本功能都实现了。

看样子,交流真的很重要,遇到问题时最好不要一个人绞尽脑汁,要多交流请教啊!

 

//第二部分

//C语言全源代码

//*************************************************************

//*********************************************************

//list.h文件

#ifndef_LIST_H

#define_LIST_H

#define_INLINE_staticinline

structlist_head{

structlist_head*next,*prev;

};

#defineLIST_HEAD_INIT(name){&(name),&(name)}

#defineLIST_HEAD(name)\

structlist_headname=LIST_HEAD_INIT(name)

#defineINIT_LIST_HEAD(ptr)do{\

(ptr)->next=(ptr);(ptr)->prev=(ptr);\

}while(0)

_INLINE_void__list_add(structlist_head*add,

structlist_head*prev,

structlist_head*next)

{

next->prev=add;

add->next=next;

add->prev=prev;

prev->next=add;

}

_INLINE_voidlist_add(structlist_head*add,structlist_head*head){

__list_add(add,head,head->next);

}

_INLINE_voidlist_add_tail(structlist_head*add,structlist_head*head)

{

__list_add(add,head->prev,head);

}

_INLINE_void__list_del(structlist_head*prev,structlist_head*next)

{

next->prev=prev;

prev->next=next;

}

_INLINE_voidlist_del(structlist_head*entry)

{

__list_del(entry->prev,entry->next);

}

_INLINE_voidlist_del_init(structlist_head*entry)

{

__list_del(entry->prev,entry->next);

INIT_LIST_HEAD(entry);

}

_INLINE_intlist_empty(structlist_head*head)

{

returnhead->next==head;

}

_INLINE_voidlist_splice(structlist_head*list,structlist_head*head)

{

structlist_head*first=list->next;

if(first!

=list){

structlist_head*last=list->prev;

structlist_head*at=head->next;

first->prev=head;

head->next=first;

last->next=at;

at->prev=last;

}

}

#definelist_entry(ptr,type,member)\

((type*)((char*)(ptr)-(unsignedlong)(&((type*)0)->member)))

#definelist_for_each(pos,head)\

for(pos=(head)->next;pos!

=(head);pos=pos->next)

#definelist_for_each_safe(pos,pnext,head)\

for(pos=(head)->next,pnext=pos->next;pos!

=(head);\

pos=pnext,pnext=pos->next)

#undef_INLINE_

#endif

//**********************************************************************8

//***********************************************************************

//****头文件head.h

#ifndef_HEAD_H_

#define_HEAD_H_

#include

#include"list.h"

#include

#include

#include

#defineY'y'

#defineN'n'

#defineA_FLAG'a'

#defineS_FLAG's'

#defineT_FLAG't'

externstructlist_headstu;//

externstructlist_headtec;//

//科目信息

typedefstructsubject_info

{

floatSUB_notes[3];//科目成绩

intSUB_csscore;//科目学分

charSUB_csname[32];//科目名称

structlist_headlist;

}SUB;

//学生信息

typedefstructSTU_info

{

floatSTU_totalscore;//总分

intSTU_id;//学号

intSTU_age;//年龄

intSTU_grade;//年级

intSTU_place;//名次

charSTU_name[32];//姓名

charSTU_psword[32];//密码

SUBsubject[3];

structlist_headlist;

}STU;

//教师信息:

typedefstructTCH_info

{

intTCH_id;//工号

charTCH_name[32];//姓名

charTCH_psword[32];//密码

SUBsubject[1];

structlist_headlist;

}TEC;

//管理员信息

typedefstructADM_info

{

charADM_usename[8];

charADM_psword[6];

}ADM;

ADMuse[1];

voidgettime();//获取当前时间

voidmain_menu();//主菜单

voidstu_login();//学生登录

voidopenf(char*filename);//判断文件是否存在

voidtec_login();//老师登录

voidadm_login();//管理员登录

voidadm_nextmenu();//管理员2级菜单

voida_updt_stuinfo();//操作学生信息

voida_updt_tecinfo();//操作老师信息

voida_updt_myinfo();//操作管理员自身信息

voida_add_stuinfo();//添加学生信息

voida_add_tecinfo();//添加老师信息

voida_mdify_stuinfo();//修改学生信息

voida_del_info(charflag);//删除信息

voida_mdify_tecinfo();//修改老师信息

voida_seek_stuinfo();//查找学生信息

voida_seek_tecinfo();//查找老师信息

voidshow(charflag);//显示信息

voidsave(charflag,charsystem);//保存信息

voidcheck(charflag);//验证密码

voidcommom();//公用函数集合

voida_show(charflag);//显示信息

voida_seek_info(charflag);//查找信息

voida_mdify_info(charflag);//修改学生或老师信息

voidstu_nextmenu(inttmpid);//学生菜单

voidtec_nextmenu(inttmpid);//老师菜单

voids_show_myinfo(inttmpid);//学生显示自己信息

voidt_show_myinfo(inttmpid);//教师显示自己信息

voids_updt_myinfo(inttmpid);//学生更新自己信息

voids_select_subject(inttmpid);//学生选课

voidt_updt_stuinfo(inttmpid);//教授更新自己信息

voidt_updt_myinfo(inttmpid);//教授显示自己信息

voidreadf();//从文件中读取信息

voidstu_sort();

floatave(floatcore[3]);

float(*f)(floatcore[3]);

intinputpsword(char*pass);

voida_chpsword();

#endif

//******************************************

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1