当前位置:文档之家› 学生信息管理系统项目报告书

学生信息管理系统项目报告书

PINGDINGSHAN UNIVERSITY软件学院项目报告书课程:专业实训项目名称: 学生信息管理系统专业年级: 软件工程Java2级姓名: ××学号: *********指导教师: ××2011年06月14日目录第1章问题描述 (2)1.1 课题背景 (2)1.2需求分析 (3)1.2.1功能需求 (3)1.2.2性能需求 (4)1.3本章小结 (4)第2章总体设计 (5)2.1系统介绍 (5)2.2主程序执行流程图 (6)第3章代码设计 (7)3.1程序运行结果截图 (7)3.2程序源代码 (11)3.3本章小结 (17)第4章总结 (18)参考文献 (19)第1章问题描述1.1 课题背景管理系统是使用电子计算机执行管理和决策功能的服务系统,是六十年代以后,随着系统科学,信息技术以及计算机科学的进展,适应现代化管理的需要而形成的一门边缘学科。

它是将计算机硬件,软件,人工规程,管理制度,决策模拟以及管理人员等组合在一起的一个人--机系统。

学生信息管理系统,是针对目前学生信息处理工作的实际情况,结合数据技术,设计开发的学生信息管理系统;能够实现创建、添加、插入、排序、查找、修改学生信息等。

学生信息管理系统是典型的信息管理系统,其开发主要包括前端应用程序的开发和后台数据库的建立和维护两个方面。

对前者要求应用功能完备,容易使用,界面友好等;而对后者则要求建立起数据库一致性和完整性强,数据安全性好的数据库。

学生信息管理系统是教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说至关重要,能够为学校的管理者提供充足的学生信息和快捷的查询手段。

1.2 需求分析1.2.1 功能需求(1)本系统具有很强的可靠行,可以对录入的学生信息进行效验,对数据进行修改、删除,可以方便管理员的修改与维护。

(2)本系统操作方便、灵活、简单。

操作人员只需录入学生的基本信息和考试成绩的数据。

(3)本系统可高效、快速的查询到学生的基本信息和考试成绩,便于管理员管理工作的开展。

(4)本系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、添加,另外还考虑到学生考试成绩,针对这些要求设计了学生信息管理系统。

本系统主要包括信息录入、信息维护、信息查询、报表打印、关闭系统这几部分。

其功能主要有:⒈有关学生信息的录入,包括录入学生基本信息、学生考试成绩等。

⒉学生信息的维护,包括添加修改学生基本信息、考试成绩信息。

⒊学生信息的查询,包括查询学生的个人基本信息、科目考试成绩。

⒋信息的报表打印,包括学生的基本信息的报表打印、考试成绩的报表打印。

1.2.2 性能需求本项目是一个学生信息管理系统,运行环境VC++6.0,项目运行速率正常,可以满足用户需求。

1、时间特性要求:响应时间要低于5秒2、便捷性:在程序运行过程中,系统自动提示用户进行每一步操作,程序功能明了简洁!1.3 本章小结本章介绍了学生信息管理系统的背景意义,并对本系统功能需求和性能需求进行了分析,可以清晰看到学生信息管理系统在进行信息管理时的优越性。

第2章总体设计2.1 系统介绍1.学生信息管理系统主要涉及到查询等各的功能,需要通过磁盘读写数据,虽然本系统仅实现了简单的功能,但也需要按照系统整体性来设计。

