




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生成绩信息管理系统1引言 1设计目的与要求 1设计内容 12系统需求与功能分析 1系统需求分析 2系统功能分析 23总体结构设计 3系统的结构设计 3系统管理流程图 34系统详细设计和系统实现 45系统测试 86结束语 8参考文献 8附录1:链表结构化设计源程序清单 9附录 2 : 顺序表结构化设计源程序清单26设计目的与要求该学生信息管理系统采用C+斑言开发研制,针对学生成绩及其数据特点,可以全面实现对学生成绩的插入、查询、修改、删除和输出等功能的计算机管理。它能使学生信息数据的工作人员从繁重的工作中解脱出来,大大减轻了工作量,减少人为的工作失误,全面提高学生信息管理的效率,从而使学校对于
2、学生成绩的管理水平和技术水平跃上一个新的台阶。(1) 程序要添加适当的注释,程序的书写要采用缩进格式。(2) 程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。(3) 程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。(4) 根据实验报告模板详细书写实验报告, 在实验报告中给出链表根据姓名进行查找的算法和插入算法的流程图。1.2 设计内容定义一个包含学生信息(学号,姓名,成绩)的的顺序表和链表,使其具有如下功能:(1) 根据指定学生个数,逐个输入学生信息;(2) 逐个显示学生表中所有学生的相关信息;(3) 根据姓名进行查找,返
3、回此学生的学号和成绩;(4) 根据指定的位置可返回相应的学生信息(学号, 姓名, 成绩) ;(5) 给定一个学生信息,插入到表中指定的位置;(6) 删除指定位置的学生记录;(7) 统计表中学生个数。2 系统需求与功能分析系统需求分析(1) 能完成学生信息的插入、查询、修改、删除、输出等功能;(2) 采用单链表与顺序表存储结构实现;(3) 所有数据以外部文件方式保存。系统功能分析(1) 要设计一个学生成绩管理系统,其功能包括:插入函数Add() :将学生成绩信息插入到链表中;查询函数Search():分别可以按学号和按姓名进行学生成绩查询;删除函数Delete():当需要删除的学号和姓名一致时则
4、删除对应的学生记录;修改函数Modify():修改指定的学生成绩信息;输出函数Show() :输出全部学生成绩信息;菜单函数Menu():为程序的菜单函数为实现各种功能提供便捷;读取数据函数Read():从外部文件读取学生成绩信息;保存数据函数Save():将数据保存到外部文件中。3总体结构设计系统的结构设计通过对学生信息管理系统的功能分析,学生成绩管理系统系统管理流程图主模块应负责应用程序的主界面,由它调用其他模块.因此主模块应具有操作性好、界面清晰的特点,使用户能够很方便地找到所需功根据功能需求的结果分析,主界面应该由学生信息插入管理,学 生信息查询管理、学生信息修改管理、学生信息删除管理
5、和学生信息 输由管理组成,可以通过输入相应的数字进入相应的功能模块。表学生信息管理系统详细设计和系统实现系统总体设计完成后,就可以根据需求对各个模块来进行实现了 在本系统中需要编码实现的主要有学生信息插入、学生信息查询、学 生信息修改、学生信息删除和学生信息输生等5个模块。(1)学生信息插入模块(2)学生信息查询模块按学号查询学生信息同按姓名查找学生信息,此处不再详细列由(3)学生信息修改模块首先要查找与要修改数据相匹配的信息,若没有则返回失败。否 则把相应的信息输由,然后再重新输入新的数据并保存到单链表。(4)学生信息删除模块当选择删除功能时,首先输入要删除的同学的姓名,然后输入要 删除的同
6、学的学号,如果该同学存在并且姓名与学号匹配的上,则进 行删除操作,否则返回失败。其流程图如下:N删除操作定义为将单链表的第 i个结点删去。因为在单链表中结点a存储地址在其前驱结点 am的指针域,所以必须首先找到am的存储地址p,然后令p的next域指向ai的后继结点,即把结点 ai从链上摘下来,最后释放结点 ai(5)学生信息输生模块从单链表表头遍历整个单链表,将所有数据输由。其部分代码如下:void Function二Show() char choose;Student *temp;system("cls");temp=Student_First->Next;if(
7、!temp) cout<<"文件无数据 nn "<<endl;cout<<"1. 返回主菜单"<<endl;cin>>choose;while(choose!='1') cout<<"1. 返回主菜单"<<endl;cin>>choose;Menu();else cout<<" 姓名 t 学号 t 语文成绩t 数学成绩t 英语成绩n"while(temp!=NULL) temp->Out
8、();temp=temp->Next;cout<<"1. 返回主菜单"<<endl;cin>>choose;while(choose!='1') cout<<"1. 返回主菜单"<<endl;cin>>choose;Menu();5 系统测试在完成了系统各方面的设计后,并不是可以运行就完成的,为了保证系统性能的稳定性跟安全性等,就要对系统做测试。测试环境如下:硬件:P4c80GBM 盘,512M 存;软件 :Windows XP Personal SP2 ,分辨
9、率1024*768。1. 这是链表的主界面2. 这是顺序表的主界面我就以顺序表为例介绍一下我的学生信息管理系统吧6 结束语通过这次数据结构课程设计的实验,在解决问题的过程中,充分体会到了数据结构这门课程对于软件设计的重要性,也体会到了数据结构+算法=程序这句话的真正含义,一个实际问题的解决第一步就是要依赖于良好的抽象思维的,将实际问题转化为相应的数据结构,只有这一步做好了,才能采取相应的算法和优化方法解决问题和解决好问题。参考文献1钱新贤,杨猛,程兆炜,张少东.Visual C+编程疑又t详解M.北京:人民邮电出版社,20002 王红梅,胡明,王涛数据结构(c+)M 北京:清华大学出版社, 2
10、0073 程学先 数据库原理与技术M 北京: 中国水利水电出版社,20014 Alex Kriegel & M 北京:电子工业出版社,20005 郑章,程刚,张勇北京:6 F. Brokken and K. Kubat . C+Annotations . Version 4.m, ICCE,University of Groningen , Netherlands , 1990. 250 280附录1:链表结构化设计源程序清单/ 程序功能:采用链表与文件实现一个简单的学生成绩管理系统。#include <iostream>#include <fstream>#i
11、nclude<cstring>#include <ctime>using namespace std;struct Class int Chinese;int Math;int English;class Studentpublic:Student();void Ofile(ofstream &of);void Infile(ifstream &f);void Out();void Set(char *name,int no,Class score);char *GetName();int GetNo();Student *Next;protected:
12、char Name20;int No;Class Score ;Student:Student():Next(0)char *Student:GetName()return Name;int Student:GetNo()return No;void Student:Set(char *name,int no,Class score) strcpy(Name,name);No=no;Score=score;void Student:Infile(ifstream &f)void Student:Ofile(ofstream &of)void Student:Out() clas
13、s Function/public:Function();/Function();/void Menu();/void Add();/void Search();/void Delete();/void Modify();/void Show();/private:Student *Student_First;void Read();/void Save();/息函数;Function:Function() Student_First=new Student;功能类构造函数析构函数菜单函数录入学生成绩函数查询学生成绩函数删除学生成绩函数修改学生成绩函数显示学生成绩函数读取学生成绩函数保存学生成
14、绩信Read();Function:Function() delete Student_First;void Function:Add()/录入学生成绩信息函数 char name20;int no;Class score;char choose;Student *f1,*p,*f2;system("cls");f1=Student_First;f2=Student_First->Next;while(f1->Next)f1=f1->Next;do p=new Student;cout<<" 请输入您要添加的学生成绩信息:"
15、<<endl;cout<<" 请输入学生姓名:"cin>>name;while(f2) if(strcmp(f2->GetName(),name)=0) coutvv”该学生已存在,请确定姓名!nn"COUtVV”请输入姓名:";cin»name;break;)f2=f2->Next;)COUtVV”请输入学号:";cin»no;COUtVV”请输入语文成绩:";COUtVV”请输入数学成绩:";COUtVV”请输入英语成绩:";p->Set
16、(name,no,score);f1->Next=p;p->Next=NULL;f1 =f1->Next;cout«"是否继续输入信息?(YN) “vvendl;cin»choose;while(choose='y'|choose='Y');Save();cout«"1.返回主菜单"«endl;cin»choose;while(choose!='1') cout<<"1. 返回主菜单"<<endl;cin&
17、gt;>choose;Menu();void Function:Delete() /删除信息函数 char name20;int no;char choose;Student *temp,*p;system("cls");p=temp=Student_First->Next;cout<<" 请输入姓名:"cin>>name;cout<<" 输入学号:"cin>>no;while(temp) if(strcmp(temp->GetName(),name)=0&&a
18、mp;temp->GetNo()=no)/ 判断该学生信息是否存在 cout<<" 姓名 t 学号 t 语文成绩t 数学成绩t 英语成绩 n"temp->Out();cout<<"n 是否删除(Y/N)"cin>>choose;if(choose='y'|choose='Y') p->Next=temp->Next;delete temp;cout<<" 删除成功:n"break;p=temp;temp=temp->Next;
19、Save();cout<<"1. 返回主菜单n2. 继续删除"<<endl;cin>>choose;while(choose!='1'&&choose!='2') cout<<"1. 返回主菜单n2. 继续删除"<<endl;cin>>choose;if(choose='1')Menu();else if(choose='2')Delete();void Function:Modify() char ch
20、oose,name20;/修改学生信息函数Student *temp,*p;int no;Class score;system("cls");temp=p=Student_First;cout<<" 请输入您要修改的学生姓名:"cin>>name;while(temp) if(strcmp(temp->GetName(),name)=0) cout<<" 姓名 t 学号 t 语文成绩t 数学成绩t 英语成绩n"temp->Out();cout<<"请输入姓名:&qu
21、ot;cin>>name;cout<<"请输入学号:"cin>>no;cout<<" 请输入语文成绩:"cout<<" 请输入数学成绩:"cout<<" 请输入英语成绩:"temp->Set(name,no,score);break;temp=temp->Next;Save();cout<<" 修改成功!"<<endl;cout<<"1. 返回主菜单n2. 继续修改&
22、quot;<<endl;cin>>choose;while(choose!='1'&&choose!='2')cout<<"1. 返回主菜单n2. 继续修改"<<endl;cin>>choose;if(choose='1')Menu();else if(choose='2')Modify();void Function:Read()/读取信息函数 Student *p,*p2;p=Student_First;long t;if(!is)
23、return ; p2=new Student;p2->Infile(is);p->Next=p2;p2->Next=NULL;p=p->Next;void Function:Save()/保存学生成绩信息函数Student *p=Student_First->Next;while(p) p->Ofile(of);p=p->Next;void Function:Search() int flag(0);char choose;char t120;int t2;system("cls");Student *temp=Student_F
24、irst->Next;do cout<<" 输入查询方式:n1. 按姓名查询n2. 按学号查询n"cin>>choose;if(choose='1') cout<<" 请输入您要查询的姓名:"cin>>t1;while(temp) if(strcmp(t1,temp->GetName()=0) flag=1;break;temp=temp->Next;if(flag=0)cout<<"n 无该学生的信息n"<<endl;else
25、cout<<" 姓名 t 学号 t 语文成绩t 数学成绩t 英语成绩n"temp->Out();break;else if(choose='2') cout<<" 请输入您要查询的学号cin>>t2;while(temp) if(t2=temp->GetNo() flag=1;break;temp=temp->Next;if(flag=0)cout<<"n 无该学生的信息n"<<endl;else cout<<" 姓名 t 学号
26、t 语文成绩t 数学成绩t 英语成绩n"temp->Out();break;while(choose!='1'|choose!='2');cout<<"n1. 返回主菜单n2. 继续查询"<<endl;cin>>choose;while(choose!='1'&&choose!='2') cout<<"1. 返回主菜单n2. 继续查询"<<endl;cin>>choose;if(choos
27、e='1')Menu();else if(choose='2')Search();void Function:Show() char choose;Student *temp;system("cls");temp=Student_First->Next;if(!temp) cout<<" 文件无数据nn "<<endl;cout<<"1. 返回主菜单"<<endl;cin>>choose;while(choose!='1'
28、)cout<<"1. 返回主菜单"<<endl;cin>>choose;Menu();else cout<<" 姓名 t 学号 t 语文成绩t 数学成绩t 英语成绩n"while(temp!=NULL) temp->Out();temp=temp->Next;cout<<"1. 返回主菜单"<<endl;cin>>choose;while(choose!='1') cout<<"1. 返回主菜单&quo
29、t;<<endl;cin>>choose;Menu();void Function:Menu() time_t t;time(&t);char choose;system("cls");cout<<" 版 权 所 有 : 李 卉"<<endl;cout<<endl;”*”cout<<"<<endl<<endl;cout<<"<<endl<<endl;cout<<" 显示系统时
30、间和日期平顶山学院欢迎你 学生成绩信息管理系统"<<ctime(&t)<<endl;cout<<”*"<<endl<<endl;cout<<" 请选择您需要的操作, 选择相关操作请输入相对的括号里的阿拉伯数字!"<<endl;cout<<"n"cout<<"1录入学生成绩信息:n"<<endl;cout<<"2查询学生成绩信息:n"<<endl;
31、cout<<" 3删除学生成绩信息:n"<<endl;cout<<"4修改学生成绩信息:n"<<endl;cout<<" 5 显示全部学生成绩信息:n"<<endl;cout<<" 6退出系统"<<endl;cout<<"n"cin>>choose;switch(choose) case '1': Add();break;case '2': Se
32、arch();break;case '3': Delete();break;case '4': Modify();break;case '5': Show();break;case '6': exit(1);break;default: cout<<" 请按规定输入选择项!"<<endl;Menu();void main() Function function; /定义功能接口附录2:链表结构化设计源程序清单#define LIST_INIT_SIZE 10 / 确定分配空间大小type
33、def struct student / 学生信息结构体类型char No100;char name7;float score;typedef struct / 定义顺序类型sqliststudent *stu; /指向数据元素的基地址int length; / 线性表的当前长度int listsize;sqlist;/ 下面是函数的原型声明int Initlist(sqlist &sl); /顺序表初始化int creat(sqlist &sl);/顺序表的建立int insertlist(sqlist &sl,student elem,int pos);/入操作in
34、t search(sqlist sl,int pos);/按指定位置删除int dele_elem1(sqlist &sl,int pos,student &elem);/按位置删除操作int dele_elem2(sqlist &sl,char *num,student &elem);/的按学号删除int out_list(sqlist sl);/顺序表的输出操作/ 主函数 /void main() cout<<"nn 欢 迎 使 用 学 生 信 息 查 询 系 统 , 用 !nnn"sqlist sl;Initlist(sl)
35、;student s;char number9;顺序表的插顺序表的顺序表请按提示使int pos; while(1)cout<<" n以下程序是使用顺序表实现的:n"cout<<" n 0126 程正炉请您选择您要执行的操作:n"cout<<endl<<endl;cout<<" 1、 清空顺序表2 、 创建顺序表3 、 插入信息4 、 删除信息5 、查找信息6、显示当前信息0、退由系统'n"cout<<" n 请从序号0-6 中选择 , 继续你所
36、需要的工作"int n;char c;cin>>n;if(n=0)/ 退出cout<<"n 谢谢您的使用, 该系统是11 电商一班的程正炉设计,多谢你的使用!n"break;else if(n=1)/ 清空cout<<" 此操作将清空顺序表,您是否继续?输入n 表示你要退出,输入其他任意键继续你需要的工作n"cin>>c;顺序表已清空! 您可以继续其他if(c=n) break;else Initlist(sl);cout<<"操作 !nn"else if(n=2)
37、/ 创建n 表示你要退cout<<"n 此操作将创建顺序表,您是否继续?输入出,输入其他任意键继续你需要的工作n"cin>>c;if(c=n) break;else creat(sl); else if(n=3)/ 插入cout<<" 输入插入学生信息:n"cout<<" 请输入学生学号:"cout<<" 请输入学生姓名:"cout<<" 请输入学生成绩:"insertlist(sl,s,pos);else if(n=4)/
38、 删除功能int m;cout<<"1 、我想按输入特定位置删除n"cout<<"2 、我想按输入学生学号删除n"cout<<" 请您选择:" cin>>m;cout«endl;if(m=1)(dele_elem1 (sl,pos,s);)else if(m=2)(coutvv”输入您要删除的学生学号:"cin»number;dele_elem2(sl,numbers);cout«endl; )else if(n=5)(int num;coutvv
39、”请输入您要查找的学生学号:"cin»num;search(sl,num);)else if(n=6)/ 显示outjist(sl);else if(n!=0|n!=1 |n!=2|n!=3|n!=4|n!=5|n!=6)coutvv”您的输入有误,请重新输入!n"/while/ 函数定义/int Initlist(sqlist &sl) return 0;cout<<" 分配失败!n"return 1;/ 创建操作/int creat(sqlist &sl)cout<<" 下面创建学生信息查询
40、系统,请按提示输入数据:n"cout<<" 您一共要建立多少名学生数据?n"cin>>m;cout<<" 名 n" for(int i=1;i<=m;i+) cout<<" 请输入第"<<i<<" 名同学的学号:"cout<<endl;cout<<" 请输入第"<<i<<" 名同学的姓名:"cout<<endl;cout<&
41、lt;" 请输入第"<<i<<" 名同学的成绩:"cout<<endl;cout<<"n 本次操作您一共输入了 "<<m<<"名数据n"return 1;/ 插入操作/int insertlist(sqlist &sl,student elem,int pos)cout<<" 请输入您要插入信息的位置:n"cin>>pos;cout<<" 您要插入的位置不存在,请检查!n"return 0;struct student *p; cout<<" 对不起!输入的学号已存在,请输入其它学号 !n"cout<<" 该学号在系统中代表的信息为:n"cout<<"学号:"<<p->No<<endl;c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重庆医科大学《智能控制》2023-2024学年第二学期期末试卷
- 长沙环境保护职业技术学院《初级英语阅读二》2023-2024学年第一学期期末试卷
- 扬州大学广陵学院《西班牙社会与文化》2023-2024学年第二学期期末试卷
- 天津商业大学《计算机在材料工程中的应用》2023-2024学年第二学期期末试卷
- 南京市重点中学2024-2025学年中考语文试题模拟试卷含解析
- 永州师范高等专科学校《混凝土结构原理与设计》2023-2024学年第二学期期末试卷
- 江苏省苏州市梁丰重点达标名校2024-2025学年初三毕业班第一次摸底考试化学试题含解析
- 湖北经济学院《网球(2)》2023-2024学年第一学期期末试卷
- 郑州财税金融职业学院《信息与网络安全管理》2023-2024学年第二学期期末试卷
- 苏州健雄职业技术学院《康复疗法学》2023-2024学年第二学期期末试卷
- 中华民族共同体概论课件专家版5第五讲 大一统与中华民族共同体初步形成(秦汉时期)
- 基于PLC的自动剪板机设计
- (2024年)法律《民法学》教案
- 数学与地质科学的应用
- GB/T 19964-2024光伏发电站接入电力系统技术规定
- 国家开放大学人文英语4形考作业单元自测2答案
- 实验室病原微生物危害评估分析报告
- 危险品安全教育培训总结报告
- 基于STM32点阵电子显示屏
- 幼儿园社会课件:小镜头大世界
- TZAFT 4001.2-2023 金融科技人才职业能力建设与评估指引(技术研发类人才)
评论
0/150
提交评论