南邮学生基本信息管理系统程序设计报告
- 格式:doc
- 大小:326.50 KB
- 文档页数:39
程序设计报告( 2014/2015学年第二学期)题目:学生基本信息管理系统专业信息管理与信息系统组长学号姓名组员学号姓名指导教师指导单位计算机软件中心日期 2015 年 6 月 25 日学生基本信息管理系统一、课题内容和要求此系统是可实现最基本功能的学生管理系统。
具体的管理信息应包括:两个txt文件,其中a.txt为学生基本信息文件,应该包括学号、姓名、性别、宿舍号码、电话号码;b.txt 为学生成绩基本信息文件,应包括学号、课程编号、课程名称、学分、平实得分、实验成绩、卷面成绩、综合成绩、实得学分。
① a.txt文件不需要编程录入数据,可用文本编辑工具直接生成②数据录入功能: 对b.txt进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动运算。
③学生基本情况查询1)输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。
2)输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。
④成绩查询:输入一个学号时,查询出此生的所有课程情况,⑤删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。
⑥排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
二、需求分析学生基本信息管理系统的功能框架图如图2.1所示。
图2.1 功能框架图本次课程设计主要利用了结构体数组、结构体指针以及与文件有关的基本操作,通过采用模块化设计的思想,首先创建好各个模块的函数,然后被主函数调用。
主函数通过多次调用不同的函数实现创建文件、查询、删除学生信息模块和排序得基本功能,其总体框图如图2.1。
各个模块的程序编写比较容易,各个函数的接口是否处能理好,是本次课程设计能否成功的关键。
通过合理处理各函数得接口,使之能结合为一个完整的具有多功能的程序,从而顺利完成本次课程设计。
三、概要设计3.1主函数模块在主函数中需要输出主菜单选择界面,简单菜单的制作可利用myprint()函数实现。
通达学院课内实验报告课程名:系统分析与设计任课教师:刘影专业:信息管理与信息系统学号:姓名:二○一四至二○一五年度第二学期南京邮电大学管理学院)链和消息的创建:在协作图中添加“Administrator”类对象“)序列图和协作图的转换:双击浏览器中要转换的协作图,选择菜单栏中“活动图的建模——借阅者借书活动图首先要确定要为哪个对象建模和明确所需要建立模型核心问题。
们确定需要建模的系统的用例,以及用例的参与者。
对于“借阅者借书”的用例来说,参与者是借阅者和图书管理员,借阅者通过图书管理员来进行借书活动,涉及的用例是借书。
)创建活动图:右击浏览器中的“Logic View”图标,在弹出的快捷菜单中选择“”命令,在“Logical View”下会创建“State/Activity Model)绘制泳道:在“借阅者借书活动图”中创建“借阅者”和“图书管理员”这两个泳道,具体方法如下:单击工具栏中相应按钮,在图形编辑区域单击,可以创建默认名为其他活动状态与分支可按照上述方法绘制,完整的“借阅者借书”活动图如下图所示:状态图的建模——图书状态图一.确定状态间的实体以及实体的状态对于图书管理系统而言,最需要的建模实体就是图书的状态,添加,被预定,被借阅,被删除。
当确定了需要建模的实体,并找出了实体的初始状态和终止状态以及其他相关状态后,找出相关状态间的事件和转换,它们间的转换规则是:刚被购买后的新书可以通过系统管理员添加成为能够被借阅的图书。
图书被预定后成为被预定状态。
)绘制转换:单击工具栏中相应图标,单击起始状态向目标状态拖动。
)绘制事件:双击“图书状态图”图形编辑区域中刚建好的转换,在弹出的“其余状态和事件可按照上述方法依次绘制。
通信与信息工程学院2015 / 2016学年第二学期实验报告课程名称:操作系统实验名称:1、LINUX及其使用环境2、进程管理3、进程间通信4、文件的操作和使用班级学号专业电子信息工程学生姓名指导教师赵建立实验名称试验一 LINUX及其使用环境实验类型验证实验学时1实验时间2016.6.2一、实验目的和要求1、了解UNIX的命令及使用格式。
2、熟悉UNIX/LINUX的常用基本命令。
3、练习并掌握UNIX提供的vi编辑器来编译C程序。
4、学会利用gcc、gdb编译、调试C程序。
二、实验环境Windows XP + VMWare + RedHat Enterprise Linux(RHEL) 4三、实验原理及内容1、熟悉LINUX的常用基本命令。
如ls、mkdir、grep等,学会使用man、help等其它命令,掌握vi编辑器的使用。
(1)显示目录文件 ls例:ls -al 显示当前目录下的所有文件(2)建新目录 mkdir例:mkdir test 新建一个test目录(3)删除目录rmdir(4)改变工作目录位置 cd例:cd test 更改工作目录至test目录下(5)显示当前所在目录pwd(6)查看目录大小du(7)文件属性的设置 chmod(8)命令在线帮助 man2、设计一个实现文件拷贝功能的shell程序。
(1)在文本编辑器里输入shell程序:#!/bin/shecho “please enter source file:”read soucecho please enter destination file:”read destcp $souc $destls $dest将程序保存在主目录下,命名为shell.(2)打开终端,输入ls -l,显示目录下所有文件的许可权、拥有者、文件大小、修改时间及名称。
输入 ./shell,运行shell程序。
输入源文件hello.c,目标文件B13011206.c。
通信与信息工程学院2012/2013学年第二学期软件设计实验报告模块名称Visual C++专业广播电视工程学生班级B100117学生学号B10011714学生姓名王建明指导教师田炜题目一:P021E实验要求:设计一个简单的文本编辑器,该系统要求对一个文本文件中的容进行各种常规操作,例如:(1)编辑文本;(2)保存、打开指定位置的文本文件;(3)具有输入输出界面。
1、问题分析与方案设计。
本次程序主要为了让我们了解C语言中对于文件的一般操作。
文件是程序设计中的一个重要概念。
操作系统是以文件为单位对数据进行管理的,也就是说,如果想找外部介质上的数据,必须先按文件名找到所指定的文件,然后再从该文件中读取数据。
C语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)数据顺序组成。
根据数据的组织形式,可分为ASCII文件和二进制文件。
ASCII文件又称文本(text)文件,他的每一个字节放一个ASCII代码,代表一个字符。
二进制文件是把存中的数据按其在存中的存储形式原样输出到磁盘上存放。
在文件系统中,“文件指针”是一个非常重要的概念,通常在进行关于文件操作的C程序时,会定义一个结构体变量的文件指针(FILE *fp),以便于C语言程序能够准确的对文件进行访问及操作。
本次实验程序包含了简单地对于文件的打开、插入、删除、查找、替换、显示、保存的操作,通过对于文件指针的运用以及各种文件指令的运用,基本达到了实验的要求。
在本次实验中,按照顺序程序的设计方法,加以熟练地运用C程序中主函数与一般函数之间的熟练调用,顺利的实现了实验要求的各种结果。
程序中用到的核心方法包括:文件的打开与关闭、文件的读写、文件的定位以及文件的出错检测等。
其中包括了fopen、fclose、fputc、fgetc、fread、fwrite、rewind、fseek、ftell和ferror等函数。
这些函数对算法的实现起了很大的作用具体算法实现过程如下图所示。
软件设计报告姓名:琳学号:B2015年5月16日~2015年6月16日目录第一章软件设计介绍 .................................................................................. 错误!未定义书签。
第二章软件开发平台简介........................................................................... 错误!未定义书签。
第三章软件设计的内容............................................................................... 错误!未定义书签。
分数统计软件(A1) ...................................................................... 错误!未定义书签。
设计题目及要求....................................................................................... 错误!未定义书签。
设计思想及程序流程框图....................................................................... 错误!未定义书签。
逻辑功能程序........................................................................................... 错误!未定义书签。
结果及完善方向....................................................................................... 错误!未定义书签。
课内实验报告课程名:管理信息系统任课教师:专业:学号:姓名:二○一○至二○一一年度第 1 学期南京邮电大学经济与管理学院《管理信息系统》课程实验第 1 次实验报告实验内容及基本要求:实验项目名称:用友ERP供应链管理综合实验实验类型:验证每组人数:1实验内容及要求:1. 基于用友ERP软件中供应链模块,完成企业中采购管理领域的各项业务的操作。
实验结果:一、实验操作步骤总结(限300字,对所做实验的主要流程进行总结,禁止复制实验指导书)1.进入系统管理进行建账工作,具体步骤如下:(1)注册“系统管理员”、(2)增加操作员、(3)创建账套(包括帐套号、单位名称、本位币、存货需要分类、编码方案、数据精度、系统启用)、(4)权限分配2.打开企业应用平台,输入登录信息后进行初始化设置,具体步骤如下:(1)输入基础档案(包括部门及志职员档案、供应商档案、存货信息、仓库档案和收发类别)。
(2)进行期初数据的录。
(填写采购入库单后需要记账)3.处理日常业务。
(操作时要注意细节问题)4.期末工作:月末结账。
5.账簿查询:查询未完成的业务明细表、订单执行情况统计表、暂估入库余额表、入库明细表及发票明细表。
二、实验中遇到的问题及解决方法1、输入基础档案时无法先输入人员档案。
解决方法:要先输入部门档案后再在人员档案中选择部门名称,才能完成输入。
2、在填制到货退回单数量时不知如何表示。
解决方法:在英文状态下在数字前加负号即可。
3、手工结算找不到对应具体的账单。
解决方法:筛选信息要具体,从时间、厂商等具体排除。
三、实验小结(写实验心得和体会)第一次使用ERP软件做的是采购管理练习,虽然老师有过介绍和一些步骤的说明,但是在做得过程中还是会出现很多问题,其实做练习的过程照书本按部就班的做是远远不够的。
在做得过程中我们需要思路清晰,要想明白每一步为什么要这样做,这样我们日后走向工作岗位才能做到脱离书本真正把学到的东西运用到工作上。
第6期2019年2月No.6February ,2019卢俊鹏,薛佳雷,高瑶瑶(南京邮电大学通达学院计算机工程学院,江苏扬州225127)引言近年来,互联网发展迅速,网络便利了人们的生活,也提高了管理效率。
现在各行业的管理系统往往都与网络紧密相关,于是我们想要把互联网络与学校活动管理相结合,顺应时代发展的潮流,便于学校更好地管理活动,学生更积极地参与活动。
现阶段的社团活动管理主要还是以纸质的宣传、统计方式居多。
例如社团招新时的报名表和宣传单,活动统计时的签到表,都是一人一纸现场填写。
这种管理活动参与人员的方式,不仅不环保,而且消耗人力资源,在一定程度上造成了资源浪费。
况且若组织者不能很好地维护现场秩序,会造成人员混乱甚至产生安全隐患。
处于现在这个高度信息化的快速社会中,人工管理也就不再适用,传统的活动管理方法也必将会被淘汰,取而代之的一定是更高效、更简便、更安全的信息管理方式。
大学生社团活动信息管理系统会大大简化像传统社团管理那样的人员分工复杂度,不会再有各种繁重易错的工作冗余,节约了时间成本,也减少了纸张的浪费。
能够让活动管理者的工作更加有条理和轻松,是新时代必将广泛推广和使用的互联网线上管理方式[1]。
1系统概要大学生活动信息管理系统会将关于社团相关活动的信息和各种学校的通知发布在该系统中。
例如新学期社团的招新活动、由社团承办的公益类活动、辅导课程、专业技能和比赛通知等。
实现了面向学生和管理者的社团消息实时化、管理高效化和数据同步化。
将信息加入数据库中存档以便之后的管理和查询。
后台管理界面页本着人性化、简便化的设计理念,可以方便社团管理人员进行各项操作,降低了系统的使用门槛。
2需求分析我们通过与活动负责人的深入沟通和对在校学生的广泛调查,提出了如下的功能需求。
学生参加社团活动时,希望能够便捷地了解该活动的详细情况,进而快捷报名,之后能及时地了解该活动的最新进展情况。
社团活动负责人在活动的发布与后续的开展过程中,希望能够花费更少的时间,减少报名审批的流程和简化签到的方式。
程序设计报告( 2015 / 2016学年第 1 学期)题目:银行定期储蓄管理系统专业测控技术与仪器组长学号姓名 B14050608 刘晨星昱组员学号姓名B14050629 郭文超B14050633蒋文杰指导教师崔子冠指导单位计算机学院软件教学中心日期2015年 9月24日银行定期储蓄管理系统一、课题内容和要求银行定期储蓄管理系统可以实现定期利息计算,客户按密码取款,工作人员口令修改等功能。
具体功能如下:(1)工作人员根据口令进入系统;(2)可以录入新的存单信息(存单编号,储户姓名,身份证编号,住址,联系电话,存款金额,存期,利率,密码),存单信息可以保存在文件中,利率在存期决定后自动得到;(3)根据存单编号可以查询存单信息;(4)根据存单编号和密码可以完成储户取款操作,自动算清应支付的利息并显示在屏幕上。
(5)界面友好,可操作性强,输入信息符合逻辑如存款金额不为负数、不可能有非数字的字符等;(6)工作人员可对信息维护,如口令修改等。
二、需求分析系统中要求工作人员有一个系统帐号,并且帐号有密码,系统的一切操作(如:录入存单信息,信息维护等)都由工作人员执行,而不是由存储用户执行,也主要是说存储用户并不直接与系统交互,而是通过管理员与系统交互。
储户填写的新的存单信息由工作人员输入系统,存单信息包括存单编号,储户姓名,身份证编号,住址,联系电话,存款金额,存期,利率,密码。
存单信息可以保存在文件中,利率在存期决定后自动得到;储户可以根据存单编号查询存单信息,根据存单信息和密码完成储户取款操作,自动计算利息,并显示利息。
功能如图1所示:图1 功能框架图(1)提供可操作的主菜单:输出5个菜单,用于显示管理人员和用户可供操作的函数选项。
根据客户输入的选项来运行不同的功能,运行不同的函数。
(2)新建存单函数:管理人员利用函数输入存单单号,姓名,身份证,地址,手机号码,存期,取款密码,存入金额。
(3)查询存单函数:管理人员和用户利用函数查询已存入的存单信息。
南邮管理信息系统实验报告1 课内实验报告课程名:管理信息系统A任课教师:吴振宇专业:软件工程学号:B13051734姓名:风水师成绩:2016/2017学年第1学期南京邮电大学管理学院用友ERP软件实验报告1.实验过程描述通过学习用友ERP软件中供应链模块的使用方法,了解企业管理信息系统的总体功能结构,掌握软件的操作方法,熟悉企业运作的基本流程。
本次实验主要分为三个部分,采购模块(了解企业采购业务的标准化处理流程学习使用采购模块的操作方法,包括建立基础档案、录入期初数据、填写请购单、采购单、到货单、入库单),销售模块(了解企业库存管理业务的标准化处理流程学习使用库存模块的操作方法,包括建立基础档案、录入期初数据、填写入库单、出库单),以及库存模块(了解企业销售业务的标准化处理流程学习使用销售模块的操作方法,包括建立基础档案、录入期初数据、填写销售订单、发货单、发票)。
采购模块,销售模块,以及库存模块.主要就有以下几步流程:建账工作-->初始化设置-->日常业务-->期末工作-->账簿查询2.业务流程分析(1)采购模块:主要注意的就是在初始化数据是的操作.1、基础档案设置(左下角)——基础档案(1)部门及职员档案(基础档案——机构人员)部门档案-增加-01采购部-保存-02-保存-03-保存-退出人员档案-增加-填0101,蓝色字体必填,单击放大镜,双击内容-保存-增加-填0201-保存-增加-填0301-保存-退出再次退出人员档案(2)客户档案、供应商档案(基础档案——客商信息-供应商档案)增加-填01-保存-……保存-退出客户信息为何无法录入?因为没有启用销售模块,不提供客户管理功能。
如何启用销售模块?基本信息-系统启用-销售管理-当月首日。
现在录入客户信息,选择客商信息-客户档案(3)存货信息(基础档案——存货)计量单位(分组-增加-填写编号、名称、类别-退出,然后选择单位-增加-填写01到04-保存-最后退出A.存货分类:先增加,然后填写,然后保存-最后退出C、存货档案-最后退出(5)仓库档案:(基础档案——业务)-最后退出(6)收发类别:(基础档案——业务)输入1和2时要指定收发标志,输入101 102…时无需指定,因为收发类别已经确定了(101不可能代表出库)收发发发发发发2、期初数据系统启用时如果已经发生下列业务:上月末从南京钢铁厂(供货单位)购进原煤200吨,入1号仓库,入库类别为101采购入库,暂估单价6000。
程序设计报告( 2014/2015学年第二学期)题目:学生基本信息管理系统专业信息管理与信息系统组长学号姓名组员学号姓名指导教师指导单位计算机软件中心日期 2015 年 6 月 25 日学生基本信息管理系统一、课题内容和要求此系统是可实现最基本功能的学生管理系统。
具体的管理信息应包括:两个txt文件,其中a.txt为学生基本信息文件,应该包括学号、姓名、性别、宿舍号码、电话号码;b.txt 为学生成绩基本信息文件,应包括学号、课程编号、课程名称、学分、平实得分、实验成绩、卷面成绩、综合成绩、实得学分。
① a.txt文件不需要编程录入数据,可用文本编辑工具直接生成②数据录入功能: 对b.txt进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据. 综合成绩、学分由程序根据条件自动运算。
③学生基本情况查询1)输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。
2)输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。
④成绩查询:输入一个学号时,查询出此生的所有课程情况,⑤删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此人所有信息。
⑥排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
二、需求分析学生基本信息管理系统的功能框架图如图2.1所示。
图2.1 功能框架图本次课程设计主要利用了结构体数组、结构体指针以及与文件有关的基本操作,通过采用模块化设计的思想,首先创建好各个模块的函数,然后被主函数调用。
主函数通过多次调用不同的函数实现创建文件、查询、删除学生信息模块和排序得基本功能,其总体框图如图2.1。
各个模块的程序编写比较容易,各个函数的接口是否处能理好,是本次课程设计能否成功的关键。
通过合理处理各函数得接口,使之能结合为一个完整的具有多功能的程序,从而顺利完成本次课程设计。
三、概要设计3.1主函数模块在主函数中需要输出主菜单选择界面,简单菜单的制作可利用myprint()函数实现。
获取用户的输入选择,存放在choose 中,接着判断用户是否继续选择,若选择,则重新获得用户输入;否则,推出程序,其流程图见图3.1。
图 3.1 主函数模块的流程图3.2显示菜单模块myprint()函数不需要传递参数,也不需要再定义任何变量,主要是实现输出主菜单。
其函数的流程图见图3.2.图3.2 myprint()函数的流程图3.3创建文件模块3.3创建文件模块mycreat()函数主要实现打开 b.txt文件,并通过fscanf()函数从磁盘上读取文件b.txt的学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩信息然后依据学分、平时成绩、实验成绩、卷面成绩计算得到综合成绩和实得学分并借助临时文件c.txt将综合成绩和实得学分也加到b.txt文件中。
其中第一个for循环语句主要实现计算综合成绩和实得学分的功能,通过fsanf()语句将文件 b.txt得数据一一读入,同时计算综合成绩和实得学分,并将这些数据通过fprintf语句写入临时文件c.txt。
rewind(fp)函数是将fp指示的文件位置指针置于文件开头位置,并清除文件结束标志和错误标志,以便将临时文件c.txt中的数据写入b.txt文件中。
getc与putc函数与文件指针将临时文件c.txt的信息写入b.txt文件中。
其流程图见图3.3。
其流程图见图3.3。
图3.3 mycreat()函数流程图3.4显示信息模块设计本模块主要设计mydisplay(……)函数。
将文件b.txt的数据通过fscanf()语句写入内存,然后通过printf()语句将读到的信息显示到屏幕上。
若文件中无记录,则显示文件中没有记录。
其流程图见图3.4。
图3.4 显示信息模块流程图3.5查询模块的设计本模块主要设计mysearch(……)函数、mysearchbase(……)函数、mysearchscore(……)函数、print()函数。
mysearchbase(……)函数的流程图见图3.5,sch_num ()函数的流程图见图3.6, sch_name()函数的流程图见图3.7, sch_dom()函数的流程图见图3.8。
mysearch (……)函数主要是查询菜单的显示、输出你要查询的信息。
查询菜单主要包括查询基本情况和查询成绩。
它首先在屏幕上显示查询显示菜单,然后利用getch()与if语句判断查询方式以确定需要调用的函数。
数据结构说明:学生结构体数组同3.3.c 选择的不同方式tempnum[10] 要查询的学号tempname[10] 要查询的姓名tempdom[10] 要查询的宿舍号码图图3.6 sch_num ()函数的流程图图3.7 sch_name()函数的流程图图3.8 sch_dom()函数的流程图3.5.2查询成绩信息模块设计本模块主要设计mysearchscore(……)函数。
mysearchscore(……)用绩信息。
其流程图见图3.9schscore_num ()询学生成绩。
其流程图见图3.10图3.9 mysearchscore()图3.10 schscore_num()函数的流程图3.6删除信息模块设计本模块主要设计mydelete(……)函数。
mydelete (……)函数按学号删除信息。
先以只读方式打开文件,进行读取。
如找到相应的信息,结束本次循环,并将a.txt 文件删除后的数据写入临时文件c.txt 中,同时释放文件a.txt 的空间。
再创建一个文件a.txt ,并将临时文件c.txt中的数据一次通过fpintf()语句写到文件a.txt上。
如没有找到则显示文件中无此信息。
文件b.txt的删除与文件a.txt类似。
mydelete()模块的流程图见图3.11。
del_num ()函数实现按学号删除学生成绩。
由于任务要求在文件a.txt中删除某学生的基本信息,在文件b.txt中该生的成绩信息也相应的被删除,所以需要通过学号对文件a.txt与b.txt均进行删除操作。
这是定义函数del_num ()的关键,其流程图见图3.12。
(其中对b.txt的操作与对文件a.txt的操作相似,在此仅画出对文件a.txt的操作)数据结构说明:学生结构体数组同3.3. c 选择的不同方式tempnum[10] 要删除学生的学号FILE *fp *fp1 文件指针图3.11 mydelete()模块的流程图图3.12 函数del_num ()的流程图3.7排序模块设计本模块主要设计mysort(……)函数、print()函数。
mysearchsort(……)函数主要是排序菜单的显示、输出排序后的信息。
排序菜单主要包括按综合成绩和实得学分两种方式实现升序与降序不同方式得排序。
它首先在屏幕上显示排序显示菜单,然后利用getch()与if语句判断排序方式以确定需要调用的函数,然后以只读方式打开文件,进行读取。
通过插入排序法分别实现不同的排序方式。
如找到相应的信息,则将该信息通过调用printf()函数输出到屏幕上。
所谓插入排序就是将无序序列中的各各元素依次插入到已经有序的线性表中。
mysort (……)函数的流程图见图3.13,sort_sumscore ()函数的流程图见图图3.13 mysort (……)函数的流程图四、源程序代码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#define N 100struct student{char num[10];char name[10];char tel[11];char sex[2];int dom; /*宿舍*/char cousenum[3]; /*课程编号*/float cousecount; /*课程学分*/char cousename[25]; /*课程名称*/float comscore; /*平时成绩*/signed int expscore; /*实验成绩*/float paperscore; /*卷面成绩*/float sumscore;/*综合成绩*/float count; /*实得学分*/}stu[12];/* 以下是函数原型说明,被调函数的定义在主调函数后面时,要加此部分*/ void myprint(); /*创建主菜单*/void mycreate(); /*创建管理系统*/void mydisplay(); /*显示*/void mysearchbase(); /*基本情况查询*//* schbase_num sch_dom与schbase_name函数被mysearchbase调用*/void sch_num(FILE *fp);void sch_name(FILE *fp);void sch_dom(FILE *fp);void mysearch(); /*查询*/void mysearchscore(); /*成绩查询*/void schscore_num(FILE *fp,FILE *f); /*成绩查询*/void mydelete(); /*删除*//* del_num函数被mydelete调用*/void del_num(FILE *fp,FILE *f);void mysort(); /*排序*/void sort_sumscore();void sort_count();/*主函数*/void main(){char choose,yes_no;/* system("color 8e");system("cls");*/do{myprint(); /* 显示主菜单*/printf(" ");choose=getch();switch(choose){case '1': mycreate(); break; /* 创建*/case '2': mydisplay(); break; /* 显示*/case '3': mysearch(); break; /*查询*/case '4': mydelete(); break; /* 删除*/case '5': mysort(); break; /* 排序*/case '0': break;default:printf("\n %c为非法选项!\n",choose);}if(choose=='0')break;printf("\n 要继续选择吗(Y/N)?\n");do{yes_no=getch();}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');}while(yes_no!='Y'||yes_no!='y');}void myprint() /* 显示菜单界面*/{/* clrscr(); */printf("\n\n\n\n\n\n\n\n");printf(" 学生管理系统\n ");printf("\n");printf(" |*************************************************************|\n");printf(" | 请输入选项编号(0-5): |\n");printf(" |-----------------------------------------|\n");printf(" | 1--创建学生信息|\n");printf(" | 3--查询学生信息|\n");printf(" | 4--删除学生信息|\n");printf(" | 5--排序学生信息|\n");printf(" | 0--退出|\n");printf(" |-----------------------------------------|\n");printf(" |*****************************************************************|\n");printf("\n");printf(" 欢迎进入学生管理系统——请选择要进行的操作!\n ");}/* 定义创建信息管理系统的函数*/void mycreate(){int i,n;FILE *fp;fp=fopen("e:\\源程序2\\b.txt","r+");if(fp==NULL){printf("\n 打开文件失败!\n");return;}rewind(fp);printf("\n\n");printf("\t\t\t\t请输入学生个数");scanf("%d",&n);for(i=0;i<n;i++){printf("请输入学生学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩\n");scanf("%s %s%s %f %f %d %f" ,&stu[i].num ,&stu[i].cousenum,&stu[i].cousename,&stu[i].cousecount, &stu[i].comscore,&stu[i].expscore,&stu[i].paperscore);}for(i=0;i<n;i++){if( stu[i].expscore==-1)stu[i].sumscore=stu[i].comscore*3/10+stu[i].paperscore*7/10;elsestu[i].sumscore= stu[i].comscore*15/100+ stu[i].expscore*15/100+ stu[i].paperscore*7/10;if(90<stu[i].sumscore&&stu[i].sumscore<=100)stu[i].count=stu[i].cousecount;if(80<stu[i].sumscore&&stu[i].sumscore<=90)if(70<stu[i].sumscore<=80)stu[i].count=stu[i].cousecount*3/4;if(60<=stu[i].sumscore&&stu[i].sumscore<=70)stu[i].count=stu[i].cousecount*3/5;if(stu[i].sumscore<60)stu[i].count=0;fprintf(fp,"%-10s%-7s%-15s%-5.0f%-8.2f%-5d%-8.2f%-8.2f%-8.2f\n",stu[i].num ,stu[i].cousenum,stu[i] .cousename,stu[i].cousecount,stu[i].comscore,stu[i].expscore,stu[i].paperscore,stu[i].sumscore,stu[i].count);}fclose(fp);printf("创建成功!!\n\n");}/* 定义显示信息管理系统的函数*/void mydisplay(){ int i=0;int n=0;struct student temp;FILE *fp;fp=fopen("e:\\源程序2\\b.txt","r");if(fp==NULL){printf("\n 打开文件失败!\n");return;}printf("\n学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分\n");while(feof(fp)==0){fscanf(fp,"%s%s%s%f%f%d%f%f%f\n",&stu[i].num ,&stu[i].cousenum,&stu[i].cousename,&stu[i].cous ecount,&stu[i].comscore,&stu[i].expscore,&stu[i].paperscore,&stu[i].sumscore,&stu[i].count);printf("%-4s %-7s %-12s%-5.0f %-8.2f %-5d %-8.2f %-8.2f %-8.2f\n",stu[i].num ,stu[i].co usenum,stu[i].cousename,stu[i].cousecount,stu[i].comscore,stu[i].expscore,stu[i].paperscore,stu[i].sumscore,st u[i].count);n++;}printf("\n 文件中无记录!\n");elseprintf("\n 文件中共有%d个记录!\n",n);fclose(fp);}/* 定义查询信息的函数*/void mysearch(){char c;FILE *fp;fp=fopen("e:\\源程序2\\a.txt","r");if(fp==NULL){printf("\n 打开文件失败!\n");return;}printf("\n 查询基本信息(b),还是查询成绩(r)?");c=getch();if(c=='b'||c=='B')mysearchbase(); /* 查询基本信息*/ if(c=='r'||c=='R')mysearchscore(); /* 查询成绩*/ if(c!='b'&&c!='B'&&c!='r'&&c!='R')printf("\n 非法字符!\n");fclose(fp);}/* 定义查询信息管理系统的函数(基本情况)*/void mysearchbase(){char c;FILE *fp;fp=fopen("e:\\源程序2\\a.txt","r");if(fp==NULL){printf("\n 打开文件失败!\n");return;printf("\n 按学号查询(h),按姓名查询(m),还是按宿舍查询(d)?");c=getch();if(c=='h'||c=='H')sch_num(fp); /* 按学号查询*/else if(c=='m'||c=='M')sch_name(fp); /* 按姓名查询*/else{if(c=='d'||c=='D')sch_dom(fp); /* 按宿舍查询*/elseprintf("\n 非法字符!\n");}fclose(fp);}/* 定义按学号查询信息管理系统的函数(基本情况)*/void sch_num(FILE *fp){int flag=0,n=0;char tempnum[10];struct student temp;FILE *fp1;fp1=fopen("e:\\源程序2\\a.txt","r");printf("\n 请输入要查询的学号:");gets(tempnum);while(feof(fp)==0){fscanf(fp,"%10s%25s%5s%8d%15s\n",&temp.num,&,&temp.sex,&temp.dom,&temp.tel);if(strcmp(tempnum,temp.num)==0){if(flag==0)printf(" 学号姓名性别宿舍电话号码\n");printf("%10s,%18s,%8s,%12d,%13s\n",temp.num,,temp.sex,temp.dom,temp.tel);flag=1;n++;}if(n==0)printf("\n 文件中无记录!\n");else{if(flag==0)printf("\n 文件中无此人!\n");}fclose(fp1);}/* 定义按姓名查询信息管理系统的函数(基本情况)*/void sch_name(FILE *fp){int flag=0,n=0;char tempname[10];struct student temp;FILE *fp1;fp1=fopen("e:\\源程序2\\a.txt","r");printf("\n 请输入要查询记录的姓名:");gets(tempname);while(feof(fp)==0){fscanf(fp,"%10s%25s%5s%8d%15s\n",&temp.num,&,&temp.sex,&temp.dom,&temp.tel);if(strcmp(tempname,)==0){if(flag==0)printf(" 学号姓名性别宿舍电话号码\n");printf("%10s,%18s,%8s,%12d,%13s\n",temp.num,,temp.sex,temp.dom,temp.tel);flag=1;}n++;}if(n==0)printf("\n 文件中无记录!\n");else{if(flag==0)printf("\n 文件中无此人!\n");}fclose(fp1);}/* 定义按宿舍查询信息管理系统的函数(基本情况)*/void sch_dom(FILE *fp){int flag=0,n=0;int i;int tempdom;FILE *fp1;fp1=fopen("e:\\源程序2\\a.txt","r");printf("\n 请输入要查询记录的宿舍:");scanf("%d",&tempdom);printf("\n");for(i=0;i<4;i++){ while(feof(fp)==0){ fscanf(fp,"%10s%25s%5s%8d%15s\n",stu[i].num,stu[i].name,stu[i].sex,&stu[i].dom,stu[i].tel);if(tempdom==stu[i].dom){if(flag==0)printf(" 学号姓名性别宿舍电话号码\n");printf("%10s,%18s,%8s,%12d,%13s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].dom,stu[i].tel);flag=1;n++;}}}if(n==0)printf("\n 文件中无记录!\n");elseprintf("\n 此宿舍有%d人!\n",n);fclose(fp1);}/*定义查询信息管理系统的函数(成绩查询)*/void mysearchscore()FILE *fp,*f;f=fopen("e:\\源程序2\\a.txt","r");fp=fopen("e:\\源程序2\\b.txt","r");if(fp==NULL){printf("\n 打开文件失败!\n");return;}schscore_num(fp,f);/* printf("\n 请输入要查询的学号");c=getch();*/fclose(f);fclose(fp);}/* 定义按学号查询信息管理系统的函数(成绩查询)*/void schscore_num(FILE *fp,FILE *f){int n=0;float flag=0;char tempnum[10];struct student temp;printf("\n 请输入要查询的学号:");gets(tempnum);while(feof(f)==0){fscanf(f,"%10s%25s%5s%8d%15s\n",&temp.num,&,&temp.sex,&temp.dom,&temp.tel);if(strcmp(tempnum,temp.num)==0){printf(" 学号姓名\n");printf(" %10s %25s\n",temp.num,);}}printf("课程编号课程名称综合成绩实得学分\n");while(feof(fp)==0){fscanf(fp,"%s%s%s%f%f%d%f%f%f\n",&temp.num,&temp.cousenum,&temp.cousename,&temp.cousec ount,&score,&temp.expscore,&temp.paperscore,&temp.sumscore,&temp.count);if(strcmp(tempnum,temp.num)==0){printf("%s%30s%20.2f%17.2f\n",temp.cousenum,temp.cousename,temp.sumscore,temp.count);flag+=temp.count;n++;}}if(n==0)printf("\n 文件中无记录!\n");else{if(flag==0)printf("\n 文件中无此人!\n");else{printf("共修学科:");printf("%d",n);printf("\n实得总学分为:");printf("%7.2f",flag);printf("\n");}}}/* 定义删除信息管理系统的函数*/void mydelete(){FILE *fp,*f;f=fopen("e:\\源程序2\\b.txt","r");fp=fopen("e:\\源程序2\\a.txt","r+");if(fp==NULL||f==NULL){printf("\n 打开文件失败!\n");return;}del_num(fp,f);}/* 定义按学号删除信息管理系统的函数*/void del_num(FILE *fp,FILE *f){ int t;FILE *fp1;char tempnum[10];struct student temp;printf("\n 请输入要删除记录的学号:");gets(tempnum);fp1=fopen("e:\\源程序2\\c.txt","w+");//保存a.TXT删除后的数据while(feof(fp)==0){fscanf(fp,"%s%25s%5s%8d%15s\n",&temp.num,&,&temp.sex,&temp.dom,&temp.tel);if(strcmp(tempnum,temp.num)==0) continue;fprintf(fp1,"%5s %20s %5s %8d%15s\n",&temp.num,&,&temp.sex,&temp.dom,&temp.tel);}//重新删除后的数据写回a.TXTremove("e:\\源程序2\\a.txt");fp=fopen("e:\\源程序2\\a.txt","w+");rewind(fp1);t=getc(fp1);while(!feof(fp1)){putc(t,fp);t=getc(fp1);}fclose(fp);//保存b.TXT删除后的数据fp1=fopen("e:\\源程序2\\c.txt","w+");while(feof(f)==0){fscanf(f,"%s%s%s%f%f%d%f%f%f\n",&temp.num,&temp.cousenum,&temp.cousename,&temp.cousecount, &score,&temp.expscore,&temp.paperscore,&temp.sumscore,&temp.count);if(strcmp(tempnum,temp.num)==0) continue;fprintf(fp1,"%-10s%-7s%-15s%-5.0f%-8.2f%-5d%-8.2f%-8.2f%-8.2f\n",temp.num ,temp.cousenum,temp.cou sename,temp.cousecount,score,temp.expscore,temp.paperscore,temp.sumscore,temp.count);}//重新删除后的数据写回b.TXTf=fopen("e:\\源程序2\\b.txt","w+");rewind(fp1);t=getc(fp1);while(!feof(fp1)){putc(t,f);t=getc(fp1);}fclose(f);fclose(fp1);remove("e:\\源程序2\\c.txt");}/* 定义排序信息管理系统的函数*/void mysort(){char c;FILE *fp;fp=fopen("e:\\源程序2\\b.txt","a+");if(fp==NULL){printf("\n 打开文件失败!\n");return;}fclose(fp);printf("\n 按实得学分排序(c),还是按综合成绩排序(s)?");c=getch();if(c=='s'||c=='S')sort_sumscore(); /* 按综合成绩排序*/ else if(c=='c'||c=='C')sort_count(); /* 按实得学分排序*/elseprintf("\n 非法字符!\n");}/* 定义按综合成绩排序学生管理系统的函数*/void sort_sumscore(){ char c;int n=0;int j,k;FILE *fp;float a[12];fp=fopen("e:\\源程序2\\b.txt","r");if(fp==NULL){printf("\n 打开文件失败!\n");return;}while(feof(fp)==0){ fscanf(fp,"%s%s%s%f%f%d%f%f%f\n",&stu[i].num ,&stu[i].cousenum,&stu[i].cousename,&stu[i ].cousecount,&stu[i].comscore,&stu[i].expscore,&stu[i].paperscore,&stu[i].sumscore,&stu[i].count);a[i]=stu[i].sumscore;i++;}//插入排序for( k=1;k<12;k++)for( j=k;(j>0)&&(a[j]<a[j-1]);j--){float d=a[j];a[j]=a[j-1];a[j-1]=d;}printf("\n 按升序(u),还是按降序(d)?\n\n");c=getch();if(c=='u'||c=='U') /* 按综合成绩的升序排列*/for(j=0;j<12;j++){for(k=0;k<12;k++)if(a[j]==stu[k].sumscore){printf("%-10s%-7s%-15s%-5.0f%-8.2f%-5d%-8.2f%-8.2f%-8.2f\n",stu[k].num ,stu[k].cousenum,stu[k].couse name,stu[k].cousecount,stu[k].comscore,stu[k].expscore,stu[k].paperscore,stu[k].sumscore,stu[k].count);break;}}else if(c=='d'||c=='d')for( j=11;j>=0;j--){for(k=0;k<12;k++)if(a[j]==stu[k].sumscore)printf("%-10s%-7s%-15s%-5.0f%-8.2f%-5d%-8.2f%-8.2f%-8.2f\n",stu[k].num ,stu[k].cousenum,stu[k].c ousename,stu[k].cousecount,stu[k].comscore,stu[k].expscore,stu[k].paperscore,stu[k].sumscore,stu[k].count);break;}}elseprintf("\n 错误字符!\n");fclose(fp);}/* 定义按实得学分排序学生管理系统的函数*/void sort_count(){char c;int i=0;int n=0;int j,k;FILE *fp;float a[12];float b[12];fp=fopen("e:\\源程序2\\b.txt","r");if(fp==NULL){printf("\n 打开文件失败!\n");return;}while(feof(fp)==0){ fscanf(fp,"%s%s%s%f%f%d%f%f%f\n",&stu[i].num ,&stu[i].cousenum,&stu[i].cousename,&stu[i ].cousecount,&stu[i].comscore,&stu[i].expscore,&stu[i].paperscore,&stu[i].sumscore,&stu[i].count);a[i]=stu[i].count;i++;}//插入排序for( k=1;k<12;k++)for( j=k;(j>0)&&(a[j]<a[j-1]);j--){float d=a[j];a[j]=a[j-1];a[j-1]=d;}for(k=0;k<12;k++)b[k]=stu[k].count;printf("\n 按升序(u),还是按降序(d)?\n\n");c=getch();if(c=='u'||c=='U') /* 按综合成绩的升序排列*/{for(j=0;j<12;j++){for(k=0;k<12;k++)if(a[j]==stu[k].count){printf("%-10s%-7s%-15s%-5.0f%-8.2f%-5d%-8.2f%-8.2f%-8.2f\n",stu[k].num ,stu[k].cousenum,stu[k].couse name,stu[k].cousecount,stu[k].comscore,stu[k].expscore,stu[k].paperscore,stu[k].sumscore,stu[k].count);stu[k].count=0;break;}}for(k=0;k<12;k++)stu[k].count=b[k];}else if(c=='d'||c=='d'){for( j=11;j>=0;j--){for(k=0;k<12;k++)if(a[j]==stu[k].count){printf("%-10s%-7s%-15s%-5.0f%-8.2f%-5d%-8.2f%-8.2f%-8.2f\n",stu[k].num ,stu[k].cousenum,stu[k].c ousename,stu[k].cousecount,stu[k].comscore,stu[k].expscore,stu[k].paperscore,stu[k].sumscore,stu[k].count);stu[k].count=0;break;}}for(k=0;k<12;k++)stu[k].count=b[k];}else{printf("\n 错误字符!\n");}fclose(fp);}五、测试数据及其结果分析测试截图请自行完成结果分析如下。