当前位置:文档之家› 同学录信息管理系统

同学录信息管理系统

沈阳航空工业学院课程设计任务书院系:电子专业:电子信息工程班级: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<counter;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)printf("Mei you ni yao cha xun xue sheng de xin xi !") ;}4、姓名查询通过姓名在已有记录中查找相同信息,并显示出来。

具体程序段如下:void name_inquire(){char *p1,*p2,cha_name[20];int i,j=0,k;int count1=0,count2=0;printf("b.qing shu ru xing ming:");p1 = cha_name;scanf("%s",p1);for(i=0;i<counter;i++){count1 = 0;j = 0;do{if(cha_name[j] != stu[i].name[j])count1=1;j++;}while(cha_name[j-1] != 0);if(count1 == 0){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");count2 ++;}}if(count2 == 0)printf("Mei you ni yao cha xun xue sheng de xin xi !") ;}四、个人总结通过本次课设学习我不仅对C语言知识有了更多的了解,而且也提高了自学的能力与上机操作的能力。

由于我以前不重视自己动手操作和创新看到题目都不知道从何下手,但通过老师指导和同学的帮助最后完成课设内容。

通过做课设体会到C语言的结构化的严密性及程序模块化,也能更好的使用函数及调用函数问题。

在调试程序中既增长了我的知识又磨练我的意志。

总之,通过这次学习给我带来学习的乐趣,受益非浅!五、参考文献1 谭浩强.C程序设计.北京:清华大学出版社,20052 刘成等.C语言程序设计实验指导与习题集.北京:中国铁道出版社,2006六、源程序#include <stdio.h>#include <string.h>struct student{int num;char name[20];char telephone_num[13];char address[50];}stu[10];void caidan();void add();void inquire();void show_all();void num_inquire();void name_inquire();void save();int counter=0;void caidan(){ printf("************MENU**********\n");printf("1.Shu ru xin xi:\n");printf("\n");printf("2.Chaxun xinxi:\n");printf("\n");printf("3.Xian shi xin xi:\n");printf("\n");printf("4.bao cun wen jian:\n");printf("\n");printf("5.Tui chu jie mian:\n");printf("\n");printf("***************************\n");}void add(){printf("shu ru xin xi:\n");printf("###########num:");scanf("%d",&stu[counter].num) ;printf("###########name:");scanf("%s",&stu[counter].name) ;printf("###########phone:");scanf("%s",&stu[counter].telephone_num) ;printf("#########address:");scanf("%s",&stu[counter].address) ;counter ++;}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 xin 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');}void show_all(){int i;printf("Xian shi suo you xin xi:\n");for(i=0;i<counter;i++){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");}}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<counter;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)printf("Mei you ni yao cha xun xun sheng de xin xi!") ;}void name_inquire(){char *p1,cha_name[20];int i,j=0;int count1=0,count2=0;printf("b.qing shu ru xing ming:");p1 = cha_name;scanf("%s",p1);for(i=0;i<counter;i++){count1 = 0;j = 0;do{if(cha_name[j] != stu[i].name[j])count1=1;j++;}while(cha_name[j-1] != 0);if(count1 == 0){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");count2 ++;}}if(count2 == 0)printf("Mei you ni yao cha xun xun sheng de xin xi!") ; }void save(){ int i;FILE *fp;fp=fopen("d:\\myfile.dat","w+");for(i=0;i<4;i++)fwrite(&stu[i],sizeof(struct student),1,fp);fclose(fp);printf("wen jian yi bao cun\n");}void main(){char c;int n;int quit=0;caidan();while(c != '!'){scanf("%d",&n);switch(n){case 1: add();break;case 2: inquire();break;case 3: show_all();break;case 4: save();break;case 5: printf("quit");quit++;break;default: printf("\nshu ru fan wei zai 1--5,qing chong xin shu ru:");break;}c = getchar();if(quit != 0)c = '!';}getchar();}。

相关主题