文档介绍:第一部分:需求分析
该题目要求的功能是利用已学过的C语言知识或C++知识,做一个“学生信息管理系统”。学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
设计一学生信息管理系统,使之能提供以下功能:
系统以菜单方式工作
学生信息录入功能(学生信息用文件保存)---输入
学生信息浏览功能---输出
查询、排序功能---算法
按学号查询
按姓名查询
学生信息的删除与修改
由于大一下学期,我们比较深入的学习了C语言程序设计,对其也有了一定的运用能力,可以利用C语言来做一些初级编程,因此我和我的搭档曹聪决定用C语言来实现这些功能。
第二部分:概要设计
根据该程序设计的要求,我们要实现各种操作,这样程序的运行首界面要出现各种操作的说明和选项,操作者根据自己的需要选择相应的选项,进入不同的模块中。
我和我的搭档决定利用函数的相互调用这种方式来实现各种函数的功能,用main()函数对各个函数进行逐一调用,其中各个子函数之间也有相互调用。再利用各个函数实现学生信息录入,学生信息浏览,按学号查询,按姓名查询,学生信息的删除,学生信息的追加,学生信息用文件保存及读入等功能。
对于学生的信息我们用一个结构体数组来保存,如图(1),该数组包括学生
信的学号,姓名,年龄,性别,出生年月日,地址,电话,电子邮件等八项信息。
typedef struct /*定义数据结构*/
{
char number[15]; /*学号*/
char name[12]; /*姓名*/
char age[8]; /*年龄*/
char sex[4]; /*性别*/
char birthday[15]; /*出生年月*/
char address[32]; /*地址*/
char tele[12]; /*电话*/
char mail[32]; /*电子邮件*/
}ADDRESS;
图(1)
该程序的流程图,如图(2)。
开始
输入选择
对选择进行判断
添加
读入
删除
保存
排序
查询
退出
输出
条件
结束
我负责的模块是学生信息的删除,学生信息的按序号显示,学生信息的排序,学生信息用文件保存及读入功能。
一:信息的删除算法(delete(ADDRESS t[],int n)函数):首先要有接口与主程序中的数据信息连接。应通过形参来接受头指针实参。在这个函数模块里首先要确定删除学生信息的学生姓名,根据选择调用find-name函数,找到该姓名在所有信息中的位置,将该记录删除,后续记录前移。然后将所保存的记录数减一,返回记录数的值。
二:学生信息的按序号显示(display(ADDRESS t[])函数):该功能是将已录入的信息按照所输入的序号显示出来,接口与主程序中的数据信息连接。首先要定义一个指针:FILE *fp;/*指向文件的指针*/,利用该指针打开文件fopen("","rb")),找到该文件之后,输入记录号,用指针*fp找到该记录的位置,调用输出函数显示该记录。
三:学生信息用文件保存(save(ADDRESS t[],int n)函数):对于该功能是对我来说是比较难的一个,因为它涉及到文件的知识,这个我比较薄弱的环节。首先要定义一个指针:FILE *fp;/*指向文件的指针*/,然后用“wb”方式创建一个名为“”文件。然后用一个for循环语句将已经录入的信息保存在“”文件中,包括记录数一并保存在该文件中。用函数fclose(fp)关闭文件。
四:学生信息的读入(load(ADDRESS t[])函数):该函数跟保存学生信息的save函数有些类似,其功能是从“”文件中读入已保存在该文件中的学生的信息。其同样要首先定义一个一个指针:FILE *fp 指向文件“”然后才可以从“”文件中读出上次的记录,用一个for循环语句将已经保存在“”文件中的信息读出。用函数fclose(fp)关闭文件。
五:学生信息的按学号排序(sort(ADDRESS t[],int n)函数):该函数是用交换变量temp,比较学号后交换,由于比较简单在此亦不再赘述。
第三部分:运行环境(软、硬件环境);
硬件:CPU:AMD SP 2500+;
内存:256MB;
硬盘:80G
软件:Windows 2000/XP
第四部分:程序的开发工具和语言
程序的开发工具:Win-TC
程序语言: C语言
第五部分:程序的详细设计过程
/*学生信息管理系统源程序*/