1、 青 岛 农 业 大 学 本 科 生 课 程 论 文 论 文 题 目 学生成绩管理系统 学生专业班级 通信工程 1001 学生姓名(学号) 李庆坤( 20101794) 指 导 教 师 于爱华 完 成 时 间 2011-09-06 2011 年 9 月 14 日 学生成绩管理系统 摘要 21 世 纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域。为了适应 现代社会人们高度强烈的时间观念,学校信息管理系统软件为学校 的 办公 带来了极大的方便 ,而学生成绩管理系统 更是这些软件中的佼佼者 。 本文详细给出了 学习 成绩 管理系统的设计、功能、
2、程序以及 调试 运行与显示情况。 一、 任务与分析 学习成绩管理系统功能要求:输入记录模块、查询记录模块、更新记录模块、统计记录模块、输出记录模块。 程序中涉及结构体、单链表、文件等方面的知识。 本系统由结构体、数组、函数、文件、指针等组成,通过调用各种函数,利用菜单实现了各项功能。程序将数据储存在 .txt 文件中 ,可以方便的读取与写入。本程序增设密码功能防止被人窃取数据,此外由 信息维护 菜模块 、 信息查询模块、成绩统计模块、成绩排序模块共同组成,分为教师和学生用户共同完成对学习成绩的管理。 其详细流程图如下: 选择用户菜单 教师 学生 信息维护 信息查询 成绩查询 成绩排序 返回主菜
3、单 用户名及密码修改 用户名及密码修改 个人成绩查询 返回主菜单 信息维护菜单下设子菜单:添加学生信息、修改学生信息、删除学生信息、复制账单信息、清空信息记录。 信息查询菜单下设子菜单:查询文件总数、查询所有信息、按姓名查询信息、按学号查询信息。 二、 程序设计 1. 程序介绍 此学习成绩管理系统分为两个用户,即教师用户和学生用户,教师 用户 可以用此程序 完成学生成绩的维护、查询、统计等各项功能 ,而学生用户可以完成对学生本人信息的查询 。程序自动将教师用户信息自动保存在 f1.txt 文件中,将学生用户信息自动保存在 f2.txt 文件中,将学生成绩信息自动保存在 list.txt文件中,
4、数据不随程序的关闭而消失。 2.函数调用 inputchoice() 教师用主菜单 inputchoice_stu() 学生用主菜单 inputchoice1() 教师用信息维护菜单 inputchoice2() 教师用信息查询菜单 Enter() 用户登录 Modify() 密码及用户名修改 getlogcount() 获取文件记录总数 ListAllLog() 读取所有信息 (教师使用) read_name() 按姓名查询信息 (教师使用) read_num() 按学号查询信息 (教师使用) find_stu() 个人信息查询(学生使用) Addnewlog() 添加学生信息 (教师使用)
5、 change() 修改信息 del() 删除信息 (教师使用) copy() 复制账单 (教师使用) delet() 清空账单信息 (教师使用) order() 账单信息排序 (教师使用) sort() 排序关键字选择 (教师使用) census1() 学生信息统计 (教师使用) census() 学生信息统计选择菜单(教师使用) choice_user() 用户类型选择 choice1() 信息维护菜单选择操作(教师使用) choice2() 信息查询菜单选择操作(教师使用) choice() 主菜单选择操作 3.功能 模块 分析 ( 1) 头文件、结构体定义 #include“stdio
6、.h“ #include“stdlib.h“ #include“string.h“ #include“windows.h“ #define M 20 /学生人数 long size,Size; /结构体长度 char ch15; /保存登陆的学生学号 typedef struct LogData char logid10; /记录学号 char name10; /姓名 double Xinhao; /信号 double Modian; /模电 double English; /英语 ListNode; typedef struct node char pass10; /密码 char name
7、10; /用户名 Node; (2)菜单选择模块 以信息维护菜单(教师使用)为例: 通过调用函数 inputchoice1(),在屏幕上显示 void inputchoice1() printf(“ # 信息维护菜单 #n“ “ # 0:退出信息维护 #n“ “ # 1:返回信息维护菜单 #n“ “ # 2:添加学生信息 #n“ “ # 3:修改学生信息 #n“ “ # 4:删除学生信息 #n“ “ # 5:复制账单信息 #n“ “ # 6:清空信息记录 #n“ “ #nn“); 用 switch 选择菜单选项,再调用函数 void choice2(FILE *fp) int choice;
8、while (choice!=0) printf(“ 请选择信息查询所需功能: “); scanf(“%d“, switch(choice) case 1: /返回信息查询菜单 inputchoice2(); break; case 2: /查询文件记录总数 getlogcount(fp);break; case 3: /查询所有信息 ListAllLog(fp); break; case 4: /按姓名查询信息 read_name(fp); break; case 5: /按学号查询 信息 read_num(fp);break; default: printf(“ 输入序号错误或则你选择了退
9、出查询功能,程序将自动返回主菜单选择功能! n“); inputchoice();break; ( 3)用户名及密码模块 此模块有力的保证了系统用户数据的安全性。 用户登录时,密码验证 : printf(“ 请输入用户名: “); scanf(“%s“,a); getchar(); printf(“ 请输入密码: “); scanf(“%s“,b); for(int t=0;t0 fscanf(cfptr,“%s%s%lf%lf%lf“,log.name, if( (strcmp(log.name,a)=0 printf(“ 姓名 学号 信号 模电 英语 n“); printf(“ %10s
10、%10s %3.1lf %3.1lf %3.1lfn“,log.name,log.logid,log.Xinhao,log.Modian,log.English); printf(“ 0.修改所有关键字, ,修改语文 ,修改数学 ,修改英语 “); scanf(“%d“, if(b=1) printf(“ 请输入修改后的信号成绩 :“); scanf(“%lf“, else if(b=2) printf(“ 请输入修改后的模电成绩 :“); scanf(“%lf“, else if(b=3) printf(“ 请输入修改后的英语成绩 :“); scanf(“%lf“, else if(b=0)