学生成绩管理系统项目-终极版汇编
- 格式:docx
- 大小:20.39 KB
- 文档页数:16
登陆登陆Private Sub cmdLogin_Click()If txtUser.Text = "" ThenMsgBox ("请输入用户名!")txtUser.SetFocusElseCall openconnsql = "select * from login where username='" & Trim(txtUser.Text) & "' and password='" & Trim(txtPwd.Text) & "'"rs.Open sql, conn, adOpenDynamic, adLockOptimisticIf rs.EOF ThenMsgBox "用户不存在!"ElseUnload MefrmMain.ShowEnd IfEnd IfEnd Sub退出Private Sub cmdRegister_Click()Unload MeEnd Sub功能选择选课管理Private Sub cmdChoice_Click()frmChoice.ShowUnload MeEnd Sub退出Private Sub cmdExit_Click()EndEnd Sub查询Private Sub cmdFind_Click()frmFind.ShowUnload MeEnd Sub成绩管理Private Sub cmdGrade_Click()frmGrade.ShowUnload MeEnd Sub学生管理Private Sub cmdStu_Click()frmStu.ShowUnload MeEnd Sub学生管理添加Private Sub cmdAdd_Click()frmAddStu.ShowUnload MeEnd Sub删除Private Sub cmdDel_Click()rs.DeleteMsgBox ("删除成功!!")End Sub编辑Private Sub cmdEdit_Click()frmEditStu.ShowUnload MeEnd Sub查找Private Sub cmdFind_Click() '查询功能If cboFind.Text = "学号" ThenIf txtInput.Text = "" ThenMsgBox ("学号输入不能为空!")txtInput.SetFocusElseDim sql1 As StringSet rs1 = New ADODB.Recordsetsql1 = "select * from stuInfo where ID='" & txtInput.Text & "'"rs1.CursorLocation = adUseClientrs1.Open sql1, conn, adOpenDynamic, adLockOptimistic, adCmdTextIf rs.EOF ThenMsgBox ("查不到相关信息")txtInput.SetFocusElseSet DataGrid1.DataSource = rs1DataGrid1.RefreshEnd IfEnd IfElseIf txtInput.Text = "" ThenMsgBox ("姓名输入不能为空!")txtInput.SetFocusElseDim sql2 As StringSet rs2 = New ADODB.Recordsetsql2 = "select * from stuInfo where name='" & txtInput.Text & "'"rs2.CursorLocation = adUseClientrs2.Open sql2, conn, adOpenDynamic, adLockOptimistic, adCmdTextIf rs.EOF ThenMsgBox ("查不到相关信息")txtInput.SetFocusElseSet DataGrid1.DataSource = rs2DataGrid1.RefreshEnd IfEnd IfEnd IfEnd Sub返回Private Sub cmdReturn_Click()frmMain.ShowUnload MeEnd Sub输出窗口Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer) ' txtInput.Text = DataGrid1.Columns.Item(4) ''获取选中行的第5列数据End Sub窗体Private Sub Form_Load()Dim sql As StringSet conn = New ADODB.ConnectionSet rs = New ADODB.RecordsetCall openconnsql = "select * from stuInfo"rs.CursorLocation = adUseClientrs.Open sql, conn, adOpenDynamic, adLockOptimistic, adCmdTextSet DataGrid1.DataSource = rs 'datagrid绑定数据源End Sub成绩查询返回Private Sub cmdReturn_Click()frmMain.ShowUnload MeEnd Sub确定Private Sub Command1_Click()lblGrade.Caption = Trim(cboCourse.Text) + "课程成绩"Dim sql1 As StringSet rs1 = New ADODB.Recordsetsql1 = "select score.ID,score.Num,score.score from score, course where name='" & cboCourse.Text & "' and score.Num=course.Num"'sql1 = "select * from course"rs1.CursorLocation = adUseClientrs1.Open sql1, conn, adOpenDynamic, adLockOptimistic, adCmdTextSet DataGrid1.DataSource = rs1End Sub窗体Private Sub Form_Load()Dim sql As StringSet conn = New ADODB.ConnectionSet rs = New ADODB.RecordsetCall openconnsql = "select * from course"rs.Open sql, conn, adOpenDynamic, adLockOptimisticDo Until rs.EOFcboCourse.AddItem rs("name")rs.MoveNextLoopEnd Sub选课管理返回Private Sub cmdReturn_Click()frmMain.ShowUnload MeEnd Sub提交Private Sub cmdSubmit_Click()If txtID = "" ThenMsgBox ("请输入学号!!")txtID.SetFocusElseIf lstCourse.Text = "" ThenMsgBox ("请选择课程!!")ElseDim sql1 As StringDim sql2, name As StringSet rs2 = New ADODB.RecordsetSet rs1 = New ADODB.Recordsetsql1 = "select score.ID, score.Num from score , course where ID='" & txtID.Text & "' and name='" & lstCourse.Text & "' and score.Num=course.Num"name = lstCourse.Textsql2 = "select Num from course where name='" & name & " '"rs1.Open sql1, conn, adOpenDynamic, adLockOptimisticrs2.Open sql2, conn, adOpenDynamic, adLockOptimisticIf rs1.EOF Thenrs1.AddNewrs1("ID") = txtID.Textrs1("Num") = rs2("Num")rs1.UpdateMsgBox ("选课成功!!")rs1.CloseElseMsgBox ("已选过该课!!")End IfEnd IfEnd Sub窗体Private Sub Form_Load()Dim sql As StringSet conn = New ADODB.ConnectionSet rs = New ADODB.Recordsetsql = "select * from course"Call openconnrs.Open sql, conn, adOpenDynamic, adLockOptimisticDo Until rs.EOF 'listbox控件利用循环读取课程表中的课程名lstCourse.AddItem rs("name")rs.MoveNextLoopEnd Sub查询确定Private Sub cmdOK_Click()If txtID = "" ThenMsgBox ("学号不能为空!!")txtID.SetFocusElseDim sql As StringDim sum1, sum2 As SingleDim n As IntegerSet conn = New ADODB.ConnectionSet rs = New ADODB.RecordsetCall openconnsql = "select , score.score , course.credit from score , course where score.ID='" & txtID.Text & "' and score.Num=course.Num"rs.CursorLocation = adUseClientrs.Open sql, conn, adOpenDynamic, adLockOptimistic, adCmdTextSet DataGrid1.DataSource = rssum1 = 0sum2 = 0n = 0Do While Not rs.EOFsum1 = sum1 + Val(rs("score"))sum2 = sum2 + Val(rs("credit"))n = n + 1rs.MoveNextLooplblAvg.Caption = Format(sum1 / n, "0.0")lblCredit.Caption = sum2End IfEnd Sub返回Private Sub cmdReturn_Click()frmMain.ShowUnload MeEnd Sub修改学生信息返回Private Sub cmdReturn_Click()frmStu.ShowUnload MeEnd Sub提交Private Sub cmdSubmit_Click()If txtID.Text = "" ThenMsgBox ("学号不能为空!")txtID.SetFocusElseIf txtName.Text = "" ThenMsgBox ("姓名不能为空!")txtName.SetFocusElseIf txtSex.Text = "" ThenMsgBox ("学分不能为空!")txtSex.SetFocusElseIf txtAge.Text = "" ThenMsgBox ("年龄不能为空!")txtAge.SetFocusElseDim sql As StringSet conn = New ADODB.ConnectionSet rs = New ADODB.RecordsetCall openconnsql = "select * from stuInfo where ID='" & txtID.Text & "'"rs.Open sql, conn, adOpenDynamic, adLockOptimisticIf Not rs.EOF Then '判断学号是否存在rs("name") = txtName.Textrs("sex") = txtSex.Textrs("age") = txtAge.Textrs("pro") = cboPro.Textrs.UpdateMsgBox ("修改成功!!")ElseMsgBox ("学号不存在!")End IfEnd IfEnd Sub窗体Private Sub Form_Load()txtID = rs("ID")txtName = rs("name")txtSex = rs("sex")txtAge = rs("age")cboPro.Text = rs("pro")End Sub添加学生返回Private Sub cmdReset_Click()frmStu.ShowUnload MeEnd Sub提交Private Sub cmdSubmit_Click()If txtID.Text = "" ThenMsgBox ("学号不能为空!")txtID.SetFocusElseIf txtName.Text = "" ThenMsgBox ("请输入姓名!")txtName.SetFocusElseIf txtSex.Text = "" ThenMsgBox ("请输入性别!")txtSex.SetFocusElseIf txtAge.Text = "" ThenMsgBox ("年龄不能为空!")txtAge.SetFocusElseDim sql As StringSet conn = New ADODB.ConnectionSet rs = New ADODB.RecordsetCall openconnsql = "select * from stuInfo where ID='" & txtID.Text & "'"rs.Open sql, conn, adOpenDynamic, adLockOptimisticIf rs.EOF Then '判断学号是否存在rs.AddNewrs("ID") = txtID.Textrs("name") = txtName.Textrs("sex") = txtSex.Textrs("age") = txtAge.Textrs("pro") = cboPro.Textrs.UpdateMsgBox ("添加成功!!")frmStu.ShowUnload MeElseMsgBox ("学号已存在!")End IfEnd IfEnd Sub。
学生成绩管理系统项目开发设计文档Ver 1.0编制:骆华审核:2014年8月一、项目介绍随着各个学校的规模不断壮大,学生人数逐年增加。
关于学生成绩管理工作所涉及的数据量越来越大,有的学校不得不靠增加人力、物力来进行学生成绩管理。
但人工管理又有着许多缺陷,比如:效率底、易出错、检索信息慢、对学校的管理提供决策信息较为困难等。
学校不能完全掌握每一个学生的学习情况,这样对学校的教学工作及其不利,使学校的教学质量一直停滞不前,所以我想借本次毕业设计之际,开发一个不仅适用于各校的通用高校学生成绩管理系统,使学校能够充分掌握学生的学习情况,便于学校教学工作的进行和改革。
建立学生成绩管理系统,采用计算机对学生成绩进行管理,进一步提高办学效率和现代化水平。
使学校对学生的成绩能够快速并准确的录入、修改和查询,更好地掌握每个学生的各科成绩,便于教师的管理。
使学生对个人的学习成绩进行更快的查询。
让老师能够更好、更快的了解学生的学习情况,使学校的教学质量进一步的提高。
现在我国的一些院校的学生成绩管理水平普遍不高,有的还停留在纸介质基础上,这种管理手段已不能适应时代的进展,因为它浪费了太多的人力和物力。
在当今的信息时代,这种传统的管理方法必然被计算机为基础的信息管理系统所取代。
如果本系统能被学校所采用,将会改变以往靠手工管理学生成绩的状况,可以树立良好的办学形象,提高工作效率,节省人力和物力。
二、项目需求(一)功能需求该学生成绩管理系统具备三方面的功能:一方面是学生用户,学生通过输入学号和密码进入系统后,可以进行一些基础查询(学生信息查询、班级信息查询、课程信息查询)、成绩管理(成绩查询、计算平均分)重新登陆系统;一方面老师进入该系统则比学生多一些权限:成绩输入、成绩查询。
具体功能的详细描述如下1 选择[学生基本维护]菜单命令,即可进入 [学生基本维护]功能窗体,在其中输入学生的相关信息,如果需要添加或修改学生信息,则单击相应的按纽,输入新信息后单击[添加]就可以了。
汇编语言课程设计课题名称:学生成绩管理系统小组成员:班级:指导教师:日期:2014.06.18 一、选题目的:熟悉汇编语言程序设计的实验环境,主要是熟悉汇编程序的基本结构,编译、连接和调试等基本操作。
利用该题目进行汇编语言程序设计运用的综合性训练,综合运用汇编语言循环程序和子程序编程方法,巩固以及提高汇编语言程序设计能力运用水平,为后续的开发和实验工作打好基础。
二、功能设计:编制一个程序,要求接收从键盘收入的一个班的学生成绩,并存放于50字节的GRADE 数组中,其中GRADE+N保存学号N+1的学生成绩,然后根据GRADE得学生成绩,把学生名次填入50自己的RANK数组中,其中RANK+N的内容是学号N+1学生的名次,在按学号把学生顺序学生名次显示出来。
三、算法流程图:四、运行结果:从键盘输入三个学生的姓名和成绩,按学生成绩升序排序,并显示出排序结果五、程序源代码:data segmentinfor0 db 0ah,0dh,'sort=$'infor1 db 0ah,0dh,'input name:$'infor2 db 0ah,0dh,'input score:$'n equ 8 姓名长度m equ 4 成绩长度(3位+回车符)p equ 3 输入的人数q equ 3 成绩的位数buff1 db n,?,n dup(0),'$' 姓名缓冲区,加$字符以便输入时用 buff2 db m,?,m dup(0),'$' 成绩缓冲区sname db p dup(n+1 dup(0)) 保存姓名score1 dw p dup(m+1 dup(0)) 保存成绩score2 dw p dup(m+1 dup(0))mingci db p dup(0) 名次x dw ?sign1 dw 0sign2 dw 0cont db '1' 计数data endscode segmentassume cs:code, ds:datamain proc farstart:mov ax,datamov ds,axmov es,axmov bx,0mov cx,0call inputcall sortcall printmov ah,4chint 21hmain endpinput procinc bx 输入次数统计cmp bx,p 输入次数>p?ja exitlea dx,infor1 显示提示2mov ah,9int 21hlea dx,buff1 输入姓名mov ah,10int 21hmov al,buff1+1 实际输入个数——a1add al,2 +2.包含bufferl的0、1号单元mov ah,0mov si,ax 回车0d所在位置,跟在最后一个字符后 mov buff1[si],0 将0d换为0,便于输出显示lea dx,infor2 显示提示2mov ah,9int 21hlea dx,buff2 输入成绩mov ah,10int 21hmov al,buff2+1 实际输入个数add al,2 个数+2,包含0、1单元,为找到0dmov ah,0mov si,axmov buff2[si],0 将0d换为0,便于输出显示mov mingci[bx-1],bl bx为输入次数,保存输入的次序cmp bx,1 第一次输入转let1jz let1add sign1,n+1 姓名间隔为n+1add sign2,q 成绩间隔为qlet1: 子程序嵌套call copyjmp inputexit:retinput endpcopy procmov cx,n+1 姓名长度+3(包含$)lea si,buff1+2lea di,sname 姓名传递到snameadd di,sign1 加上间隔值cldrep movsbmov cx,nmov ax,'$' 用$覆盖姓名区,清除已输入的姓名 lea si,buff2+2lea di,score1 成绩传递到score1add di,sign2 加上间隔符cldrep movsblea si,buff2+2mov di,sign2call change 二进制成绩score2retcopy endpchange procmov x,0mov cx,[si-1] 成绩的位数cxmov cx,000fh 保留低四位rept2:mov al,[si] 按位取出成绩cmp al,30h 是否在0、9之间jl exit1cmp al,39hjg exit1and ax,000fhxchg ax,xmov dx,10 将ax中前一次形成的书扩大十倍mul dx 保存到xadd x,axinc siloop rept2mov ax,x 按十进制形成的成绩以二进制保存 mov score2[di],ax 二进制成绩送入score2mov x,0add sign2,2 下一个成绩单元exit1:retchange endpsort procmov cx,p 数组长度dec cxloop1:push cx 保存外循环次数mov bx,0mov si,0loop2: mov ax,score2[bx]cmp ax,score2[bx+m+1] m+1=5jge next 降序xchg ax,score2[bx+m+1] 交换成绩mov score2[bx],axmov al,mingci[si]xchg al,mingci[si+1] 交换名次mov mingci[si],alnext:add bx,m+1inc si 下一个成绩loop loop2pop cx 恢复外循环次数loop loop1retsort endpprint proclea dx,infor0 显示结果提示mov ah,9int 21hmov cx,pmov bx,0mov ax,0mov di,0rept3:mov dl,0ah 回车换行mov ah,2int 21hmov dl,0dhint 21hmov dl,cont 显示名次序号mov ah,2int 21hinc contmov dl,0ah 回车换行mov ah,2int 21hmov dl,0dhint 21hmov ax,0mov al,mingci[di] 取名次dec al 位置-1,因为地址从0开始 mov bl,9mul bllea dx,snameadd dx,ax 偏移地址+姓名位移量mov ah,9 显示姓名int 21hmov dl,0ah 回车换行mov ah,2int 21hmov dl,0dhint 21hmov ax,0mov bx,0mov al,mingci[di] 取名次dec al 地址从0开始mov bl,5mul bllea dx,score1add dx,axmov ah,9 显示成绩int 21hinc diloop rept3retprint endpcode endsend start六、自我评价:本次大作业做的是显示学生名次表,重要考察的是复杂程序设计中,采用模板块结构可以划分功能,分解程序,在各个程序之间存在参数传递问题,强调了传递方式和嵌套调用层次的运用。
软件项目管理大作业学生成绩管理系统08软件工程张昱目录0. 文档介绍 (3)0.1文档目的 (3)0.2文档范围 (3)0.3读者对象 (3)0.4参考文献 (3)0.5术语与缩写解释 (3)1. 项目介绍 (4)1.1项目范围 (4)1.2项目目标 (4)1.3客户与最终用户介绍 (4)1.4开发方介绍 (4)1.5制约 (4)2. 项目过程定义 (5)2.1过程模型 (5)2.2方法与工具 (5)3. 人力资源计划 (6)4. 软硬件资源计划 (6)5. 财务计划 (7)6. 任务与进度 (7)7. 下属计划 (8)附录A 项目估计 ................................................................................... 错误!未定义书签。
A.1产品的WBS ............................................................................... 错误!未定义书签。
A.2产品规模估计............................................................................. 错误!未定义书签。
A.3工作量估计................................................................................. 错误!未定义书签。
A.4成本估计 .................................................................................... 错误!未定义书签。
附录B 项目计划审批 ........................................................................... 错误!未定义书签。
UML课程设计学生成绩管理系统学院:计算机专业:软件工程学号:06103107姓名:兰青海1.可行性研究报告 (3)2需求规格说明 (4)3.设计说明3.1功能设置 ........................................................... 错误!未定义书签。
3.2模块划分 ........................................................... 错误!未定义书签。
3.3识别参与者和用例 ........................................... 错误!未定义书签。
4.其他的uml图 (10)5.系统数据库设计 (12)5.1数据库的需求分析 (13)5.2数据库的逻辑设计 (14)6.参考文献: ....................................................... 错误!未定义书签。
1.可行性研究报告随着网络通信技术的迅速发展和信息技术的广泛应用,计算机的应用已普及到经济和社会生活的各个领域。
教育领域也不例外,现今已经出现了各种远程网络在线教育系统、图书馆管理系统、学籍管理系统……其中学生成绩管理是任一院校都不可缺少的部分,它的内容对于学校的决策者和教学管理者来说都至关重要,而传统的人工管理方式效率较低,为数据的查询、更新和维护代来了极大的不便。
所以学生学籍管理信息系统的开发和应用是必要的,它能够为管理人员提供充足的信息和快捷的查询手段,提高学校学籍管理的效率系统的可行性分析(1)系统实施运行的可行性:各教师,学生都已熟练掌握计算机的基本实用方法和操作技能,对新系统的开发,表现出极大的热情。
提出了很多好的建议和要求。
(2)技术可行性:校园网已正常运行;开发人员已熟练掌握开发工具。
技术上实现系统是可行的。
(3)经济可行性:校园内部局域网络已经建成;硬件投入不需要很大。
#include<stdio.h>#include<string.h>#include<process.h>#include<conio.h>#include<stdlib.h>#define N 30#define M 3typedef struct student{ char number[10];char name[20];float score[M];float aver;float total;}STU;STU stu[N];int n;void inputscore(void);void savescore(void);void avergescore(void);void total(void);void modifyscore(void);void lookscore(void);void searchscore(void);void statistic(void);void add(void);void modify(void);void delscore(void);void menu(void);void main(){ short int flag=0;menu();do{ flag=1;switch(getch()){ case'1':inputscore();break; /*输入成绩*/case'2':lookscore();break; /*查看成绩*/case'3':searchscore();break; /*查找成绩*/case'4':statistic();break; /*成绩统计*/case'5':modify();break; /*修改成绩*/case'6':add();break; /*添加成绩*/case'7':delscore();break; /*删除成绩*/case'8':savescore();break; /*保存成绩*/case'9':exit(0); /*退出程序*/default:printf("输入有误\n");}printf("按任意键继续\n");getch();menu();}while (flag==1);}void menu(void){system("cls");printf("\n");printf("**********欢迎进入学生成绩管理系统**********\n");printf(" 菜单\n");printf("输入成绩-------------1\n");printf("查看成绩及成绩排序--------2\n");printf("查询学生成绩------------3\n");printf("成绩统计-----------------4\n");printf("修改成绩-------------5\n");printf("添加成绩-------------6\n");printf("删除成绩-------------7\n");printf("保存成绩-------------8\n");printf("推出系统-------------9\n");printf("********************************\n");printf("请输入您的选择\n");}/********输入各个同学的学生信息(王超)**********/void inputscore(void){ int i,j;system("cls");printf("请输入学生总数: \n");scanf("%d",&n);printf("提示:*输入学号时请输入由1位大写字母和8位数字组成的学号,如P0********\n"); /*因二维表上下需要对正故有此要求*/for(i=0;i<n;i++){ printf("请输入学生%d的学号姓名:\n",i+1);scanf("%s%s",stu[i].number,stu[i].name);printf("高数\t物理\tC语言\n");for(j=0;j<M;j++)scanf("%f",&stu[i].score[j]);}printf("成功输入\n");}/***********计算各个同学的总分(孙友)**************/void total(void){ int i,j;for(i=0;i<n;i++){ stu[i].total=0;for(j=0;j<M;j++){stu[i].total+=stu[i].score[j];}}}/***********计算各个同学的平均分**********/void avergescore(void){ int i,j;for(i=0;i<n;i++){ stu[i].aver=0;for(j=0;j<M;j++){stu[i].aver+=stu[i].score[j];}stu[i].aver=stu[i].aver/M;}}/*******查看学生成绩及平均分对学生进行排序*********/void lookscore(void){int i,j,k;STU t;total();avergescore();system("cls");for(i=0;i<n-1;i++){for(k=i,j=i+1;j<n;j++)if(stu[i].aver<stu[j].aver){t=stu[j];stu[j]=stu[i];stu[i]=t;}}printf("名次\t学号\t\t姓名\t高数\t物理\tC语言\t总分\t平均分\n");for(i=0;i<n;i++){printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].total);printf("%4.2f\t",stu[i].aver);printf("\n");}}/********通过输入学号查找学生成绩**********/void searchscore(void){char a[10];int i,j;system("cls");printf("请输入需要查询的学生学号\n");scanf("%s",a);for(i=0;i<n;i++){if(strcmp(a,stu[i].number)==0){printf("名次\t学号\t\t姓名\t高数\t物理\tC语言\t总分\t平均分\n");printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].total);printf("%4.2f\t",stu[i].aver);printf("\n");break; /*找到该学生的成绩信息后跳出for循环*/ }else if (i<n-1)continue;elseprintf("未找到该学生信息\n");}}/******统计学生成绩信息,平均分及格率,优秀率*********/void statistic(void){STU *p=stu;int i,j;float count=0.0,sum=0.0;system("cls");for(i=0;i<n;i++){sum+=(p=i)->aver;}printf("该班级平均分为%4.2f\n",sum/n); /*平均分计算*/for(i=0;i<n;i++){if((p+1)->aver>=60)count++;}printf("该班级及格率为%4.2f%%\n",count/n*100); /*及格率计算*/ count=0.0;for(i=0;i<n;i++){if((p+1)->aver>=90)count++;}printf("该班级优秀率为%4.2f%%\n",count/n*100); /*优秀率计算*/ printf("平均分低于60的学生名单\n");for(i=0;i<n;i++){if(stu[i].aver<60)printf("%s\n",stu[i].name);} /*统计不及格学生的名单*/}/************修改学生成绩********/void modify(void){char a[10];int i,j;system("cls");printf("请输入需要修改成绩的学生学号\n");scanf("%s",a);for(i=0;i<n;i++){if(strcmp(a,stu[i].number)==0){printf("名次\t学号\t\t姓名\t高数\t物理\tC语言\t总分\t平均分\n");printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].total);printf("%4.2f\t",stu[i].aver);printf("\n");printf("请重新输入该学生的学号姓名:\n");scanf("%s%s",stu[i].number,stu[i].name);printf("请重新输入学生成绩:\n");printf("高数\t物理\tC语言\n");for(j=0;j<M;j++)scanf("%f",&stu[i].score[j]); /*找到该学生成绩后进行修改,跳出for循环*/printf("修改成功\n");break;}else if (i<n-1)continue;elseprintf("请确认该学生是否喂本班级学生!\n");}}/**********添加学生成绩**********/void add(void){int a,i,j;system("cls");printf("请输入新增加的学生人数:\n");scanf("%d",&a);n=n+a;for(i=n-a;i<n;i++){printf("请输入学生%d的学号姓名:\n",i+1);scanf("%s%s",stu[i].number,stu[i].name);printf("请输入学生成绩:\n");printf("高数\t物理\tC语言\n");for(j=0;j<M;j++)scanf("%f",&stu[i].score[j]);printf("添加成功\n");}}/******************删除学生成绩***********************/void delscore(void){int i,j,c;char m,a[10];system("cls");printf("请输入学生学号\n");scanf("%s",a);for(i=0;i<n;i++){if(strcmp(a,stu[i].number)==0){printf("名次\t学号\t\t姓名\t高数\t物理\tC语言\t总分\t平均分\n");printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].total);printf("%4.2f",stu[i].aver);printf("\n");c=i;break;}elseprintf("未找到该学生信息\n");}printf("是否删除该学生成绩(y\n)\n");scanf("%s",&m);if(m=='y'){for(i=c;i<n-1;i++)stu[i]=stu[i+1]; /*结构体整体赋值将后一位学生成绩信息拷贝进入前一位学生信息的存储位置*/n=n-1; /*删除该学生信息后学生总数减一*/printf("删除成绩成功\n");}elseprintf("删除成绩失败\n");}/*****************保存学生成绩************************/ void savescore(void){FILE*fp;int i,flag=1;char m;system("cls");puts("是否保存学生成绩(y/n)");scanf("%s",&m);if(m=='y'){if((fp=fopen("score.dat","wb"))==NULL){printf("文件打开失败\n");return;}for(i=0;i<n;i++)if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1){printf("保存失败\n");flag=0;}if(flag==1)printf("保存成功!\n");fclose(fp);}elsereturn 0;}。
总体设计编写目的:根据需求分析文档,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案并写出书面文档总体设计说明书,为下一步进行详细设计做准备。
总体设计:1.该系统可以按功能进行模块划分,其模块图如下:系统模块图其中:录入学生信息模块完成信息的输入功能,输入信息包括学号,姓名,3门课成绩。
显示学生成绩模块显示学号,姓名,3门课成绩。
查询学生成绩信息模块完成学生成绩的查询。
修改学生成绩信息模块完成学生成绩的修改功能。
删除学生成绩模块完成对学生成绩的删除。
增加学生成绩模块完成对学生成绩增加功能。
按学生平均成绩降序排名完成对学生名次的排列功能。
计算所有学生的总成绩模块完成对学生的总成绩的计算。
按某学科成绩降序排列完成单科成绩的排名。
使用密码登陆模块完成系统的登陆。
修改密码模块完成对密码的修改功能。
2.数据结构本系统中主要的数据结构就是学生成绩的信息,包含学号、姓名、C语言成绩,JAVA成绩,VB成绩等,在处理过程中各项可以作为一个学生的不同属性来进行处理3.程序流程系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用户选择关闭系统为止,其间应对用户的选择做出判断及异常处理。
系统的流程图如下:详细设计编写目的:根据项目概要设计说明书,在项目概要设计的基础之上,对系统进行详细设计,以便下一步进行程序编码工作。
详细设计:对应于总体设计时的系统功能模块图,各个功能模块的处理逻辑如下:一、密码登陆模块For(死循环){输入密码If(密码输入正确)进入登陆界面;If(输入sg)转入修改密码界面使用break语句跳出循环}二、密码修改模块输入原始密码If(输入错误)重新输入If(输入正确)提示输入新密码第一次输入新密码第二次输入新密码IF(两次输入密码一致)修改密码成功三、信息输入模块定义flag为1While(flag){输入信息IF(继续输入),继续循环IF(输入结束),置flag为0;跳出循环;}跳转到主选菜单;四、显示信息模块For(遍历所存结构体){ 输出结构体多包括的信息}清屏;跳转到主选菜单;五、查询信息模块输入要查的学号;For(遍历所存结构体){If(学号为要查询的学号)输出学生信息;}If(遍历结束没有找到)输出错误提示信息;跳转到主选菜单;六、修改信息模块For(遍历所存结构体){If(学号为要修改的学号)输入新信息并保存;}If(遍历结束没有找到)输出错误提示信息;跳转到主选菜单;七、删除信息模块For(遍历所存结构体){If(学号为要删除的学号)将所有学生结构体序号前移;}If(遍历结束没有找到)输出错误提示信息;跳转到主选菜单;八、增加信息模块定义flag为1While(flag){学生人数加一输入信息IF(继续输入),继续循环IF(输入结束),置flag为0;跳出循环;}跳转到主选菜单;九、按平均成绩排序模块For(遍历所存结构体){计算平均成绩}用冒泡排序法排序输出排序后信息十、计算总成绩模块For(遍历所存结构体){计算总成绩}输出排序后信息清屏;返回主选菜单;十一、按某学科成绩降序排列模块.输入参考学科;For(遍历所存结构体)按学科成绩用冒泡排序法排序输出排序后信息;十二、显示某学科平均成绩模块For(遍历所存结构体){计算平均成绩}输出带有平均成绩的信息清屏;返回主选菜单;十三、计算优秀学生人数模块输入参考学科For(遍历所存结构体){if(学生成绩大于90)优秀人数加一}输出优秀学生人数;十四、计算不及格人数模块输入参考学科For(遍历所存结构体){if(学生成绩小于60)不及格人数加一} 输出优秀学生人数;数据结构:struct student{int num; //学生学号char name[25]; //学生姓名float score[3]; //学生成绩float aver; //平均成绩float total; //总成绩}stu[N];。
目录1 设计要求 (1)2 数据库设计 (1)2.1 概念设计 (1)2.2 逻辑设计与物理结构的设计 (2)2.3 数据库的输入 (2)3 程序设计 (4)3.1 学生信息操作 (5)3.2 学生成绩操作 (13)4 调试报告 (26)5 心得体会 (26)6 参考文献 (26)学生成绩管理系统1 设计要求管理信息系统MIS(Management Information System),在强调管理, 强调信息的现代社会中越来越得到普及, 如: 人事管理、学生管理系统、工资管理系统等。
常用的MIS系统都是基于数据库操作, 实现信息的查询、增加、删除、修改等。
学生成绩管理系统是用AECESS数据库进行数据库的设计和添加数据, 在设置数据源(ODBC)建立数据库与程序的连接后, 利用VC开发可视化界面完成基于数据库的操作, 实现学生信息的查询、增加、删除、修改和成绩信息的查询、增加、删除、修改、排序、统计等功能, 从而实现学生成绩信息的多方位显示, 方便管理者对学生成绩的管理。
2 数据库设计2.1 概念设计根据设计要求, 要对学生信息和成绩进行操作, 所以系统实体包括学生基本信息表和课程基本信息表。
学生成绩管理系统中它们的联系是一个学生可以选修多门课程, 一门课程可以被多个学生选修, 学生和课程之间是多对多的关系, 。
由以上分析可以得该系统的E-R关系图:2.2 逻辑设计与物理结构的设计根据概念设计中的E-R图, 可设计三个表, 其关系模型如下: 学生基本信息表: 学号, 姓名, 性别, 年龄, 系别课程基本信息表: 课程号, 课程名, 课时成绩表:学号, 课程号, 成绩在ACCESS中定义三个表的物理结构如下:图2 学生信息表物理结构图3 课程信息表物理结构图4 成绩表物理结构2.3 数据库的输入在ACCESS中定义好物理结构后就可以输入数据, 同时根据系统的要求, 用ACCESS做了两个查询, 分别是成绩查询和平均分查询, 为以后写程序的方便, 对平均分查询进行了按平均分从高到低排序操作。
实验十一学生成绩管理系统(用函数实现)实验类型:验证性要求:必做学时:2实验目的:1.掌握函数的定义方法2.掌握函数的调用及函数声明3.掌握函数实参与形参的对应关系及“值传递”的方式4.掌握函数的嵌套调用和递归调用方法5.掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法6.掌握在实际项目中模块化设计与编码实验内容:1.编写一个小型学生成绩管理系统,系统操作通过菜单(文本或图形菜单均可)的形式完成。
包括:数据输入,数据输出,数据添加,数据删除,数据查找,数据排序等,各功能模块要求用独立的函数来表示,通过主函数直接或间接调用。
源程序:#include "stdio.h"#include<conio.h>#include <windows.h>typedef struct{int number;char name[30];int chinese;int math;int english;int avg_grade;}STU;STU student[100];int length;bool search_exist(int number);void menu(){printf("\n请输入选项1——6\n");printf("1——数据输入\n");printf("2——数据输出\n");printf("3——数据添加\n");printf("4——数据删除\n");printf("5——数据查找\n");printf("6——数据排序\n");}void input(){int n;printf("请输入学生的人数:");scanf("%d",&n);length=n;printf("请输入N个学生的学号,姓名,以及3门成绩:");for(int i=0;i<n;i++){scanf("%d%s%d%d%d",&student[i].number,student[i].name,&student[i]. chinese,&student[i].math,&student[i].english);student[i].avg_grade=(student[i].chinese+student[i].math+student[i ].english)/3;}}void output(){printf("学号姓名语文数学英语平均成绩 \n");for(int i=0;i<length;i++)printf("%3d%10s%8d%8d%8d%8d\n",student[i].number,student[i].name,s tudent[i].chinese,student[i].math,student[i].english,student[i].avg_gr ade);}void add(){printf("请输入待添加的学生的学号,姓名,以及3门成绩:\n");scanf("%d%s%d%d%d",&student[length].number,student[length].name,&s tudent[length].chinese,&student[length].math,&student[length].english) ;student[length].avg_grade=(student[length].chinese+student[length] .math+student[length].english)/3;while(1){if(search_exist(student[length].number)){printf("温馨提示:-------------该学号已经存在,请换一个学号!-------------\n");printf("请输入待添加的学生的学号,姓名,以及3门成绩:\n");scanf("%d%s%d%d%d",&student[length].number,student[length].name,&s tudent[length].chinese,&student[length].math,&student[length].english) ;student[length].avg_grade=(student[length].chinese+student[length] .math+student[length].english)/3;}elsebreak;}length=length+1;}void del(){int del_num;printf("请输入被删除学生的学号:"); scanf("%d",&del_num);for(int i=0;i<length;i++){if(student[i].number==del_num)break;}if(i==length){printf("没有用该学生的记录!"); }else{for(int k=i;k<length;k++)student[k]=student[k+1];length=length-1;}}void search(){int search_num;printf("请输入待查找学生的学号:"); scanf("%d",&search_num);for(int i=0;i<length;i++){if(student[i].number==search_num) break;}if(i==length){printf("没有该学生的记录!");}else{printf("该学生的记录如下:\n");printf("学号姓名语文数学英语平均成绩 \n");printf("%3d%10s%8d%8d%8d%8d\n",student[i].number,student[i].name,s tudent[i].chinese,student[i].math,student[i].english,student[i].avg_gr ade);}}bool search_exist(int number){for(int i=0;i<length;i++){if(student[i].number==number)break;}if(i==length)return false;elsereturn true;}void sort(){int k2,k1,index;STU temp;for(k1=0;k1<length-1;k1++){index=k1;for(k2=k1+1;k2<length;k2++){if(student[k2].avg_grade<student[index].avg_grade)index=k2;}temp=student[index];student[index]=student[k1];student[k1]=temp;}printf("按照平均成绩排序后的记录如下:\n");output();}void main(){system("color 3a");for(int m=0;m<30;m++){printf("■");Sleep(150);}system("cls");int choice;char yesorno;do{menu();scanf("%d",&choice);switch(choice){case 1:input(); break;case 2:output(); break;case 3:add(); break;case 4:del(); break;case 5:search(); break;case 6:sort(); break;default:printf("%d为非法选项\n",choice); }printf("\n要继续选择吗?(Y/N)\n");getchar();yesorno=getchar();if(yesorno=='n'||yesorno=='N')break;}while(yesorno=='y'||yesorno=='Y');}运行结果:。
学生成绩管理系统项目开发计划目录一.引言 (2)1.编写目的 (2)2.项目背景 (2)3.定义 (2)4.参考资料 (2)二.项目概述 (3)1.工作内容 (3)2.条件与限制 (3)3.产品 (3)4.运行环境 (4)三.功能 (4)1.功能定义 (4)2.模块功能介绍 (4)四.实施计划 (5)1.人员配置 (5)2.项目进度 (5)3.人员组织及分工 (5)4.预算 (5)5.关键问题 (6)五.支持需求 (6)1.硬件系统: (6)2.服务器系统: (6)六.专题计划要点 (6)1.开发人员培训计划: (6)2.项目跟踪计划 (6)3.安全保密计划: (7)4.质量保证计划: (7)七.交付期限 (7)一.引言1.编写目的为了保证项目团队按时保质地完成项目目标,便于项目团队成员更好地了解项目情况,使项目工作开展的各个过程合理有序,因此以文件化的形式,把开发过程中各项工作的人员、分工、经费、系统资源条件等问题的安排记录下来,作为项目团队成员以及项目干系人之间的共识与约定,项目团队开展和检查项目工作的依据,以便计划开展和确保项目开发成功。
2.项目背景随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能以为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对学生成绩管理信息进行管理,具有手工管理所无法比拟的有点。
例如,检索迅速、查找方便、可靠性高、存储量高、保密性好、寿命长、成本低等。
这些有点能够极大地提高学生档案管理的效率,也是企业科学化、正规化管理,与世界接轨的重要条件。
因此,开发大学成绩管理系统很有必要。
学生成绩管理系统是一个学校不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该为用户提供充足的信息和快捷的查询手段。
同时,学生成绩管理是各大学的主要日常管理工作之一,涉及到校、系、师、生的诸多方面,随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,学生成绩日常管理工作及保存管理日趋繁重、复杂。
学生成绩管理系统一、实验题目设计学生成绩管理程序(3门课程),实现以下功能:1.各科成绩的录入、修改和删除(10个学生,每人3门成绩,分别按学生存放。
即学生编号*,语文成绩*,语文成绩名次,数学成绩*,数学成绩名次,英语成绩*,英语成绩名次,后面的三个单元存放该生总成绩、名次、平均成绩)带*号的为录入值2.排序:(1)单科课程成绩排序(分数从高到低):结果放到每门成绩之后的名次单元中(2)总成绩排序(分数从高到低):结果放到每个学生后面的名次单元中3查找:(1)查询某位同学某课程成绩及名次;总成绩及名次.(2)查询单科课程不及格同学名单4.统计:(1)单科平均分(2)总成绩平均分(3)单科各分数段人数(60以下,60~70,70~80,80~90,90~100)二、设计思路1.数据定义。
每个学生记录由学生编号,语文成绩,语文成绩名次,数学成绩,数学成绩名次,英语成绩,英语成绩名次,总成绩、名次、平均成绩组成。
其它数据,单科平均成绩,总成绩平均分,单科各分数段人数。
学生编号=0 {数字字符串} 5成绩=0 {数字字符串} 3名次=1 {数字字符串} 2分数段人数=5 { 数字字符串}5索引表元素=无符号双字节数所有成绩数据,语文成绩、数字成绩、英语成绩、总成绩、平均成绩,均采用上述成绩的定义;所有名次数据,均采用上述名次定义。
2.数据存储。
所有数据存储于文件中。
每条学生记录占用70个字节,实际有效字节为24字节,记录最后两个字节是回车换行符,其余字节为空字符,学生记录从第0个字节开始存储。
第1000个字节开始用以存储索引表。
单科平均成绩,总成绩平均分,单科各分数段人数存储在所有学生记录之后的单元中。
成绩数据,占用三个字节,排名数据占用两个字节,学号数据占用五个字节,各科分数段人数占用五个字节,有效字节不足时,在其后补上空字符,即0,如,成绩100存储为31H,30H,30H;90存为39H,30H,00H。