Linux环境下C语言《学生信息管理系统》最全文档.docx_第1页
Linux环境下C语言《学生信息管理系统》最全文档.docx_第2页
Linux环境下C语言《学生信息管理系统》最全文档.docx_第3页
Linux环境下C语言《学生信息管理系统》最全文档.docx_第4页
Linux环境下C语言《学生信息管理系统》最全文档.docx_第5页
免费预览已结束,剩余52页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/第一部分:结构体、流程图、总结 Page1/第二部分C语言源代码 Page10/第一部分一、 简介:本系统称为“学生选课管理系统”,主要功能是实现对学生信息和教师信息的管理,以及学生成绩的管理。该系统分为三级身份:管理员、教师、学生。其中管理员的权限有:1)、添加学生或老师的信息,2)、删除学生或老师信息,3、修改学生或老师信息,4)查找学生或老师信息。教师的权限:1)仅可以修改自己密码,2)查看所有关于自身的信息,3)修改其所授科目的学生科目的成绩。学生的权限:仅可以修改自己的密码,查看所有有关自己的信息,另外还要可以选课。二、 设计思想;1:分别把学生信息、科目信息和教师科目信息建立三个链表。/科目信息typedef structsubject_infofloatSUB_notes3;/科目成绩int SUB_csscore;/科目学分char SUB_csname32;/科目名称structlist_headlist;SUB;/学生信息typedef struct STU_infofloatSTU_totalscore;/总分int STU_id;/学号 int STU_age;/年龄int STU_grade;/年级int STU_place;/名次charSTU_name32;/姓名 charSTU_psword32;/密码 SUBsubject3;structlist_headlist;STU;/教师信息:typedef struct TCH_infoint TCH_id;/工号charTCH_name32;/姓名charTCH_psword32;/密码 SUBsubject1;structlist_headlist;TEC;/管理员信息typedef struct ADM_infochar ADM_usename8;char ADM_psword6;ADM;ADM use1;#defineYy#defineNn#define S_FLAG s#denfine T_FLAG t#define A_FLAGavoid 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();/添加学生信息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);/教师显示自己信息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 core3);/求平均成绩float (*f)(float core3);/int inputpsword(char *pass);/输入密码回显 *2: 模块分析开始主界面 E:exit 1:student 2:teacer 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(); 返回上一级 输入信息、保存 修改 保存adm_nextmenu ADM_update_stuinfo ADM_update_tecinfo ADM_updat_myinfo 返回上一级 Add del update showAdd del update show change_mypsword三、 总结学生选课管理系统,5天。这之前学的C语言基础及C语言高级编程。对于程序设计来说这些就是指导性的理论,我学的还算认真,自我感觉良好。听说要做学生选课管理系统的时候,都有着霍霍欲试的冲动。然而5天的历程却诉说着理论与实践结合并非易事。开始拿到这个小项目时候还真不知道怎么下手,像猎到刺猬的饿狼,虽饥渴难耐却又无从下嘴,只好看着猎物徘徊、踌躇。后经老师指教总算有点了头绪,真是“山重水复疑无路,柳暗花明又一村”。我首先采取的就是化整为零的模块化分析,把整个系统分为:管理员模块、教师模块及学生三大模块,然后各个模块再按照不同的功能细分成不同的模块。然而我在运用此思想时有点误解。 我在写代码时,把代码模块化过了头了。我把每个函数都单列在每个相对应的文件里,搞得有点乱乱的。又经老师指点后,我把各模块下相应的函数都归并到一个文件里,这样就显得疏朗多了。修正这点失误着实用了我不少时间,然而,接下来我又卡住了。因为系统需要操作大量的数据,所以就牵涉到如何把这些数据保存、读取、修改等操作。我最初的思想是把这么多数据在建立后就存入文件里,然后在需要操作时再读取文件信息进行操作。时间毕竟有限,这样想就这样做,然而结果并不像我预期的那样,我不知道哪里出了问题,先是梳理思路后是检查代码再者就是上网查找相关信息。几经曲折,总算离我预期结果不远时,又卡住了!这已经是第四天了,无奈,只好在去吃饭的路上向我同桌取经。听了他说,“你连软件设计的基本思想都不懂”之后我一脸迷惘。经他细心讲解才明白我这种思路做出来的程序要不断的存取数据,需要较多的系统资源,效率会很低。他给我提供了另外一种思想:在程序启动时把所需要的数据从文件里读到内存,然后直接在内存里操作,在需要时在进行保存。呵呵,从我向他请教还没有10分钟,他就把我从迷惘中带回了透彻的光明。这时,离时限还有一天半的时间,而我只是实现了程序的基本框架。但换了思路之后,我速度明显提高了,在剩下的时间里把程序的基本功能都实现了。看样子,交流真的很重要,遇到问题时最好不要一个人绞尽脑汁,要多交流请教啊!/第二部分/C语言全源代码/*/*/list.h文件#ifndef _LIST_H#define _LIST_H#define _INLINE_ static inlinestruct list_head struct list_head *next, *prev;#define LIST_HEAD_INIT(name) &(name), &(name)#define LIST_HEAD(name) struct list_head name = LIST_HEAD_INIT(name)#define INIT_LIST_HEAD(ptr) do (ptr)-next = (ptr); (ptr)-prev = (ptr); while (0)_INLINE_ void _list_add(struct list_head *add,struct list_head *prev,struct list_head *next)next-prev = add;add-next = next;add-prev = prev;prev-next = add;_INLINE_ void list_add(struct list_head *add, struct list_head *head) _list_add(add, head, head-next);_INLINE_ void list_add_tail(struct list_head *add, struct list_head *head)_list_add(add, head-prev, head);_INLINE_ void _list_del(struct list_head *prev, struct list_head *next)next-prev = prev;prev-next = next;_INLINE_ void list_del(struct list_head *entry)_list_del(entry-prev, entry-next);_INLINE_ void list_del_init(struct list_head *entry)_list_del(entry-prev, entry-next);INIT_LIST_HEAD(entry);_INLINE_ int list_empty(struct list_head *head)return head-next = head;_INLINE_ void list_splice(struct list_head *list, struct list_head *head)struct list_head *first = list-next;if (first != list) struct list_head *last = list-prev;struct list_head *at = head-next;first-prev = head;head-next = first;last-next = at;at-prev = last;#define list_entry(ptr, type, member) (type *)(char *)(ptr) - (unsigned long)(&(type *)0)-member)#define list_for_each(pos, head) for (pos = (head)-next; pos != (head); pos = pos-next)#define list_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#includelist.h#include#include#include#defineYy#defineNn#define A_FLAG a#define S_FLAG s#define T_FLAG textern struct list_head stu;/extern struct list_head tec;/科目信息typedef structsubject_infofloatSUB_notes3;/科目成绩int SUB_csscore;/科目学分char SUB_csname32;/科目名称structlist_headlist;SUB;/学生信息typedef struct STU_infofloatSTU_totalscore;/总分int STU_id;/学号 int STU_age;/年龄int STU_grade;/年级int STU_place;/名次charSTU_name32;/姓名 charSTU_psword32;/密码 SUBsubject3;structlist_headlist;STU;/教师信息:typedef struct TCH_infoint TCH_id;/工号charTCH_name32;/姓名charTCH_psword32;/密码 SUBsubject1;structlist_headlist;TEC;/管理员信息typedef struct ADM_infochar ADM_usename8;char ADM_psword6;ADM;ADM use1;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();/添加学生信息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);/教师显示自己信息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 core3);float (*f)(float core3);int inputpsword(char *pass);void a_chpsword();#endif/*/*/入口main函数#include#include#include#include#includehead.hLIST_HEAD(stu);LIST_HEAD(tec);int main()readf();system(clear);printf(ttt* *tt*n* *tt*Copyright (c) 2010,易嵌教育n* *tt*All rights reserved.n* *tt* n* *tt*软件名称:学生选课管理系统n* *tt*摘 要:n* *tt* n* *tt*当前版本:1.1n* *tt*作 者:关仁杰n* *tt*完成日期:2010年8月2日n* *tt*n);/void delay(unsinged int) sleep(2);main_menu();return 0;void main_menu()int ch;char hc;system(clear);gettime();printf(ttt=学生信息管理系统 =nn);printf(tt#n);printf(tt= 欢迎使用本系统a =n);printf(tt#nn);printf(tt+n);printf(tt=1.学生 =n);printf(tt=2.教师 =n);printf(tt=3.管理员 =n);printf(tt=4.退出 =n);printf(tt+n);printf(请输入您选择的序号:n);scanf(%d,&ch);switch(ch)case 1:printf(您的身份是学生!n请登录:n);gettime();openf(student.txt);check(S_FLAG);break;case 2:printf(您的身份是教师!n请登录:n);gettime();openf(teacher.txt);check(T_FLAG);break;case 3:printf(您的身份是管理员!n请登录n);gettime();adm_login();break;case 4:printf(n);printf(aaa您已经保存相应的数据了吗?(y or n)n);getchar();scanf(%c,&hc);if(hc=y)|(hc=Y)printf(谢谢您使用本系统,如有需要请联系:QQ:n);printf(请按Enter键退出!n);getchar();getchar();exit(0);else if(hc=n)|(hc=N)printf(您还没有保存,系统将为您自动保存!n);save(S_FLAG,Y);break;default:printf(您的输入有误,请返回上级菜单!n);getchar();getchar();main_menu();/试读文件,验证是否建立void openf(char *filename)FILE *fp;if(fp=fopen(filename,r)=NULL)filename=NULL;printf(对不起!还没有建立相应的信息!n请于管理员联系!n);getchar();getchar();main_menu();fclose(fp);/管理员登录void adm_login()char psword6;FILE *fp;int i=0;if(fp=fopen(psword.txt,r)=NULL)printf(对不起没有相应的信息,请您建立!n);printf(请输入您的用户名(不得多于8个字符):n);scanf(%s,use0.ADM_usename);printf(请输入您的密码:n);while(pswordi=getchar()!=n|(pswordi=getchar()!=EOF|i6)putchar(*);i+;strcmp(use0.ADM_psword,psword);save(A_FLAG,N);/save the infomain_menu();elsecheck(A_FLAG);fclose(fp);/*/*/*/管理员相关函数#ifndef _ADM_nextmenu_c#define _ADM_nextmenu_c#include#include#include#includehead.hstruct list_head *postion;void adm_nextmenu()int ch;system(clear);gettime();printf(tttt*n);printf(nntt#n);printf(tt=1.更改学生信息 =n);printf(tt=2.更改老师信息 =n);printf(tt=3.更改自己信息 =n);printf(tt=4.返回主菜单 =n);printf(tt#nn);printf(请输入您选择的代号:);scanf(%d,&ch);switch(ch)case 1:a_updt_stuinfo();break;case 2: a_updt_tecinfo();break;case 3: a_updt_myinfo();break;case 4: printf(按Enter键返回主菜单!n);getchar();getchar();main_menu();break;default:printf(error!n);getchar();getchar();main_menu();/update infovoid a_updt_stuinfo()int ch;system(clear);gettime();printf(tttt*n);printf(nntt#n);printf(tt=1.添加学生信息 =n);printf(tt=2.删除学生信息 =n);printf(tt=3.查找学生信息 =n);printf(tt=4.修改学生信息 =n);printf(tt=5.返回上一级菜单 =n);printf(tt#nn);printf(请输入您选择的代号:);scanf(%d,&ch);switch(ch)case 1: a_add_stuinfo();break;case 2: a_del_info(S_FLAG);break;case 3: a_seek_stuinfo();break;case 4: a_mdify_info(S_FLAG);break;case 5: save(S_FLAG,N);printf(按Enter返回上一级菜单!n);getchar();getchar();adm_nextmenu();break;default:printf(error!n);getchar();getchar();main_menu();/update infovoid a_updt_tecinfo()int ch;system(clear);gettime();printf(tttt*n);printf(nntt#n);printf(tt=1.添加老师信息 =n);printf(tt=2.删除老师信息 =n);printf(tt=3.查找老师信息 =n);printf(tt=4.修改老师信息 =n);printf(tt=5.返回上一级菜单 =n);printf(tt#nn);printf(请输入您选择的代号:);scanf(%d,&ch);switch(ch)case 1: a_add_tecinfo();break;case 2: a_del_info(T_FLAG);break;case 3: a_seek_tecinfo();break;case 4: a_mdify_info(T_FLAG);break;case 5:save(T_FLAG,N);printf(按Enter返回上一级菜单!n);getchar();getchar();adm_nextmenu();break;default:printf(error!n);getchar();getchar();main_menu();/change psword for admvoid a_updt_myinfo()int ch;system(clear);gettime();printf(tttt*n);printf(nntt#n);printf(tt=1. 修改密码 =n);printf(tt= = =n);printf(tt= = =n);printf(tt=2. 返回上一级 =n);printf(tt=3.返回主菜单 =n);printf(tt#nn);printf(请输入您选择的代号:);scanf(%d,&ch);switch(ch)case 1: a_chpsword();gettime();break;case 2: printf(按Enter键返回上一级菜单!n);getchar();getchar();adm_nextmenu();break;case 3:printf(按Enter返回主菜单!n);getchar();getchar();main_menu();break;default:printf(error!n);getchar();getchar();main_menu();void a_add_stuinfo()gettime();STU *stud;int i = 0;int stu_nu = 0; FILE *fp=NULL; int j=0;printf(您要创建多少个学生的信息:n);scanf(%d,&stu_nu);while(iSTU_psword,000);/初始密码为000for(j=0;jsubjecti.SUB_csname),);(stud-subjecti).SUB_csscore=0;(stud-subjecti).SUB_notesi=0.0;printf(输入第%d个学生的信息:n,i+1);printf(学生姓名:n);scanf(%s,stud-STU_name);printf(学号:n);scanf(%d,&stud-STU_id);printf(年龄:n);scanf(%d,&stud-STU_age);printf(年级:n);scanf(%d,&stud-STU_grade);i+;list_add(&(stud-list),&stu);stu_sort();show(S_FLAG);void a_add_tecinfo()gettime();TEC *tech;TEC *point=NULL;int i = 0;int tech_nu = 0;FILE *fp=NULL;printf(您要创建多少个老师的信息:n);scanf(%d,&tech_nu);while(iTCH_psword,000);/初始密码为000printf(输入第%d个老师的信息:n,i+1);printf(姓名:n);scanf(%s,tech-TCH_name);printf(工号:n);scanf(%d,&tech-TCH_id);printf(教师所授科目:n);scanf(%s,&tech-subject0);i+;list_add(&(tech-list),&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论