同学录信息管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
沈阳航空工业学院
课程设计任务书
院系:电子专业:电子信息工程班级:6402101 学号:200604021001 题目:同学通讯录信息管理
一、课程设计时间
2007年9月10日至2007年9月14日,共计1周,20学时。
二、课程设计内容
用C语言编写软件完成以下任务:
能够对同学的通讯信息进行数字化管理,人数不少于3人。通讯信息应保存到文件myfile.dat中。
三、课程设计要求
1. 程序质量:
✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括“同学信息录入”、“同学信息查询(根
据姓名,或编号等)”、“显示全部同学信息”、“退出”4项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2. 课程设计说明书:
课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字
指导教师:________ 学生签名:________
五、说明书成绩
六、教师评语
目录
一、需求分析 (1)
二、程序流程图 (2)
三、核心技术的实现说明及相应程序段 (5)
四、个人总结 (9)
五、参考文献 (9)
六、源程序 (10)
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为六个模块,其中每一个模块对应一个函数,他们的功能分别是:添加学生通讯录(add),查询学生通讯录(inquire),显示学生通讯录(show_all) 以及保存(save)。在这些函数当中,前两个函数的实现是整个程序的核心,较为复杂。
1、添加学生通讯录主要实现程序最初运行时学生通讯录的录入以及其后的运行中学生通讯录的追加功能;
2、查询学生通讯录实现的功能是按照学号或姓名对学生的通讯录记录进行查询;
3、显示学生通讯录主要功能是将学生通讯录的全部信息显示出来
4、保存实现功能为将新的通讯录信息保存到文件中;
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个学生记录都包含学号、姓名、电话和地址,在程序当中,将学生通讯录类型定义为结构体类型,添加以及追加的学生通讯录信息现存入结构体数组中,再在save 函数中写入D盘的myfile.dat文件中,其他函数每次对学生通讯录的访问,其数据来源都是结构体数组并可以对学生数据进行永久保存。
5.如果用户输入的信息范围在1-5之外,会自动提示用户重新输入。
二、程序流程图
1、程序总体结构图
图1 程序总体结构图2、具体功能框图
(1)添加学生通讯录add
图2 添加学生通讯录(2)学号查询num_inquire
图3学号查询
(3)姓名查询name_inquire
图4姓名查询
三、核心技术的实现说明及相应程序段
本程序主要由七个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,添加学生通讯录、查询学生通讯录是程序中较为核心的部分,下面分别进行说明。
1、添加学生通讯录
添加学生通讯录是将学生通讯录信息以结构体数组的形式储存到结构体数组中去。具体的程序段如下:
void add()
{
printf("shu ru xin xi:\n");
printf("#########num:");
scanf("%d",&stu[counter].num) ;/*输入学生学号*/
printf("#########name:");
scanf("%s",&stu[counter].name) ;/*输入学生姓名*/
printf("#######telephone:");
scanf("%s",&stu[counter].telephone_num) ;/*输入学生电话号码*/
printf("#########address:");
scanf("%s",&stu[counter].address) ;/*输入学生地址*/
counter ++;
}
2、查询学生通讯录
该函数通过调用两个自定义函数分别实现学号查询和姓名查询两种查询通讯录的方式。并运用do···while()循环和switch()分支结构进行两种查询方式的选择。具体程序段如下:
void inquire()
{
char temp_letter;
printf("An yao qiu shu ru xin xi:\n");
printf("a.Gen ju xue hao cha xun \n");
printf("b.Gen ju xing ming cha xun \n");
printf("c.tui chu \n");
do{
temp_letter = getchar();
switch(temp_letter)
{
case 'a': num_inquire();break;
case 'b': name_inquire();break;
case 'c': caidan();break;
}
}while(temp_letter != 'c');
}
3、学号查询
通过学号在已有记录中查找相同信息,并显示出来。具体程序段如下:
void num_inquire()
{
int inquire_num;
int i;
int count=0;
printf("a.qing shu ru xue hao:");
scanf("%d",&inquire_num);
for(i=0;i { if(stu[i].num == inquire_num) { printf("########num: %d\n",stu[i].num); printf("########name: %s\n",stu[i].name); printf("###telephone: %s\n",stu[i].telephone_num); printf("#####address: %s\n",stu[i].address); printf("\n"); count ++; } } if(count == 0)