- 5
- 0
- 约2.03千字
- 约 11页
- 2016-12-03 发布于重庆
- 举报
面向過程程序设计实践报告模板
面向过程程序设计实践
姓 名 学 号 班 级 软件1304 指 导 教 师 石凯 程序实践名称 面向过程程序设计实践 开 设 学 期 2013-2014第二学期 开 设 时 间 第3周——第5周 报告日期 2014/3/29 评 定 成 绩 评定人签字 评 定 日 期
东北大学软件学院
一、程序实践概述
题目名称:学生信息管理系统
时间进度:
第1-2学时的构思lodeBlocks为主,dev-c++、vc++6.0为辅
二、问题分析
1、功能说明:
随机函数产生信息至文件,通过文件导入信息,stdio导入信息
姓名检索,学号检索,修改学生信息,删除学生信息,删除后恢复,删除后重建
原班级添加学生
班级信息文件显示
2、解决方案:相关函数对应相关功能
三、方案设计
1、模块结构:面向过程的思想,从上到下模块化编程
2、数据结构:trie树(姓名检索),二叉树(学号检索),表头为空的单链表(班级),表头表尾均为空的双向链表(学生)
typedef struct //语文数学英语总分
{
float chinese,math,english;
float sum_gra; //总成绩
}GRA;
typedef struct //生日
{
int year,month,day;
}BIR;
typedef struct ccc //每个学生的信息
{
char name_stu[10]; (姓名)
int num_stu; (学号)
I num_id; (身份证号码)
GRA grade; (成绩)
char sex; (性别)
int clas; (班级)
BIR bir; (生日)
int old; (年龄)
int is; (是否被删除)
struct ccc *linshi; (建立二叉树时的优先队列使用)
struct ccc* next_l; (前节点)
struct ccc*next_r; (后节点)
struct ccc*next_lchild; (左孩子)
struct ccc*next_rchild; (右孩子)
struct ccc*again; (字典中重复姓名)
}STU;
学号的二叉搜索树:
以19为例 其二进制表示为 1 0 0 1 1
在二叉树中从头0结点到19搜索方向 右 左 左 右 右
以27为例 其二进制表示为 1 1 0 1 1
在二叉树中从头0结点到27搜索方向 右 右 左 右 右
规律为二进制表示从最高位开始若为1向右搜,若为0向左搜
班级学生链表:
typedef struct lll
{
int sum; (班级总人数)
int no; (几班)
struct lll* next; (下一个班级)
STU *stu1,*stu2; (指向第一个、最后一个学生)
}CLA;
CLA *first_class;
班级链表为表头为空的单向链表,其中一个指针指向
学生链表为头尾皆为空的双向链表。
字典树:
typedef struct abc
{
int c;
struct abc *a[26];
STU *b;
}ABC;
ABC *f;
3、总体流程:
关键算法:trie树搜索,二叉树搜索,bfs(宽度优先)建立二叉树
5、界面设计:
采用命令提示符界面,交互式操作
导入班级:
随机函数:
随机函数生成的文件文件 @#$.txt
查看班级名单:
文件中表示的名单:
学号检索:
姓名检索:
四、调试记录
自己通过printf显示语句跟踪程序进程,老师帮助debug调试
创新说明
使用高效算法,随机函数的使用
体会与建议
这种程序不适合采用面向过程的思想编程;
通过牺牲空间来换取时间,高效率的算法有利于检索。蚅肂
2
3
2
7
6
5
4
8
9
10
11
12
13
14
15
31
16
17
18
19
20
21
22
23
24
25
26
原创力文档

文档评论(0)