1、学生选课管理系统全源代码Linux环境/*/*/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
2、); (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);_INL
3、INE_ 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_
4、 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 != li
5、st) 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; po
6、s != (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#define Y y#define N
7、n#define A_FLAG a#define S_FLAG s#define T_FLAG textern struct list_head stu; /extern struct list_head tec; /科目信息 typedef struct subject_info float SUB_notes3; /科目成绩 int SUB_csscore; /科目学分 char SUB_csname32; /科目名称 struct list_head list;SUB;/学生信息typedef struct STU_info float STU_totalscore; /总分 int S
8、TU_id; /学号 int STU_age; /年龄 int STU_grade; /年级 int STU_place; /名次 char STU_name32; /姓名 char STU_psword32; /密码 SUB subject3; struct 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
9、 ADM_info char 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(); /操作老
10、师信息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,cha
11、r 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(in
12、t 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
13、_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* 作
14、者:关仁杰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); print
15、f(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);
16、 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(
17、您的输入有误,请返回上级菜单!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(psw
18、ord.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 info main_menu(); else check(A_FLAG); fclose(fp);/
19、*/*/*/管理员相关函数#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.返回主
20、菜单 =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();
21、/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
22、_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);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1