程序可以查询、修改、增添、删除学生信息,并将之保存在磁盘文件中,信息数据不易丢失;2.为了提高系统的稳定性和可重用性,程序采用子函数调用的形式完成各项功能,并用单向动态链表存储从磁盘文件读取到的信息;3.屏幕设计:屏幕作为信息的显示,通过输出格式的控制,界面更简洁、合理!2.2第3章代码设计3.1 程序运行结果截图主界面:创建学生链表:按学号查询:按姓名查询:删除学生(删后自动排序):添加学生(添后自动排序):计算总人数及男女生人数: 程序的退出:3.2 程序源代码//学生信息管理系统#include<iostream>#include<malloc.h>#include<iomanip>#define NULL 0#define LEN sizeof(struct student)//建立动态链表.cppusing namespace std;struct student{int num;char name[20];char sex[5];float math;float english;int order;struct student *next;};int n;int male=0;int famale=0;struct student *creat(void){struct student *head,*p1,*p2;n=0;p1=p2=(struct student *)malloc(LEN);cout<<"下面开始创建链表:"<<endl;cout<<"学号 "<<"姓名 "<<"性别 "<<"数学 "<<"英语 "<<endl;cin>>p1->num>>p1->name>>p1->sex>>p1->math>>p1->english;head=NULL;while(p1->num!=0){if(strcmp(p1->sex,"男")==0) male++;else famale++;n++;if(n==1)head=p1;else p2->next=p1;p2=p1;p1=(struct student*)malloc(LEN);cin>>p1->num>>p1->name>>p1->sex>>p1->math>>p1->english;}p2->next=NULL;if(head==NULL){cout<<"创建失败,请重建:"<<endl;head=creat();}return head;}//输出链表的函数void print(struct student *head){cout<<"此时链表的内容为:"<<endl;cout<<"学号 "<<"姓名 "<<"性别 "<<"数学 "<<"英语 "<<"总分"<<endl;struct student *p;p=head;if(head!=NULL)do{cout<<""<<setiosflags(ios_base::left)<<setw(3)<<p->num<<setw(6)<<p->name<<setw(5)<<p->sex< <setw(5)<<p->math<<setw(4)<<p->english<<setw(5)<<p->math+p->english<<resetiosflags( ios_base::left)<<endl;p=p->next;}while(p!=NULL);}//链表结点的删除操作struct student *del(struct student *head){if(n==0){cout<<"无链表可删除"<<endl;exit(0);}int num;cout<<"请输入要删除的序号:";cin>>num;while(num!=0){struct student *p1,*p2;p1=head;while(num!=p1->num&&p1->next!=NULL){p2=p1;p1=p1->next;}if(num==p1->num){if(p1==head){if(strcmp(p1->sex,"男")==0) male--;else famale--;head=p1->next;}else{if(strcmp(p1->sex,"男")==0) male--;else famale--;p2->next=p1->next;}cout<<num<<"号已被删除"<<endl;n--;}else cout<<"未找到此数据!"<<endl;cout<<"请输入要删除的序号";cin>>num;}if(n==0){cout<<"此时链表已为空!"<<endl;exit(0);}return head;}//插入结点struct student *insert(struct student *head){struct student *stu;stu=(struct student*)malloc(LEN);cout<<"学号 "<<"姓名 "<<"性别 "<<"数学 "<<"英语 "<<endl;cin>>stu->num>>stu->name>>stu->sex>>stu->math>>stu->english;while(stu->num!=0){if(strcmp(stu->sex,"男")==0) male++;else famale++;n++;struct student *p0,*p1,*p2;p1=head;p0=stu;if(head==NULL){head=p0;p0->next=NULL;}else{while(p0->num>p1->num&&p1->next!=NULL){p2=p1;p1=p1->next;}if(p0->num<p1->num){if(head==p1){head=p0;}else p2->next=p0;p0->next=p1;}else{p1->next=p0;p0->next=NULL;}}stu=(struct student*)malloc(LEN);cin>>stu->num>>stu->name>>stu->sex>>stu->math>>stu->english;}return head;}//根据学号查找void SearchNum(struct student *head){int num;struct student *p;p=head;cout<<"请输入要查找的学生的“学号”:";cin>>num;while(p->num!=num&&p->next!=NULL){p=p->next;}if(p->num==num){cout<<"该生的信息为:"<<endl;cout<<"名次 "<<"学号 "<<"姓名 "<<"性别 "<<"数学 "<<"英语 "<<"总分"<<endl;cout<<""<<setiosflags(ios_base::left)<<setw(4)<<p->order<<setw(4)<<p->num<<setw(6)<<p->nam e<<setw(5)<<p->sex<<setw(5)<<p->math<<setw(4)<<p->english<<setw(5)<<p->math+p->engl ish<<resetiosflags(ios_base::left)<<endl<<endl<<endl;}else cout<<"无该生!"<<endl<<endl<<endl;}//根据姓名查找void SearchName(struct student *head){struct student *p;p=head;char name[20];cout<<"请输入要查找的学生的“姓名”:";cin>>name;while(strcmp(p->name,name)!=0&&p->next!=NULL){p=p->next;}if(strcmp(p->name,name)==0){cout<<"该生的信息为:"<<endl;cout<<"名次 "<<"学号 "<<"姓名 "<<"性别 "<<"数学 "<<"英语 "<<"总分"<<endl;cout<<""<<setiosflags(ios_base::left)<<setw(4)<<p->order<<setw(4)<<p->num<<setw(6)<<p->nam e<<setw(5)<<p->sex<<setw(5)<<p->math<<setw(4)<<p->english<<setw(5)<<p->math+p->engl ish<<resetiosflags(ios_base::left)<<endl<<endl<<endl;}else cout<<"无该生!"<<endl<<endl<<endl;}//按成绩排序struct student *sort(struct student *head){struct student *p1,*p2,*p0;float max;char temp[20];int NO=0;p0=head;p2=head;p1=p2->next;max=(p2->math+p2->english);while(p0->next!=NULL){while(p1!=NULL){if((p1->math+p1->english)>max){max=(p1->math+p1->english);p2=p1;}p1=p1->next;};p2->order=++NO;max=p2->order;p2->order=p0->order;p0->order=max;max=p2->num;p2->num=p0->num;p0->num=max;max=p2->math;p2->math=p0->math;p0->math=max;max=p2->english;p2->english=p0->english;p0->english=max;strcpy(temp,p2->name);strcpy(p2->name,p0->name);strcpy(p0->name,temp);strcpy(temp,p2->sex);strcpy(p2->sex,p0->sex);strcpy(p0->sex,temp);p0=p0->next;p2=p0;p1=p2->next;max=(p2->math+p2->english);}if(p0->next==NULL)p2->order=++NO;return head;}//链表的输出void print2(struct student *head){cout<<"此时链表的内容为:"<<endl;cout<<"名次 "<<"学号 "<<"姓名 "<<"性别 "<<"数学 "<<"英语 "<<"总分"<<endl;struct student *p;p=head;int No=1;if(head!=NULL)do{cout<<""<<setiosflags(ios_base::left)<<setw(4)<<No<<setw(4)<<p->num<<setw(6)<<p->name<<set w(5)<<p->sex<<setw(5)<<p->math<<setw(4)<<p->english<<setw(5)<<p->math+p->english<<r esetiosflags(ios_base::left)<<endl;p=p->next;No++;}while(p!=NULL);cout<<endl<<endl<<endl;}//主函数int main(){struct student *head;int a;cout<<endl<<endl<<endl<<" 欢迎使用学生信息管理系统"<<endl<<endl<<endl;cout<<" 1、创建链表并按总成绩排序"<<endl;cout<<" 2、根据学号来查询学生信息"<<endl;cout<<" 3、根据姓名来查询学生信息"<<endl;cout<<" 4、删除学生(删后自动排序)"<<endl;cout<<" 5、添加学生(添后自动排序)"<<endl;cout<<" 6、计算总人数及男女生人数"<<endl;cout<<" 0、结束程序"<<endl<<endl<<endl<<endl<<endl;while(a){cout<<"请输入操作序号: 1创建 2按号查找 3按名查找 4删除 5添加 6总数 0结束程序:";cin>>a;if(a==0)cout<<"已经退出程序!"<<endl;if(a>6)cout<<"无该选项,请从0~6中选择"<<endl<<endl<<endl;switch(a){case 1:head=creat();head=sort(head);print2(head);break;case 2:SearchNum(head);break;case 3:SearchName(head);break;case 4:head=del(head);head=sort(head);print2(head);break;case 5:head=insert(head);head=sort(head);print2(head);break;case 6:cout<<"此时总人数"<<n<<"人其中男生"<<male<<"人女生"<<famale<<"人"<<endl<<endl<<endl;break;}}return 0;}3.3 本章小结本章是效果展示,并附加了实现本效果的关键代码,通过实现效果便于用户对本系统有个初步的了解。

相关主题