简易学生信息管理系统资料.docx

上传人:b****1 文档编号:23252344 上传时间:2023-05-15 格式:DOCX 页数:20 大小:233.18KB
下载 相关 举报
简易学生信息管理系统资料.docx_第1页
第1页 / 共20页
简易学生信息管理系统资料.docx_第2页
第2页 / 共20页
简易学生信息管理系统资料.docx_第3页
第3页 / 共20页
简易学生信息管理系统资料.docx_第4页
第4页 / 共20页
简易学生信息管理系统资料.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

简易学生信息管理系统资料.docx

《简易学生信息管理系统资料.docx》由会员分享,可在线阅读,更多相关《简易学生信息管理系统资料.docx(20页珍藏版)》请在冰豆网上搜索。

简易学生信息管理系统资料.docx

简易学生信息管理系统资料

 

软件开发

课程设计报告

 

题目:

简易学生信息管理系统的设计

院(系):

信息科学与工程学院

专业班级:

电信1902班

学生姓名:

XXX

学号:

XXXXXXX

指导教师:

XX

评分:

 

2021年3月2日至2021年3月6日

武昌首义学院制

软件开发课程设计任务书

一、设计(调查报告/论文)题目

简易学生信息管理系统的设计

二、设计(调查报告/论文)主要内容

目的:

(1)要求学生熟练掌握C语言或其他编程语言的基本知识和编程技能;

(2)掌握并熟练运用软件工程的方法进行软件开发;

(3)培养学生的软件开发能力、软件工程的素质和软件项目管理能力。

基本要求:

简易学生信息管理系统在学校的考评中占有重要的地位,它能够有效的管理学生的各种信息,保证工作的顺利进行。

系统的功能如下:

(1)系统以菜单方式工作;

(2)系统对学生的有效信息能进行输入、显示、添加、删除等操作;

(3)系统能够查看某个学生的相关信息。

实施步骤:

(1)完成系统总体设计,详细设计、用户界面设计;

(2)选择合适的开发工具完成系统的编码工作,添加适当的注释,增加程序的可读性;

(3)对软件进行单元和系统测试,做好测试记录;

(4)完成相关资料的整理工作,按时撰写课设报告并上交。

 

三、原始资料

课题讲解PPT及课题相关电子资料

四、要求的设计(调查/论文)成果

(1)用C语言(或其他程序设计语言)实现软件设计;

(2)利用学过的编程知识实现简易信息管理系统中数据结构的设计;

(3)系统的各个功能模块要求用函数的形式实现;

(4)系统操作界面友好(良好的人机交互),程序加必要的注释;

(5)按要求完成课程设计报告,格式符合学校规范标准,字数不少于2000字。

五、进程安排

根据教学大纲,课题组教师制定教学计划,安排相应的课题方案,申请所需教室和实验室,并下达给学生。

教师讲解课程设计的内容、安排及注意事项;讲解课题方案;学生选题。

学生根据课题查阅收集资料,对系统进行功能模块分析,确定系统功能模块及函数原型。

学生编写相应算法程序;上机调试,解决编译等问题及错误。

学生答辩,演示程序并运行通过,对课题进行讲解并回答老师的提问。

学生完成课程设计报告,并及时上交。

六、主要参考资料

[1]金兰,梁洁.程序设计基础:

C语言.北京:

清华大学出版社.2016.

[2]程海英.数据结构(C语言版).北京:

清华出版社.2014.

[3]谭浩强.C语言程序设计(第四版).北京:

清华大学出版社.2010.

[4]严蔚敏,吴伟民.数据结构(C语言版).北京:

清华大学出版社.2007.

指导教师(签名):

20年月日

 

1课程设计的目的

1)要求学生熟练掌握C语言或其他编程语言的基本知识和编程技能;

2)掌握并熟练运用软件工程的方法进行软件开发;

3)培养学生的软件开发能力、软件工程的素质和软件项目管理能力;

4)使学生通过系统分析、系统设计、编程调试,写实验报告等环节,初步掌握软件系统设计的方法和步骤,训练灵活运用程序设计语言进行软件开发的能力;

5)提高学生分析问题和解决问题的能力,提高程序设计水平,培养必要的工程实践动手。

2总体设计

简易学生信息管理系统的设计,主要内容包括输入功能、显示功能、信息的添加、删除功能、查找功能、保存功能(存入文本文件和从文件中读取)等系统功能的设计。

需要实现提示学生信息包括:

学号(11位)、姓名、性别、年龄、专业、班级等,定义结构体实现对一位同学的信息的记录。

使用链表完成基本操作功能:

学生信息添加实为链表节点的添加,学生信息的删除为链表节点删除。

简易学生信息管理系统程序,可以利用链表来完成相关的操作,原因是链表长度不固定,可以任意增删,便于我们操作。

链表各元素存储空间不连续,数据元素之间是指针相连。

链表存储的密度较小,每一个数据元素都需额外存储指向下个元素的指针。

链表的优势在于定点的删除、插入元素。

1)功能1:

添加学生的信息

采用结构体实现多个变量的输入,结构体成员有学号、姓名、性别、年龄、专业、班级等。

在添加时注意用选择语句判断存储的信息量是否已达最大,并且限制学生性别。

2)功能2:

删除学生信息

分为按学号与姓名进行查找,把某学生的学生信息删除,对被删除信息进行覆盖。

注意提示用户该学生信息不存在或者信息删除成功。

3)功能3:

查找学生信息

查找学生信息时,分为按学号与姓名进行查找,查找时,通过结构体中对应位置的元素进行对比,查找成功,打印输出学生学号、姓名、性别、年龄、专业、班级等信息,注意提示用户未找到该学生信息,和打印输出查找到的信息。

4)功能4:

修改学生信息

对于修改学生信息也是分为两个模块:

根据学生学号进行查找修改和根据学生姓名进行查找修改。

查找完成后,分别修改学生的学号、姓名、性别、年龄、专业、班级等信息。

注意提示用户未找到该学生信息,和打印输出修改完成后的信息。

5)功能5:

显示所有学生信息

这是显示所有学生的信息,使用循环的方式,遍历结构体内部成员,依次输出学生的学号、姓名、性别、年龄、专业、班级等信息。

6)功能6:

保存所有学生信息

在保存学生信息时,需要进行对保存的文件类型进行设置,便于后续用于操作文件,最后利用程序关闭文本文件。

注意提示用户保存成功。

7)功能7:

退出管理系统

在主函数中,利用多分支选择语句调用函数,注意调用system函数,调用清屏命令,然后退出管理系统。

3详细设计

3.1算法设计

简易学生信息管理系统程序由7个模块组成,程序运行时首先显示的是学生信息管理系统界面,下方各个功能菜单项,输入相应的数字,按下回车键,界面跳转到程序的主界面。

此程序一共7大功能:

1)添加学生的信息

2)删除学生信息

3)查找学生信息

4)修改学生信息

5)显示所有学生信息

6)保存所有学生信息

7)退出管理系统

流程图如图3-1所示。

图3-1系统功能模块图

3.2具体实现

1)引用头文件

#include

#include

#include

#include

#defineMAXSIZE1000

2)在进行下面操作之前,必须定义要添加学生信息的结构体

typedefstructStudent

{

charID[20];//学号为字符串

charname[30];//姓名为字符串

charsex[10];//性别为字符型

intage;//年龄为整型

intmajor[60];//专业为整型

intClass;//班级为整型

}Student;

 

3)

voidAddStudent(Studentstu_arr[],int*length);添加学生的信息。

输入有误

输入或添加学生信息

选择功能1

输入或者添加学生的学号、姓名、性别、年龄、专业、班级等信息,如图3-2所示。

 

 

图3-2添加学生信息流程图

在添加学生的信息时,使用的是分别给结构体成员赋值的方式,其实现的代码如下:

voidAddStudent(Studentstu_arr[],int*length)

