没法传图,自己想一下怎么改吧……一.开发目的:总结软件开发过程中的方法和技巧,更好的应用和数据库技术1.开发内容:开发一套学生成绩管理系统软件采取的研究方法:采用面向对象的编程,结合网络和数据库技术,实现控制和管理。通过系统分析、需求分析、概要设计、详细设计、编写代码、软件测试、软件维护、经验方法总结等一系列实验方案,实验软件的开发。
2.具体开发方案:分七个阶段进行:系统分析、需求收集和分析概念设计第一阶段:系统分析、需求收集和分析这一阶段首先进行系统分析,分析确定系统的规模和范围,确定软件的总体要求以及所需要的硬件和支撑软件,确定待开发软件与外界的接口,根据用户的情况确定软件对操作的要求,以及待开发软件总体上的约束和限制,完善项目计划。在这之后,这一阶段的大部分时间将被用来进行需求收集和分析。向学校管理人员及学生了解情况,确定软件系统的综合要求,分析软件系统的数据要求,导出系统的逻辑模型,修正项目开发计划。采用结构化分析方法,生成数据流图、数据词典及加工逻辑说明。估计阶段跨度:2006年某月初至某月中旬第二阶段:概要设计在这一阶段将确定软件系统的结构,对全局数据结构进行设计,进行模块划分,确定每个模块的功能 接口以及模块间的调用关系。采用与结构化方法衔接的结构化设计方法,生成结构图及概念设计说明书。估计阶段跨度:2006年某月中旬至某月底第三阶段:详细设计为每个模块设计实现的细节将成为这个阶段的主要任务,还要对局部数据结构进行设计。采用结构化设计方法。采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。使得程序具有良好的结构,增强程序的可读性。生成程序流程图及详细设计说明书。详细设计时,如果不满意,须回到概要设计中重新完善设计。估计阶段跨度:2006年某月初至某月中旬第四阶段:编写代码这一阶段用来根据详细设计说明书编写代码。采用计算机语言编写。追求高质量的代码,生成源程序代码、内部文档。估计阶段跨度:2006年某月中旬至某月底第五阶段:软件测试这将是一个很重要也将是一个很耗时间和精力的阶段。在这一阶段中将尽可能多地发现软件中的错误和缺陷。如果有错,还将退回到编码阶段进行调试。测试过程分为单元测试、集成测试和确认测试。估计阶段跨度:2006年某月初至某月中旬第六阶段:完善各项文档及和报告,从整个开发过程和这些文档中总结经验和教训,罗列各种方法和技巧。估计阶段跨度:2007年某月中旬至某月底。需求分析说明书一,引言21世纪以高科技为核心的知识经济将占主导地位,国家的综合国力和国际竞争力将越来越取决于科学技术创新水平。教育作为知识创新、传播和应用的基础,培养和输送人才的摇篮,已经成为经济发展和社会进步的基础。尽管人类进步的程度随着不同时代,不同地区而有所变化,教育的口径却在不断扩宽,以便使过去仅供少数人使用的教育资源能够为更多各种年龄、不同社会阶层和背景的人们所用。在信息爆炸的时代,传统教学管理面临着诸多挑战。1.编写目的:开发基于互联网的学生选课系统,提高管理工作的效率、提高信息的开放性、改善学生和教师对其最新信息查询的准确性。
2.背景说明随着学校规模的不断扩大,专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而目前许多高校的学生选课管理仍停留在复杂的人工操作上,重复工作较多,工作量大,效率低,因此,迫切需要开发基于互联网的体育课信息管理系统来提高管理工作的效率。基于互联网的学生选课管理系统,在学生选课的规范管理、科学统计和快速查询方面具有较大的实用意义。它提高了信息的开放性,大大地改善了学生、教师对其最新信息查询的准确性。
3.术语定义及参考资料1. (美) Grady Booch,James Rumbaugh,Ivar Jacobson,《UML用户指南》,机械工业出版社,2001年8月2.Microsoft,MSDN3.Microsoft, SQL Server2000联机手册4.Roger S. Pressman。软件工程——实践者的研究方法。机械工业出版社,19975.IPL。Software Testing and Software Development Lifecycles。IPL,19966.Karl E. Wiegers《软件需求》机械工业出版社,19997.张海藩《软件工程导论》清华大学出版社。4任务概述4.1. 目标系统开发的总体任务是实现学生选课信息关系的系统化、规范化和自动化。
4.2. 系统技术学生选课系统要求具有信息处理的开发性,方便教师上传学生成绩、学生上网选课和查询选课信息及成绩等,因此本系统设计为基于WWW的网络数据库应用系统,使用ASP脚本以Access为数据库的开发技术,运行在支持ASP的服务器上。
4.3基本设计概念和处理流程采用基于SQL Server 的分布式数据库管理系统。三层结构是目前用得最多的,这种结构比传统的C/S结构增加了一个应用程序服务器,应用程序服务器包括了统一的界面、业务规则和数据处理逻辑等等,这样客户端程序就可以做得比较小,也就是常说的瘦客户,更由于业务规则和数据处理逻辑的集中在服务器上统一管理,客户端无须进行复杂的计算,也不会因为错误的操作而影响到其他的用户,所以他的可靠性、稳定性和效率都比较好。
4.4. 用户的特点为保证系统安全高效的运行,本系统把用户划分为3类:教务处、教师和学生。不同的用户在系统中的作用和权限也有所不同,所以它所需要完成的功能也就不同。教务处可以完成本系统所有的功能:
1、) 学生信息管理,除学生基本信息外,还可管理学生所选课程、成绩等;
2、) 教师信息管理,包括教师个人的基本情况和任课情况;
3、) 项目及班数的设定:根据学校教务处所排课进行班级数及人数的统计,然后根据统计结果进行项目及班数的设定;
4、) 排课:根据上一步分班情况安排任课教师;
5、) 报表生成及输出:生成教师担任课程分班表、按项目生成学生成绩表、按学生行政班生成成绩表及所有报表的输出。教师在本系统的功能:查询学生选课情况、自己任课情况、获取自己所担任课程分班表、录入及修改成绩等。学生在本系统的功能:查询本人信息、教师任课信息、选课、选课信息查询、成绩查询。
5.需求规定5.1. 对功能的规定1.可实现学生选课注册2.方便实现学生选课信息查询3.可对学生成绩档案进行管理,成绩表单生成简便。
4.安全有效的用户区分,管理5.档案数据的高安全性,保密性6.有帮助文档5.2. 对性能的规定使用稳定,操作性能好,操作方法易于掌握,系统的安全性强6. 设计思想用户的需求具体表现在对各种信息的提供、编辑、处理及查询统计上。这就要求数据库结构能充分满足各种信息的输入、处理和输出。通过分析学生选课管理系统的现实需求,学生选课管理系统各环节的基本数据及数据处理流程,在与管理人员沟通、交流与探讨的基础上,得到以下学生选课系统的数据流程图6.1. 数据库的设计通过对学生选课管理系统工作内容和相关数据流程分析,根据学生选课管理系统的需要,就可以设计出能满足用户需求的各种实体,以及它们之间的关系,由此得到数据库所支持的数据模型,即数据库的逻辑结构,具体情况如下:
1.学生信息表:开学时将教务处提供的学生信息库按系统的要求修改库结构并导入Access数据库中,应包括如下信息:姓名、学号、院系、班级、性别、所选课程、任课教师、备注等。
2.教师信息表:包括教师姓名、教师代码、性别、年龄、职称、主要教授课程、兼任课程等。
3.课程信息:包括课程目录、课程、课程代码、教学内容、任务与目的、考试方法、要求等。
4.课程表:包括课程名称、课程编号、任课教师、课程学分、上课时间。
5.成绩单列表:包括学生姓名、学号、院系、班级、课程、任课教师、成绩。
6.2. 系统功能特点1.内容全面 系统全面覆盖了体育课信息,可为学校、教师和学生提供全面准确的信息。
2.层次分明 系统采用模块化程序设计结构。各模块之间既相互独立,又具有一定的联系,各模块可独立编制、调试、查错、修改和执行,结构严谨,便于扩展和维护。
7.系统需求分析说明:学校每年新生入学,毕业生离校和各种其它变动,如学籍变动,个人信息修改。每学期学校者要开设一定的课程提供给学生根据自己的情况来选择,最后的选择结果要给出学生的课程表。如何有效的管理这些学生信息,帮助学校和老师管理和掌握这些情况,这就是学生信息管理系统需要完成的任务。下面用软件工程的思想和方法完成该系统的设计过程。功能:个人信息查询和修改,包括流动,注册,更新管理可行性研究报告1. 编写目的编写这份可行性研究报告的目的是让读者能够了解本系统的开发可行性。预期的读者包括上级领导,相关开发人员以及管理人员。
一.可行性研究的前提随着科学技术的进步和社会经济的发展,计算机在现实生活中扮演越来越重要的角色,PC机价格不断的下降和生活水平的提高使得更多的中国家庭能够拥有自己的改变世界的机器,与此同时,我们也已经注意到,在大学校园里,越来越多的计算机已经进入同学们的宿舍,成为他们学习,生活中的一部分。学生成绩管理方面,进入了信息化时代,我们有能力让我们的生活变的更好,对于学生成绩管理人员每日繁重的工作可以通过计算机来进行缓解,以实现管理自动化,工作人员对资料的管理,信息的发布,用电安全的控制均是人工作业,运作效率较低。因此,建立一个自动化的管理服务的计算机应用软件是十分必要的1.1 要求C++.net,传感器,SQL.1.2 目标能够快速的查询出学生的各科成绩以及所在班级等各种用途。
1.3 进行可行性研究的方法对学生和校领导采用问卷调查的方法,询问他们,以确定最佳的可行性研究方案。软件采用现代流行WINDOWS操作界面。是标准的WIN32应用程序,可运行在WIN95WIN98WinMeWIN2000WINXPWINNT等系统平台上的多任务应用程序。在运行时可以直观的浏览、查询和掌握学生的成绩,同时能够了解学生的基本信息所在系部、班级、宿舍的具体地址。结束了人工统计的耗时长、工作量大、错误率高的缺点。
1.4 评价尺度1. 是否功能齐全,运行稳定。
2.在网络功能方面是否方便管理。
3.设置是否灵活开4.是否具有多任务,高效率的特点。
5.是否具有界面友好,操作简单的特点。2 处理流程和数据流程2. 所建议的系统2.1 对所建议系统的说明我们所建议的系统为学生成绩管理系统。它是为了提高学生成绩管理的自动化程度而开发的。它可以解决一下问题:改变学生成绩输入的麻烦以及查询工作量大的问题还有输出的不便。
3.影响3.1 对设备的影响由于以前无自动化管理的方案,所以所有设备都需要购买。
3.2.对软件的影响由于以前无自动化管理的方案,所以不需要考虑对现存应用软件合支持软件的影像。
3.3.对用户单位机构的影响为了建立和运行所建议系统,需要提高管理人员的技术水平。
3.4.对系统运行过程的影响所建议系统没有影响运行过程。
3.5.对开发的影响所建议系统对软件开发人员要求不高,但是对硬件要求比较高。
3.6.对地点和设施的影响所建议系统对建筑物无改造,可以利用原有的通信线路。
3.7 技术条件方面的可能性本软件有计算机系的学生开发,调试,由计算机系老师知道。可完成性很高。
4. 可选择的其他系统方案 由于此系统方案是学生开发,而且资金有限所以暂时无其他系统方案。
5. 投资及效益分析5.1 支出分析:5.2 收益分析:5.3 收益/投资比5.4 投资回收周期5.5 敏感性分析6. 社会因素方面的可能性所有软件都选用正版。所有技术资料都由提出方保管。合同制定确定违约责任。
7.用户使用可行性由于学校的老师都有一定的计算机基础,不用培训就可以使用,所以用户使用可行性通过。
8. 结论通过上述分析可以知道这个软件操作简单、功能齐全、功能开放、运行稳定、多任务、高效率等特点。所以说是计算机与学生成绩管理上的好软件!设计说明书一.概要设计说明书1.系统功能设计2.数据库概念设计根据以上数据流图导出数据库所需数据项和数据结构学生:学号,姓名,性别,生日,所在院系,所在班级:课程:课程号,课程名,讲师,上课时间,地点,课程简介选课结果:记录号,选课学生,所选课程学籍变更记录:记录号,变更情况,记录时间,详细描述2.1数据库概念结构设计的E-R 图说明:E-R图中矩形代表实体,菱形代表实体间的联系,圆角矩形代表实体的属性2.2数据库逻辑结构设计根据以上E-R图,需要五个基本表:学生信息表、课程信息表、选课结果表、奖惩信息表、其中教师信息是处部表,不列出,由于使用打开系统的不光是教务人员,每个学生都要登录到选课系统进行课程的选择,因此,需要对不同的登录人员进行密码的认证和权限的限制,防止越权行为,用户名,密码,权限,保存在一个表中。
1. USER-PASS用户密码信息表字典字段名数据类型是否可空说明IDCHARNOT NULL用户名(主键)PASSWORDCHARNOT NULL密码AUTHORITYCHARNOT NULL权限2. COURSE课程信息表数据字典字段名数据类型是否可空说明IDCHARNOT NULL课程号(主键)NAMEVARCHARNULL课程名TEACHERVARCHARNILL讲师CLASTIMEVARCHARNULL上课时间CLASSROMCHARNULL上课地点INTROVARCHARNULL简介3. COURSE-SELECT选课结果表数据字典字段名数据类型是否可空说明IDSMALL INTNOT NILL记录号(主键)COURSECHARNULL课程名STUDENTCHARNULL选课学生(外部关键4. STUDENT学生个人信息表数据字典字段名数据类型是否可空说明IDSMALL INTNOT NULL学号(主键)NAMEVARCHARNOT NULL姓名SEXCHARNOTNULL性别CLASSCHARNULL班级DEPARTMENTCHARNULL院系BIRTHDAYVARCHARNULL生日5. 奖惩记录信息表字段名数据类型是否可空说明IDSMLL INTNOT NULL记录号(主键)STUDENTCHARNOT NULL学号(外部键)LEVELCHARNULL奖惩代码TIMEDATANULL时间DEscriptIONVARCHARNULL描述二主要模块详细设计说明书 1用户身份认证模块功能:按用户输入的用户名和密码是否合法合法则进入应用程序非法则显示出错信息界面:由总控模块调用模块说明细化为详细逻辑IPO图用户身份认证模块输入处理 输出连接数据库表 连接数据库错误中断程序 捕捉错误用户名 获取用户名用户密码 获取用户密码 读USER-PAS判断用户名是否存在 判断密码是否存在提示信息 捕捉异常 判断用户权限是合法 隐藏登录窗口 显示主窗体 文件USER-PASS表2.选课模块功能:接受学生选课信息 刷新学生课程表界面:调用添加、删除模块,打印课表模块将模块说明细化为详细逻辑选课处理IPO图 输入 处理 输出课程编号 为课程号过滤 输入课程编号异常提示 接受课程号 打开课程信息表 判断是添加或是删除 添加 检索课程表读该记录 若该记录存在 显示所选课程详细信息 执行添加语句调用添加模块 将选课结果刷新 删除执行删除语句 调用删除模块 将稳定课结果刷新 提交 课表:课程编号,课程名 调用打印课表模块文件 课程信息表选课结果表3. 课程申请模块功能:接受输入的新添课程信息 将新课程信息存入课程信息表 删除旧课程界面:调用已开课程信息表 调用申请修改程序将模块细化为详细逻辑IPO图课程管理模块输入 处理 输出课程编号 添加新课程获取当前教师所选课程打开已开课程表查询是否存在该记录若无该记录则是新课程调用添加模块提取课程编号提取课程名称提取课程简介提交若有该记录则不是新课程出错处理 提示信息删除旧课程文件 课程信息表软件测试输入数据有效等价类无效等价类证件号码1、6位数字字符2、有效数字字符3、少于6个字符4、大于6个字符使用功能5、选课6、查询7、输入其他文字有效测试用例测试数据 期望结果 测试范围123456 输入有效 1选课 输入有效 55无效测试用例测试数据期望结果测试范围12jda1输入无效21234561输入无效412341输入无效312t21输入无效2、 3排课输入无效7(折半查找算法测试)2测试名称:模块输入课程编号过滤的测试方案a) 规定课程编号为输入4个字符,头两个字符为字母,后2个字符为数字例如TP38b)测试方法采用黑盒测试法中的等价类划分法划分等价类输入数据有效等价类无效等价类课程号1两字母+两数字2有非数字或字母字母3 A--Z4字母少于两个或多于两个数字5 00--996数字少于两个或多于两个为有效等价类和每个无效等价类设计测试用例测试数据期望结果测试范围HY76输入有效1、3、5@D78输入无效2S86输入无效4MA2输入无效6HY345输入无效6DEH94输入无效4测试名称:课程查找模块设计测试方案a) 本模块采用的是折半查找算法主要是测试各程序在各种典型情况下是不能有效的进行查找b) 测试方案采用选择白盒测试法中的路径覆盖法说明:由于输入的课程编号已经被过滤,所以编号接受的范围为00--99另外,团IDC网上有许多产品团购,便宜有口碑
1、 输入一个班级的学生基本信息(包括学号,姓名,性别,5门课程成绩
#include<stdio.h>
#include<stdlib.h>
int function1()
int function2()
int function3()
int function4()
int function5()
int function6()
int function7()
int function8()
int main(void)
{
int choice
printf("======大学信息管理系统=====n")
printf("---------------------------n")
printf("1:办公室管理 5:财务管理n")
printf("2:教务管理 6:图书管理n")
printf("3:科研管理 7:设备管理n")
printf("4:人事管理 8:后勤管理n")
printf(" 0:退出系统n")
printf("---------------------------n")
printf("请您在上述功能中选择(0--8):")
do
{
scanf("%d",&choice)
switch(choice)
{
case 1:function1()break
case 2:function2()break
case 3:function3()break
case 4:function4()break
case 5:function5()break
case 6:function6()break
case 7:function7()break
case 8:function8()break
case 0:exit(0)
default:
printf("无此功能!n请重新选择:n")
}
}while(1)
return(0)
}
function1()
{
printf("该功能还未开放n")
}
function2()
{
printf("该功能还未开放n")
}
function3()
{
printf("该功能还未开放n")
}
function4()
{
printf("该功能还未开放n")
}
function5()
{
printf("该功能还未开放n")
}
function6()
{
printf("该功能还未开放n")
}
function7()
{
printf("该功能还未开放n")
}
function8()
{
printf("该功能还未开放n")
}
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <windows.h>struct stud_node{ long int ID //学号 int age //年龄 long int dormnumber,phonenumber //宿舍号码,电话号码 char name[15] //姓名 char sex //性别 struct student*next }struct stud_node*Create_Stu_Doc()//新建链表int main(void){ system("color 3E")FILE *fp=NULL//定义文件指针 fp=fopen("stud.txt","wb")if(fp==NULL) { printf("File open error n") exit (0)}struct stud_node*head,*p int choice,age long int ID,dormnumber,phonenumber char name[15],sex int size=sizeof(struct stud_node)printf("+---------------------------+n") printf("| 欢迎使用教务信息管理系统 |n") printf("+---------------------------+n")printf("ntt-----------------------------------------------------n") printf("tt+ 主菜单+n") printf("tt-----------------------------------------------------n") printf("tt+ [1]--录入学生资料 +n") printf("tt+ [0]--退出系统 +n") printf("tt-----------------------------------------------------n") printf("n") printf("tt请输入您的选择:")scanf("%d",&choice)switch(choice){case 0 : break case 1 : head=Create_Stu_Docbreak default:printf("n无效选项!") } }struct stud_node*Create_Stu_Doc()//新建链表{int y,agelong int ID,dormnumber,phonenumberchar name[15],sexint size=sizeof(struct stud_node)struct stud_node*head,*tail,*pFILE *fp=NULL//定义文件指针fp=fopen("stud.txt","r")head=tail=NULLprintf("--------------------n")printf("请输入学生的学号:")printf("请输入学生的姓名:")printf("请输入学生的性别:")printf("请输入学生的年龄:")printf("请输入学生的宿舍号码:")printf("请输入学生的电话号码:")while(!feof(fp)){p=(struct stud_node *)malloc(size) fscanf(fp,"%ld%c%c%d%ld%ld",&ID,&name,&sex,&age,&dormnumber,&phonenumber) p->ID=ID strcpy(p->name,name) strcpy(p->age,age) p->dormnumber=dormnumber p->phonenumber=phonenumber p->next=NULL if(head==NULL) head=p else tail->next=p tail=p }printf("n1.继续输入.n0.结束输入.n") printf("请选择:") scanf("%d",&y) if(y)return head fclose(fp)}
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#define max 20
typedef struct student//学生
{
char sno[max]// 学号
char sname[max] //姓名
char sex[max] //性别
char age[max] //年龄
char depart[max] //系
char classs[max] //班
char grade[max]//年级
struct student* next
} student
student* head
int LogOn() //登录模块,已实现输入密码不回显,如果中途发现输错某几位,可退格键重输
{
char username[max],password[max]
printf("n请输入用户名:")
scanf("%s",username)
printf("n请输入密码(最多15位):")
//开始以不回显且支持退格方式获取输入密码
int i=0
while((i>=0)&&(password[i++]=getch())!=13)//条件i>=0是用于限制退格的范围
{
if(password[i-1]=='b')//对退格键的处理
{
printf("%c%c%c",'b','0','b')
i=i-2
}
else
printf("*")
}
password[--i]='0'
//已获取密码。验证用户身份
if(!strcmp(username,"zhang")&&!strcmp(password,"8147086"))
{
printf("n登录成功!")
return 1
}
else
return 0
}
void regist()
{
char ch
student *s,*ptr //s用来建新结点,ptr用来暂存头结点
do
{
s=(student*)malloc(sizeof(student))// 新建一个学生结点
printf("n开始注册...") //开始注册
printf("n请输入该学生的学号:")
scanf("%s",s->sno)
printf("n请输入该学生的姓名:")
scanf("%s",s->sname)
printf("n请输入该学生的性别:")
scanf("%s",s->sex)
printf("n请输入该学生的年龄:")
scanf("%s",s->age)
printf("n请输入该学生的系:")
scanf("%s",s->depart)
printf("n请输入该学生所在的班:")
scanf("%s",s->classs)
printf("n请输入该学生所在的年级")
scanf("%s",s->grade)
ptr=head
head=s//将新结点插入队头
s->next=ptr
fflush(stdin)
printf("n请问是否继续注册?(Y/N)")
scanf("%c",&ch)
}while(ch=='Y'||ch=='y')
return
}
void ElePrint(char str[]) //输出单个元素
{
if(str==NULL) exit(0)
printf("%s",str)
for(unsigned int i=0i<12-strlen(str)i++) printf(" ")//为了对齐输出,需插入一些空格
return
}
int LinePrint(student *ptr) //输出一行
{
if(ptr==NULL) //检查传进来的指针
return 0
printf("n")
ElePrint(ptr->sno)
ElePrint(ptr->sname)
ElePrint(ptr->age)
ElePrint(ptr->sex)
ElePrint(ptr->depart)
ElePrint(ptr->classs)
ElePrint(ptr->grade)
return 1
}
void print() //输出全部学生信息
{
student *ptr=head
printf("n学号姓名年龄性别系 班 年级")
while(ptr)
{
LinePrint(ptr)
ptr=ptr->next
}
printf("n")
return
}
void search()//查询模块
{
int method//查询方式
char no[max],name[max],departm[max],clss[max],grades[max]//用来接收查询关键字
while(1)
{
printf("n请选择查询方式")
printf("n1.按学号查询")
printf("n2.按姓名查询")
printf("n3.按所在系查询")
printf("n4.按所在班级查询")
printf("n5.按所在年级查询")
printf("n6.打印全部学生信息")
printf("n7.返回主菜单n")
scanf("%d",&method)
student *p=head,*temp
switch(method)
{
case 1:
printf("n请输入要查询的学号:")
scanf("%s",no)
while(p)
{
if(!strcmp(p->sno,no))
break
else
{
temp=p
p=p->next
}
}
printf("n学号姓名年龄性别系 班 年级")
LinePrint(p)
break
case 2:
printf("n请输入要查询的姓名:")
scanf("%s",name)
printf("n学号姓名年龄性别系 班 年级")
while(p)
{
if(!strcmp(p->sname,name))
LinePrint(p)
p=p->next
}
break
case 3:
printf("n请输入学生所在的系:")
scanf("%s",departm)
printf("n学号姓名年龄性别系 班 年级")
while(p)
{
if(!strcmp(p->depart,departm))
LinePrint(p)
p=p->next
}
break
case 4:
printf("n请输入学生所在的班:")
scanf("%s",clss)
printf("n请输入学生所在的年级:")
scanf("%s",grades)
printf("n学号姓名年龄性别系 班 年级")
while(p)
{
if(!strcmp(p->classs,clss)&&!strcmp(p->grade,grades))
LinePrint(p)
p=p->next
}
break
case 5:
printf("n请输入学生所在的年级:")
scanf("%s",grades)
printf("n学号姓名年龄性别系 班 年级")
while(p)
{
if(!strcmp(p->grade,grades))
LinePrint(p)
p=p->next
}
break
case 6:
print()
break
case 7:
return
default:
printf("很抱歉,暂无此查询方式!")
break
}
}
}
void modify()//修改学生信息
{
char num[max]
student *p=head
printf("n请输入要修改的学生的学号:")
scanf("%s",num)
while(p)
{
if(!strcmp(p->sno,num))
break
else
p=p->next
}
if(p==NULL)
{
printf("n错误:没有此学生的信息!n")
return
}
LinePrint(p)
printf("n请输入要修改的该学生的信息:")
printf("n1.姓名")
printf("n2.性别")
printf("n3.年龄")
printf("n4.所在的系")
printf("n5.所在的班")
printf("n6.所在的年级")
char name1[max],sex1[max],age1[max],depart1[max],class1[max],grade1[max]
int select
fflush(stdin)
scanf("%d",&select)
printf("n请输入新的信息:")
switch(select)
{
case 1:
scanf("%s",name1)
strcpy(p->sname,name1)
break
case 2:
scanf("%s",sex1)
strcpy(p->sex,sex1)
break
case 3:
scanf("%s",age1)
strcpy(p->age,age1)
break
case 4:
scanf("%s",depart1)
strcpy(p->depart,depart1)
break
case 5:
scanf("%s",class1)
strcpy(p->classs,class1)
break
case 6:
scanf("%s",grade1)
strcpy(p->grade,grade1)
break
default:
printf("nError!")
break
}
LinePrint(p)
return
}
void del()// 删除某学生的信息
{
student *p=head,*temp=head,*s
char num1[max]
printf("n请输入要删除的学生的学号:")
scanf("%s",num1)
while(p)//查找该学生所在的结点
{
if(!strcmp(p->sno,num1))
break
else
{
temp=p
p=p->next
}
}//while
if(!p)
{
printf("n不存在此学生的信息.")
return
}
LinePrint(p)//输出该学生的信息
printf("n请问真的要删除该学生的信息吗?(Y/N)")
char ch
fflush(stdin)
scanf("%c",&ch)
if(ch=='Y'||ch=='y')
{
s=p->next
temp->next=s
free(p)
printf("n已经删除该学生的信息.")
}
return
}
void sort() //排序模块。将学生记录按学号从小到大排列。用起泡排序算法实现
{
student *ptr,*s=head,*p
int count=0,count1
while(s)//统计链表结点个数
{
count++
s=s->next
}
for(int i=1i<counti++)
{
ptr=head
p=NULL
count1=count-i//用来控制每轮起泡排序的终点,即每次把学号最小的结点移到倒数第i个结点
while(ptr&&ptr->next&&(count1--))
{
if(strcmp(ptr->sno,ptr->next->sno)>0)
{
s=ptr->next
ptr->next=s->next
if(p==NULL) //ptr处于队头时
head=s
else
p->next=s
s->next=ptr
p=s
}
else
{
ptr=ptr->next
if(p==NULL) //ptr处于队头时
p=head
else
p=p->next
}
}
}
return
}
void quit()
{
char ch
printf("n真的要退出?(Y/N)")
fflush(stdin)
scanf("%c",&ch)
if(ch=='Y'||ch=='y')
exit(0)
return
}
int main()
{
int option
printf("nCopyright@2005 KongXinCai All rights reserved.")
printf("n欢迎使用学生信息管理系统!n")
//登录模块
int icheck=0
while(icheck<3)
{
if(LogOn()==0)
icheck++
else
break
}
if(icheck==3)
{
printf("n连续登录三次不成功,退出!")
exit(0)
}
//系统界面
while(1)
{
printf("nn请选择需要的服务:")
printf("n1.注册")
printf("n2.查询")
printf("n3.修改")
printf("n4.删除")
printf("n5.排序")
printf("n7.求平均")
printf("n6.退出n")
scanf("%d",&option)
switch(option)
{
case 1:
regist()
break
case 2:
search()
break
case 3:
modify()
break
case 4:
del()
break
case 5:
sort()
break
case 6:
quit()
break
}
}
return 0
}
以上就是关于求一个用C+编写的题目为学生学籍信息管理系统设计,整个系统要设计为数据录入、查询,删除,排序模块,全部的内容,如果了解更多相关内容,可以关注醉学网,你们的支持是我们更新的动力!