管理信息系统课程设计怎么做
制作步骤:
1、系统开发背景:
随着科学技术的发展和整个社会的进步,计算机技术也得到了很大的提高,特别是微型计算机的大范围普及,使计算机的应用逐渐由科学计算、实时控制等方面向非数值处理的各个领域中渗透并发挥着越来越重要的作用。
2、系统研究方法:
根据系统服务对象的实际情况和对管理员工信息和管理员工薪资的具体需求,结合数据库原理及应用,软件工程开发方法,在经过深入地学习之后,开发了此人事工资管理系统。以下将具体介绍整个开发过程中所涉及的问题及解决方法。
3、可行性分析:
①管理可行性 ;
②经济可行性 ;
③操作可行性 ;
4、系统功能需求分析:
管理系统是为服务于人类某类行业,要求系统界面美观大方,数据的修改和删除简单方便,数据具有可靠性和稳定性。
5、组织结构分析:
6、数据库设计:
数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。
1成绩管理系统------分析报告(不知如何贴数据流程图之类的到这里,所以把相关图片贴到空间里啦)(另:数据字典是表格形式啦,贴来这里就变了。)
一 . 引言
1.系统名称:学生成绩管理信息系统
2.开发目标:开发出一个操作简便,界面友好,灵活实用,安全可靠的学生成绩管理信息系统。
该系统的开发以教务管理人员和任课教师服务为对象,能够提高学校对学生成绩的统计分析效率,减轻教务管理人员对学生成绩管理和统计的负担,提高学校对学生成绩的规范化管理。
该成绩管理系统能够及时对学生成绩进行收集整理,使学校相关部门及时获取可靠的学生成绩信息,便于管理。
3.主要功能:
本系统的使用者根据其使用者------教务处管理人员和任课教师-----可分为以下几方面:
(1)教务处管理人员登陆后,进入教务人员管理模块,可以进行个人信息查询,教师住处职称工资情况的查询,学生信息查询,成绩查询以及退出系统等操作。
(2)教师登陆教师管理子系统,要能够对学生成绩进行权限范围内的录入、添加、修改、删除、查询;查询教师信息、更改个人登陆密码、修改个人信息等;
(3)学生单科成绩、全科成绩的总分、平均分,最高分、最低分,排序等计算和统计实现自动化;可以按班级、按个人进行信息查询;信息可以发布到网络,以实现数据共享;
(4)能够自动进行录入错误检查
4.开发背景
每个学校都需要在学期末进行期末考试成绩的统计分析工作,而这些工作都必须在考试结束后近一个星期的时间内完成。大量的成绩数据的统计分析工作如果只靠人工来完成,费时费力,还容易出错。随着计算机技术的飞速发展,计算机在日常管理应用中迅速普及,利用计算机进行学生成绩管理势在必行。因此需开发出一个能满足学校进行成绩的录入,统计,查询,报表和打印等需求的、功能完善、安全可靠、迅速简便的成绩管理信息系统。
二. 系统目标和开发的可行性
1.系统目标:
(1)为教务处管理人员提供各学期、各年级、各班级学生的基本成绩信息,以作为其进行成绩汇总,分析和考绩和总结评比的依据。
(2)方便各任课教师记录,统计所带班学生成绩,提高工作效率,减轻负担;总结经验,提高教学质量。
(3)实现快速方便地处理大量成绩数据信息,完成成绩的录入、添加、修改、删除、统计、查询、排序等处理要求。
(4)输出和打印成绩单和各种成绩报表。
2.开发的可行性
(1)系统的名称、功能、目标等已如前所述,此地不再重复。
(2)系统环境以及工具:
A. 软件环境:
用户端:Windows2000,Windows2003,Windows XP
服务器端:WindowsNT/Windows2000及以上操作系统
编程语言:SOL
数据库:Access2003
B 硬件环境:
有高性能的电子计算机、大容量的存贮装置,个人电脑(终端)以及联结起来的网线等,组成信息资源共享的计算机网络,有共享的打印机,扫描仪等等
(3)系统设计原则:
1) 系统运行安全可靠,稳定性好;
2) 系统的可管理性和可维护性好;
3) 系统输入界面友好,操作简便易行,尽量减少用户的输入工作量;
4)允许多种数据输入方式,能实现多种查询,允许进行模糊查询;
5)数据具有规范性,整体性,方便数据之间的比较分析。
(4)系统可行性分析:
A. 技术可行性:系统要求在windows2000以上环境运行,后台数据库采用access2003,使用SOL编程,采用ADO方式连接数据库,这些在目前都是容易实现的。程序将部分需要经常调用的数据存入内存,可提高程序运行速度.
B.经济可行性:在经济上,用此系统加强了成绩信息管理效率,为教务人员提供了较高的效率,可节省人力资源的开支。
C.管理的可行性:在工作上,教务人员管理学生信息量非常大,开发了此系统,可极大提高教务人员的工作的效率。方便成绩的储存和修改,及以后随时查询成绩信息,是一个比较人性化的管理系统。
(5).系统分析结论:
由以上分析得出,本系统可进行开发。
三. 现行系统概况
1.现行系统现状调查
现有的学生成绩管理系统主要是以成绩数据信息的存储和统计为目标,而且系统的设计繁琐,管理不够专人化,需要的人员过多,因此系统的安全性保密性不好;查询功能简单,数据共享性不高。
2.系统需求说明
(1)系统需要在实现数据录入,存储,统计自动化的基础上增强查询功能;
(2)要能够充分利用网络扩大信息共享程度;
(3)设专人管理员,明确划分管理权限,规范管理,以提高系统的安全性保密性。
四. 新系统的逻辑方案
1.业务流程图
2.数据流程图
(1)顶层图:
(2)第一层:
(3)第二层:
A:身份验证图:
B:成绩变动处理科:
C:教务人员身份验证:
3.数据字典
A:数据存储条目:
编号 名称 组成
D1.1
教师信息表 教师编号,教师姓名,教师职称,所教班级,所在学院
D1.2
学生成绩记录单 学生学号,姓名,课程名称,课程编号,课程成绩,教师编号
D1.3
教务人员信息表 教务人员姓名,编号,职称
D1.4
反馈信息表 教务处人员信息后对教师的评价,学生成绩的分析
B:数据加工条目:
编号 名称 输入 处理逻辑 输出
P1.1 身份验证处理 教师登陆信息 检验教师教工号与密码是否一致 ———
P1.2 成绩变动处理 学生学科成绩 录入、修改、删除成绩并检验是否输入错误 学生成绩记录单
P1.3 成绩查询处理 学生班别、学号、姓名 查询学生成绩,排序等 学生成绩记录单
P1.4
身份验证处理 教务人员登陆信息量 检验教务人员编号与密码 ———
P1.5 成绩查询处理 学院编号、年级、学号 查询班级成绩、排序及学期平均分等 学生成绩记录单及对教师的反馈信息
C:数据元素项目:
编号 名称 数据类型 长度 小数位 取值范围 说明
01 教师编号 N 8 0
02 教师名字 C 8
03 教师职称 C 6
04 所教班级 N 8 0
05 学生学号 N 8 0
06 学生姓名 C 8
07 课程名称 C 16
08 课程编号 N 10
09 成绩 N 3 1 0~~100
10 教务人员编号 N 8 0
11 教务人员姓名 C 8
12 教务人员职称 C 6
五.系统实施计划:
1.工作任务分工:
系统初步规划:
实验报告填写及图表绘制:
系统编程:,
后期系统检测完善:
2.进度安排:
系统分析阶段:2006.6.11—2..6.6.13
系统设计阶段:20066.20—2006.6.24
系统实施阶段:2006.25—2006.6.29
__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
2系统设计报告:
系统设计报告
一、概述
以需求分析说明书为依据,针对教务管理人员及教师对学生成绩的管理需求,参照现有的开发环境,利用可用资源和使用环境,设计出能满足相应功能的特点,构造并确定出类和类成员函数。
二、环境说明
1.硬件环境:CPU型号为Pentium Ⅲ以上,内存128M以上。
系统环境:Windows98 及WindowsXP等系统均可。
2.开发环境:Access软件下开发,此软件是面向对象的开发工具,易于上手,而且界面比较友好
三、模块图
四、功能模块
本系统大致分为如下四大功能模块。
1.用户登陆模块
用户登陆模块:(教务处管理人员---叶飞—密码:950281)
(教师---刘力—密码:980102)
A:教务处管理人员登陆后,进入教务人员管理模块,可以进行个人信息查询,教师住处查询,学生信息查询,成绩查询以及退出系统等操作。
B:教师登陆后,进入教员管理模块,可以进行个人资料修改,学生信息查询,本班成绩查询,其它班成绩查询,退出登陆等操作。
2.查询及修改模块
包括以下四个模块:
A:学生个人信息查询模块:此模块又分为学生个体模块和班级模块。学生个体模块包含了学生的基本信息以及成绩,可进行如学生所在班组,学院,专业,英语成绩等相关查询操作;
在班级模块则可按班级查询学生的信息。
B:教师信息查询及修改模块:此模块主要服务于教务管理人员,可以通过打开“教师表”或“单个教师信息”进行总体或指定个体查询,如对教师工龄、工资额的设定,对各个工龄段及相应的工龄工资额进行修改、添加、删除等操作。
C:成绩查询及修改模块:该模块又分为三部分:按指定学号进行学生个体成绩查询及修改; 按指定教工号进行教师所教班级成绩查询; 按指定班级号或专业号进行综合成绩查询其中还包括教师对其它班成绩的查询(但不无修改权)。
成绩查询具体内容包括指定科目成绩查询,成绩排序,排名,平均分和不及格科目查询等
D:用户信息修改模块:此模块用于教务管理人员及教师修改密码或用户名,教师教课班级及工资职称等信息的修改。
3.退出模块
查询修改完毕,通过退出模块退出成绩管理系统,以确保系统及个人信息的安全。
五、代码设计:
1 用户登陆模块代码:
A:教务处管理人员登陆
◆Private Sub 教务处人员登录_Click()
On Error GoTo Err_教务处人员登录_Click
Dim stDocName As String
stDocName = ChrW(25945) &ChrW(21153) &ChrW(22788) &ChrW(20154) &ChrW(21592) &ChrW(30331) &ChrW(24405)
DoCmd.RunMacro stDocName
Exit_教务处人员登录_Click:
Exit Sub
Err_教务处人员登录_Click:
MsgBox Err.Description
Resume Exit_教务处人员登录_Click
End Sub
B: 教师登陆
◆Private Sub 教师登录_Click()
On Error GoTo Err_教师登录_Click
Dim stDocName As String
stDocName = ChrW(25945) &ChrW(24072) &ChrW(30331) &ChrW(24405)
DoCmd.RunMacro stDocName
Exit_教师登录_Click:
Exit Sub
Err_教师登录_Click:
MsgBox Err.Description
Resume Exit_教师登录_Click
End Sub
◆Private Sub ok_Click()
If Len(Nz(Me!UserName)) = 0 And Len(Nz(Me!UserPassword)) = 0 Then
MsgBox "用户名、密码为空!请输入", vbCritical, "error"
Me!UserName.SetFocus
ElseIf Len(Nz(Me!UserName)) = 0 Then
MsgBox "用户名为空!请输入", vbCritical, "error"
Me!UserName.SetFocus
ElseIf Len(Nz(Me!UserPassword)) = 0 Then
MsgBox "密码为空!请输入", vbCritical, "error"
Me!UserName.SetFocus
Else
If Me!UserName = "刘力" Then
If UCase(Me!UserPassword) = "980102" Then
MsgBox "欢迎使用!", vbInformation, "成功"
DoCmd.OpenForm "教师-综合信息查询"
Else
MsgBox "密码有误,非正常退出。", vbCritical, "error"
DoCmd.Close
End If
Else
MsgBox "用户名有误,非正常退出。", vbCritical, "error"
DoCmd.Close
End If
End If
End Sub
2 学生个人信息查询模块代码
A:指定学生信息查询:
◆ Private Sub Command1_Click()
On Error GoTo Err_Command1_Click
Dim stDocName As String
stDocName = ChrW(23398) &ChrW(29983) &ChrW(20010) &ChrW(20154) &ChrW(20449) &ChrW(24687) &ChrW(26597) &ChrW(-29726)
DoCmd.OpenQuery stDocName, acNormal, acEdit
Exit_Command1_Click:
Exit Sub
Err_Command1_Click:
MsgBox Err.Description
Resume Exit_Command1_Click
End Sub
B:班级所有学生信息查询:
◆Private Sub Command20_Click()
On Error GoTo Err_Command20_Click
Dim stDocName As String
stDocName = ChrW(29677) &ChrW(32423) &ChrW(23398) &ChrW(29983) &ChrW(20449) &ChrW(24687) &ChrW(26597) &ChrW(-29726)
DoCmd.OpenQuery stDocName, acNormal, acEdit
Exit_Command20_Click:
Exit Sub
Err_Command20_Click:
MsgBox Err.Description
Resume Exit_Command20_Click
End Sub
3 教师信息查询及修改模块代码
A:指定教师信息查询
◆Private Sub Command13_Click()
On Error GoTo Err_Command13_Click
Dim stDocName As String
stDocName = ChrW(25945) &ChrW(24072) &ChrW(20449) &ChrW(24687) &ChrW(21333) &ChrW(20010) &ChrW(26597) &ChrW(-29726)
DoCmd.OpenQuery stDocName, acNormal, acEdit
Exit_Command13_Click:
Exit Sub
Err_Command13_Click:
MsgBox Err.Description
Resume Exit_Command13_Click
End Sub
B:全体教师信息查询:
◆Private Sub Command14_Click()
On Error GoTo Err_Command14_Click
Dim stDocName As String
stDocName = ChrW(25945) &ChrW(24072) &ChrW(20449) &ChrW(24687) &ChrW(26597) &ChrW(-29726)
DoCmd.OpenQuery stDocName, acNormal, acEdit
Exit_Command14_Click:
Exit Sub
Err_Command14_Click:
MsgBox Err.Description
Resume Exit_Command14_Click
End Sub
4 成绩查询及修改模块代码
A:指定学生个体成绩查询:
◆Private Sub Command23_Click()
On Error GoTo Err_Command23_Click
Dim stDocName As String
stDocName = ChrW(23398) &ChrW(29983) &ChrW(20010) &ChrW(20154) &ChrW(25104) &ChrW(32489) &ChrW(26597) &ChrW(-29726)
DoCmd.OpenQuery stDocName, acNormal, acEdit
Exit_Command23_Click:
Exit Sub
Err_Command23_Click:
MsgBox Err.Description
Resume Exit_Command23_Click
End Sub
B: 指定班级综合成绩查询
◆Private Sub Command24_Click()
On Error GoTo Err_Command24_Click
Dim stDocName As String
stDocName = ChrW(25353) &ChrW(29677) &ChrW(32423) &ChrW(26597) &ChrW(-29726) &ChrW(23398) &ChrW(29983) &ChrW(25104) &ChrW(32489)
DoCmd.OpenQuery stDocName, acNormal, acEdit
Exit_Command24_Click:
Exit Sub
Err_Command24_Click:
MsgBox Err.Description
Resume Exit_Command24_Click
End Sub
5 用户信息修改模块代码
◆Private Sub Command28_Click()
On Error GoTo Err_Command28_Click
Dim stDocName As String
stDocName = ChrW(25945) &ChrW(21153) &ChrW(22788) &ChrW(20154) &ChrW(21592) &ChrW(20449) &ChrW(24687) &ChrW(26597) &ChrW(-29726)
DoCmd.OpenQuery stDocName, acNormal, acEdit
Exit_Command28_Click:
Exit Sub
Err_Command28_Click:
MsgBox Err.Description
Resume Exit_Command28_Click
End Sub
6 退出模块代码
◆Private Sub Command31_Click()
On Error GoTo Err_Command31_Click
DoCmd.Quit
Exit_Command31_Click:
Exit Sub
Err_Command31_Click:
MsgBox Err.Description
Resume Exit_Command31_Click
End Sub
__________________________________________________________________________________________________________
3系统实施报告
成绩管理系统实施报告
一、 系统物理实施
物理实施阶段的任务:实现系统设计阶段提出的物理模型;
按照实施方案完成一个可以实际运行的成绩管理信息系统,交付用户使用;
硬件包括计算机主机、输入输出设备、存储设备、辅助设备、网络连接等。
系统的实施环境:A:硬件准备:戴尔电脑
B:软件准备:windows98或windows xp环境下。
二、 程序设计
一)设计系统要具有以下性质
1、可维护性 由于信息系统需求的不确定性,系统需求可能会随着环境的变化而不断变
化,因此,就必须对系统功能进行完善和调整,为此,就要对程序进行补充或修改。此外,由于计算机软硬件的更新换代也需要对程序进行相应的升级。
2 、可靠性:程序应具有较好的容错能力, 意外情况下应便于处理,不至产生意外的操作,从而造成严重损失,致使学生教师信息的丢失。
3、 可理解性:程序不仅要求逻辑正确,计算机能够执行,而且应当层次清楚,便于阅读及修改。
二)模块图
用户登陆模块:(教务处管理人员---叶飞—密码:950281)
(教师---刘力—密码:980102)
A:教务处管理人员模块
B:教员管理模块
2.查询及修改模块
包括以下四个模块:
A:学生个人信息查询模块:
在班级模块则可按班级查询学生的信息。
B:教师信息查询及修改模块:
C:成绩查询及修改模块:
D:用户信息修改模块
三、系统的测试与评价
系统评价就是客观,从三方面评价该学生成绩管理系统的各项功能:优点,
缺点以及将来可能提出的要求。
一>系统的特点
1.流程符合教务处及教师对成绩管理的需求。
2.可进行多方面查询:教务管理人员,可以通过进入教务管理人员模块进行总体或3.指定个体的查询及修改,如对教师工龄、工资额的设定。且操作明朗化
4.界面较友好,输入信息方便,便于保存信息。
5.系统扩充容易。可根据需要建立针对特殊条件下的筛选查询。
二>系统的缺点
1.网络功能欠缺。本系统没有建立网络连接,只能单机运行,无法实现资源共享。
2.容错性不高。系统的抗错,容错性不高。如必须使用规范查询语言,否则系统无法辨识执行。
3.有很多地方还设计的不够详细,且系统分析报告中提及的一些功能在此未能实现。如教务管理人员并不能将信息给反馈任课教师。
4.没有良好的密码限制以防止人为的破坏与盗窃数据资源。
四、系统的试运行
运行时间:2007.6.28 检测时间:4小时 检测人员:运行结果:初步认定各项功能执行良好。
五、人员培训
人员培训是管理信息系统的重要组成部分,包括教务管理人员和教师以及管理与维护信息系统的专业人员。每一个与新系统有关的人都应该了解管理信息系统的运作方式和运作过程。培训就是使有关系统使用者,管理人员和技术人员了解和掌握新系统的有效途径之一。通过相关培训,使其了解注意事项,培养他们使用系统的习惯,以及熟练程度。经过培训,使员工非常良好的融入到系统当中。
六,文档编制
1.程序设计手册
2.程序设计手册将选定计算机语言或开发工具,来描述成绩管理系统的计算机模型,其主要使用者是系统维护人员。手册包括以下内容: A:系统采用的术语 B:系统的功能详细描述
C:程序清单 D:系统覆盖的流程
3.用户操作手册
用户操作手册为教务处管理人员和教师提供系统能够作什么和不能作什么的概况,一份详细的安装指南,以及一个贯穿系统详细指南。
图书管理系统主要要求可以录入书籍,添加书目,查找书本信息,删除或修改信息,有的还要求显示是否被借阅等。
一般采用结构体数组,链表,文件操作和自定义函数。主要是需要对基础知识掌握牢固。
先定义结构体,然后对结构体的成员进行定义,选择数组存储书本各种信息。录入信息可以用for和do while循环等来做。
存放信息需要文件操作函数,比如fopen,fwrite等。
删除和添加可以删除节点或者增加节点。
查找之类的可以用字符串操作的各种函数实现。
附上参考源代码
#include <stdio.h>#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define books "f:\\books.txt"
#define booksbak "f:\\booksbak.txt"
struct bookinfo
{
char isbn[20]
char title[30]
char author[20]
int count
}
struct book
{
struct bookinfo onebook
struct book *next
}
struct book *searchBook ( struct book *listptr,char isbn[])
{
while(listptr!=(struct book *)0)
if (strcmp(listptr->onebook.isbn,isbn)==0)
return listptr
else
listptr=listptr->next
return (struct book *)0
}
void MainSearchbook(struct book *firstptr)
{
struct book *ptr
char isbnno[20]
printf("请输入ISBN:")
scanf("%s",&isbnno)
ptr=searchBook(firstptr,isbnno)
if (ptr!=(struct book *)0)
{
printf("找到了!!!\n")
printf("ISBN:%s\n",ptr->onebook.isbn)
printf("Title:%s\n",ptr->onebook.title)
printf("Author:%s\n",ptr->onebook.author)
}
else
printf("sorry,not found!!!\n")
}
int addBook(struct book *listptr,struct bookinfo note)
{
while(listptr->next!=0)
listptr=listptr->next
listptr->next=(struct book *)malloc(sizeof(struct book))
listptr->next->onebook=note
listptr->next->next=0
return 0
}
void MainAdd(struct book *listptr,FILE *fp)
{
int ok
struct bookinfo note
printf("请输入ISBN:")
scanf("%s",¬e.isbn)
printf("请输入Title:")
scanf("%s",¬e.title)
printf("请输入Author:")
scanf("%s",¬e.author)
ok=addBook(listptr,note)
if (ok==0)
{
//将加入的图书写到文件中保存
fprintf(fp,"\n%s %s %s %d",note.isbn,note.title,note.author,0)
printf("添加图书成功!!!\n")
}
else
printf("添加图书失败!!!\n")
}
int removeBook(struct book *listptr,char isbn[])
{
while(listptr->next!=(struct book *)0)
{
if (strcmp(listptr->next->onebook.isbn,isbn)==0)
{
listptr->next=listptr->next->next
return 0
}
else
listptr=listptr->next
}
return -1
}
void MainRemove(struct book *listptr,FILE *fp)
{
char isbnno[20]
int ok
struct bookinfo onebook
printf("请输入ISBN:")
scanf("%s",&isbnno)
ok=removeBook(listptr,isbnno)
if (!ok)
{
FILE *fpbak
if ((fpbak=fopen(booksbak,"a+"))==NULL)
printf("文件打开失败!!!\n")
fseek(fp,0,SEEK_SET) //移到文件开始
while((fscanf(fp,"%s %s %s %d\n",&onebook.isbn,&onebook.title,&onebook.author,&onebook.count))!=EOF)
{
if (strcmp(onebook.isbn,isbnno)!=0)
{
fprintf(fpbak,"%s %s %s %d\n",onebook.isbn,onebook.title,onebook.author,onebook.count)
}
}
fclose(fp)
fclose(fpbak)
if (remove(books)) //删除失败返回非0
{
printf("删除文件失败!!!\n")
return
}
else
if (rename(booksbak,books)) //重命名失败返回非0值
{
printf("重命名失败!!!\n")
return
}
printf("删除成功!!!\n")
}
else
printf("查无此书!!!")
}
int choice(void)
{
int c
printf("1.查看图书\n")
printf("2.添加图书\n")
printf("3.删除图书\n")
printf("4.退出程序\n")
printf("请选择序号:")
return c=getchar()
//return c=getche()
printf("\n\n")
}
int addEntry(FILE *fp,struct book *firstptr)
{
struct bookinfo onebook
while((fscanf(fp,"%s %s %s %d\n",&onebook.isbn,&onebook.title,&onebook.author,&onebook.count))!=EOF)
{
while(firstptr->next!=0)
firstptr=firstptr->next
firstptr->next=(struct book *)malloc(sizeof(struct book))
firstptr->next->onebook=onebook
firstptr->next->next=0
}
return 0
}
int main(int argc,char *argv[])
{
int ch
struct book first
strcpy(first.onebook.isbn,"123456")
strcpy(first.onebook.title,"Programming C")
strcpy(first.onebook.author,"yhb")
first.next=0
struct book *firstptr=&first //链表头指针
FILE *fp
if ((fp=fopen(books,"a+"))==NULL)
printf("文件打开失败!!!")
addEntry(fp,firstptr)
while(1)
{
system("CLS") //清屏
fflush(stdin)
ch=choice()-48
switch (ch)
{
case 1:
MainSearchbook(firstptr)
break
case 2:
MainAdd(firstptr,fp)
break
case 3:
MainRemove(firstptr,fp)
break
case 4:
printf("谢谢使用...\n")
exit(0)
default:
printf("请输入正确序号!")
}
system("PAUSE")
}
return 0
}
2.写概要设计文档 就是你这个系统大概有哪些功能
3.写详细设计文档 就是详细设计你系统的功能 架构 和接口
具体实施:(看你怎么做了)
c/s架构
界面 awt或者swt实现
类设计 用uml建模
数据库 mysql建表
信息交互(服务器和用户) udp协议
如果是b/s架构
mvc模式 用jsp+mysql实现
jsp负责网页的实现和逻辑的控制 mysql是后台数据库
总体来说 做这个系统 非常easy
GOOD LUCK
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "conio.h"
#include "mem.h"
#include "ctype.h"
#include "alloc.h"
#define N 3
typedef struct z1
{
char no[11]
char name[15]
int score[N]
float sum
float average
int order
struct z1 *next
}STUDENT
STUDENT *init()
STUDENT *create()
STUDENT *delete(STUDENT *h)
void print(STUDENT *h)
void search(STUDENT *h)
void save(STUDENT *h)
STUDENT *load()
void computer(STUDENT *h)
STUDENT *insert(STUDENT *h)
void append()
void copy()
STUDENT *sort(STUDENT *h)
STUDENT *index(STUDENT *h)
void total(STUDENT *h)
int menu_select()
main()
{
int i
STUDENT *head
head=init()
clrscr()
for()
{
switch(menu_select())
{
case 0:head=init()break
case 1:head=create()break
case 2:head=delete(head)break
case 3:print(head)break
case 4:search(head)break
case 5:save(head)break
case 6:head=load()break
case 7:computer(head)break
case 8:head=insert(head)break
case 9:copy()break
case 10:head=sort(head)break
case 11:append()break
case 12:head=index(head)break
case 13:total(head)break
case 14:exit(0)
}
}
}
menu_select()
{
char *menu[]={"***************MENU***************",
" 0. init list",
" 1. Enter list",
" 2. Delete a record from list",
" 3. print list ",
" 4. Search record on name",
" 5. Save the file",
" 6. Load the file",
" 7. compute the score",
" 8. insert record to list ",
" 9. copy the file to new file",
" 10. sort to make new file",
" 11. append record to file",
" 12. index on nomber",
" 13. total on nomber",
" 14. Quit"}
char s[3]
int c,i
gotoxy(1,25)
printf("press any key enter menu......\n")
getch()
clrscr()
gotoxy(1,1)
textcolor(YELLOW)
textbackground(BLUE)
gotoxy(10,2)
putch(0xc9)
for(i=1i<44i++)
putch(0xcd)
putch(0xbb)
for(i=3i<20i++)
{
gotoxy(10,i)putch(0xba)
gotoxy(54,i)putch(0xba)
}
gotoxy(10,20)putch(0xc8)
for(i=1i<44i++)
putch(0xcd)
putch(0xbc)
window(11,3,53,19)
clrscr()
for(i=0i<16i++)
{
gotoxy(10,i+1)
cprintf("%s",menu[i])
}
textbackground(BLACK)
window(1,1,80,25)
gotoxy(10,21)
do{
printf("\n Enter you choice(0~14):")
scanf("%s",s)
c=atoi(s)
}while(c<0||c>14)
return c
}
STUDENT *init()
{
return NULL
}
STUDENT *create()
{
int iint s
STUDENT *h=NULL,*info
for()
{
info=(STUDENT *)malloc(sizeof(STUDENT))
if(!info)
{
printf("\nout of memory")
return NULL
}
inputs("enter no:",info->no,11)
if(info->no[0]=='@') break
inputs("enter name:",info->name,15)
printf("please input %d score \n",N)
s=0
for(i=0i<Ni++)
{
do{
printf("score%d:",i+1)
scanf("%d",&info->score[i])
if(info->score[i]>100||info->score[i]<0)
printf("bad data,repeat input\n")
}while(info->score[i]>100||info->score[i]<0)
s=s+info->score[i]
}
info->sum=s
info->average=(float)s/N
info->order=0
info->next=h
h=info
}
return(h)
}
inputs(char *prompt, char *s, int count)
{
char p[255]
do{
printf(prompt)
scanf("%s",p)
if(strlen(p)>count)printf("\n too long! \n")
}while(strlen(p)>count)
strcpy(s,p)
}
void print(STUDENT *h)
{
int i=0
STUDENT *p
clrscr()
p=h
printf("\n\n\n****************************STUDENT********************************\n")
printf("|rec|nO | name | sc1| sc2| sc3| sum | ave |order|\n")
printf("|---|----------|---------------|----|----|----|--------|-------|-----|\n")
while(p!=NULL)
{
i++
printf("|%3d |%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", i, p->no,p->name,p->score[0],p->score[1],
p->score[2],p->sum,p->average,p->order)
p=p->next
}
printf("**********************************end*********************************\n")
}
STUDENT *delete(STUDENT *h)
{
STUDENT *p,*q
char s[11]
clrscr()
printf("please deleted no\n")
scanf("%s",s)
q=p=h
while(strcmp(p->no,s)&&p!=NULL)
{
q=p
p=p->next
}
if(p==NULL)
printf("\nlist no %s student\n",s)
else
{
printf("*****************************have found***************************\n")
printf("|no | name | sc1| sc2| sc3| sum | ave |order|\n")
printf("|----------|---------------|----|----|----|--------|-------|-----|\n")
printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", p->no,
p->name,p->score[0],p->score[1],p->score[2],p->sum,
p->average,p->order)
printf("********************************end*******************************\n")
getch()
if(p==h)
h=p->next
else
q->next=p->next
free(p)
printf("\n have deleted No %s student\n",s)
printf("Don't forget save\n")
}
return(h)
}
1. 输入记录。对每个学生的学号、姓名、班级、数学、英语、计算机成绩进行输入并存储,在程序的运行过程中,数据的存储可以采用结构体数组或者链表,但是最终应该存储在文件中。
2. 维护记录。能够实现添加、删除、修改学生记录,但是一定要将最终数据存储到文件中。
3. 查询记录。根据班级、学号、科目等查询学生的成绩。如果查询时学生数据并没有读入到结构体数组或者链表中,则应该先从文件中读出数据并存储在结构体数组或者链表中,然后在结构体数组或者链表中查询满足条件的数据。
4. 统计记录。完成对各门功课最高分和不及格人数的统计。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LEN sizeof(Student)
typedef struct student
{
int num
char name[20]
int score[4]
int sum
struct student *next
}Student
int n
Student *cin(void)
Student *sort_1(Student *head,int)
void sort_2(Student *head)
void print(Student *head)
Student *sort_all(Student *head)
void find(Student *head)
Student *add_new(Student *head)
Student *cin()
{
int flag
Student *head,*p1,*p2
n=0
head=(Student *)malloc(LEN)
p2=head
printf("\n请输入第%d名学生的学号,学号为0表示结束输入:",n+1)
scanf("%d",&flag)
while(getchar()!='\n')
for(flag)
{
n++
p1=(Student *)malloc(LEN)
p1->num=flag
printf("请输入第%d名学生的姓名:",n)
scanf("%s",p1->name)
printf("请输入第%d名学生的语文成绩:",n)
scanf("%d",&p1->score[0])
printf("请输入第%d名学生的数学成绩:",n)
scanf("%d",&p1->score[1])
printf("请输入第%d名学生的英语成绩:",n)
scanf("%d",&p1->score[2])
printf("请输入第%d名学生的计算机成绩:",n)
scanf("%d",&p1->score[3])
p1->sum=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3]
p2->next=p1
p2=p1
printf("\n请输入第%d名学生的学号,没有此学生则输入0表示结束:",n+1)
scanf("%d",&flag)
}
p2->next=NULL
printf("\n\n")
return head
}
Student *sort_all(Student *head)
{
int choose
for()
{
printf("\n\t\t# # # # # 学生成绩统计排序 # # # #\n")
printf("\t\t#\t1.按学生学号排序\t #\n")
printf("\t\t#\t2.按学生总分排序\t #\n")
printf("\t\t#\t3.按学生语文成绩排序\t #\n")
printf("\t\t#\t4.按学生数学成绩排序\t #\n")
printf("\t\t#\t5.按学生英语成绩排序\t #\n")
printf("\t\t#\t6.按学生计算机成绩排序\t #\n")
printf("\t\t#\t7.单科高分及均分\t #\n")
printf("\t\t#\t8.显示当前学生成绩\t #\n")
printf("\t\t#\t0.返回上一级菜单\t #\n")
printf("\t\t# # # # # 由himpo友情提供# # # # #\n\n")
printf("请输入你要执行的操作:")
scanf("%d",&choose)
while(getchar()!='\n')
switch(choose)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:head=sort_1(head,choose)break
case 7:print(head)sort_2(head)break
case 8:print(head)break
case 0:return head
default: printf("\n\n您的输入有误!请重新输入:\n\n")break
}
}
}
Student *sort_1(Student *head,int choose)
{
Student *p1,*p2=head->next,*pm,*px
Student mid
if (!p2) return head
for(p1=p2p1->next!=NULLp1=p1->next)
{
pm=p1
for(p2=p1->nextp2!=NULLp2=p2->next)
switch(choose)
{
case 1:if (pm->num>p2->num) pm=p2break
case 2:if (pm->sum<p2->sum) pm=p2break
case 3:if (pm->score[0]<p2->score[0]) pm=p2break
case 4:if (pm->score[1]<p2->score[1]) pm=p2break
case 5:if (pm->score[2]<p2->score[2]) pm=p2break
case 6:if (pm->score[3]<p2->score[3]) pm=p2break
}
if (pm!=p1)
{
mid=*pm
*pm=*p1
*p1=mid
px=pm->next
pm->next=p1->next
p1->next=px
}
}
printf("\n排序后的成绩表为:\n")
print(head)
return head
}
void sort_2(Student *head)
{
Student *p=head->next
int max_1,max_2,max_3,max_4,min_1,min_2,min_3,min_4
int max_sum,min_sum
int sum_1=0,sum_2=0,sum_3=0,sum_4=0
float aver_1,aver_2,aver_3,aver_4,aver_sum
if (!p) return
max_1=min_1=p->score[0]max_2=min_2=p->score[1]
max_3=min_3=p->score[2]max_2=min_2=p->score[3]
max_sum=min_sum=p->sum
for(pp=p->next)
{
if (max_1<p->score[0]) max_1=p->score[0]
else if (min_1>p->score[0]) min_1=p->score[0]
if (max_2<p->score[1]) max_2=p->score[1]
else if (min_2>p->score[1]) min_2=p->score[1]
if (max_3<p->score[2]) max_3=p->score[2]
else if (min_3>p->score[2]) min_3=p->score[2]
if (max_4<p->score[3]) max_4=p->score[3]
else if (min_4>p->score[3]) min_4=p->score[3]
if (max_sum<p->sum) max_sum=p->sum
else if (min_sum>p->sum) min_sum=p->sum
sum_1+=p->score[0]sum_2+=p->score[1]sum_3+=p->score[2]sum_4+=p->score[3]
}
aver_1=1.0*sum_1/naver_2=1.0*sum_2/naver_3=1.0*sum_3/naver_4=1.0*sum_4/n
aver_sum=aver_1+aver_2+aver_3+aver_4
printf("总共%d名学生,具体数据为:\n",n)
printf("语文最高分为%d,最低分为%d,平均分为%.2f\n",max_1,min_1,aver_1)
printf("数学最高分为%d,最低分为%d,平均分为%.2f\n",max_2,min_2,aver_2)
printf("英语最高分为%d,最低分为%d,平均分为%.2f\n",max_3,min_3,aver_3)
printf("计算机最高分为%d,最低分为%d,平均分为%.2f\n",max_4,min_4,aver_4)
printf("总分最高分为%d,最低分位%d,平均分为%.2f\n",
max_sum,min_sum,aver_sum)
}
void find(Student *head)
{
Student *p
int choose,fnum
char tem[20]
if (n==0) {printf("\n当前系统没有任何学生数据,您就别费劲了!\n ")return}
for()
{
printf("\n请输入您要查询学生的方式:\n\n")
printf("1、按学号查询;2、按姓名查询;0、我不查询了。\n\n")
printf("请选择:")
scanf("%d",&choose)
while(getchar()!='\n')
if (choose==1)
{
printf("\n请输入你要查询的学生的学号,输入0退出学号查询:")
scanf("%d",&fnum)
for(fnum)
{
for(p=head->nextp!=NULL&&p->num!=fnump=p->next)
if (!p)
{
printf("\n\n找不到你要查询的学号,请重新输入,输入0表示结束:")
scanf("%d",&fnum)
}
else if (p->num==fnum)
{
printf("\n学号为%d学生的数据为:\n",p->num)
printf("学号\t姓名\t语文成绩 数学成绩 英语成绩 计算机\
成绩 总分\n")
printf("%d\t%s\t %d%d%d %d \
%d\n",p->num,
p->name,p->score[0],p->score[1],p->score[2],p->score[3],
p->sum)
printf("\n\n请输入你还要查询的学生的学号,输入0表示不按学\
号查询了:")
scanf("%d",&fnum)
}
}
}
else if (choose==2)
{
printf("\n请输入你要查询的学生的姓名,输入0退出姓名查询:")
scanf("%s",tem)
for(strcmp(tem,"0"))
{
for(p=head->nextp!=NULL&&strcmp(p->name,tem)p=p->next)
if (!p)
{
printf("\n\n找不到你要查询的姓名,请重新输入,输入0表\
示结束:")
scanf("%s",tem)
}
else if (!strcmp(p->name,tem))
{
printf("\n姓名为%s学生的数据为:\n",p->name)
printf("学号\t姓名\t语文成绩 数学成绩 英语成绩 \
计算机成绩 总分\n")
printf("%d\t%s\t %d%d%d \
%d%d\n",
p->num,p->name,p->score[0],p->score[1],p->score[2],
p->score[3],p->sum)
printf("\n\n请输入你还要查询的学生的姓名,输入0表\
示不按姓名查询了:")
scanf("%s",tem)
}
}
}
else if (choose==0) {printf("\n你选择了不查询!\n")break}
else {printf("\n你以其他方式选择了不查询!\n")break}
}
}
Student *add_new(Student *head)
{
Student *p
int flag
printf("\n\n请输入你要新加入学生的学号,学号为0表示结束输入:")
scanf("%d",&flag)
while(getchar()!='\n')
for(flag)
{
p=(Student *)malloc(LEN)
p->num=flag
printf("请输入新加入学生的姓名:",n)
scanf("%s",p->name)
printf("请输入新加入学生的语文成绩:",n)
scanf("%d",&p->score[0])
printf("请输入新加入学生的数学成绩:",n)
scanf("%d",&p->score[1])
printf("请输入新加入学生的英语成绩:",n)
scanf("%d",&p->score[2])
printf("请输入第%d名学生的计算机成绩:",n)
scanf("%d",&p->score[3])
p->sum=p->score[0]+p->score[1]+p->score[2]+p->score[3]
p->next=head->next
head->next=p
n++
printf("\n请输入还要加入学生的学号,没有此学生则输入0表示结束:")
scanf("%d",&flag)
}
head=sort_1(head,1)
printf("加入后的成绩表为:\n")
print(head)
return head
}
void print(Student *head)
{
Student *p=head->next
if (!p) {printf("\n\n此系统目前没有任何学生数据!\n\n\n")return}
printf("此系统目前共计学生%d名:\n",n)
printf("**************************学生成绩统计一览************************\
*****\n")
printf("学号\t姓名\t语文成绩 数学成绩 英语成绩 计算机成绩 总分\n")
for(pp=p->next)
printf("%d\t%s\t %d%d%d %d%d\n",
p->num,p->name,
p->score[0],p->score[1],p->score[2],p->score[3],
p->sum=p->score[0]+p->score[1]+p->score[2]+p->score[3])
printf("************************此软件由himpo友情提供*************************\
*\n\n")
}
int main()
{
Student *head
int choose,i
head=(Student *)malloc(LEN)
head->next=NULL
for()
{
printf("\n\t\t* * * * * 学生成绩管理系统 * * * *\n")
printf("\t\t*\t1.学生数据键盘录入\t *\n")
printf("\t\t*\t2.学生数据统计排序\t *\n")
printf("\t\t*\t3.查询学生数据\t\t *\n")
printf("\t\t*\t4.插入学生数据\t\t *\n")
printf("\t\t*\t5.显示当前成绩表\t *\n")
printf("\t\t*\t0.退出成绩管理系统\t *\n")
printf("\t\t* * * * * 由himpo友情提供* * * * *\n\n")
printf("\n请输入你要执行的操作:")
scanf("%d",&choose)
while(getchar()!='\n')
switch(choose)
{
case 1:printf("\n\t\t\t\t****注意****")
printf("\n\n此选项将会建立新的学生数据系统 ,原来的数据将\
不再存在,你确信要删除原来的数据并建立新的数据系统么?\n\n")
printf("1、建立新的数据系统;0、放弃建立新的数据系统。\n\n")
printf("请选择:")
scanf("%d",&i)
if (i==1) {head=cin()print(head)break}
else if (i==0)
{
printf("\n你选择了放弃建立新的数据系统!\n")
break
}
else {
printf("\n你做出别的选择,当作放弃建立!\n")
break
}
case 2:head=sort_all(head)break
case 3:find(head)break
case 4:head=add_new(head)
case 5:print(head)break
case 0:system("pause")return 0
default: printf("\n\n您的输入有误!请重新输入:\n\n")break
}
}
}
满意请采纳。
基本上和你的一模一样,运行完全正确
#include<stdlib.h>
#include<conio.h>
#include<string.h>
struct student_info
{ char number[15]
char name[20]
char gender[8]
char sushe_no[10]
char tel[20]
}
struct student_grade
{
char number[15]
char courseno[10]
char coursename[20]
int xuefen
int pingshicj
int shiyancj
int juanmiancj
float zonghecj
float shidecj
}
typedef struct student_info stu_info
typedef struct student_grade stu_grade
int CourseInfoIndex=0
int StudentInfoIndex=0
stu_info *StuInfo=NULL
stu_grade *StuCour=NULL
int ReadStuInfo(void) //从原有的学生信息文件中读取信息
{
FILE *fp
StudentInfoIndex=0
if((fp=fopen("a.txt","rb"))==NULL)
{
return -1
}
else
{
while(!feof(fp))
{
if(fread(&StuInfo[StudentInfoIndex],sizeof(stu_info),1,fp)==1)
{
StudentInfoIndex++
}
}
fclose(fp)
return 0
}
}
int WriteStuInfo(void) //将学生信息写入到文件中
{
FILE *fp
if(StudentInfoIndex>=0)
{
if((fp=fopen("a.txt","wb"))==NULL)
{
return -1
}
else
{
fwrite(StuInfo,sizeof(stu_info)*StudentInfoIndex,1,fp)
fclose(fp)
return 0
}
}
return 0
}
void PrintStuInfo(int index)
{
int i=0
ReadStuInfo()
printf("\nNow print the data of student infomation:\n")
printf("StuNO StuName Gender SuSheHao Telphone\n")
if (index==-1)
{
for(i=0i<=StudentInfoIndex-1i++)
{
printf("%s ",StuInfo[i].number)
printf("%s ",StuInfo[i].name)
printf("%s ",StuInfo[i].gender)
printf("%s ",StuInfo[i].sushe_no)
printf("%s\n",StuInfo[i].tel)
}
}
else
{
printf("%s ",StuInfo[index].number)
printf("%s ",StuInfo[index].name)
printf("%s ",StuInfo[index].gender)
printf("%s ",StuInfo[index].sushe_no)
printf("%s\n",StuInfo[index].tel)
}
}
void InStuInfo(void) //添加学生信息
{
int t=0
char str[20]
ReadStuInfo()
//PrintStuInfo(-1) //测试代码,打印学生信息
printf("Now you will input some new student infomation records,\n end with a * for begin of a record.\n")
while(str[0]!='*')
{
t++
printf("-------------------------------------\n")
printf("Now Please input the %dth record:\n",t)
printf(" Student no:")
gets(str)
if(str[0]=='*')
{
continue
} //如果碰到结束标志
strcpy(StuInfo[StudentInfoIndex].number,str)
printf("\n Student name:")
gets(StuInfo[StudentInfoIndex].name)
printf("\n Student gender:")
gets(StuInfo[StudentInfoIndex].gender)
printf("\n sushe_no:")
gets(StuInfo[StudentInfoIndex].sushe_no)
printf("\n tel:")
gets(StuInfo[StudentInfoIndex].tel)
StudentInfoIndex++
}
WriteStuInfo()
}
int ReadCourseInfo(void) //从原有的学生成绩信息文件中读取信息
{
FILE *fp
CourseInfoIndex=0
if((fp=fopen("b.txt","rb"))==NULL)
{
return -1
}
else
{
while(!feof(fp))
{
if(fread(&StuCour[CourseInfoIndex],sizeof(stu_grade),1,fp)==1)
{
CourseInfoIndex++
}
}
fclose(fp)
return 0
}
}
int WriteCourseInfo(void) //将成绩信息写入到文件中
{
FILE *fp
if(CourseInfoIndex>=0)
{
if((fp=fopen("b.txt","wb"))==NULL)
{
return -1
}
else
{
fwrite(StuCour,sizeof(stu_grade)*CourseInfoIndex,1,fp)
fclose(fp)
return 0
}
}
return 0
}
void PrintCourseInfo(int index)
{
int i=0
ReadCourseInfo()
printf("\nNow print the data of course infomation:\n")
printf("StuNO CourseNo CourseName XueFen PingShiCJ ShiYanCJ JuanMianCJ ZongHeCJ ShiDeCJ\n")
if (index==-1)
{
for(i=0i<=CourseInfoIndex-1i++)
{
printf("%s ",StuCour[i].number)
printf("%s ",StuCour[i].courseno)
printf("%s ",StuCour[i].coursename)
printf("%d ",StuCour[i].xuefen)
printf("%d ",StuCour[i].pingshicj)
printf("%d ",StuCour[i].shiyancj)
printf("%d ",StuCour[i].juanmiancj)
printf("%f ",StuCour[i].zonghecj)
printf("%f\n",StuCour[i].shidecj)
}
}
else
{
printf("%s ",StuCour[index].number)
printf("%s ",StuCour[index].courseno)
printf("%s ",StuCour[index].coursename)
printf("%d ",StuCour[index].xuefen)
printf("%d ",StuCour[index].pingshicj)
printf("%d ",StuCour[index].shiyancj)
printf("%d ",StuCour[index].juanmiancj)
printf("%f ",StuCour[index].zonghecj)
printf("%f\n",StuCour[index].shidecj)
}
}
void InStuCourseInfo(void) //输入新的学生成绩信息
{
int t=0
char str[20]
ReadCourseInfo() //先把原先文件中存在的记录读到内存中
// PrintCourseInfo(-1) //测试代码过程
printf("Now you will input some new student course records,\n end with a * for begin of a record.\n")
while(str[0]!='*')
{
t++
printf("-------------------------------------\n")
printf("Now Please input the %dth record:\n",t)
printf(" Student no:")
gets(str)
if(str[0]=='*')
{
//if(CourseInfoIndex!=0) CourseInfoIndex--
continue
} //如果碰到结束标志
strcpy(StuCour[CourseInfoIndex].number,str)
printf("\n Course no:")
gets(StuCour[CourseInfoIndex].courseno)
printf("\n Course name:")
gets(StuCour[CourseInfoIndex].coursename)
printf("\n XueFen:")
gets(str)
StuCour[CourseInfoIndex].xuefen=(int)atof(str)
printf("\n PingShiChengJi:")
gets(str)
StuCour[CourseInfoIndex].pingshicj=(int)atof(str)
printf("\n ShiYanChengJi:")
gets(str)
StuCour[CourseInfoIndex].shiyancj=(int)atof(str)
printf("\n JuanMianChengJi:")
gets(str)
StuCour[CourseInfoIndex].juanmiancj=(int)atof(str)
//下面计算综合成绩和实得成绩
if(StuCour[CourseInfoIndex].shiyancj==-1)
{
StuCour[CourseInfoIndex].zonghecj=StuCour[CourseInfoIndex].pingshicj*0.3+StuCour[CourseInfoIndex].juanmiancj*0.7
}
else
{
StuCour[CourseInfoIndex].zonghecj=StuCour[CourseInfoIndex].shiyancj*0.15+StuCour[CourseInfoIndex].pingshicj*0.15+StuCour[CourseInfoIndex].juanmiancj*0.7
}
if(StuCour[CourseInfoIndex].zonghecj>=90)
{
StuCour[CourseInfoIndex].shidecj=StuCour[CourseInfoIndex].xuefen*1.0
}
else
{
if(StuCour[CourseInfoIndex].zonghecj>=70)
{
StuCour[CourseInfoIndex].shidecj=StuCour[CourseInfoIndex].xuefen*0.8
}
else
{
if(StuCour[CourseInfoIndex].zonghecj>=60)
{
StuCour[CourseInfoIndex].shidecj=StuCour[CourseInfoIndex].xuefen*0.6
}
else
{
StuCour[CourseInfoIndex].shidecj=0.0
}
}
}
CourseInfoIndex++
}
WriteCourseInfo()// 保存到文件中
}
void CopyStuInfo(stu_info *src,stu_info *dest)
{
int j
strcpy(dest->number,src->number)
strcpy(dest->name,src->name)
strcpy(dest->gender,src->gender)
strcpy(dest->sushe_no,src->sushe_no)
strcpy(dest->tel,src->tel)
}
void Del(void)
{
char strdel[15]
int p=0
int flag=0
int t=StudentInfoIndex
printf("Delete a student infomation record:\n")
ReadCourseInfo()
ReadStuInfo()
PrintStuInfo(-1)//打印学生信息
printf("Please input the student number which you will delete:")
gets(strdel)
while(p<=t &&flag==0)
{
if(strcmp(strdel,StuInfo[p].number)==0)
{
flag=1 //找到该学号的记录
CopyStuInfo(&StuInfo[t-1],&StuInfo[p]) //将最后一个记录覆盖当前记录,如果找到的是最后一个记录,则直接丢失
t--
StudentInfoIndex--
}
else
{
p++
}
}
if(flag==1) //如果删除了a文件的记录,则应相应的删除b文件的记录
{
p=0
t=CourseInfoIndex
while(p<=t &&CourseInfoIndex>=0 )
{
if(strcmp(strdel,StuCour[p].number)==0)
{
CopyStuInfo(&StuCour[CourseInfoIndex-1],&StuCour[p])
CourseInfoIndex--
t--
}
else
{
p++
}
}
}
WriteStuInfo()
WriteCourseInfo()
PrintStuInfo(-1)
PrintCourseInfo(-1)
}
void CopyCourseInfo(stu_grade *src,stu_grade *dest)
{
int j
strcpy(dest->number,src->number)
strcpy(dest->courseno,src->courseno)
strcpy(dest->coursename,src->coursename)
dest->xuefen=src->xuefen
dest->pingshicj=src->pingshicj
dest->juanmiancj=src->juanmiancj
dest->zonghecj=src->zonghecj
dest->shidecj=src->shidecj
}
void SortInfo(void)
{
char str[5]
int i,j
stu_grade tmps
printf("Pease select a sorting way:\n")
printf("1.with zonghecj in inc order\n")
此部分被隐藏。。。给分数后再发给你
}
以下方法实现了用户界面登陆
import java.awt.*
import java.awt.event.*
public class DengLuJieMian extends Frame implements ActionListener
{
Label username=new Label("用户名:")//使用文本创建一个用户名标签
TextField t1=new TextField()//创建一个文本框对象
Label password=new Label("密码:")//创建一个密码标签
TextField t2=new TextField()
Button b1=new Button("登陆")//创建登陆按钮
Button b2=new Button("取消")//创建取消按钮
public DengLuJieMian()
{
this.setTitle("学生信息管理系统")//设置窗口标题
this.setLayout(null)//设置窗口布局管理器
username.setBounds(50,40,60,20)//设置姓名标签的初始位置
this.add(username)// 将姓名标签组件添加到容器
t1.setBounds(120,40,80,20)// 设置文本框的初始位置
this.add(t1)// 将文本框组件添加到容器
password.setBounds(50,100,60,20)//密码标签的初始位置
this.add(password)//将密码标签组件添加到容器
t2.setBounds(120,100,80,20)//设置密码标签的初始位置
this.add(t2)//将密码标签组件添加到容器
b1.setBounds(50,150,60,20)//设置登陆按钮的初始位置
this.add(b1)//将登陆按钮组件添加到容器
b2.setBounds(120,150,60,20)//设置取消按钮的初始位置
this.add(b2)// 将取消按钮组件添加到容器
b1.addActionListener(this)//给登陆按钮添加监听器
b2.addActionListener(this)// 给取消按钮添加监听器
this.setVisible(true)//设置窗口的可见性
this.setSize(300,200)//设置窗口的大小
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0)
}
})//通过内部类重写关闭窗体的方法
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1)//处理登陆事件
{
String name=t1.getText()
String pass=t2.getText()
if(name!=null&&pass.equals("000123"))//判断语句
{
new StudentJieMian()
}
}
}
public static void main(String args[])//主函数
{
new DengLuJieMian()
}
}
以下方法实现了学生界面设计
import java.awt.*
import java.awt.event.*
class StudentJieMian extends Frame implements ActionListener
{
MenuBar m=new MenuBar()//创建菜单栏
Menu m1=new Menu("信息")//创建菜单“信息”
MenuItem m11=new MenuItem("插入")//创建“插入”的菜单项
MenuItem m12=new MenuItem("查询")
Menu m2=new Menu("成绩")//创建菜单“成绩”
MenuItem m21=new MenuItem("查询")
public StudentJieMian()
{
this.setTitle("学生界面")//设置窗口标题
this.setLayout(new CardLayout())//设置窗口布局管理器
this.setMenuBar(m)//将菜单栏组件添加到容器
m.add(m1)//将信息菜单放入菜单栏
m.add(m2)
m1.add(m11)//将“插入”菜单项添加到“信息”菜单
m1.add(m12)//将“查询”菜单项添加到“信息”菜单
m2.add(m21)//将“查询”菜单项添加到“成绩”菜单
m11.addActionListener(this)//给“插入”菜单项添加监听器
m12.addActionListener(this)//给“查询”菜单项添加监听器
m21.addActionListener(this)//给“查询”菜单项添加监听器
this.setVisible(true)//设置窗口的可见性
this.setSize(300,200)//设置窗口的大小
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0)//关闭窗口
}
})
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==m11) //处理“添加信息”事件
{
new AddStudent()
}
if(e.getSource()==m12) //处理“查询信息”事件
{
new SelectStudent()
}
if(e.getSource()==m21) //处理“查询成绩”事件
{
new ChengJiStudent()
}
}
public static void main(String args[])
{new StudentJieMian() //创建一个对象 }