{

chars;

if(*length==MAXSIZE)

{

printf("存储的信息量已达最大,不能再添加更多的学生信息!

\n");

return;

}

Studentstu;

printf("请输入要添加的学生学号:

");

scanf("%s",&stu.ID);

printf("请输入要添加的学生姓名:

");

scanf("%s",&stu.name);

printf("请输入要添加的学生性别\n");

printf("请输入'w'or'W','m'or'M'\n");

printf("提示(w--女,m--男):

\n");

while

(1)

{

scanf("%s",&s);

if(s=='w'||s=='W')

{

strcpy(stu.sex,"女");

break;

}

elseif(s=='m'||s=='M')

{

strcpy(stu.sex,"男");

break;

}

else

{

printf("输入错误,请重新输入!

\n");

printf("请输入'w'or'W','m'or'M'\n");

printf("提示(w--女,m--男):

\n");

}

}

printf("请输入要添加的学生年龄:

");

scanf("%d",&stu.age);

printf("请输入要添加的学生专业:

");

scanf("%s",&stu.major);

printf("请输入要添加的学生班级:

");

scanf("%d",&stu.Class);

stu_arr[*length]=stu;

(*length)++;

intin=(*length)-1;

printf("学生%s信息添加成功!

\n",stu_arr[in].name);

}

4)voidDeleteStudent(Studentstu_arr[],int*length);删除学生信息。

在删除学生信息时,主要是在链表中利用学生姓名查找,然后进行字符串比较判断,如果所输入的姓名查找到了,则就做删除操作然后释放节点空间,跳出循环;如果查找不到,则进行提示。

其部分代码如下:

voidDeleteStudent(Studentstu_arr[],int*length)

{

if(length==0)

{

printf("没有可删除的数据!

\n");

return;

}

charname[30];

printf("请输入要删除的学生姓名:

");

scanf("%s",&name);

inti,j,is_find=0;

for(i=0;i

{

if(strcmp(stu_arr[i].name,name)==0)

{

is_find=1;

for(j=i;j<(*length)-1;j++)

{

stu_arr[j]=stu_arr[j+1];

}

}

}

if(is_find==0)

{

printf("未找到该学生信息!

\n");

}

else

{

(*length)--;

printf("学生%s信息删除成功!

\n",name);

}

}

5)voidFindStudent(Studentstu_arr[],intlength);查找学生信息。

查找学生信息时,分为按学号与姓名进行查找,查找时,通过结构体中对应位置的元素进行对比,查找成功,打印输出学生学号、姓名、性别、年龄、专业、班级等信息,注意提示用户未找到该学生信息,和打印输出查找到的信息。

部分代码如下:

while

(1)

{

scanf("%d",&mark);

if(mark==0||mark==1)

break;

else//输入格式不正确,有提示信息

{

printf("输入错误,请重新输入!

\n");

printf("请输入'0'or'1'\n");

printf("提示(0--按姓名查找,1--按学号查找):

\n");

}

}

if(mark==0)//按姓名查找

{

printf("请输入要查找的学生姓名:

");

scanf("%s",&name);

inti,is_find=0;

for(i=0;i

{

if(strcmp(stu_arr[i].name,name)==0)

{

is_find=1;

printf("学生学号\t学生姓名\t性别\t年龄\t\t专业\t\t班级\n");

printf("%s\t%s\t\t%s\t%d\t\t%s\t%d\n",

stu_arr[i].ID,stu_arr[i].name,

stu_arr[i].sex,stu_arr[i].age,

stu_arr[i].major,stu_arr[i].Class);

}

}

if(is_find==0)

{

printf("未找到该学生信息!

\n");

}

}

6)voidUpdateStudent(Studentstu_arr[],intlength);修改学生信息。

依次修改结构体成员信息,部分代码如下:

inti,is_find=0;

for(i=0;i

{

if(strcmp(stu_arr[i].name,name)==0)

{

is_find=1;

printf("姓名:

%s\n修改为:

",stu_arr[i].name);

scanf("%s",&stu_arr[i].name);

printf("学号:

%s\n修改为:

",stu_arr[i].ID);

scanf("%s",&stu_arr[i].ID);

printf("性别:

%s\n修改为:

",stu_arr[i].sex);

scanf("%s",&stu_arr[i].sex);

printf("年龄:

%d\n修改为:

",stu_arr[i].age);

scanf("%d",&stu_arr[i].age);

printf("专业:

%s\n修改为:

",stu_arr[i].major);

scanf("%s",&stu_arr[i].major);

printf("班级:

%d\n修改为:

",stu_arr[i].Class);

scanf("%d",&stu_arr[i].Class);

}

}

7)voidPrintAll(Studentstu_arr[],intlength);显示所有学生信息。

显示所有学生信息的时,在一个循环中使用指针变量逐次的输出每一个学生的学号、姓名等详细信息。

其实现代码如下:

voidPrintAll(Studentstu_arr[],intlength)

{

printf("==学生信息==\n");

printf("学生学号\t学生姓名\t性别\t年龄\t\t专业\t\t班级\n");

inti;

for(i=0;i

{

printf("%s\t%s\t\t%s\t%d\t\t%s\t%d\n",

stu_arr[i].ID,stu_arr[i].name,

stu_arr[i].sex,stu_arr[i].age,

stu_arr[i].major,stu_arr[i].Class);

}

}

8)voidSave(Studentstu_arr[],intlength);保存所有学生信息。

在保存学生信息时主要用的就是文件指针,FILE*fp,fp指向某一个文件的文件信息区(是一个结构体变量),通过该文件信息区就能够访问该文件,然后对文件进行写操作。

其中用到fopen函数,其作用是用来打开一个文件;fclose函数,其作用是关闭一个文件流,释放文件指针。

其核心代码如下:

voidSave(Studentstu_arr[],intlength)

{

inti;

FILE*fp;//文件类型,用于操作文件

fp=fopen("student.txt","w");

for(i=0;i

{

fprintf(fp,"%s\t%s\t\t%s\t%d\t\t%s\t%d\n",

stu_arr[i].ID,stu_arr[i].name,

stu_arr[i].sex,stu_arr[i].age,

stu_arr[i].major,stu_arr[i].Class);

}

printf("保存成功!

\n");

fclose(fp);

}

9)退出管理系统。

当用户输入“0”时,将flag赋值为0,退出管理系统,使用system函数,调用清屏命令,部分代码如下:

while(flag==1)

{

ShowMenu();//调用ShowMenu()函数

charkey;

printf(">>>>请输入操作号码>>>>");

scanf("%c",&key);

switch(key)

{

case'1':

AddStudent(stu_arr,&length);

break;

case'2':

DeleteStudent(stu_arr,&length);

break;

case'3':

FindStudent(stu_arr,length);

break;

case'4':

UpdateStudent(stu_arr,length);

break;

case'5':

PrintAll(stu_arr,length);

break;

case'6':

Save(stu_arr,length);

break;

case'0':

flag=0;//将flag赋值为0,退出管理系统

system("cls");

printf("谢谢使用!

\n");

break;

default:

break;

}

4调试与运行

4.1遇到的问题

1)程序运行显示时,中文乱码

问题:

代码完成,编译成功后,程序运行界面中文出现乱码。

解决办法:

打开CodeBlocks编译器设置,选择全局编译器设置,在对话框中输入“-fexec-charset=GBK-finput-charset=UTF-8”再重启CodeBlocks,运行界面没有乱码。

2)学号初始化和输出

问题:

初步定义时,学号定义成整型,在调试的时候,长学号无法完整的显示出来。

解决办法:

将长整型改成了char类型。

3)查找和删除

问题:

执行查找和删除语句进入循环判断时,即使查找成功或删除成功,但无法跳出循环。

解决方法:

定义变量is_find=0,查找或者删除成功后被赋值为1,跳出循环。

4.2调试

程序运行时首先显示的是学生信息管理系统界面,下方各个功能菜单项,输入相应的数字,按下回车键,界面跳转到程序的主界面,如图41所示,添加学生的信息功能,如图4-2所示,删除学生信息功能,如图43所示,查找学生信息功能,如图4-4所示,修改学生信息功能,如图4-5所示,显示所有学生信息功能,如图4-6所示,保存所有学生信息功能,如图4-7所示,退出管理系统,如图4-8所示。

图41学生信息管理系统界面图42添加学生的信息功能

 

图44查找学生信息功能

图43查找学生信息功能

图44修改学生信息功能图45显示所有学生信息功能

图46保存所有学生信息功能图47退出管理系统

5总结

1)此程序不足之处,如学号仅限11位没有设计出来;还比如系统要重复输入多个学生的信息,而此程序每次只能输入一位学生的信息。

2)此程序创新的地方在于并没有利用太多的链式存储结构,主要是利用结构体,对学生信息增删改查时,只需对结构体成员操作即可。

3)此程序特色就是模块分区清晰,代码易懂,注释很详细!

4)此程序改进方面,如可添加学生的电话号码、邮件、家庭地址,还有各科成绩以及排名等信息,使之更加接近于学校的学生信息管理系统!

参考文献

[1]谭浩强.C语言程序设计(第四版).北京:

清华大学出版社.2010.

[2]严蔚敏,吴伟民.数据结构(C语言版).北京:

清华大学出版社.2007.

[3]严蔚敏.数据结构(C语言版)第二版.北京:

人民邮电出版社.2015.

[4]王海文.C语言程序设计.武汉:

华中科技大学出版社.2017.

[5]金兰.程序设计基础——C语言.北京:

清华大学出版社.2016.

项目

比例

得分

平时成绩(百分制记分)

30%

业务考核成绩(百分制记分)

70%

总评成绩(百分制记分)

100%

评定等级

优良中及格不及格

指导教师(签名):

20年月日

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1