学生信息管理系统开发课程设计.docx
《学生信息管理系统开发课程设计.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统开发课程设计.docx(44页珍藏版)》请在冰豆网上搜索。
学生信息管理系统开发课程设计
JISHOU UNIVERSITY
本科生课程设计
计算机语言程序设计基础I
题目:
学生信息管理系统开发
作者:
学号:
所属学院:
班级:
完成时间:
评分表
序号
评分项
分数
1
出勤及表现
2
功能完善
3
文档格式与文字表达
4
代码风格
5
测试调试
6
图表
7
功能设计
8
目录结构设计
9
界面与流程
10
加分
合计
课程设计工作组长签字:
年月日
一、问题分析
课程设计的题目为学生信息管理系统开发,要求实现添加学生、删除学生、修改学生信息、浏览所有学生和查询学生等操作。
为了能够把学生信息永久保存下来需要使用文件。
需要保存的数据结构简单,数据文件采用纯文本文件,扩展名为txt。
学生信息包括以下几个数据:
学号、姓名、性别、班级、宿舍。
这些数据都是字符串类型,学号的长度为12,姓名的最大长度为50,性别的最大长度为2,班级的最大长度为30,宿舍的最大长度为10。
性别必须是男或者女。
所有数据均不能为空。
添加学生操作要求用户输入学生的所有信息。
删除学生操作要求用户首先输入要删除的学生的学号,然后系统根据学号删除相应数据。
修改学生信息要求用户输入学生的所有信息,然后系统用输入的数据替代现有的数据。
浏览所有学生信息操作把所有学生的信息按照添加的先后顺序显示出来。
查询学生操作要求用户首先输入要删除的学生的学号,然后系统根据学号找到相应数据,并且显示出来。
上述所有操作正常完成后,不给出任何报告,如果不能正常完成,则给出错误报告。
在系统启动时,从数据文件中读入数据,操作过程中数据更新保存在内存,在系统退出或者用户要求保存时才把内存中的数据保存到文件中。
系统为控制台应用程序,采用控制台菜单作为用户界面。
系统总体业务流程见下图。
启动
从文件读入数据
把数据保存到文件
打印菜单
输入菜单命令cmd
cmd
退出
结束
把数据保存到文件
保存
完成相应功能
其他操作
二、总体设计
1.界面设计
系统菜单提供与系统需要完成的添加学生、删除学生、修改学生信息、浏览所有学生和查询学生功能相对应的菜单命令,以及保存文件和退出系统的菜单命令。
从数据文件中读入数据是在系统启动时自动完成的,不需要提供相应的菜单命令。
下图为命令菜单。
***************************
学生信息管理系统
1。
添加学生
2。
删除学生
3。
修改学生
4。
查询学生
5。
学生列表
6。
保存文件
0。
退出系统
***************************
浏览所有学生操作的打印结果采用列表方式显示,列表包括三个部分:
表格标题、表头和表格数据。
下图为学生列表的一个例子。
======================学生名册=======================
学号姓名性别班级宿舍
20144055001冯午阳男14通信17#101
=====================================================
添加学生给出的提示信息如下图所示,包括操作提示和信息提示两个部分。
----------------------添加学生-------------------
学号姓名性别班级宿舍
修改学生给出的提示信息如下图所示,包括操作提示和信息提示两个部分。
----------------------修改学生-------------------
学号姓名性别班级宿舍
查询学生的结果是学生信息卡,如下图所示,在开始标识和结束标识之间,以每行一条数据的方式显示各项信息。
=========学生卡片=========
学号:
20144055003
姓名:
冯午阳
性别:
男
班级:
14通信1
宿舍:
7#101
==========================
2.数据结构设计
用结构体存放学生信息,结构体类型Student定义如下图所示。
其中使用常量存放各项数据的最大长度。
structStudent{
charsid[SID_SIZE+1];//学号
charname[NAME_SIZE+1];//姓名
charsex[SEX_SIZE+1];//性别
charsClass[SCLASS_SIZE+1];//班级
chardorm[DORM_SIZE+1];//宿舍
};
用数组sList存放学生信息表,用SIZE存放数组的最大长度,用整型变量len保存数组中存放的学生个数,并初始化为0。
相关的定义代码如下图所示。
StudentsList[LIST_SIZE];
intlen=0;
3.文件结构设计
存放学生信息的文件名为studentData.txt,文件中每行保存一个学生的数据。
每行为5个字符串,中间用一个空格隔开。
每个字符串为一项数据,依次为学号、姓名、性别、班级、宿舍。
每项数据为一个没有空格的字符串。
4.系统功能结构设计
除主控模块外,整个系统的主要功能分为三大模块:
界面、存储、数据处理。
界面模块包括打印菜单、打印学生卡片、打印添加学生提示、打印删除学生提示、打印修改学生提示、打印查询学生提示、打印学生列表、报告表空、报告学生不存在、报告文件错误。
存储模块包括读入数据和保存数据。
数据处理模块包括添加学生、删除学生、修改学生、查询、浏览和列表判空。
系统功能结构如下图所示。
总控模块
界面模块
数据处理模块
存储模块
打印菜单
打印学生卡片
打印
添加提示卡片
打印
删除提示卡片
打印
修改提示卡片
打印
查询提示卡片
打印
学生列表卡片
报告表空
报告学生不存在
报告文件错误
添加学生
修改学生
查询
浏览
判空
删除学生
读入数据
保存数据
判满
5.工程目录结构设计
系统工程名称StudentMan,main.cpp中定义main函数,实现总体业务流程的控制,ui.h、ui.cpp中声明、定义界面模块中的各个功能函数,store.h、store.cpp中声明、定义存储模块中的各个功能函数,data.h、data.cpp中声明、定义数据处理模块中的各个功能函数。
三、模块实现、测试与调试
1.主控模块
函数原型
intmain();
函数定义
#include
#include
#include
usingnamespacestd;
intmain(){
charcmd;
//1.读入数据
//cout<<"读入数据..."<printf("读入数据...\n");
///循环执行步骤2、3、4
while(true){
//2.打印菜单
//cout<<"菜单"<printf("菜单\n");
//3.输入命令cmd
//cout<<"请输入命令(1,2,3,4,5,6,0):
"<printf("请输入命令(1,2,3,4,5,6,0):
\n");
//cin>>cmd;
//scanf("%c",&cmd);
cmd=getch();
switch(cmd){//4.根据cmd,分支
case'0':
//4.1如果cmd是退出,
//4.1.1保存数据
//cout<<"保存数据"<printf("保存数据\n");
//4.1.2退出系统
exit(-1);
break;
case'6':
//4.2如果cmd是保存
//4.2.1保存数据
//cout<<"保存数据"<printf("保存数据\n");
break;
case'1':
//4.3如果cmd是添加
//4.3.1添加学生
//cout<<"添加学生"<printf("添加学生\n");
break;
case'2':
//4.4如果cmd是删除
//4.4.1删除学生
//cout<<"删除学生"<printf("删除学生\n");
break;
case'3':
//4.5如果cmd是修改
//4.5.1修改学生
//cout<<"修改学生"<printf("修改学生\n");
break;
case'4':
//4.6如果cmd是查询
//4.6.1查询学生
//cout<<"查询学生"<printf("查询学生\n");
break;
case'5':
//4.7如果cmd是浏览
//4.7.1打印学生列表
//cout<<"学生列表"<printf("学生列表\n");
break;
default:
printf("错误命令!
\n");
break;
}
}
return0;
}
函数测试
测试记录
1.当使用scanf("%c",&cmd);输入命令时出现问题。
更正办法是:
使用cmd=getch();输入命令。
需要包含conio.h头文件。
2.界面模块
界面模块包括打印菜单、打印学生卡片、打印添加学生提示、打印删除学生提示、打印修改学生提示、打印查询学生提示、打印学生列表、报告表空、报告学生不存在、报告文件错误。
1)打印菜单功能
函数原型
voidprintMenu();
函数定义
voidprintMenu(){
printf("***************************\n");
printf("学生信息管理系统\n");
printf("1。
添加学生\n");
printf("2。
删除学生\n");
printf("3。
修改学生\n");
printf("4。
查询学生\n");
printf("5。
学生列表\n");
printf("6。
保存文件\n");
printf("0。
退出系统\n");
printf("***************************\n");
}
函数测试
#include
#include
#include
#include"ui.h"
usingnamespacestd;
intmain(){
charcmd;
//1.读入数据
//cout<<"读入数据..."<printf("读入数据...\n");
///循环执行步骤2、3、4
while(true){
//2.打印菜单
//cout<<"菜单"<//printf("菜单\n");
printMenu();
//3.输入命令cmd
//cout<<"请输入命令(1,2,3,4,5,6,0):
"<