收藏 分销(赏)

C语言学生通信录管理系统课程设计报告1.doc

上传人:二*** 文档编号:4496045 上传时间:2024-09-25 格式:DOC 页数:17 大小:57KB 下载积分:5 金币
下载 相关 举报
C语言学生通信录管理系统课程设计报告1.doc_第1页
第1页 / 共17页
本文档共17页,全文阅读请下载到手机保存,查看更方便
资源描述
实验报告 实验名称:学生通信录管理系统 实验项目性质:综合性、设计性 所涉与课程:C语言课程设计 计划学时:实验学时4 一、实验目的 综合考察学生本学期对C语言的掌握程度。 二、实验容 1.编写一个可以把学生信息写入文件的函数creact(),采用动态链表。 2.编写一个可以增加新成员的函数add1()。 3编写一个可以查询确定学生的函数search1()。 4编写一个可以删除确定学生的函数del1()。 5编写一个可以修改确定学生的函数modify1()。 6编写一个可以打开通信录的函数open1( )。 附录:search1函数调用searchnum和searchname函数,分别为按学号和按名字查询。 del函数调用delname和deltel函数,分别为按名字和按删除。 modify1函数调用modifynum和modifyname函数,分别为按学号和按名字找到修改。 open1函数调用sorttel和sortname函数,分别为按和按名字从小到大的顺序打开。 三、实验(设计)仪器设备和材料清单 1.硬件:PC机 2.软件:Turbo C 2.0/Turbo C++ 3.0 四、实验要求 设计一个《学生通讯录管理系统》,在动态链表程序的基础上,设计要求如下 (必须使用结构体和动态链表等数据结构) 1建立文件 存储文件使用指定文件名或默认文件名; 可以不保存输入记录,但需要确认是否保存输入记录 如果已有文件,只能在其后追加; 新增记录可以不存入原文件中,以可以用原来的文件覆盖存的容; 可以将多个个文件记录合并到一个文件中; 2文件的存取和显示 可以单独存取文件; 可以随时显示存中记录的全部容; 可以直接存取默认文件或指定文件; 3删除记录 可以按“”或“”方式删除记录并更新存链表容; 能给出被删除的信息,输出没有找到的信息; 如果已经是空表,上出时应给出信息并返回主菜单; 如果没有要删除的信息,输出没有找到的信息; 删除操作仅限于存,只有执行记录时,才能覆盖原记录; 4查询记录 可以按“”或“”或“宿舍”方式查询记录 能给出查询记录的信息; 如果查询的信息不存在,输出没有找到的信息; 5 整体功能 a可以随时检索、删除、或增加新记录,保存或取消新的记录 b使可由16位字符和数字的混合编码组成 c使可由18位字符和数字组成 d将输出信息加上输出信息信息栏,例如 性别年龄生日宿舍 四 1234 男 21 7月1日东二333 e使用菜单实现功能的正确的选择 f 所有节点信息都是动态生成。 6测试程序 应列出测试大纲对程序进行测试; 应保证测试用例测试到程序的各种边缘情况 五、实验步骤与结果测试 A、主函数 主函数 提供可选择的功能 1 2 3 4 5 6 0 创建 增加 查找 删除 修改 打开 退出 按名字、按学号 按、按名字 按名字、按学号 按、按名字 程序清单: void main() { int i; end: printf(" |----------------------------------------|\n"); printf(" | 1.ceate new file |\n"); printf(" | 2.add information |\n"); printf(" | 3.search |\n"); printf(“ | 4.telect |\n"); printf(" | 5.modify |\n"); printf(" | 6.open |\n"); printf(" | 0.register |\n"); printf(" |---------------------------------------|\n"); printf("input your choice(0-6):\n"); scanf("%d",&i); if(i==1) {creat1(); goto end;} if(i==2) {add1(); goto end;} if(i==3) {search1(); goto end;} if(i==4) {del1(); goto end;} if(i==5) {modify1(); goto end;} if(i==6) {open1(); goto end;} exit(0); } B、创建:void create() 开始 动态申请内存 输入学号 学号不为0 输入其他信息 动态申请内存并输入学号 结束链表的建立 存入文件 结束 程序清单: void creat1() { FILE *fp; char i; struct student *p1,*p2,*head; n=0; p1=p2=(struct student *)malloc(LEN); printf("\nenter NO.:\n"); scanf("%d",&p1->num); while(p1->num!=0) { printf("enter name:\n"); scanf("%s",p1->name); printf("enter tel:\n"); scanf("%s",p1->tel); do{ printf("enter sex:\n"); getchar(); scanf("%c",&p1->sex); }while(p1->sex!='f'&&p1->sex!='F'&&p1->sex!='m'&&p1->sex!='M'); do{ printf("enter age:\n"); scanf("%d",&p1->age); }while(p1->age<=0||p1->age>=150); printf("enter birthday:\n"); scanf("%s",p1->bir); printf("enter address:\n"); scanf("%s",p1->add); n=n+1; if(n==1)head=p1; else p2->next=p1; p2=p1; p1=(struct student *)malloc(LEN); printf("enter NO.:\n"); scanf("%d",&p1->num); } p2->next=NULL; printf("\nsave them or no(y/n)\n"); do{printf("input choice\n"); getchar(); scanf("%c",&i);}while(i!='y'&&i!='Y'&&i!='n'&&i!='N'); if(i=='y'||i=='Y') { p1=head; if((fp=fopen(FILENAME,"wb"))==NULL) { printf("cannot open file\n"); return; } if(p1!=NULL) do{ if(fwrite(p1,sizeof(struct student),1,fp)!=1) { printf("file write error\n"); fclose(fp); break; } p1=p1->next; }while(p1!=NULL); fclose(fp); } } C、增加 void add1() 设计思路和创建新通信录一样,只是文件的打开方式是“a”,即以追加的方式打开。 程序清单: void add1() { FILE *fp; char i; struct student *p1,*p2,*head; n=0; p1=p2=(struct student *)malloc(LEN); printf("\nenter NO.:\n"); scanf("%d",&p1->num); while(p1->num!=0) { printf("enter name:\n"); scanf("%s",p1->name); printf("enter tel:\n"); scanf("%s",p1->tel); printf("enter sex:\n"); getchar(); scanf("%c",&p1->sex); printf("enter age:\n"); scanf("%d",&p1->age); printf("enter birthday:\n"); scanf("%s",p1->bir); printf("enter address:\n"); scanf("%s",p1->add); n=n+1; if(n==1)head=p1; else p2->next=p1; p2=p1; p1=(struct student *)malloc(LEN); printf("enter NO.:\n"); scanf("%d",&p1->num); } p2->next=NULL; printf("\nsave them or no(y/n)\n"); do{printf("input choice\n"); getchar(); scanf("%c",&i);}while(i!='y'&&i!='Y'&&i!='n'&&i!='N'); if(i=='y'||i=='Y') { p1=head; if((fp=fopen(FILENAME,"a"))==NULL) { printf("cannot open file\n"); return; } if(p1!=NULL) do{ if(fwrite(p1,sizeof(struct student),1,fp)!=1) { printf("file write error\n"); fclose(fp); break; } p1=p1->next; }while(p1!=NULL); fclose(fp); } } D、查找 void search() 开始 选择按名字或按学号查找 按名字择调用 Searchname() 按学号择调用 Searchnum() 结束 开始 查找符合节点 找到则输出该节点内容 找不到输出“not find” 结束 重建链表 输入名字( ) 程序清单: 1、 void search1() { int i; printf("please input your choice(0-2)"); printf(" |------------------------------------------------------|\n"); printf(" | 1.search in NO. |\n"); printf(" | 2.search in name |\n"); printf(" | 0.register |\n"); printf(" |------------------------------------------------------|\n"); do{ printf("input your choice"); scanf("%d",&i); }while(i!='1'&&i!='2'&i!='0'); switch(i) { case'1': searchnum(); break; case'2': searchname(); break; default: exit(0); } } 2、 void searchname() { struct student *p1,*p2,*head; char name[16]; head=recreat(); printf("enter the student's name:\n"); scanf("%d",name); for(p1=head;p1->next!=NULL;p1=p1->next) if(strcmp(p1->name,name)==0) { printf(,"%d\t%s\t%s\t%c\t%d\t%s\t%s\n", p1->num,p1->name,p1->tel,p1->sex, p1->age,p1->bir,p1->add); } } 3、 void searchnum() { struct student *p1,*p2,*head; int num; head=recreat(); printf("enter the student's NO.:\n"); scanf("%d",&num); for(p1=head;p1->next!=NULL;p1=p1->next) if(p1->num==num) { printf(,"%d\t%s\t%s\t%c\t%d\t%s\t%s\n", p1->num,p1->name,p1->tel,p1->sex, p1->age,p1->bir,p1->add); } } 17 / 17
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服