学生成绩管理系统(1)
学生成绩管理系统论文1
摘要本系统依据开发要求主要应用于教育系统,完成对日常的教育工作中学生成绩档案的数字化管理。
开发本系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化。
目前,学校工作繁杂、资料重多,虽然各类管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,目前还没有一套完整的、统一的系统。
因此,开发一套适和大众的、兼容性好的系统是很有必要的。
本系统在开发过程中,注意使其符合操作的业务流程,并力求系统的全面性、通用性,使得本系统不只适用于一家教育机构。
在开发方法的选择上,选择了生命周期法与原型法相结合的方法,遵循系统调查研究、系统分析、系统设计和系统实施四个主要阶段进行设计,而在具体的设计上,采取了演化式原型法,随着用户的使用及对系统了解的不断加深,对某一部分或几部分进行重新分析、设计、实施。
本论文主要从系统分析、系统设计、系统实施与使用等几个方面进行介绍。
学生信息管理系统是典型的信息管理系统,经过分析,我们使用MICROSOFT公司的VISUAL BASIC开发工具,利用其提供的各种面向对象的开发工具,尤其首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。
本系统主要用于学生成绩管理,总体任务是实现学生成绩信息的系统化、规范化和自动化。
其主要任务是用计算机对学生各科成绩进行管理,如修改、增加、删除,另外还考虑到学生名次的排序等,针对这些要求设计了学生成绩管理系统。
【关键词】成绩管理信息系统信息化数据库第一章绪论本次论文是以学校学生管理信息系统建设中的成绩管理系统的开发为背景,论述了管理信息系统的概念、结构及系统开发的基本原理和方法,全文共分为绪论、系统分析、概要设计、详细设计、开发总结、致谢、参考文献、附录等。
1.1 问题的提出随着计算机技术的发展,特别是计算机网络技术与数据库技术的发展,使用人们的生活与工作方式发生了很大的改观。
学生学分制成绩管理系统[1]
学生学分制成绩管理系统摘要:系统基于B/S模式,并利用IIS+ASP技术+Access数据库+SQL查询语言实现的。
重点介绍了学生学分制成绩管理系统的实现过程:包括系统分析、系统调查、功能设计、数据库设计、系统实现以及系统测试和调试等。
系统包括用户管理、院系管理、专业管理、班级管理、学藉及成绩管理、学位成绩查询、留级学生成绩分数线管理、学分绩点等级管理和毕业总学分管理等功能。
关键词:ADO;ASP;数据库;用户管理目录摘要ⅠAbstract Ⅱ1 前言11.1 课题背景11.2 设计思想12 相关的技术知识22.1 运行环境22.2 开发工具22.3 ASP编程技术22.4 数据库概述33 系统总体设计43.1 功能要求43.2 系统设计流程43.2.1 问题定义43.2.2 可行性研究43.2.3 需求分析43.2.4 总体设计43.2.5 详细设计53.2.6 程序编码53.2.7 成绩管理系统综合测试5 3.2.8 成绩管理系统的维护5 3.3 详细设计与总体规划6 3.4 功能模块设计63.5 系统功能概述74 数据库的设计94.1 数据库的结构94.1.1 管理员数据库94.1.2 院系数据库104.1.3 专业数据库104.1.4 班级数据库114.1.5 课程数据库114.1.6 学生管理数据库124.1.7 学生查询数据库124.1.8 成绩管理数据库134.1.9 成绩查询数据库134.1.10 学分绩点数据库144.2 数据库的连接155 具体设计与实现175.1 查询模块175.2 登录模块175.2.1 登录界面设计175.2.2 登录程序设计175.3 菜单模块185.3.1 院系管理模块及其实现195.3.2 学生管理模块及其实现20A. 学生留级管理20B. 学生转专业管理206 总结21致谢22参考文献231前言1.1课题背景学生学分制成绩管理系统是一个教育单位不可缺少的部分。
学生成绩管理系统(详细操作过程)
学生成绩管理系统我将把我的实现步骤完整的写出来,我是在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()中被调用,即当用户进入系统后使“进入系统”菜单项不可用,并根据用户类型使相应菜单可用。
学生成绩管理系统(1)
题目:学生成绩管理系统(1)一、课程设计时间20010~11第2学期第15周,共计1周,20学时。
二、课程设计内容用C语言编写软件完成以下任务:1录入学生数据信息(不用考虑学期),学生信息至少包括姓名、学号、数学成绩三方面,学生信息应及时保存在文件中;2根据学号查询某生成绩;3插入新的学生数据信息。
4统计分析:要求能够将成绩排序,并统计及格人数及及格率。
三、课程设计要求:1. 程序质量:●贯彻结构化程序设计思想。
●用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
●用户界面中的菜单至少应包括“录入学生信息”、“查询某学生成绩”、“插入新生信息”、“统计分析”、“退出”5项。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字指导教师:________ 学生签名:________五、成绩六、教师评语目录一、需求分析 (1)二、设计分析 (2)三、主要界面截图 (3)四、技术要点 (17)五、个人总结 (20)六、参考文献 (20)七、源程序 (21)一、需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。
该系统是一个较典型的数据管理系统,其使用者被假定为某办公室的学生成绩管理人员,系统应该具有安全、稳定、功能齐全的特点。
1. 安全性分析系统管理的数据涉及到学院的所有同学,数据量较大且是一种基础性数据,能够为其它方面的学生管理工作提供重要参考,所以要通过设置密码等手段确保数据不能被随意的删减和修改。
2. 稳定性分析指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。
3. 主要功能分析(1)数据录入:允许用户输入学号、姓名、数学成绩。
对用户由于疏忽录入的非法数据,能够及时提示并更正。
学生成绩管理系统
目录1 需求分析 (1)1.1行业现状 (1)1.2可行性分析 (2)1.3 系统运行环境 (3)2 系统设计 (4)2.1 E-R图 (4)2.2 数据字典 (6)3 代码 (9)总结 (10)参考文献 (11)1 需求分析该学生成绩管理系统,实现简单的密码修改、成绩查询、课程查询、学生查询等操作,并能实现简单的数据统计。
此系统主要完成用户密码登陆、用户密码的修改、成绩查询、课程查询、学生查询、具体成绩查询等基本功能。
(一)用户密码登录:在登录程序之前会先弹出一个登录对话框,在正确的输入了数据库中存储的用户和密码后才能登录程序。
(二)用户密码的修改在成功登录了程序之后用户可以根据自己的需要修改当前密码。
(三)成绩查询1.成绩修改前选中要修改的成绩信息,然后进行修改。
2.成绩添加直接弹出添加对话框,然后进行添加。
3.成绩删除前选中要删除的成绩信息,然后直接删除。
(四) 课程查询1.课程修改实现对课程名、学时、学分的修改。
2.课程添加对一门新开设的课程进行录入,并存入数据库。
3.课程删除对一门不再开设的课程进行删除,并从数据库中删除。
(五)学生查询1 .学生信息修改修改选中当前学生的信息。
2 .学生信息添加增加新学生的信息。
3.学生信息删除删除选中当前学生信息。
1.1 行业现状在现代,高科技的飞跃发展,计算机的大量普及,使得人们生活节奏越来越快。
因此对教育行业的多元信息进行有效的管理工作,也成为教育行业中的重中之重。
目前,学校工作繁杂、资料重多,虽然各类管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,目前还没有一套完整的、统一的系统。
为各高校教务工作人员减轻负,提高工作效率,所以制作了学生成绩管理系统。
学生成绩管理系统依据开发要求主要应用于教育系统,完成对日常的教育工作中学生成绩档案的数字化管理。
比较系统地对教务、教学上的各项服务和信息进行管理,使数据管理更现代化、自动化、智能化、人性化。
学生成绩管理系统设计报告
附录一应用程序综合设计汇报——题目: 学生成绩管理系统2023年1月1.需求分析学生成绩管理系统是学生管理系统旳重要构成部分, 对学生旳德、智、体全面评估有很大旳作用, 因此学生成绩管理系统应当可认为顾客提供以便旳查询平台和数据存储功能。
老式是使用人工旳方式对学生旳信息进行存储, 对于个人旳学生成绩来说, 数据旳整顿和分析就显得很麻烦, 不利于查找、更新和维护。
因此, 顾客但愿制作一种学生成绩管理系统, 来提高老师旳工作效率, 同步予以老师便利。
根据与顾客旳交流, 一般对学生成绩管理系统有如下几点旳规定:A.可认为顾客提供以便旳数据查询功能, 满足复杂、多样旳数据查询需求。
一般我们所需要旳数据都不是可以从原始数据库中直接读取旳, 往往需要一定旳加工, 这样才能使老式复杂旳人工操作变得简朴又精确。
B、成绩管理要可以提供学校考试安排旳管理, 学生考试成绩旳管理, 以及学生单科和总成绩旳记录和分析等功能。
这些是一种学生成绩管理系统最重要旳功能构成, 包括数据旳集成、整合和分析。
上述是顾客对系统需求和功能需求旳两点规定, 我根据顾客对功能旳需求, 将整个学生成绩管理系统提成两个大旳模块, 即基本信息设置模块和成绩管理模块(如图1)。
为了能使本系统可以基本独立, 通过度析, 我又添加了学生基本信息添加功能和班级基本信息添加功能, 这样系统就可以实现本系统旳全面界面化。
2.概要设计根据需求分析, 成绩管理系统重要是实现对考试和学生成绩旳管理功能, 我设计旳整个学生成绩管理系统分为两个大旳模块, 分别为基本信息设置模块和成绩管理模块, 这两个模块包括了成绩管理系统旳所有数据存储和功能需求, 为了愈加清晰了分解学生成绩管理系统, 每个大模块又由几种子功能模块构成, 完毕顾客旳需求。
两个大模块旳子模块详细划分如图2所示:基本信息设置是成绩管理系统中某些基本数据旳添加和修改, 为了可以实现本学生成绩管理系统旳独立性, 我在基本信息设置模块中添加了学生和班级信息添加模块, 以便顾客能直接添加新增旳数据, 而不需要通过程序员来完毕。
学生成绩管理系统
“学生学习成绩管理系统”用于对学生学习成绩数据文件的新文件创建和老文件管理,并可以进行密码设置。
具体要求实现的功能如下:1、输入/添加记录:将每一个学生的学号、姓名和各科学习成绩作为一个记录进行输入或添加。
要求经过密码验证后能建立一个新的数据文件或给已建立好的数据文件增加记录。
2、显示、查询记录:能按学生姓名(或学号)显示、查询一个或多个学生的各门(或某门)功课的成绩和平均成绩。
3、修改记录:可以对数据文件中的任意记录的数据进行修改,在修改前后对该记录的内容进行显示,并设确认提示。
(要求设置密码,验证通过后方可进入修改环节)4、删除记录:可以删除数据文件中的任一记录,包括逻辑删除(具有恢复功能)和物理删除(不可恢复)。
(说明:该功能也应设置为经过验证密码后才可实施删除)5、成绩排序:采用不同的排序方法对单科成绩和总(或平均)成绩进行排序,但不能改变原记录的顺序。
6、统计功能:(A)计算各门课程全班总成绩及平均成绩;(B)统计各门课程得分为100、90~99、80~89、70~79、60~69和不及格学生的人数,以及与全班总人数的百分比。
7、其他:该软件应具有系统名称、设计单位或个人等基本信息。
学生成绩管理系统源程序清单:#include<stdio.h>#include<string.h>#include<malloc.h>#include<conio.h>#define NULL 0#define LEN sizeof(student)#define N 5typedef struct stu{int flag;long num;char name[10];int score[N];struct stu *next;}student;void edit();/*编辑菜单*/void search(student *head); /*查找函数*/student *search_number(student *head,long number); /*按学号查找*/ void search_name(student *head); /*按姓名查找*/student *search_score(student *head,int min,int max,int i); /*按成绩查找*/void enter_record(student *p); /*输入成绩*/student *creat(void); /*建立链表*/student * insert(student *head); /*插入结点*/void count(int *p); /*计算总成绩及平均成绩*/void print(student *p); /*输出结点*/void print_title();/*输出标题*/student *delete(student *head); /*删除结点*/void recover(student *head); /*恢复删除*/void revise(student *head); /*修改记录*/void tongji(student *head); /*统计*/void paixu(student *head,int m); /*排序*/int cipher_check();/*密码检测*/void set_up_cipher();/*设立密码*/student *load();/*载入*/void save(student *head); /*保存*/void about();/*关于*/int n;char cipher[11]={""};/*字符串,保存密码*/main(){char c;student *head=NULL;system("cls");about();for(;;){system("cls");printf("************************************************************ *******************\n");printf("\t\t Welcome to\n");printf("\n\t\t The student score manage system\n");printf("*************************************MENU******************* *******************\n");printf("\t\t\t1. Creat the record\n");printf("\t\t\t2. Load the file\n");printf("\t\t\t3. Edit the record\n");printf("\t\t\t4. About design\n");printf("\t\t\t5. Quit\n");printf("************************************************************ ********************\n");printf("\n\t\t\tEnter your choice(1~5):");for(;;){c=getchar();if(c=='\n') continue;else if(c<'1'||c>'5') printf("\t\t\tEnter your choice(1~5):"); else break;}getchar();switch (c){case '1':head=creat();if(head==NULL){printf("Empty record!\n\nEnter any key to continue...\n"); getch();break;}set_up_cipher();printf("Enter any key to edit menu...");getch();edit(head);break;case '2':head=load();if(head==NULL){printf("\nEnter any key to continue...");getch();break;}printf("Enter any key to edit menu...");getch();edit(head);break;case '3':edit(head);break;case '4':about();break;case '5':exit(0);}}}void edit(student *head)/*编辑菜单*/{char c,m;int i,f=0;for(;;){system("cls");printf("***********************************EDIT*MENU**************** ********************\n");printf("\t\t\t1.Save the record.\n");printf("\t\t\t2.Insert a record.\n");printf("\t\t\t3.Delete a record.\n");printf("\t\t\t4.Recover the record.\n");printf("\t\t\t5.Revise the record.\n");printf("\t\t\t6.Search records.\n");printf("\t\t\t7.Sort the records.\n");printf("\t\t\t8.Tongji the records.\n");printf("\t\t\t9.Change the password.\n");printf("\t\t\t0.Return to main menu.\n");printf("************************************************************ ********************\n");printf("\t\t\tEnter your choice(0~9):");for(;;){c=getchar();if(c=='\n') continue;else if(c<'0'||c>'9') printf("\t\t\tEnter your choice(0~9):"); else break;}switch (c){case '1':save(head);f=0;break;case '2':printf("Please enter the right password:\n");if(cipher_check()==0){printf("Wrong password!\n"); break;}head=insert(head);f=1;break;case '3':printf("Please enter the right password:\n");if(cipher_check()==0){printf("Wrong password!\n"); break;}head=delete(head);f=1;break;case '4':printf("Please enter the right password:\n");if(cipher_check()==0){printf("Wrong password!\n"); break;}recover(head);f=1;break;case '5':printf("Please enter the right password:\n");if(cipher_check()==0){printf("Wrong password!\n"); break;}revise(head);f=1;break;case '6':search(head);break;case '7':printf("Sort on which subject?\n");printf("score1(1)/score2(2)/score3(3)/sum(4)\n");for(;;){scanf("%c",&m);if(m=='\n') ;else if(m>='1'&&m<='4') break;else printf("error!enter again:");}i=m-'0'-1;paixu(head,i);break;case '8':tongji(head);break;case '9':printf("Please enter the old password:\n");if(cipher_check()) {set_up_cipher();f=1;}else printf("Wrong password!\n");break;case '0':if(f==1){char c;printf("This record has already been revised.\nSave the record or not? ");for(;;){c=getchar();if(c=='\n') continue;else if(c=='y'||c=='Y') {save(head);break;}else if(c=='n'||c=='N') break;else printf("error!enter again:");}}return;}printf("\nenter any key to return...");getch();}}student *creat(void) /*建立链表*/{student *head,*p1,*p2;n=0;p1=(student *)malloc(LEN);p2=NULL;printf("please enter number");printf("(enter 0 to end):\n");scanf("%ld",&p1->num);head=NULL;while(p1->num!=0){n++;enter_record(p1);if(n==1) head=p1;else p2->next=p1;p2=p1;p1=(student *)malloc(LEN);printf("Please enter next number(0 to end):\n");scanf("%ld",&p1->num);}if(n!=0)p2->next=NULL;free(p1);return head;}student * insert(student *head) /*插入结点*/{student *p1,*p2,*new_node;for(;;){new_node=(student *)malloc(LEN);if(new_node==NULL){printf("Database is full,can't add more record.\n");return NULL;}printf("\nPlease enter the number you want to insert\n(enter 0 to end):");scanf("%ld",&new_node->num);if(new_node->num==0) {break;}for(p1=head,p2=NULL;p1!=NULL&&(new_node->num)>(p1->num);p2=p1,p1=p1->next);if(p1!=NULL&&(p1->num)==(new_node->num)&&p1->flag==1){char c;printf("This number already exists:\n");print_title();print(p1);printf("Cover or not?(y/n)?");for(;;){c=getchar();if(c=='n'||c=='N'){free(new_node);break;}else if(c=='y'||c=='Y'){free(new_node);enter_record(p1);break;}else if(c!='\n')printf("Error!enter again:");else continue;}}else if(p1!=NULL&&(p1->num)==(new_node->num)){n++;free(new_node);enter_record(p1);}else{n++;enter_record(new_node);new_node->next=p1;if(p2==NULL)head=new_node;elsep2->next=new_node;}}return head;}student *delete(student *head) /*删除结点*/{long number;char c;student *p1,*p2;for(;;){printf("Please enter the number you want to delete(enter 0 to end):\n");scanf("%ld",&number);if(!number) break;for(p1=head,p2=NULL;p1!=NULL&&p1->num!=number;p2=p1,p1=p1->next);if(p1==NULL||p1->flag==0){printf("this number doesn't exist.\n");}else{print_title();print(p1);printf("delete this record?\n");printf("sure(s)/cancle(c)/delete thoroughly(t)\n");for(;;){c=getchar();if(c=='c'||c=='C') break;else if(c=='s'||c=='S'||c=='t'||c=='T'){n--;if(c=='s'||c=='S')p1->flag=0;else{if(p2==NULL) head=p1->next;else p2->next=p1->next;free(p1);}break;}else if(c!='\n')printf("error!enter again:");}}}return head;}void recover(student *head) /*恢复删除*/{student *p;long number;printf("recover which number?\n");scanf("%ld",&number);if(number==0) return;p=search_number(head,number);if(p==NULL) printf("Can't recover this number!\n");else if(p->flag==1) printf("This number has not been deleted.\n"); else {n++;p->flag=1;printf("Recover success!\n");}}void revise(student *head) /*修改记录*/{char c;long number;student *p1;for(;;){printf("Which number do you want to revise?\n(enter 0 to end):"); scanf("%ld",&number);if(number==0) return;p1=search_number(head,number);if(p1==NULL||p1->flag==0) {printf("this number doesn'texist.\n");continue;}print_title();print(p1);printf("Do you want to revise the record?(y/n)\n");for(;;){c=getchar();if(c=='\n') continue;else if(c=='n'||c=='N') break;else if(c=='y'||c=='Y'){printf("please enter new record:\n");enter_record(p1);printf("the new record is:\n");print_title();print(p1);break;}else printf("error,enter again:");}}}void search(student *head) /*查找函数*/{char c;int i,min,max;long number;student *p;printf("Please enter search conditions:\n");printf("all(a)/number(n)/name(m)/score(s)/return(r)\n");for(;;){c=getchar();if(c=='\n') continue;else if(c=='s'){printf("Which couse do you want to search?\n");printf("score1(1)/score2(2)/score3(3)/total(4)/average(5)");for(;;){c=getchar();if(c=='\n') continue;else if(c>'0'&&c<'6') {i=c-'0'-1;break;}else printf("Error,enter again:");}printf("please enter min and max score(min-max):");scanf("%d-%d",&min,&max);p=search_score(head,min,max,i);if(p==NULL)printf("No record\n");else{ print_title();for(;p!=NULL;p=search_score(p->next,min,max,i))print(p);}}else switch(c){case 'a':print_title();for(p=head;p!=NULL;p=p->next)if(p->flag==1) print(p);break;case 'n':printf("What number do you want to search?\n");scanf("%ld",&number);p=search_number(head,number);if(p==NULL||p->flag==0) printf("This number doesn't exist!\n"); else{print_title();print(p);}break;case 'm':search_name(head);break;case 'r': return;default :printf("this condition doesn't exist,Pleaseenter again:\n");printf("all(a)/number(n)/name(m)/score(s)/return(r)\n");continue;}printf("Please enter search conditions:\n");printf("all(a)/number(n)/name(m)/score(s)/return(r)\n");}}student *search_number(student *head,long number) /*按学号查找*/ {student * p;for(p=head;p!=NULL&&p->num!=number;p=p->next);return p;}void search_name(student *head) /*按姓名查找*/{student *p1;char *p,str[10];p=str;printf("please enter the name you want to search:\n");scanf("%s",p);for(p1=head;p1!=NULL;p1=p1->next){if(p1->flag==0) continue;if(strcmp(p,p1->name)==0) break;}if(p1==NULL) printf("this people doesn't exist.\n");else{print_title();for(;p1!=NULL;p1=p1->next)if(strcmp(p,p1->name)==0&&p1->flag==1)print(p1);}}student *search_score(student *head,int min,int max,int i) /*按成绩查找*/{student *p1;for(p1=head;p1!=NULL;p1=p1->next)if(p1->flag==1&&p1->score[i]>=min&&p1->score[i]<=max) break;return p1;}void paixu(student *head,int m)/*排序*/{long *number,t;int i,j,k,max;student *p;number=calloc(n,sizeof(long));i=0;for(p=head;p!=NULL;p=p->next){if(p->flag==0) continue;number[i]=p->num;i++;}for(i=0;i<n-1;i++){k=i;max=search_number(head,number[i])->score[m];for(j=i+1;j<n;j++){p=search_number(head,number[j]);if(p->score[m]>max){max=p->score[m];k=j;}}if(k!=i){t=number[i];number[i]=number[k];number[k]=t;}}printf("************************************************************ ****************\n");if(m==3) printf("Sord by sum score:\n");else printf("Sord by score%d:\n",m+1);printf("mingci ");printf("number name score1 score2 score3 total aver\n");for(i=0;i<n;i++){printf("%4d ",i+1);print(search_number(head,number[i]));}}void tongji(student *head) /*统计*/{int i,sum,s,j;student *p1;printf("************************************************************ ****************\n");printf(" sum average\n");for(i=0;i<N-2;i++){sum=0;for(p1=head;p1!=NULL;p1=p1->next)if(p1->flag==1) sum+=p1->score[i];printf(" score%d:%6d%9.2f\n",i+1,sum,(float)sum/n);}for(sum=0,p1=head;p1!=NULL;p1=p1->next)if(p1->flag==1) sum+=p1->score[N-2];printf(" sum :%6d%9.2f\n",sum,(float)sum/n);printf("average:%6.2f%9.2f\n",(float)sum/(N-2),(float)sum/(N-2)/n); printf("************************************************************ ****************\n");printf("Ge fenshuduan renshu:\n");printf(" 100 90-99 80-89 70-79 6 0-69 fail\n");printf(" score digit rate digit rate digit rate digit rate digit rate digit rate\n");for(i=0;i<N-2;i++){printf("score%d",i+1);for(s=100;s>=60;s-=10){j=0;for(p1=search_score(head,s,s+9,i);p1!=NULL;p1=search_score(p1->next,s,s+9,i))j++;printf("%5d,%6.2f",j,(float)j/n);}for(j=0,p1=search_score(head,0,59,i);p1!=NULL;p1=search_score(p1->next,0,59,i))j++;printf("%5d,%6.2f",j,(float)j/n);printf("\n");}}void about()/*关于设计*/{clrscr();printf("\n\n\n\n\n\n");printf("\t\t\b*********************ABOUT************************\n") ;printf("\t\t\b*\tThe Student Score Manage System\t\t*\n");printf("\t\t\b*\t\t\t\t\t\t*\n");printf("\t\t\b*\t\t\b llrsnake \t\t\t*\n");printf("\t\t\b*\t\t\b 1000000001\t\t\t*\n");printf("\t\t\b**************************************************\n"); printf("\n\t\t\tPress any key to return...");getch();}student *load()/*载入*/{FILE *fp;student *head=NULL,*p1,*p2;char c[10];printf("please enter the file name:\n");scanf("%s",c);if((fp=fopen(c,"rb"))==NULL){printf("Can not open the file %s\n",c); return head;}printf("loading...\n");n=0;fgets(cipher,11,fp);p1=(student *)malloc(LEN);if(p1==NULL){printf("Out of memory!\n");return(head);}head=p1;while(!feof(fp)){if(fread(p1,LEN,1,fp)!=1)break;n++;p1->next=(student *)malloc(LEN);if(!p1->next){printf("Out of memory!\n");return (head);}p2=p1;p1=p1->next;}p2->next=NULL;fclose(fp);printf("load successfuly!\n");return head;}void save(student *head) /*保存*/{FILE *fp;student *p;char str[10];int i;printf("please enter the file name:\n");scanf("%s",str);if((fp=fopen(str,"wb"))==NULL){printf("Cannot open file!\n");return;}printf("Saving...\n");for(i=0;i<10;i++)fputc(cipher[i],fp);for(p=head;p!=NULL;p=p->next)if(fwrite(p,LEN,1,fp)!=1)printf("file save error!\n");printf("save successfully!\n");fclose(fp);}int cipher_check()/*密码检测*/{char c[11];int i,flag;for(i=0;(c[i]=getch())!='\r'&&i<11;){if(c[i]==8){if(i==0) continue;else {printf("\b");clreol();i--;continue;} }if(i==10) continue;printf("*");i++;}c[i]='\0';printf("\n");flag=!strcmp(c,cipher);return flag;}void set_up_cipher()/*设立密码*/{int i=0,flag;char c;printf("\nPlease input the password:\n"); while((cipher[i]=getch())!='\r'&&i<11){if(cipher[i]==8){if(i==0) continue;else{i--;printf("\b");clreol();continue;}if(i==10) continue;printf("*");i++;}cipher[i]='\0';printf("\nplease input the password again:\n"); flag=cipher_check(cipher);if(flag==0){printf("password set up fail\n");cipher[0]='\0';}if(flag==1)printf("\npassword set up success!\n");}void enter_record(student *p) /*输入信息*/{int i;p->flag=1;printf("name:");scanf("%s",p->name);for(i=0;i<N-2;i++){printf("score%d=",i+1);for(;;){scanf("%d",(p->score)+i);if(p->score[i]>100||p->score[i]<0)printf("Wrong score,enter again:");else break;}count(p->score);}}void count(int *p) /*计算总成绩及平均成绩*/{int i,sum=0,aver;for(i=0;i<N-2;i++)sum+=p[i];aver=(int)sum/i;p[N-2]=sum;p[N-1]=aver;}void print(student *p) /*输出结点*/printf("%5ld %-6s",p->num,p->name);for(i=0;i<N;i++)printf("%7d",p->score[i]);printf("\n");}void print_title()/*输出标题*/{printf("\n********************************************************** **********************\n");printf("number name score1 score2 score3 total aver\n");}。
学生成绩信息管理系统
学绩信息管理系统学绩信息管理系统文档1. 系统简介1.1 目的和背景1.2 功能概述2. 用户需求分析2.1 学生用户需求- 查看个人成绩记录及排名情况。
- 提交作业、报告等课程相关文件。
- 查询选修课程信息并进行选课操作。
2.2 教师用户需求- 录入学绩,并计算平均分与班级排名。
- 发布作业、考试安排以及其他通知事项给学生。
3.系统设计与架构3.1数据库设计-设计数据库表结构,包括:学生表、教师表、科目表等。
3-2功能模块划分-划定各个子模块职责范围,如登录认证模块, 成绩录入/查询模块, 文件模块等。
4.详细功能描述4-1登陆注册–实现不同角色(管理员/老师/學生)登錄註冊功能,包含用戶驗證與權限控制部分。
4-2成績查詢–允许學生根据条件查询个人成绩,并显示排名情况。
4-3成績录入–允许教师输入学绩,系统自动计算平均分与班级排名,并提供相应的错误提示功能。
4-4 文件- 学生可以提交作业、报告等文件;老师可发布课程资料给学生。
5. 系统测试5.1 单元测试- 对每个模块进行单元测试以验证其正确性和稳定性。
6.部署与运行环境6-1硬件需求-列出服务器及客户端所需要的硬件配置要求。
6-2软件需求-列出操作系統, 数据库管理系统和其他必须安装在服务器上的软体需求。
7.附件8.法律名词及注释:- GDPR(General Data Protection Regulation):欧洲通用数据保护条例,是为了加强对于公民隐私权利和信息处理规范而制定的一项监管政策。
- COPPA (Children's Online Privacy Protection Act):儿童在线隐私保护法案,在美国旨在增强对13岁以下孩子们网络活动中收集到他们身份信息使用者责任意识方面做了规定。
- FERPA (Family Educational Rights and Privacy Act):家庭教育权利和隐私法案,是美国一项旨在保护学生个人信息的联邦法律。
数据库课程设计学生成绩管理系统
可以进一步加强系统的 安全性设计,如增加用 户权限管理、数据备份 与恢复等功能,确保数 据的完整性和安全性。
THANKS
感谢观看
情况下的容错处理。
性能测试用例
设计针对不同用户数量和不同数据量 的测试用例,以验证系统的性能和稳
定性。
安全测试用例
设计针对系统安全性的测试用例,如 用户权限验证、数据加密传输等。
测试执行与结果分析
测试执行
按照测试计划和测试用例进行测试,记录测试结果和发现的问题 。
问题跟踪与修复
对发现的问题进行跟踪,确保问题得到及时修复,并重新进行测试 验证。
测试方法
采用黑盒测试和白盒测试相结合的方法,包括功能测试、 性能测试、安全测试等。
测试范围
包括系统的所有功能模块,如学生信息管理、课程管理、 成绩录入与查询、报表生成等。
测试资源
包括测试人员、测试环境、测试数据等。
测试用例设计
功能测试用例
针对系统的每个功能模块设计测试用 例,包括正常情况下的操作以及异常
系统功能实现
课程信息管理
实现课程基本信息的录入、修 改、查询和删除功能。
报表生成
根据需求生成各类报表,如学 生成绩单、课程统计表等。
学生信息管理
实现学生基本信息的录入、修 改、查询和删除功能。
成绩录入与查询
实现学生成绩的录入、修改、 查询和删除功能,支持批量导 入成绩数据。
权限管理
实现不同用户角色的权限管理 ,确保系统的安全性和稳定性 。
常见问题与解决方案
数据库连接问题
检查数据库连接配置是否正确,确保数据库服务 正常运行,并尝试重新启动数据库服务或修复连 接问题。
系统性能下降
学生成绩管理系统
4 可以引入更多的教学和管理功能:如在 线学习、教学评估等,更好地服务于教 育教学
-
THANK YOU
ENGLISH
可爱/简约/卡通
学生成绩管理系统
-
1
系统功能2系统流程来自3系统要求4
系统实现
5
系统未来发展
学生成绩管理系统
1
学生成绩管理系统是一个用于管理学生成绩的 计算机程序,通常用于学校或教育机构
2
这个系统可以记录每个学生的个人信息和成绩,
包括学生姓名、学号、班级、各科成绩等
3
以下是一个简单的学生成绩管理系统的示例
系统功能
系统流程
系统流程
2.1 学生信息流程
打开系统:进入学生信息管理界面
系统流程
选择添加学生信息:输入学生姓名、学 号、班级等信息
选择编辑学生信息:输入要修改的学生 学号,修改相关信息
选择删除学生信息:输入要删除的学生 学号,删除该学生信息
退出系统
系统流程
2.2 成绩管理流程
打开系统:进入成绩管理界面 选择添加成绩:输入学生学号及各科成 绩 选择编辑成绩:输入要修改的学生学号 及要修改的科目和成绩 选择删除成绩:输入要删除的学生学号 及科目,删除该科目成绩 退出系统
坏
系统实现
系统实现
系统实现
为了实现学生成绩管理系统的各项功能,以下步骤需要被完成 确定系统的需求和功能:制定详细的需求说明书 设计系统的数据库结构和数据模型:包括学生信息、成绩信息等 开发系统的各项功能模块:包括学生信息管理、成绩管理、查询和统计等 进行系统的测试和调试:确保系统的稳定性和正确性 进行系统的用户培训和文档编写:确保用户能够正确使用系统
学生成绩信息管理系统实训报告(一)
学生成绩信息管理系统实训报告(一)学生成绩信息管理系统实训报告1. 引言学生成绩信息管理系统是一个用于管理学生学习成绩的重要工具。
本篇报告旨在总结和评估学生成绩信息管理系统的开发过程和相关实践经验。
2. 系统需求分析在系统需求分析阶段,我们详细梳理了学生成绩信息管理系统的功能需求,并与相关利益方进行了充分的沟通和确认。
系统需求主要包括以下几个方面:•学生信息录入和管理•课程信息录入和管理•成绩录入和查询•统计与报表生成•用户权限管理3. 系统设计与实施在系统设计与实施阶段,我们采用了敏捷开发的方法,将整个开发过程划分为多个迭代周期。
每个迭代周期都包括需求分析、设计、编码、测试和部署等环节。
主要采用的技术和工具包括:•前端:HTML、CSS、JavaScript•后端:Python、Django框架•数据库:MySQL•版本控制:Git4. 功能实现与测试在功能实现与测试阶段,我们根据需求分析和系统设计,逐步实现了各个功能模块,并进行了全面的测试和调试。
主要功能包括:•学生信息的增删改查•课程信息的增删改查•成绩录入和查询功能•统计与报表生成功能•用户权限管理功能5. 难点与挑战在系统开发过程中,我们遇到了一些难点和挑战,主要包括:•数据库设计与优化:如何设计数据库结构以支持高效的数据查询和统计?•安全性与权限管理:如何确保系统的安全性和合法性,防止未经授权访问和篡改数据?•用户界面设计与用户体验:如何设计直观友好的界面,提升用户的使用体验和效率?6. 总结与展望学生成绩信息管理系统的开发经验使我们深入理解了系统开发的整个过程,也提升了我们的技术能力和团队协作能力。
未来,我们将继续优化系统功能和性能,进一步提升用户体验,增加新的功能模块,以满足教育管理的不断变化和提升需求。
通过该实训项目,我们不仅掌握了学生信息管理系统的开发技术,更重要的是培养了我们团队合作、项目管理和问题解决的能力。
相信这些经验和能力将对我们未来的工作产生重要影响。
学生成绩管理系统
摘要学生成绩管理系统是为了实现学校对学生成绩管理的系统化、规范化和自动化,从而提高学校管理效率而设计的。
它完全取代了原来一直用人工管理的工作方式,避免了由于管理人员的工作疏忽以及管理质量问题所造成的各种错误,为及时、准确、高效的完成学生成绩管理提供了强有力的工具和管理手段。
学生成绩管理系统应该是一个中小型数据库管理系统,它界面美观、操作简单、安全性高,基本满足了学生成绩管理的要求。
本文中只是运用结构化方法学对这一系统的简单分析与建模,没有具体的实现过程,通过这阶段的学习与思考,能够对软件开发过程进行简单分析和判断。
关键字:成绩管理系统建模目录摘要 (1)目录 (1)1绪论 (1)1.1 设计任务 (1)1.1.1 需求说明 (1)1.1.2系统设计目标 (1)1.2 设计内容 (2)2 需求分析 (2)2.1 系统功能需求 (2)2.2 系统的性能需求 (2)2.3 系统数据要求 (3)2.4 系统业务流程分析 (3)2.4.1 班级管理业务流程图: (4)2.4.2学籍管理业务流程图: (4)2.4.3成绩管理业务流程图: (5)2.4.4课程管理业务流程图: (5)2.5数据模型的实体——联系图表示 (5)2.6 功能模型的数据流图表示 (7)2.7本章小结 (7)3 概要设计 (8)3.1 系统功能设计 (8)3.2系统模块具体划分 (9)4 详细设计 (11)5体会 (14)6参考文献 (15)1绪论1.1 设计任务1.1.1 需求说明学生成绩管理系统提供了强大的学生成绩管理管理功能,方便系统管理员对学生成绩等信息的添加、修改,打印等操作,同时一样的方面学生对自己各科成绩查询,学习的交流。
学生信息管理系统在管理学生中占有重要的地位,它关系着学生信息的基本信息,其中包括学生信息,班级信息、课程信息等。
对于学校来讲,学生信息管理系统是不可缺少的组成部分,它有效地管理学生档案,对学校学生的变动和统计起着重要的管理作用。
数据库课程设计--学生成绩管理系统
数据库原理与应用课程设计说明书题目:学生成绩管理系统院系:专业班级:学号:学生姓名:指导教师:2008年12 月22 日一概述1.1目的与要求随着科技的发展,基本上所有的具有一定数量数据的机构都开始使用计算机数据库来做管理。
几乎所有学校也都已经在使用计算机管理数据的机制,大大减少了学校学生成绩管理的工作量。
该课程设计要求设计一个学生成绩的数据库管理系统,数据库中要求包含学生的基本信息,学科基本信息,以及学生所学课程的考试成绩。
要方便学生进行成绩查询,通过该课程设计,应该达到把数据库理论知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分的结合起来。
1.2设计环境① Microsoft SQL Server 2000② Microsoft Visual C++ 6.0二需求分析2.1 系统功能要求设计此系统实现如下系统功能:(1)使得学生的成绩管理工作更加清晰、条理化、自动化。
(2)通过用户名和密码登录系统,查询课程基本资料,学生所选课程成绩,修改用户密码等功能。
容易地完成学生信息的查询操作。
(3) 设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统在安全性,完整性,并发控制,备份和恢复等方面的功能要求。
2.2 系统模块设计成绩管理系统大体可以分成二大模块如,一是学生的基本信息模块,里面应该包含学生的各方面的基本信息;再者便是课程管理模块,在该模块中应该包含有对学生成绩信息的查询和处理,如平均成绩、最好成绩、最差成绩以及不及格学生的统计等功能模块;再其次还有教师、课程等相关信2.3 数据字典数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名称、数据类型、长度、取值能否为空。
利用SQL Server 2000建立“学生选课”数据库,其基本表清单及表结构描述如下:数据库中用到的表:三概念模型设计由需求分析的结果可知,本系统设计的实体包括:(1)学生基本信息:学号,姓名,性别,地址,年龄,专业。
学生成绩管理系统数据库设计全(一)
学生成绩管理系统数据库设计全(一)学生成绩管理系统数据库设计全随着教育信息化的不断推进,学生成绩管理系统逐渐成为学校教育管理的重要组成部分。
本文将从数据库设计角度,介绍学生成绩管理系统数据库的全面设计。
一、需求分析学生成绩管理系统需要支持以下功能:1.录入学生、课程、教师、班级、成绩信息2.查询学生、课程、教师、班级、成绩信息3.修改学生、课程、教师、班级、成绩信息4.删除学生、课程、教师、班级、成绩信息5.统计成绩信息、排名6.计算平均分、总分、最高分、最低分7.生成成绩单、班级报告等报表二、数据库设计基于需求分析结果,我们可以设计以下数据库模型:1.学生信息表(student_info)字段名 | 数据类型 | 备注--------|--------|--------id | int | 主键,自增name | varchar(20) | 姓名gender | varchar(2) | 性别birthday | date | 出生日期class_id | int | 外键,班级ID2.班级信息表(class_info)字段名 | 数据类型 | 备注--------|--------|--------id | int | 主键,自增name | varchar(20) | 班级名称3.教师信息表(teacher_info)字段名 | 数据类型 | 备注--------|--------|--------id | int | 主键,自增name | varchar(20) | 姓名gender | varchar(2) | 性别4.课程信息表(course_info)字段名 | 数据类型 | 备注--------|--------|--------id | int | 主键,自增name | varchar(20) | 课程名称5.成绩信息表(score_info)字段名 | 数据类型 | 备注--------|--------|--------id | int | 主键,自增course_id | int | 外键,课程ID student_id | int | 外键,学生ID teacher_id | int | 外键,教师ID score | int | 分数6.报表信息表(report_info)字段名 | 数据类型 | 备注--------|--------|--------id | int | 主键,自增student_id | int | 外键,学生ID course_id | int | 外键,课程ID teacher_id | int | 外键,教师ID score | int | 分数mean_score | float(2) | 平均分top_score | int | 最高分low_score | int | 最低分rank | int | 排名三、系统架构学生成绩管理系统的整体架构如下:1.数据采集模块该模块用于录入、修改、删除学生成绩信息。
学生成绩管理系统{完整版}1
目录摘要 (3)关键字: (3)引言 (3)一、系统的理论与技术基础 (4)1.1管理信息系统基础 (4)1.2 软件工程理论的概述 (4)1.3 软件工程理论对本系统的指导 (4)二、系统的需求分析 (5)2.1项目开发的背景分析 (5)2.2 项目开发的目标 (5)2.3项目提出的意义 (6)2.4 国内外研究现状 (6)三、系统的开发工具及编程环境 (9)3.1 开发工具的选择 (9)3.3编程环境的选择 (10)3.5 Visual Basic 系统实现菜单选项 (12)3.5 Visual Basic 系统实现菜单选项 (12)四、系统数据库的使用 (13)4.1 系统数据库的选择 (13)4.2 数据的保存和读取 (13)4.3 数据库文件的易用性 (13)4.4 数据库文件格式 (14)4.5教师管理界面编码设计 (16)五、系统代码及开发过程 (18)5.1系统的开发 (18)5.2功能需求描述 (18)5.3代码及图示 (18)5.3.2.主窗口: (18)5.3.3.管理系统: (19)5.3.4.属性: (19)5.3.5.打开系统显示的界面 (20)5.3.6.窗体的尺寸 (21)结论 (22)致谢 (23)参考文献 (24)学生成绩管理系统摘要学生信息管理系统是典型的信息管理系统,经过分析,我们使用MICROSOFT 公司的VISUAL BASIC开发工具,利用其提供的各种面向对象的开发工具,尤其首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。
关键字:数据库,智能化,面向对象ABSTRACT:The abstract student information management system is the typical information management system, the process analysis, We use MICROSOFT Corporation VISUAL the BASIC development kit, uses each kind of object-oriented development kit which it provides, especially first in a short time establishes the system application prototype, then, carries on the demand iteration to the initial prototype system, revises and the improvement unceasingly, until forms user satisfaction the feasible system.Key words:Database,intelligence,object-oriented引言随着学校规模的不断扩大,学生数量急剧增加,有关学生的各科成绩信息量也成倍增长。
学生成绩管理系统数据库 (1)
学生成绩管理系统数据库一、需求分析阶段1.信息需求对学校而言,学生成绩管理系统是所有工作的首要之选,但是高校学生的成绩管理工作量大、繁杂,人工处理非常困难。
因此,借助于强大计算机的处理能力,能够把人从繁重的成绩管理工作中解脱出来,并且更加准确、安全、清晰的管理环境。
2.功能需求能够进行数据库的数据定义、数据操纵、数据控制等处理功能。
具体功能应包括:系统应该提供课程安排数据的添加、插入、删除、更新、查询;成绩的添加、修改、删除、查询,学生及教职工基本信息查询的功能。
3. 安全性与完整性要求对于学生成绩管理系统数据库来讲,由于其主要数据是学生成绩,只能由本人以及所教老师及教务处知道,因此做好数据安全性是重中之重。
另外,要求所有在校学生的信息都要录入其中,并且要设计好个别情况。
二、概念结构设计阶段概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。
设计成绩管理数据库包括学生、成绩、课程、教师四个关系。
E-R图如下三、详细设计阶段详细结构是独立于任何一种数据模型的信息结构。
详细结构的任务是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。
E-R图向关系模型转化要解决的问题是如何将实体型和实体间的联系转化为关系模式,如何确定这些关系模式的属性和码。
设计学生成绩管理数据库,包括课程、学生、教师、成绩四个关系, 其关系模式中对每个实体定义的属性如下:课程信息表Class:(课程号,课程名,教师号,学分,学时)学生信息表Student1:(学号,姓名,性别,年龄,专业,系别)成绩表Score:(学号号,课程名,成绩)教师表Teacher1:(教师号,教师名,教师性别,教师系别)2、学生信息表(student1)四、数据库实现数据库实施是指建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
学生成绩管理系统
华南师范大学增城学院学生成绩管理信息系统简介队名:twins 组队员:何锦涛、林丽影学生成绩管理信息系统简介一、开发背景当今我校已有院系7个,专业更是多达近100种,学生已达近万人,教师也已近300名,面对如此庞大的信息,使用人工手段进行管理,将会耗费大量的人力以及时间;而且人工管理效果较差,容易出错,同时对数据的修改或查询更是效率低下。
所以本着服务师生,方便管理为目的,本小组编写了学生信息管理系统。
1.本课题的研究意义面对庞大的信息量,学生信息的管理需要对学生的基本信息、学生的课程、学生的成绩进行管理,为了轻松的处理学生庞大的信息量,减少在管理上面的物力和人力,提高学生管理的工作效率,及时了解各个环节中信息的变更。
开发一个“学生成绩管理信息系统”将会为学生的管理带来极大的方便,并且降低学生的管理成本。
通过系统,可以做到信息的规范管理、统计和快速的查询,从而减少在管理方面的工作量。
2.可行性分析可行性研究的目的就是要用最小的代价在尽可能短的时间内确定问题是否能够解决。
当然不能靠主观猜想而是要靠客观分析。
必须分析几种主要的可能解法的利弊,从而判原定的系统目标和规模是否现实,系统完成后所能带来的效益是否大到值得去投资开发这个系统的程度。
因此,可行性研究实质上是要进行依次大大地压缩简化了的系统分析和设计的过程,也就是在较高层次以较抽象的方式进行的系统分析和设计的过程。
可行性研究主要从以下三个方面来进行。
3.技术上可行性本系统是通过需要的软件和硬件配置有:(1)硬件平台硬件平台是由服务器、客户机、打印机等设备构成。
(2)软件平台软件平台由Windows xp 系统、visual studio 2005, SQL SERVER 2000、Office Excel 2003、软件开发语言c#构成。
综合以上的软硬件条件,考虑到系统要求不是太高,在技术可行性来说,这个“学生成绩管理信息系统”完全能够实现。
4.经济可行性我们设计的这个“学生成绩管理信息系统”,面向的是学校的教学工作,设计和实现它所要求的硬件、软件、人员等这些基本的条件不是很高,在经济上的成本支出不高,所以成本是非常的小,而它的适用范围又比较广,节约管理成本,同时又可以提高管理效率,在经济上来说也是可行的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生成绩管理系统(1)目录摘要 (1)1.绪论 (1)2. 系统分析 (1)2.1功能需求 (1)2.2数据需求 (1)2.3性能需求 (2)3. 总体设计 .................................................................................. 错误!未定义书签。
3.1系统功能模块描述 (2)3.2录入函数功能设计 (3)3.3查找函数功能设计 (4)3.4统计函数功能设计 (5)3.5添加函数功能设计 (6)3.6更新函数功能设计 (7)3.7执行流程介绍设计 (8)4. 调试与测试 (8)4.1调试 (9)4.2测试 (10)5. 结论 (10)结束语 (10)参考文献 (10)附录1-用户手册 (11)附录2-源程序 (17)摘要随着科学教育事业的发展,学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
关键词:学习成绩查询;管理;C语言1.绪论随着科技的发展,愈来愈多的学校选择了运用学生成绩管理系统来管理学生的各项信息。
学生成绩管理系统是一个学校不可缺少的部分,学校可以利用这套程序进行学生成绩的各种信息管理,也方便查询修改成绩的各项信息,可以提高管理工作的效率和简化管理工作的程序。
有利的为学校节省了运作成本,优化资源利用率,这也正是编写本程序的目的所在。
根据课程设计任务书要求,本系统开发主要完成以下功能和性能。
1.录入学生数据信息(不用考虑学期),学生信息至少包括姓名、学号、数学成绩三方面,学生信息应及时保存在文件中;2.根据学号查询某生成绩;3.插入新的学生数据信息。
2. 系统分析2.1 功能需求本系统主要是学校对学生成绩管理的系统。
该系统需要有录入信息,删除信息,根据所给条件查询信息,修改信息,统计信息,循环显示主菜单,保存信息的功能,并且利用显示函数将学生的所有信息显示出来。
2.2数据需求需要向系统输入学号,姓名,数学成绩等信息。
2.3 性能需求在运行本程序时只要按照正确的操作方法不会出现无法运行的情况,系统稳定性好,安全,可靠。
3.总体设计3.1系统功能模块描述图3-1学生成绩管理系统模块图3.2 录入函数功能设计首先会给定一个要输入的人数界限,根据自己要输入的人数进行输入,系统会提示你输入学生的信息,其中包括姓名、性别、各科目的分数,系统会自动生成一个有序数列,即学号。
其执行流程图如下所示:图3-2录入函数设计3.3 查找函数功能设计查找函数有两种查找方法,分别为按姓名和学号查找,当输入为flag=1时,系统会提示按照姓名查找,当输入为flag=2时,系统则提示按照学号查找,其流程图为:图统计函数会统计各科目的最高分、最低分以及平均分的统计,并且按照操作进行科目统计。
会有4中选择,当flag=1时,对数学进行统计;当flag=2时,对英语进行统计,当flag=3时,对c成绩进行统计,当flag=4时,统计函数功能结束。
跳出循环。
如图3-4所示:图3-4 统计函数设计添加函数主要是对额外的学生记录进行添加,同前面一样,也是对其信息的输入,并且输入完成之后,再对学生成绩进行排序和统计,如图所示图3-5 添加函数设计更新函数包含了两个子函数,分别是修改和删除两项,修改主要是修改录入函数里面错误的内容,而删除主要是删除一些不必要的学生信息,其功能流程如图3-6所示图3-6 更新函数设计3.7执行流程介绍主要是主函数调用子函数来进行操作和子函数相互之间的调用来完成执行,如图:图3-7流程执行图4. 调试与测试4.1 调试调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来说也是最艰巨的任务。
调试的任务是及时改正测试过程中发现的软件错误。
具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。
然后仔细研究推断代码以确定问题的原因,并设法改正。
调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。
本系统调试过程中遇到问题、原因和解决方法如下面介绍。
(1)程序不能运行定义的指针,很多次引用,过个函数里面,定义的不明确,造成错误连连发生。
(2)不能正确输出信息,有乱码现象原因是键入信息的时候,没有一一对应,逗号的位置不正确,后来,用的是信息逐一输入,保证了信息的一一对应和高度的准确性,使程序可以正常运行。
(3)程序运行途中,出现错误,被迫中止其中定义字符数组,却没有定义长度,导致定义类型变成了字符型,而不能接受字符串,因此出现了错误。
4.2 测试软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。
或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。
过度测试则会浪费许多宝贵的资源。
到测试后期,即使找到了错误,然而付出了过高的代价。
测试数据过程如下。
当职工信息管理程序已经具备录入,利用显示函数将职工所有信息显示,删除,修改,按指定条件查询,统计,查询,保存信息,循环显示主菜单功能时,现在测试系统是否能够正确显示系统内部所有的职工信息,当系统中已存入一定的职工信息当执行显示功能时,系统会将内部职工信息全部列出,当系统中未存入任何职工的信息时执行显示职工系统内部信息,系统会提示“list null!”。
创建一条职工信息:工号:1 姓名:marry 性别:F 年龄:21 学历:U 工资:2458 联系电话:48425678则输出如下:the worker's information:No name sex age 学历pay telephone1 haha F 21 U 2458 484256785. 结论课程设计顺利完成,题目所要求的功能也都一一实现,可以对职工信息进行添加,修改,删除,查询,模糊查询,按条件查询,存储至文本文件等,在通常情况下,可以良好的运作。
不过这个程序还有些不够完善,例如有时候,输出的结果会因为字符的长短,与上面的提示栏对不上。
而且,由于自己英语的不够特别好,后几个功能不知道该怎么翻译,就直接写的汉字,显得程序主菜单有点乱,以后会加强英语,好好规划编程。
结束语为期两个礼拜的的软件综合课程设计实习终于顺利完成,在这期间,我学到了很多课堂上学不到的东西,而且,将所学付之于实践,理论联系实际,是令我很兴奋的,但同时也感觉到了难度。
对C语言,有了更深一步的了解,并且培养出了良好的思考方式,对于编程。
虽然困难很多,问题出现的也很多,但好在,顺利完成任务了,很有成就感。
.参考文献[1] 谭浩强. C语言程序设计(第三版).北京:清华大学出版社,2005.7附录1-用户手册主菜单测试进入系统后,主函数调用menu函数,显示主菜单,并提示用户根据屏幕输入选择。
截图如下图4-1所示:图4-1主菜单测试4.2录入功能测试主函数调用此函数后,屏幕依次提示用户输入人数,姓名、性别、计算机分数、数学分数和英语分数信息,截图如下图4-2所示:图4-2录入功能测试4.3浏览功能测试进入此功能后屏幕显示菜单,提示用户根据需要输入选择。
并观看全部信息。
截图如下图4-3所示:图4-3浏览功能测试4.4查找功能测试4.4.1按姓名查找按屏幕提示输入所要查找的姓名,如有符合条件的信息记录,则全部显示出来。
截图如下图4-4所示:图4-4按姓名查找测试4.4.2按学号查找按屏幕提示输入所要查找的学号,有符合的学生则显示此学生信息。
截图如下图5-4所示:图4-4按学号查找测试4.5排序功能测试按屏幕操作对学生记录进行排序。
截图如下图4-5所示:图4-5排序功能测试4.6统计功能测试按操作对学生的各们科目的最大,和最小以及平均分进行统计,截图如下图4-6所示:图4-6统计功能测试4.7更新功能测试4.7.1修改功能测试根据输入的学号找到指定的信息记录,然后可以选择修改的项。
如下图4-7所示:图4-7修改功能测试4.7.2删除功能测试根据指定的学号找到相应的信息记录,进行删除的操作。
截图如下图4-7所示:图4-7删除功能测试4.8 添加功能测试添加若干各学生的信息,同样包括他的名字,性别,学号及各科目分数。
截图如下4-8:图4-8添加功能测试附录2-源程序#include <stdio.h>#include"string.h"#include"time.h"#include"stdlib.h"int menu();void save();void incre();void load();void luru();int chazhao();void liulan();void tianjia();void paixu();void tongji();void shanchu_xiugai();#define N 50int cout[10];int K; //定义全局变量struct student //定义结构体变量student{char name[20];char sex[N];int id;float score[3];float sum;}stu[N],stu1;int menu() //菜单函数{int i,flag;system("cls"); //运行前清屏for(i=0;i<80;i++)printf("*");printf("\n- - - - - - - - - - - - - - - -学习信息管理系统- - - - - -- - - - - - - - - - \n");printf(" \t|1.录入学生信息|\t\t\t|2.浏览学生信息|\n");printf(" \t|3.查找学生信息|\t\t\t|4.对学生信息排序|\n");printf(" \t|5.统计学生信息|\t\t\t|6.添加学生信息|\n");printf(" \t|7.更新学生信息|\t\t\t|8.退出程序|\n");printf("\n- - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");for(i=0;i<80;i++)printf("*");printf("\n\t输入选择类型1--8:");scanf("%d",&flag);return flag;}void save(){FILE *fp;if((fp=fopen("c:\\student","wb"))==NULL){printf("Can not open the file!\n");exit(0);}fputc(K,fp);for(int i=0;i<K;i++)if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1){printf("File can not be saved!\n ");exit(0);}fclose(fp);}void incre(){FILE *fp;if((fp=fopen("c:\\student","ab"))==NULL){printf("Can not open the file!\n");exit(0);}if(fwrite(&stu[K],sizeof(struct student),1,fp)!=1){printf("File can not be saved!\n ");exit(0);}fclose(fp);}void load(){FILE *fp;if((fp=fopen("c:\\student","rb"))==NULL){printf("Can not open the file!\n");exit(0);}K=fgetc(fp);for(int i=0;i<K;i++)if(fread(&stu[i],sizeof(struct student),1,fp)!=1){printf("File can not be saved!\n ");exit(0);}fclose(fp);}void luru() //录入函数{int i,j;int m,x,num;system("cls");printf("请输入要录入的学生人数,在(1-50)之间:");while(1){scanf("%d",&num); //用来控制需要录入学生的数目(用当循环是为了保证需要录入的学生数合法(1-100))if(1<=num&&num<=50)break;elseprintf("\t请重新输入人数(1-50):");}for(i=K;i<num+K;i++){printf("\t请输入学生信息:");printf("\n\tName %d:",i+1);scanf("%s",stu[i].name); //输入姓名srand((long)time(NULL)); //提供不重复的seedwhile(1) //保证产生的随机数不重复{m=0;x=rand()%10000+2010000; //控制随机数产生的范围for(j=0;j<i;j++)if(stu[j].id==x){m=1;break;}if(m==0)break;}stu[i].id=x;printf("\tID:%ld\n",x); //输出产生的随机数printf("\tSex:");scanf("%s",stu[i].sex); //输入性别stu[i].sum=0;printf("\t数学:");scanf("%f",&stu[i].score[0]); //输入分数printf("\t英语:");scanf("%f",&stu[i].score[1]);printf("\tc :");scanf("%f",&stu[i].score[2]);for(j=0;j<3;j++) //求出学生的总成绩{stu[i].sum+=stu[i].score[j];}}K+=num; //这样是为了达到重复批量录入的效果save();liulan();system("pause");}void liulan() //浏览函数{int i,j;load();printf("-------------------------------------------------------------------------\n");printf("姓名\t性别\t学号\t\t数学\t\t英语\t\tC语言\t总和\n");for(i=0;i<K;i++){printf("\n%s\t%s\t%d",stu[i].name,stu[i].sex,stu[i].id);//打印学生的信息for(j=0;j<3;j++)printf("\t\t%.f",stu[i].score[j]);printf("\t%.f\n",stu[i].sum);}printf("-------------------------------------------------------------------------\n");system("pause>null");}int chazhao() //查找函数{load();char name[20];int i,j=0,k,x=0,flag;long number;printf("\t你能够根据学生姓名或者学号来查找信息:1.名字,2,学号:");scanf("%d",&flag);if(flag==1) //当key==1时按name查找给学生{printf("\t请输入学生名字:");scanf("%s",name);for(j=0,i=0;i<K;i++)if(strcmp(name,stu[i].name)==0){cout[j++]=i;x=1;}}else if(flag==2){printf("\t请输入学生学号:");scanf("%ld",&number);for(j=0,i=0;i<K;i++)if(stu[i].id==number){cout[j++]=i;x=1;}}elsex=2;if(x==1) //当x=1时表示查找到学生{printf("该学生的信息为:\n");for(i=0;i<j;i++){printf("姓名\t性别\t学号\t\t数学\t英语\tC语言\t总和\n",cout[i]+1);printf("%s %s %ld",stu[cout[i]].name,stu[cout[i]]. sex,stu[cout[i]].id);for(k=0;k<3;k++)printf("\t%.f",stu[cout[i]].score[k]);printf(" %.f\n",stu[cout[i]].sum);}}else if(x==0)printf("\t\t对不起没有找到您需要的学生信息!\n");else{printf("\t请输入(1-2)!\n");j=chazhao();}system("pause>null");return j;}void paixu() //排序函数{load();int i,j;for(i=0;i<K-1;i++){for(j=0;j<K-i-1;j++){if(stu[j].sum<stu[j+1].sum) //以总分为标准按照冒泡法对学生的信息进行排序{stu1=stu[j];stu[j]=stu[j+1];stu[j+1]=stu1;}}}save();printf("\t按总分排序成功!\n");liulan(); //排序成功后自动调用浏览函数将排序结果输出}void tongji() //统计函数{load();int i,flag;float max,min,average,sum;printf("\t1.英语\t\t2.数学\t\t3.C\t4.back.\n");float num1,num2,num3,num4,num5; //用来统计各分数段学生的数目while(1){num1=num2=num3=num4=num5=0; //注意赋初值0应该放在当循环里面printf("\t\t请选择要统计科目:(1-4):");scanf("%d",&flag); //用来选择所需要统计分数段的科目if(1<=flag&&flag<=3){sum=0;for(i=0;i<K;i++){if(90<=stu[i].score[flag-1]&&stu[i].score[flag-1]<=100)num1++;else if(80<=stu[i].score[flag-1])num2++;else if(70<=stu[i].score[flag-1])num3++;else if(60<=stu[i].score[flag-1])num4++;elsenum5++;min=max=stu[0].score[flag-1]; //假设第一个学生的各门成绩既是最大值也是最小值if(stu[i].score[flag-1]>max) //求单门科目中的最高分max=stu[i].score[flag-1];if(stu[i].score[flag-1]<min) //求单门科目中的最小值min=stu[i].score[flag-1];sum+=stu[i].score[flag-1];}average=sum/K;printf("\t\tmax=%.2f\n",max);printf("\t\tmin=%.2f\n",min);printf("\t\taverage=%.2f\n",average);}else if(flag==4)break;else //当输入超过4或小于1时提示输入错误printf("\t请重新输入(1-4)!\n");}}void tianjia(){load();char flag;int i,j;int m,x;for(i=K;i<N;i++){incre();K++;printf("\t请输入学生信息:");printf("\n\tName %d:",i+1);scanf("%s",stu[i].name); //输入姓名srand((long)time(NULL)); //提供不重复的seedwhile(1) //保证产生的随机数不重复{m=0;x=rand()%10000+2010000; //控制随机数产生的范围for(j=0;j<i;j++)if(stu[j].id==x){m=1;break;}if(m==0)break;}stu[i].id=x;printf("\tID:%ld\n",x); //输出产生的随机数printf("\tSex:");scanf("%s",stu[i].sex); //输入性别stu[i].sum=0;printf("\t数学:");scanf("%f",&stu[i].score[0]);printf("\t英语:");scanf("%f",&stu[i].score[1]);printf("\tc :");scanf("%f",&stu[i].score[2]);for(j=0;j<3;j++) //求出学生的总成绩{stu[i].sum+=stu[i].score[j];}printf("\t请选择(Y(continue/N(back))):");getchar();flag=getchar();if(flag=='Y')continue;elsebreak;}save();}void xiugai(){int i,j,answ,number,flag=0;liulan();j=chazhao();if(j==1){number=cout[0];flag=1;}else if(j>1){while(1){printf("\t请输入名字:");scanf("%d",&number);number--;for(i=0;i<j;i++)if(number==cout[i])flag=1;if(flag==0)printf("\tThe student is not you ne ed amend,please check out and input again!\n");elsebreak;}}if(flag==1){printf("\t确定要修改该学生的信息么?(Y(continue)/N(back))!");getchar();answ=getchar();}if(answ=='Y'&&flag==1){printf("\t请输入修改后的学生信息:");printf("\n\tName %d:",number+1);scanf("%s",stu[number].name); //输入姓名printf("\t ID:%ld\n",stu[number].id);printf("\t Sex:");scanf("%s",stu[number].sex);stu[number].sum=0;printf("\t数学:");scanf("%f",&stu[i].score[0]);printf("\t英语:");scanf("%f",&stu[i].score[1]);printf("\tc :");scanf("%f",&stu[i].score[2]);for(j=0;j<3;j++) //求出学生的总成绩{stu[number].sum+=stu[number].score[j];}printf("\t\t该学生的信息已成功修改!\n");}save();}void shanchu(){int i,j,answ,number,flag=0;j=chazhao();if(j==1){number=cout[0];flag=1;}else if(j>1){while(1){printf("\t请输入名字:");scanf("%d",&number);number--;for(i=0;i<j;i++){if(number==cout[i])flag=1;}if(flag==0)printf("\tThe student is not you need deal,please checkout and input again!\n");elsebreak;}}if(flag==1){printf("\t请确认是否要处理该学生信息!(Y(continue)/N(back))!");getchar();answ=getchar();}if(answ=='Y'&&flag==1){for(i=number;i<K;i++)stu[i]=stu[i+1];K--;printf("\t\t该学生的信息已成功删除!\n");}save();}void shanchu_xiugai() //修改、删除函数{int key;printf("\t\t\t1.修改\t2.删除:");scanf("%d",&key);if(key==1)xiugai();else if(key==2)shanchu();else{printf("\t\tIllegal operation,please input(1-2)!\n");shanchu_xiugai();}}void main() //主函数{while(1){switch(menu()){case 1:luru();break;case 2:liulan();break;case 3:chazhao();break;case 4:paixu();break;case 5:tongji();break;case 6:tianjia();break;case 7:shanchu_xiugai();break;case 8:printf("\t\t");exit(0);default:printf("\t请重新输入:\n\t\t");system("pause>null");}}}完成日期:2010年07月18日。