发布时间 : 星期四 文章C语言程序的设计实验报告课程设计更新完毕开始阅读4f2a5ad191c69ec3d5bbfd0a79563c1ec4dad73d
三、详细设计
1.算法分析
以上所给的课程设计的题目,每一个对象都包括多个属性。所以要考虑数据的存储形式要用结构体类型来实现。首先,应该考虑定义一个结构,其次,我们应该考虑数据的存储形式:是定义一个数组来存储,还是定义一个链表呢?在这里假如我们以数组的方式来存储,当然可以,但是我们知道,假如我们定义一个数组的话,我们首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。
对于菜单的实现,首先我们用printf函数把程序的功能列出来,然后等待用户选择而执行不同的函数,执行完了一个功能后又回到菜单。保存数据要通过文件来实现。
2.设计流程图
主页面 创建联系人按照名字排序综合操作保存打开删除退出 在简单的分工之后,我的任务是完成通讯录的排序,因为主题是用链表来实现通讯录之间的连接,而链表是不好直接进行排序的,所以我想到了数组。即把链表中指针指向的内容赋给一个数组,利用我们学到的冒泡排序法对其进行排序,排序结束之后重新赋回去。
查找显示增加修改退出 3.我的任务
思路虽然听起来很简单,但是在实际操作起来总存在这样那样的错误,比如说变量名不统一等合作性问题,而由于链表不是授课内容,不能很好的掌握,在写的过程中总是出现考虑不周全的情况。但是在百度的帮助下和不懈的努力下,在预期时间完成了我的任务并且还参与了最终程序的合并调试。 struct address_list *paixu(struct address_list *head)
{
struct address_list *p1,*p2; int i,j;
struct address_list1 {
char name[30]; //名字 char work[50]; //单位 char handset[30]; //手机
char phone[30]; //固定电话 char email[30]; //电子邮件 char address[30]; //通讯地址 char QQ[20]; //QQ
int t; //类别标记 char fenlei[30]; //分类 };
struct address_list1 px[200]; struct address_list1 temp; if(head==NULL) {
printf(\通讯录为空,无法排序!\\n\ return(head); }
p1=head;
for(i=0;i strcpy(px[i].name,p1->name); strcpy(px[i].work,p1->work); strcpy(px[i].handset,p1->handset); strcpy(px[i].phone,p1->phone); strcpy(px[i].email,p1->email); strcpy(px[i].address,p1->address); strcpy(px[i].QQ,p1->QQ); px[i].t=p1->t; strcpy(px[i].fenlei,p1->fenlei); p2=p1; p1=p1->next; } head=shifang(head); for(j=0;j for(i=j+1;i { if(strcmp(px[i].name,px[j].name)<0) { temp=px[i]; px[i]=px[j]; px[j]=temp; } } } p1=(struct address_list *)malloc(LEN); p2=p1; strcpy(p1->name,px[0].name); strcpy(p1->work,px[0].work); strcpy(p1->handset,px[0].handset); strcpy(p1->phone,px[0].phone); strcpy(p1->email,px[0].email); strcpy(p1->address,px[0].address); strcpy(p1->QQ,px[0].QQ); p1->t=px[0].t; strcpy(p1->fenlei,px[0].fenlei); head=p1; for(i=1;i p1=(struct address_list *)malloc(LEN); strcpy(p1->name,px[i].name); strcpy(p1->name,px[i].name); strcpy(p1->work,px[i].work); strcpy(p1->handset,px[i].handset); strcpy(p1->phone,px[i].phone); strcpy(p1->email,px[i].email); strcpy(p1->address,px[i].address); strcpy(p1->QQ,px[i].QQ); p1->t=px[i].t; strcpy(p1->fenlei,px[i].fenlei); p2->next=p1; p2=p1; } p2->next=NULL; printf(\按姓名排序后为:\\n\ print(head); return(head); } 四、调试与测试 一、主页面 二、创建通讯录 1、输入信息 2、创建成功后自动输出所有信息