大数据结构期末论文设计.docx
《大数据结构期末论文设计.docx》由会员分享,可在线阅读,更多相关《大数据结构期末论文设计.docx(14页珍藏版)》请在冰豆网上搜索。
大数据结构期末论文设计
滨江学院
数据结构课程报告
题目学生信息管理
院系理学系
年级班级2012级信息与计算科学
学生岳珅
学号20122314035
学期2014-2015
(一)
任课教师黄群
二O一四年十二月十日
学生信息管理
1引言
随着人类进入信息科技时代,管理信息系统的开发和设计,则成了必然的发展要求,其重要性也是不可忽视的。
管理工作的成败,取决于能否做出有效的决策,而决策的正确与否则在很大程度上取决于信息的质量。
而学生信息管理系统,是以学校在学生信息管理当面的实际需求为背景,将各相关的业务及工作流程计算机化,以计算机代替传统的手工操作方式,实现通过操作平台对学生相关信息进行整合、分类及查询等功能。
本课题主要的目的是让我们通过这次课程设计更加了解C的应用,学习基本的思考过程,而不能仅仅学习程序的实现技巧。
学会课本上学的容使用在编写的程序中,还要学会写论文为毕业论文打好基础。
设计一个能实际使用的学生信息管理系统。
具有添加学生信息,查询学生成绩的,删除学生信息以及显示所有学生信息。
2需求分析
学生管理系统的开发目的是为了实现学生课程、学籍的信息化管理。
本系统需要完成的功能有:
班级管理、学生管理、科目管理、课程管理、成绩管理以及系统管理员才具有的教师管理和用户管理。
1.班级管理:
可对班级进行添加、删除、修改、查找和报表输出等功能,班级属性有:
名称、班主任(来自于系统中保存的教师)、当前学生人数、建班日期和备注等属性。
2.学生管理:
可对学生进行添加、删除、修改、查找和报表输出等功能,学生属性有:
学号、、性别、所属班级(来自于系统中保存的班级)、相片、出生日期和备注等属性。
3.科目管理:
可对科目进行添加、删除、修改、查找和报表输出等功能,科目属性有:
科目名称、学时数和备注等属性。
4.课程管理:
可对每一个班级的上课科目进行添加、删除、修改、查找和报表输出等功能,课程属性有:
所属班级(来自于系统中保存的班级)、授课老师(来自于系统中保存的教师)、开课日期、结课日期和备注等属性。
5.成绩管理:
可对每一个班级的上课科目的学生成绩进行添加、删除、修改、查找和报表输出等功能,成绩属性有:
学生、所属班级(来自于系统中保存的班级)、课程名、成绩、备注等属性。
6.系统管理:
该模块的主要任务是维护系统的正常运行和安全性设置,包括添加用户、修改密码、重新登录等等。
3概要设计
本程序包含11个函数:
1)主函数main();
2)查询函数:
chaxun();
3)根据班级编号返回班级信息函数cx();
4)删除信息函数:
del();
5)删除班级信息函数:
del1();
6)按学号删除学生信息函数:
del2();
7)输出学校班级信息函数:
display();
8)修改某班级信息函数:
edit();
9)插入学生信息函数:
inclass();
10)读信息函数:
read();
11)存储学生信息函数:
save();
4详细设计
4.1学生信息结构类型定义:
typedefstruct{
charname[20];charid[11];intage;charaddress[20];chartel[15];
}students;
4.2班级信息结构类型定义:
typedefstructcla{
charclassid[11];intcount;studentsst[MAX];structcla*next;
}CLASS;
4.3存储学生信息函数伪代码:
voidsave(CLASS*a){
if((fp=fopen("class_list.txt","w"))==NULL){printf("cannotopenfile\n");}
while(a!
=NULL){
if(fwrite(a,sizeof(CLASS),1()fp)!
=1)printf("filewriteerror\n");a=a->next;}
fclose(fp);}
4.4输出学校班级信息函数伪代码:
voiddisplay(CLASS*a){
CLASS*b;b=a;inti=1;
if(b==NULL)cout<<"无信息"<while(b!
=NULL{
cout<classid<<"班级人数"<count<b=b->next;i++;}}
4.5源程序清单
#include"stdio.h"
#include"malloc.h"
#include"iostream.h"
#include"string.h"
#defineMAX50
typedefstruct{//学生信息结构类型定义
charname[20];//
charid[11];//学号
intage;//年龄
charaddress[20];//住宿
chartel[15];//
}students;
typedefstructcla{//班级信息结构类型定义
charclassid[11];//班级编号
intcount;//班级总人数
studentsst[MAX];//班级成员信息
structcla*next;//定义一个指向下一个班级的指针变量next
}CLASS;
FILE*fp;FILE*fq;inti=0;
voidsave(CLASS*a){//存储学生信息函数
if((fp=fopen("class_list.txt","w"))==NULL){
printf("cannotopenfile\n");}
while(a!
=NULL){
if(fwrite(a,sizeof(CLASS),1,fp)!
=1)
printf("filewriteerror\n");
a=a->next;}
fclose(fp);}
CLASS*read(){//读信息函数
intflag=1;
if((fp=fopen("class_list.txt","r"))==NULL){
printf("未读\n");
flag=0;}
CLASS*p,*head=NULL;
while(flag){
p=NULL;
p=(CLASS*)malloc(sizeof(CLASS));
if(fread(p,sizeof(CLASS),1,fp)!
=1){
printf("已读\n");
flag=0;}
if(flag==1){
p->next=head;
head=p;}
}
returnhead;
}
CLASS*inclass(CLASS*a){//插入学生信息函数
CLASS*b;
b=(CLASS*)malloc(sizeof(CLASS));
cout<<"班级编号和班级人数"<cin>>b->classid>>b->count;
for(i=0;icount;i++){
cout<<"学号年龄宿舍"<cin>>b->st[i].id>>b->st[i].name>>b->st[i].age>>b->st[i].address>>b->st[i].tel;}
b->next=a;
save(b);
returnb;}
CLASS*del1(CLASS*a){//删除班级信息函数
CLASS*p,*q;intflag=1;
p=a;
q=p->next;
charid[11];
cout<<"班级编号";
cin>>id;
while(q!
=NULL){
if(strcmp(id,q->classid)==0){
p->next=q->next;
free(q);
q=p->next;
cout<<"删除该班级成功"<flag=0;}
else{
p=p->next;
q=p->next;}
}
if(strcmp(id,a->classid)==0){
p=a;
a=p->next;
free(p);
cout<<"删除该班级成功"<flag=0;}
save(a);
if(flag)
cout<<"该班级不存在,删除失败"<returna;}
voiddisplay(CLASS*a){//输出学校班级信息函数
CLASS*b;
b=a;
inti=1;
if(b==NULL)
cout<<"无信息"<while(b!
=NULL){
cout<classid<<"班级人数"<count<b=b->next;
i++;}
}
voiddel2(CLASS*a){//按学号删除学生信息函数
charid[11];
inti;
if(a==NULL)cout<<"班级不存在"<else{
cout<<"学号"<cin>>id;
for(i=0;icount;i++){
if(strcmp(id,a->st[i].id)==0){
for(i;icount;i++)
a->st[i]=a->st[i+1];
a->count--;
cout<<"删除学生成功"<}
}
}
CLASS*cx(CLASS*a){//根据班级编号返回班级信息函数
CLASS*b=NULL;
charid[11];
cout<<"\t请输入班级编号"<cin>>id;
while(a!
=NULL){
if(strcmp(id,a->classid)==0){
b=a;
break;}
a=a->next;}
returnb;
}
voidchaxun(CLASS*a){//查询函数
intch;
charid[11];
inti,flag=1;
cout<<"1,查询学校班级信息"<cout<<"2,查询某班级学生信息"<cin>>ch;
switch(ch){
case1:
display(a);
break;
case2:
cout<<"\t输入班级编号"<cin>>id;
while(a!
=NULL){
if(strcmp(id,a->classid)==0){
cout<<"序号,学号,,年龄,宿舍,"<for(i=0;icount;i++){
cout<
cout<st[i].id<<"";
cout<st[i].name<<"