班级成绩管理系统 OK
- 格式:doc
- 大小:952.50 KB
- 文档页数:23
1需求分析1.1研究背景教育信息化必将涉及许多具体的技术和机器在教育中的应用,它使得一些人往往以技术论,机器论的观点来认识教育信息化的目的,认为教育信息化就是以机器代替教师讲课,代替教育写板书,就是以电子教材代替印刷教材,就是实现网上学习……,并以代替性、省力性、顺利性、效率性作为评价教育信息化的尺度。
而成绩管理系统将大大的提高老师的管理效率,使得老师可以针对学生的具体情况进行深入教育,培养跨世纪的创新人才,是实现教育的现代化。
教育信息化应以新的教育思想、教育观念指导信息技术在教育的各个部门、各个领域广泛应用,应根据创新人才培养的要求,利用信息技术,探索新的教育模式,促进教育现代化。
只有在这样的基础上指导信息技术的教育应用,才是我们所需要的教育信息化。
也就相应产生了对学生成绩的高效管理。
1.2课题研究的目的及意义现在我国各院高校的学生成绩管理水平普遍不高,有的还停留在纸质基础上,这种管理手段已不能适应时代的发展,因为它浪费了许多的人力和物力。
在当今信息时代这种传统的管理方法必然会被计算机为基础的信息管理系统所代替。
成绩管理系统提供了强大的管理功能,方便管理员对考试成绩等信息的添加、修改、删除、查询、分类等操作。
本系统将提高管理人员的工作效率和工作质量。
如今,计算机网络带动了全球信息化得进程。
在高校中,信息化带来的传统教学、科研模式的变化,需要新的管理机制:以信息技术为手段的校务管理,也需要新的机制,即需要一个数字化的校园(Digital Campus)。
数字校园的建设也是高校信息化的重要组成部分。
成绩管理是学校管理中的异常重要的一个环节,作为学校,除了育人,就是与育知,学生成绩管理的计算机化是整个学校教务管理中的重要一部分,能否实现这一步关系到学校办学整体效率的高低,在于它的重要性,学生成绩管理系统的开发与应用就逐渐提入议程,并占着重要的分量。
运用成绩管理系统可以减轻学院教学人员的工作量,加快查询速度,加强管理,以及国家各部门关于信息化的步伐,是各项管理更加规范化。
学生成绩管理系统我将把我的实现步骤完整的写出来,我是在VC 6.0版本下用MFC实现的。
我创建的基于单文档的应用程序,过程不介绍,大家都会。
下面的是我系统菜单:思路:刚进入系统时,只有“登录”菜单可用,其他三个菜单项都是灰色不可用的。
当用户点“进入系统”菜单项时,用户输入用户名、密码和用户类型,系统将根据相应的用户权限使相应的菜单可用,并且“进入系统”菜单项变为不可用。
如:如果用户类型是学生,那么只有学生权限菜单可用,而“教师权限”和“管理员权限”都不可用,同时“进入系统”变为不可用。
“学生权限”下只有“查询成绩”,因为学生只可以查询自己相应的成绩;“教师权限”下有“查询学生成绩”和“增改删学生成绩”两个菜单项,因为教师除了可以查询学生成绩还可以增加、修改和删除学生成绩;“管理员权限”下有“管理学生”和“管理教师”两个菜单项。
整体设计:因为我们要设置系统菜单的状态,所以必须在CMainFrame中添加相应的函数和代码,具体步骤如下:【步骤1】由于系统要使用ODBC类操作数据库,所以需要在stdafx.h中加入代码:#include <afxdb.h>【步骤2】在CMainFrame中的OnCreat()中添加代码如下,实现菜单的初始化工作,当用户没进入系统之前,只有“登陆”菜单下的“进入系统”菜单项可用,而“退出系统”和其他3个权限菜单都不可用,即都是灰色的。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){//使“退出系统”和其他3个权限菜单都不可用,即都是灰色的GetMenu()->GetSubMenu(0)-> EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);GetMenu()-> EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);GetMenu()-> EnableMenuItem(2,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);GetMenu()-> EnableMenuItem(3,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);}【步骤3】在CMainFrame中添加自己定义的函数void SetMenuSta(int type),此函数在登陆对话框的OnOK()中被调用,即当用户进入系统后使“进入系统”菜单项不可用,并根据用户类型使相应菜单可用。
学生成绩管理系统ER图+流程图+组织结构图-课程设计学生成绩管理系统分析与设计一、系统概述1。
1、现状分析目前在中小学中,学生的成绩管理主要以班级为单位,由各班班主任以表格的形式直接输入电脑中,故就整个学校而言对于学生成绩的管理较为分散,涉及的人员较多且不利于相关的统计工作,学生的成绩信息也得不到长久的保存。
现行系统业务流程图如下:1。
2、系统目标总体目标:实现学校对所有班级、学生的成绩信息进行系统的管理,便于操作,便于查询。
具体目标:1、管理员能够方便地对信息进行添加、编辑、删除、查询等操作。
2、教务人员可以方便地查询所需的成绩信息,并得到相应的统计报表。
3、简化现有系统的流程,使之更加便捷、高效。
1。
3、系统开发方法客户端采用Visual ,后台采用SQL server 2000。
1。
4、开发计划1、初步调查:以询问、查询资料的形式,对学校现行的学生成绩管理方式进行调查,确定现行方式所存在的问题以及相关需求并进行分析。
2、可行性分析:根据初步调查的情况,从技术上、经济上、管理上进行开发的可能性和必要性分析。
3、详细调查:详细了解情况并绘制组织结构图和业务流程图.4、系统的设计:根据对所调查情况的分析,进行系统的各种设计。
二、系统分析2.1、系统需求分析功能需求简述:为了掌握学生的各门课程的成绩情况,将信息保存在一个本地的数据库中,并通过一定的统计功能,实现对全部学生成绩的统计分析,满足教务人员对成绩信息的管理和查询需求,提供一个电子化的成绩管理平台. 系统目标:对于本系统,我们需要实现以下一些基本功能:1、掌握每位学生每一门课程的成绩信息,并记录在数据库中.2、可以按不同的方式对成绩进行管理(1)、按课程,对学习每门课程的每位学生进行添加、删除和修改。
(2)、按学生,对每位学生学习的每门课程的成绩进行添加、删除和修改。
3、可以针对不同的需求,提供相关的报表打印功能. 2。
2、业务流程分析2。
中国地质大学计算机高级语言课程设计报告(QT设计)——学生成绩管理系统班级:191142班学号:姓名:日期:2015年7月2日一课程设计题目与要求(包括题目与系统功能要求)【实习内容】C++语言,面向对象的分析与设计。
然后改成QT语言。
【基本要求】学生成绩管理是高等学校教务管理的重要组成部分,主要包括学生成绩的录入、删除、查找及修改、成绩的统计分析等等。
请设计一个系统实现对学生成绩的管理。
系统要求实现以下功能:(1)增加记录:要求可以连续增加多条记录。
(2)删除一个学生的记录:要求可以先查找,再删除。
删除前,要求用户确认。
(3)成绩修改:若输入错误可进行修改;要求可以先查找,再修改。
(4)查找:可以根据姓名(或学号)查找某个学生的课程成绩,查找某门课程成绩处于指定分数段内的学生名单等等。
(5)统计分析:对某个班级学生的单科成绩进行统计,求出平均成绩;求平均成绩要求实现函数的重载,既能求单科的平均成绩,又能求三科总分的平均成绩。
求出一门课程标准差和合格率;(6)排序功能:要求按总分进行排序(从高到低),若总分相同,则按数学排序;若总分和数学相同,则按物理排序;若总分和各科成绩都相同,则按学号排序;(7)文件操作:可以打开文件,显示班级的所有学生信息;可以将增加或修改后的成绩重新写入文件;可以将排序好的信息写入新的文件。
【较高要求】查找可以实现模糊查询,即输入名字的一部分,可以列出满足条件的所有记录。
再从这个记录中进行二次选择。
二需求分析【问题描述】在编写过程中,主要的困难有:1.模糊搜索(不能使用string中的find函数)需要自定义一个函数。
2.排序,需要自己学习算法。
【系统环境】Qt5.4.1三概要设计【类的设计】:类Student:#ifndef STUDENT_H#define STUDENT_H#include<iostream>#include<vector>#include<fstream>#include<string>#include<iomanip>#include<cmath>using namespace std;class student{private:string m_id,m_name;int m_math,m_eng,m_phy;public:student();student(string,string,int,int,int);//构造函数student(const student&);//复制构造函数~student(){};//析构函数string getId();//自定义接口string getName();int getMath();int getEng();int getPhy();int total();student operator=(const student&);//=号重载};#endif//STUDENT_H#define MANAGEMENT#include"student.h"#include"QString"#include<QFileDialog>#include<QFile>#include<qtextstream.h>class management{private:vector<student>stu;public:vector<student>deletetxt(const string&m);//删除记录vector<student>findtxt(const string&m);//模糊搜索vector<student>findtxt1(int,int,const string&);//分数段搜索vector<student>itxt();//文件写入vector<student>getstu(){return stu;}vector<double>ttxt(vector<double>);//统计分析vector<student>ptxt();//排序void addtxt();//增加记录void changetxt();//成绩修改void otxt();//文件输出void show();//输出};#endif//MANAGEMENT类mainwindow#ifndef MAINWINDOW_H#define MAINWINDOW_H#include<QMainWindow>#include"management.h"namespace Ui{class MainWindow;}class MainWindow:public QMainWindow{Q_OBJECTpublic:explicit MainWindow(QWidget*parent=0);~MainWindow();private slots:void on_pushButton_clicked();void on_ok_clicked();void on_pushButton_2_clicked();void on_ok_2_clicked();void on_ss_clicked();void on_ss_2_clicked();void on_pushButton_3_clicked();void on_pushButton_4_clicked();private:Ui::MainWindow*ui;};#endif//MAINWINDOW_H【主界面设计】:主机面主要以一个do-while循环使得系统能够多次查询。
文献综述学生成绩系统——文献综述作者姓名陈哲(学号295415784 计科系07级03班)一. 引言1.系统名称:学生成绩管理信息系统2.开发目标:开发出一个操作简便,界面友好,灵活实用,安全可靠的学生成绩管理信息系统。
该系统的开发以教务管理人员和任课教师服务为对象,能够提高学校对学生成绩的统计分析效率,减轻教务管理人员对学生成绩管理和统计的负担,提高学校对学生成绩的规范化管理。
该成绩管理系统能够及时对学生成绩进行收集整理,使学校相关部门及时获取可靠的学生成绩信息,便于管理。
3.主要功能:本系统的使用者根据其使用者------教务处管理人员和任课教师-----可分为以下几方面:(1)教务处管理人员登陆后,进入教务人员管理模块,可以进行个人信息查询,教师住处职称工资情况的查询,学生信息查询,成绩查询以及退出系统等操作。
(2)教师登陆教师管理子系统,要能够对学生成绩进行权限范围内的录入、添加、修改、删除、查询;查询教师信息、更改个人登陆密码、修改个人信息等;(3)学生单科成绩、全科成绩的总分、平均分,最高分、最低分,排序等计算和统计实现自动化;可以按班级、按个人进行信息查询;信息可以发布到网络,以实现数据共享;(4)能够自动进行录入错误检查4.开发背景每个学校都需要在学期末进行期末考试成绩的统计分析工作,而这些工作都必须在考试结束后近一个星期的时间内完成。
大量的成绩数据的统计分析工作如果只靠人工来完成,费时费力,还容易出错。
随着计算机技术的飞速发展,计算机在日常管理应用中迅速普及,利用计算机进行学生成绩管理势在必行。
因此需开发出一个能满足学校进行成绩的录入,统计,查询,报表和打印等需求的、功能完善、安全可靠、迅速简便的成绩管理信息系统。
二. 系统目标和开发的可行性1.系统目标:(1)为教务处管理人员提供各学期、各年级、各班级学生的基本成绩信息,以作为其进行成绩汇总,分析和考绩和总结评比的依据。
(2)方便各任课教师记录,统计所带班学生成绩,提高工作效率,减轻负担;总结经验,提高教学质量。
第1章系统需求学生学籍管理系统的域[1]描述如下:在学生学籍管理系统中,要为每个学生建立一个帐户,并给学生发放帐户(帐户可以提供帐户号、帐户初始密码),帐户中存储学生的个人信息。
持有帐户的学生可以登陆系统,能查看和修改本人的个人信息、可查看但是不能修改选课信息、个人成绩。
在登陆时,需要输入自己的账号和密码,系统验证学生是否有效(在系统中存在帐户),若有效,则登陆系统,否则重新输入,超过三次,则不允许再次输入,学生还可以修改自己的密码。
教务人员可以增加新的学生及他们的信息,也可以录入学生的成绩信息。
教务人员也有自己的个人帐户,权限比学生高,可以浏览学生信息,也可以编辑、添加、删除、学生信息。
对上述学生学籍管理系统的域描述进行分析,可以获得如下功能性需求:➢学生持有帐户 (帐户号和密码)。
➢学生可以登陆系统。
➢学生可以查看系统消息内的信息。
➢学生可以查看和修改个人信息,查看个人成绩信息和选课情况。
➢在学期结束时,学生可以选课。
➢教务人员持有账户(帐户号和密码)。
➢教务人员可以登录系统。
➢教务人员可以注册新的学生帐户。
➢教务人员可以修改学生的帐户信息。
➢教务人员可以删除已存在的学生帐户。
➢教务人员可以在系统中添加学生信息。
➢教务人员可以编辑学生信息。
➢教务人员可以删除学生信息。
第2章需求分析采用用例驱动的分析方法分析需求的主要任务是识别出系统中的参与者和用例,并建立用例模型。
2.1 识别参与者通过对系统需求的分析,可以确定系统中有三个参与者:StudentActor(学生)、AdminerActor(教务人员)。
参与者的描述如下:(1)Student描述:学生可以登录,查看系统信息、个人信息,提出意见,修改个人信息,还可以查看学习成绩,选课和取消选课。
示例:持有帐户的任何学生。
(2)Adminer描述:教务人员可以维护系统,可以创建、修改、删除学生的信息,可以添加、编辑、删除学生信息,即维护目录。
示例:教务管理员。
供选择的C或C++语言程序课程设计题目第一类题目应用类题目1:年历显示。
功能要求:(1)输入一个年份,输出是在屏幕上显示该年的日历。
假定输入的年份在1940-2040年之间。
(2)输入年月,输出该月的日历。
(3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。
题目2:小学生测验面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。
功能要求:(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;(5)总成绩90以上显示“SMART”,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN”。
题目3 运动会比赛计分系统要求:初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数各项目名次取法有如下几种:取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:第一名得分5,第二名得分3,第三名得分2;功能要求:(1)系统以菜单方式工作(2)由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。
(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩(4)查看参赛学校信息和比赛项目信息等。
题目4:学生学籍管理系统用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。
功能要求:(1)系统以菜单方式工作。
(2)登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息;(3)删除已知学号的学生信息;(4)查找已知学号的学生信息;(5)按学号,专业输出学生籍贯表。
华东交通大学理工学院课程设计报告书所属课程名称ORACLE数据库题目学生成绩管理系统分院电信分院专业班级计算机科学与技术ﻩ学号学生姓名指导教师2013年1月4 日华东交通大学理工学院课程设计( 论文)任务书专业计算机科学与技术班级姓名一、课程设计(论文)题目学生成绩管理系统二、课程设计(论文)工作:自2012 年12 月31 日起至2013 年 1 月 4 日止。
三、课程设计(论文)的内容要求:1、学生成绩管理系统的设计1.在对数据库理论及知识理解的基础上,针对具体的实际问题,设计合适的数据库表。
2.给出系统的概要设计、详细设计,完成相关的算法描述。
3.设计必要的视图、触发器、存储过程4.完成规范化的课程设计说明书的编写本设计是我和戈振军2个合作完成,我主要负责各个模块的界面设计与源代码的编译,最后测试系统的运行。
戈振军(20090210440123)主要负责各种数据的收集整理,数据库的设计,E-R图的设计与系统框架的搭建。
学生签名:2013 年1 月4日课程设计(论文)评阅意见评阅人职称20 年月日ﻬ目录第一章系统概述ﻩ错误!未定义书签。
1.1系统背景ﻩ错误!未定义书签。
1.2 可行性研究............................................................. 错误!未定义书签。
第二章需求分析................................................................ 错误!未定义书签。
2.1 运行环境:ﻩ错误!未定义书签。
2.2数据需求ﻩ错误!未定义书签。
第三章软件设计................................................................ 错误!未定义书签。
3.1总体设计............................................................. 错误!未定义书签。
学分上传流程
进入课改网点击湖北省新课程学分管理系统进入,选择用户类型“教师”输入用户名、密码、验证码进入子系统:
选择“学科成绩管理”:
选择“模板生成”;
选择授课、学期、模块、班级,最后点击“生成模板”并下载保存到本地机硬盘上(一定要记住该文件的保存路径),然后在下载的excel表中录入学生信息并保存。
最后点“上传成绩”把录入完的学生成绩表上传就OK
等信息
上传完之后点“返回”按钮回到上一级届面,检查校验有没错误信息,若无误再点提交。
简单学生成绩管理系统1.主题说明本任务创建一个模拟的简单学生成绩管理系统,该系统是教务管理系统的一个简单抽象,任务本身并不是着重成绩管理系统的开发,主要目的是使自己掌握PowerBuilder 数据库应用开发的详细过程及开发中涉及知识点与操作技能。
2.需求分析(1)只有教师才能使用本系统,教师权限不受限制;(2)需对系、班级、课程、教师信息维护;(系统初始化时在教师表中存放一条super 记录保证初始时能够进入本系统)(3)学生信息维护;(4)学生课程成绩的录入;(成绩录入以学生为单位,可以录入所有课程成绩)(5)学生名单、学期成绩报表(以班级为单位打印)的建立和打印;3.系统的设计(1)系统的结构设计本系统数据库概念结构设计的E-R 图(实体-关系图)如下:图2.1 数据库结构设计E-R 图(2)系统的界面设计系统通过建立两个窗口完成登录,如图2.2 ,图2.3如下:图2.2第一个窗口界面图2.3第二个窗口界面(3)系统的数据库设计,图如下:表2.1 Dep 系信息表表2.2 Teacher 教师信息表表2.3 Class 班级信息表表2.4 Course 课程信息表表2.5 Teach 教师任教信息表表2.6 Student 学生信息表表2.7 Score 学生成绩表4.系统的代码的实现下面是w_Login 窗口中包含的代码:(1)全局变量的声明:String gs_DepName,gs_UserName //保存系名称和用户名称Integer ii_Times=0(2)给Sle_Name 增加一个键盘输入事件:选择Sle_Name 事件中的“New Event”,显示如图2.8 所示事件输入框;7.8 新增事件输入框在“Event ID”下拉列表中选择“pbm_keydown”,系统自动填写事件参数;在“Event Name”输入框中输入“ue_key”;单击工具栏“”图标按钮,保存新增加的键盘输入事件;同样,给Sle_Pass 增加一个键盘输入事件(3)在窗口的Open 事件中键入如下代码:Close(w_logo) //打开登录窗口同时关闭w_Logo 窗口(4)在Sle_Name 的ue_key 事件键入如下代码:if key=KeyEnter! Then //若键入回车键,则焦点到密码输入框sle_pass.SetFocus()end if(5)在Sle_Pass 的 ue_key 事件键入如下代码:if key=KeyEnter! Then //若键入回车键,则焦点到确认按钮cb_ok.SetFocus()end if(6)在cb_Cancel 的Clicked 中输入如下代码:Close(Parent)(7)在cb_ok 的Clicked 中输入如下代码:String gs_DepName,gs_UserNameInteger ii_Times=0//String li_DidInteger li_Did=-1//从teacher 表中取与输入用户名和密码一致的该用户系代码select Did into :li_Did from Teacher where tName=:sle_name.text and Pass=:sle_pass.text;ii_Times++ //记录登录次数if li_Did=-1 then //不存在相应记录if ii_Times=3 thenMessageBox("警告","您无权使用本系统!",StopSign!)Close(Parent)elseMessageBox("警告","用户名或密码错误,请重试!")sle_name.SetFocus()end ifreturnelse //该用户存在gs_UserName=sle_name.Text //保存用户名并获取对应系名称select dName into :gs_DepName from dep where did=:li_did;open(w_main)end if5.系统的主要模块设计过程与详例(1)系统主窗口一般采用多文档窗口设计,并与相应主菜单相关联,本系统主窗口为w_main,图如下:图2.9主窗口界面在窗口的Open 事件中键入如下代码:Close(w_login) //打开主窗口同时关闭w_登录窗口(3)代码维护窗口包括课程信息和系信息的维护操作,图如下:图2.10窗口运行界面(4)代码如下:<1>定义Instance Variables(实例变量)//idw_which 记录当前标签页中数据窗口控件的引用DataWindow idw_which<2>在窗口的Open 事件中键入如下代码:dw_1.SetTransObject(SQLCA)dw_1.Retrieve()dw_2.SetTransObject(SQLCA)dw_2.Retrieve()<3>在cb_add 的Clicked 事件中键入如下代码:long li_rowli_row=dw_1.InsertRow(0)dw_1.setColumn(1)Send(Handle(this),256,9,0)li_row=dw_2.InsertRow(0)dw_2.setColumn(1)Send(Handle(this),256,9,0)<4>在cb_Delete 的Clicked 事件中键入如下代码:Idw_1.DeleteRow(0)dw_1.setColumn(1)Send(Handle(this),259,9,0)dw_2.DeleteRow(0)dw_2.setColumn(1)Send(Handle(this),259,9,0)<5>在cb_Save 的Clicked 事件中键入如下代码:if dw_1.Update()<0 thenMessagebox("提示信息","存盘失败!"+Sqlca.Sqlerrtext) Rollback;elseCommit;Messagebox("提示信息","存盘成功")end ifif dw_2.Update()<0 thenMessagebox("提示信息","存盘失败!"+Sqlca.Sqlerrtext) Rollback;elseCommit;Messagebox("提示信息","存盘成功")end if<6>在cb_EXit 的Clicked 事件中键入如下代码:Close(Parent)(5)其他模块代码省略6.简要报告设计和实施的过程1. 数据库物理结构设计创建ASA 数据库“shuju”(1)在本地磁盘E,新建一个文件夹,名为计2052_20_励燕(2)启动PowerBuilder,使用数据库画板,创建一个本地ASA 数据库(E:\计2052_20_励燕\shuju.db),其日志主文件名与数据库主文件名相同为shuju,其他选项使用默认值。
课程设计报告课程名称C语言课程设计课题名称班级成绩管理系统专业电气工程及其自动化班级1404学号************姓名李洪坤指导教师黄晓宇欧阳湘江谭小兰2014年12 月20 日湖南工程学院课程设计任务书课程名称C语言课程设计课题班级成绩管理系统专业班级电气工程及其自动化1404学生姓名李洪坤学号201401010421指导老师黄晓宇欧阳湘江谭小兰审批一、设计内容与设计要求1.设计内容:课题一:班级成绩管理系统。
一、问题描述:该系统主要对班级学生的成绩进行管理,包括录入、显示、修改、查询、删除、排序、保存等操作。
二、功能要求:1、本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、若干门课程的成绩。
2、系统功能:a、信息录入:即添加记录。
b、成绩显示:以某种方式显示学生的成绩,如按学号顺序显示、按成绩顺序显示、只显示不及格学生等等多种形式显示。
(要求至少有一种显示方式,不限于已列出的方式)c、信息修改:对已经输入的信息进行修改。
d、信息删除:删除某个学生记录。
e、成绩查询:输入学号或姓名,显示其成绩。
f、信息保存:当添加、修改、删除信息后,应该将其存入文件。
g、退出系统3、系统使用说明:执行一个具体的功能之后,程序将重新显示功能菜单。
系统的功能并不限于上述,可以对其进行扩充完善,如在对信息进行修改和删除时,可以考虑系统的安全性,在执行前若输入正确密码,才可进行操作。
三、进度安排湖南工程学院计算机科学系2014年12月20 日四、测试数据:学生人数>=20,课程门数>=4,学生姓名、学号自拟,课程名自拟,例如数学、语文、英语、政治等。
2.设计要求:1)设计正确,方案合理。
2)界面友好,使用方便。
3)程序精炼,结构清晰。
4)上机演示。
3.设计报告要求:课程设计报告格式如下:1)正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体,行距为22。
2)正文的内容:课题的主要功能、课题的功能模块的划分、主要功能的实现、程序调试、总结、附件(所有程序的源代码,要求对程序写出必要的注释),课程设计报告需5000字左右(不含附件)。
3)课程设计报告装订顺序:封面、任务书、目录、正文、评分、程序清单附件。
设计课题一:班级成绩管理系统一、问题描述:对一个有N个学生的班级,每个学生有M门课程。
该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。
二、功能要求:1、本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。
2、本系统显示这样的菜单:请选择系统功能项:a.成绩录入b.成绩显示c.成绩保存d.成绩排序e.成绩修改(要求先输入密码)f.成绩统计(1)显示每门课程成绩最高的学生的基本信息(2)显示每门课程的平均成绩(3)显示超过某门课程平均成绩的学生人数g.退出系统3、执行一个具体的功能之后,程序将重新显示菜单。
4、将学生成绩保存到文件中。
三、算法提示:1、数据结构:结构体类型数组。
四、测试数据:学生人数N=10课程门数M=4课程名:数学、语文、英语、政治五、其它对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。
目录一: 需求分析: (9)二:概要设计:..................... 错误!未定义书签。
三:程序调试 ...................... 错误!未定义书签。
四.心得体会 (6)一: 需求分析:1.程序的功能学生成绩管理系统有13种功能。
可以把每个功能写成各个子函数,共有13个子函数。
在主函数当中设计一个菜单对这13个子函数进行管理,以便实现对整个系统的操作。
2.输入输出的要求根据课题的要求。
每一个学生的包括姓名(char)、学号(char)、M门课程的成绩(float),.再加上系统功能上的要求每一学生的信息还要总分和名次等。
所以想到要用结构体来定义每一个学生的信息结构。
然后用链表把它们组成一个有序的整体,用对链表的操作来实现对所有学生信息的统一管理(成绩显示、成绩排序、成绩修改等)。
最后为了以后按照处理后的顺序保存到文件中。
3. 题目分析该题主要考察学生对结构体,指针,文件的操作,以及C语言算法的掌握,所以完成此道题目要求较强的设计能力,尤其是要有一种大局观的意识。
如何调程序也非常重要,通过这个程序可以学习到以前调试短程序没有的的经验。
菜单中的每一个选项都对应一个子程序,子程序的算法几乎囊获了所有C语言学过的技巧,下面就各个子程序中的功能进行说明:功能1和4的算法相似,输入一条记录到结构体中去,其中有一部很关键,就是通过gets将所有的多余的字符,回车读去,否则就会出错。
功能2是显示所有的记录,通过循环输出,格式也比较重要。
功能3为按学号排序,因为学号定义成了字符数组的形式,因此在运用冒泡法进行排序的时候,要用到strcmp,strcpy等函数。
功能5为按姓名删除记录,先输入姓名,再一一比较,如果没有则返回失败信息,如果找到就将此记录都向前移一位,返回n-1。
功能6的算法在5中就已经体现了,输入姓名,一一比较。
功能7为新增的功能,因为考虑到原来给出的函数中竟然没有对学生成绩的统计功能,因此新增此功能,可以得出所有的记录个数,最高、最低、平均分,并输出相关的学生信息等。
功能8和9是对文件的操作,提前准备好数据。
二、概要设计注:“→”代表调用Input函数打印链表记录Display函数输入若干条记录menu_select()函数选择菜单Sort_by_num函数显示所有记录Delete_a_record函数按姓名查找,删除一条记录Query_a_record查找并显示一条记录Statistic函数输出统计信息(新增)AddfromText函数从正文中添加数据到结构体数组中Main函数Insert_a_record插入一条记录WritetoText函数将所有数据写入文件中退出程序Reverse(head)函数按学号排序三、程序调试1、进入界面2、输入选项1,回车;按提示输入数据:3、回到主菜单;输入选项7,回车;输入文件名:data.txt,回车;出现成功提示,则读入文件操作成功。
4、回到主菜单,输入2,回车每10个暂停显示数据5、回到主菜单,输入3,回车出现排序成功信息。
6、回到主菜单,输入4,回车按提示插入一组数据7、回到主菜单,输入5,回车按提示输入姓名,删除数据出现删除成功的信息8、回到主菜单,输入6,回车输入姓名进行查询9、回到主菜单,输入7,回车出现统计信息10、回到主菜单,输入9,回车输入result.txt,回车出现成功写入文件的信息11、回到主菜单,输入0,回车退出系统四.心得体会通过半学期的C语言程序设计的学习,使自己对计算机方面的认识,如果用文学词汇说,那就使从感性认识上升到了理性认识。
以前,我只知道计算机用途很广,但不知道它为什么能这样作,通过学习才知道这是程序在指挥着计算机的运作。
刚接触到这门课程,我由于底子差,感觉到了它的难度,但通过渐渐的学习,我认识到了它的重要性,更认识到这是一种能力的培养,我下定决心要把它学好。
经过几次的上机操作,看到自己设计的程序能运行出正确的结果,我对C语言产生了兴趣。
刚拿到课程设计时,心里十分的没底,不知道该如何下手,怕自己完成不了任务。
原因便是自己没把知识真正学到手,不敢找出自己的问题并解决它,不知道到底学了些什么,更别说问出什么问题。
但学习就是要不断的发现问题,才能不断的解决问题,不然不会有什么成效,更谈不上进步啦。
实际上,问题是最好的老师,是学生学习的引导没有问题便没有深入。
在C程序设计过程中,我们就是在问题解决中学习,即提出问题,老师也留了大量的时间给我们思考、讨论、解决问题,从而更深入地展开学习。
这样就充分的调动了我们学习的积极性和主动性。
这次实验课题,老师给了我们大量的时间让我们准备,让我们自己发现问题,并通过自己最大的努力解决问题。
在准备的过程中,我们查阅书籍,请教同学,其实就是一个对知识进行运用的过程,也是自己发现问题并解决问题的最好体现。
C语言课程设计不仅能提高教学质量、增强教学效果、而且能培养和提高我们分析问题、解决问题能力和创新能力。
老师在给我们定制的任务书中中,围绕我们的所学的书本的基本知识点引导引导我们思考和探索,是我们的思想活跃起来。
经过自己的努力,问题一个接一个的被我解决了,课程知识也逐渐在自己脑海里形成了一体系,使自己读课程知识有了一次全面的认识。
老师教给学生正确的学习方法,给我们这么好的机会,让我们掌握程C语言的的思想精髓在这次的实践过程中我独立的思考着这些问题,自己试着设计着这些比较有趣的课题,把课堂上学的for,Switch和while语句还有结构体的使用和指针的用法与作用都有了进一步的认识。
这次课题中,遇到的最大问题便是文件的使用。
在自己的程序中由于没有建立文件,使得删除功能和查找功能不能实现。
但在老师的引导下,我发现了问题,在老师的帮助下我建立了文件,成功的运行了删除功能和查找功能。
还有就是密码的设置,自己设置的密码不能运行,但在自己查阅书籍后,引用了一个比较函数,便能实行了。
通过这次课程设计,使我认识到,课本上的知识只是给自己对知识的理论认识,要真正掌握知识,必须得通过实践操作。
自己对知识的不熟悉,使得自己不敢去发现自己的问题,由于怕困难,使得自己不敢去解决问题,最终使得自己不能完成任务,这不是自己没能力完成,而是自己能完成却没去完成。
通过这次课题,我对课程的认识加深了,使自己对课程有了一个整体的把握,也提高了自己发现问题,分析问题,解决问题的能力,更对程序设计产生了更大的兴趣。
这次课题的设计不仅是知识能力的体现,而且也反映了一个人的做事态度。
要勇于发现问题,不逃避问题;面对困难要勇于克服,而不是遇难而退;遇到麻烦要冷静思考,不要心烦气躁,那只能失败。
附1 源代码源程序清单:#include<stdio.h> /*引用库函数*/#include<stdlib.h>#include<ctype.h>#include<string.h>typedef struct /*定义结构体数组*/{char num[10]; /*学号*/char name[20]; /*姓名*/int score; /*成绩*/}Student;Student stu[80]; /*结构体数组变量*/int menu_select() /*菜单函数*/{char c;do{system("cls"); /*运行前清屏*/printf("\t\t****Students' Grade Management System****\n"); /*菜单选择*/printf("\t\t | 1. Input Records |\n");printf("\t\t | 2. Display All Records |\n");printf("\t\t | 3. Sort |\n");printf("\t\t | 4. Insert a Record |\n");printf("\t\t | 5. Delete a Record |\n");printf("\t\t | 6. Query |\n");printf("\t\t | 7. Statistic |\n");printf("\t\t | 8. Add Records from a Text File|\n");printf("\t\t | 9. Write to a Text file |\n");printf("\t\t | 0. Quit |\n");printf("\t\t*****************************************\n");printf("\t\t\tGive your Choice(0-9):");c=getchar(); /*读入选择*/}while(c<'0'||c>'9');return(c-'0'); /*返回选择*/}int Input(Student stud[],int n) /*输入若干条记录*/{int i=0;char sign,x[10]; /*x[10]为清除多余的数据所用*/while(sign!='n'&&sign!='N') /*判断*/{printf("\t\t\tstudent's num:"); /*交互输入*/scanf("\t\t\t%s",stud[n+i].num);printf("\t\t\tstudent's name:");scanf("\t\t\t%s",stud[n+i].name);printf("\t\t\tstudent's score:");scanf("\t\t\t%d",&stud[n+i].score);gets(x); /*清除多余的输入*/printf("\t\t\tany more records?(Y/N)");scanf("\t\t\t%c",&sign); /*输入判断*/i++;}return(n+i);}void Display(Student stud[],int n) /*显示所有记录*/{int i;printf("\t\t\t-----------------------------------\n"); /*格式头*/printf("\t\t\tnumber name score\n");printf("\t\t\t-----------------------------------\n");for(i=1;i<n+1;i++) /*循环输入*/{printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);if(i>1&&i%10==0) /*每十个暂停*/{printf("\t\t\t-----------------------------------\n"); /*格式*/printf("\t\t\t");system("pause");printf("\t\t\t-----------------------------------\n");}}printf("\t\t\t");system("pause");}void Sort_by_num(Student stud[],int n) /*按学号排序*/{int i,j,*p,*q,s;char t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(strcmp(stud[j].num,stud[j+1].num)>0){strcpy(t,stud[j+1].num);strcpy(stud[j+1].num,stud[j].num);strcpy(stud[j].num,t);strcpy(t,stud[j+1].name);strcpy(stud[j+1].name,stud[j].name);strcpy(stud[j].name,t);p=&stud[j+1].score;q=&stud[j].score;s=*p;*p=*q;*q=s;}}int Insert_a_record(Student stud[],int n) /*插入一条记录*/{char x[10]; /*清除多余输入所用*/printf("\t\t\tstudent's num:"); /*交互式输入*/scanf("\t\t\t%s",stud[n].num);printf("\t\t\tstudent's name:");scanf("\t\t\t%s",stud[n].name);printf("\t\t\tstudent's score:");scanf("\t\t\t%d",&stud[n].score);gets(x);n++;Sort_by_num(stud,n); /*调用排序函数*/printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/return(n);}int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/ {char s[20];int i=0,j;printf("\t\t\ttell me his(her) name:"); /*交互式问寻*/scanf("%s",s);while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/if(i==n){printf("\t\t\tnot find!\n"); /*返回失败信息*/return(n);}for(j=i;j<n-1;j++) /*删除操作*/{strcpy(stud[j].num,stud[j+1].num);strcpy(stud[j].name,stud[j+1].name);stud[j].score=stud[j+1].score;}printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/return(n-1);}void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/ {char s[20];int i=0;printf("\t\t\tinput his(her) name:"); /*交互式输入*/scanf("\t\t\t%s",s);while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/if(i==n){printf("\t\t\tnot find!\n"); /*输入失败信息*/return;}printf("\t\t\this(her) number:%s\n",stud[i].num); /*输出该学生信息*/ printf("\t\t\this(her) score:%d\n",stud[i].score);}void Statistic(Student stud[],int n) /*新增功能,输出统计信息*/{int i,j=0,k=0,sum=0;float aver; /*成绩平均值*/for(i=0;i<n;i++) /*循环输入判断*/{sum+=stud[i].score;if(stud[j].score>stud[i].score) j=i;if(stud[k].score<stud[i].score) k=i;}aver=1.0*sum/n;printf("\t\t\tthere are %d records.\n",n); /*总共记录数*/printf("\t\t\tthe hignest score:\n"); /*最高分*/printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);printf("\t\t\tthe lowest score:\n"); /*最低分*/printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/}int AddfromText(Student stud[],int n) /*从文件中读入数据*/{int i=0,num;FILE *fp; /*定义文件指针*/char filename[20]; /*定义文件名*/printf("\t\t\tInput the filename:");scanf("\t\t\t%s",filename); /*输入文件名*/if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/{printf("\t\t\tcann't open the file\n"); /*打开失败信息*/printf("\t\t\t");system("pause");return(n);}fscanf(fp,"%d",&num); /*读入总记录量*/while(i<num) /*循环读入数据*/{fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);i++;}n+=num;fclose(fp); /*关闭文件*/printf("\t\t\tSuccessed!\n");printf("\t\t\t");system("pause");return(n);}void WritetoText(Student stud[],int n) /*将所有记录写入文件*/{int i=0;FILE *fp; /*定义文件指针*/char filename[20]; /*定义文件名*/printf("\t\t\tWrite Records to a Text File\n"); /*输入文件名*/printf("\t\t\tInput the filename:");scanf("\t\t\t%s",filename);if((fp=fopen(filename,"w"))==NULL) /*打开文件*/{printf("\t\t\tcann't open the file\n");system("pause");return;}fprintf(fp,"%d\n",n); /*循环写入数据*/while(i<n){fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);i++;}fclose(fp); /*关闭文件*/printf("Successed!\n"); /*返回成功信息*/}void main() /*主函数*/{int n=0;for(;;){switch(menu_select()) /*选择判断*/{case 1:printf("\t\t\tInput Records\n"); /*输入若干条记录*/n=Input(stu,n);break;case 2:printf("\t\t\tDisplay All Records\n"); /*显示所有记录*/Display(stu,n); break;case 3:printf("\t\t\tSort\n");Sort_by_num(stu,n); /*按学号排序*/printf("\t\t\tSort Suceessed!\n");printf("\t\t\t");system("pause");break;case 4:printf("\t\t\tInsert a Record\n");n=Insert_a_record(stu,n); /*插入一条记录*/printf("\t\t\t");system("pause");break;case 5:printf("\t\t\tDelete a Record\n");n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/printf("\t\t\t");system("pause");break;case 6:printf("\t\t\tQuery\n");Query_a_record(stu,n); /*查找并显示一个记录*/printf("\t\t\t");system("pause");break;case 7:printf("\t\t\tStatistic\n");Statistic(stu,n); /*新增功能,输出统计信息*/printf("\t\t\t");system("pause");break;case 8:printf("\t\t\tAdd Records from a Text File\n");n=AddfromText(stu,n); /*新增功能,输出统计信息*/break;case 9:printf("\t\t\tWrite to a Text file\n");WritetoText(stu,n); /*循环写入数据*/printf("\t\t\t");system("pause");break;case 0:printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*结束程序*/printf("\t\t\t");system("pause");exit(0);}}}计算机科学与技术系课程设计评分表课程名称:C语言程序设计教师签名:日期:2014.12.20。