联系人管理系统设计报告程珠 200907260203 信管0901一、实验目地通过本课程设计,要求熟悉管理信息系统开发的原理,掌握系统分析、系统设计、系统编程与调试等方法。
能够完成一个中小型信息系统的规划与分析设计工作,或者能够开发一个小型的管理信息系统,提高分析问题与解决问题的能力。
二、实验内容1.业务简介(1)公司联系人A.公司联系人类型构成:公司联系人类型标识,公司联系人类型B.公司联系人构成:公司联系人标识,公司联系人名称,地址,出生日期,公司联系人类型标识C.查询构成:公司联系人标识,公司联系人类型标识(2)客户 A 客户构成:客户标识,客户名称,客户地址,客户电话(3)客户联系人客户联系人构成:客户联系人标识,客户联系人姓名,客户联系人地址,客户联系人电话2.系统功能A 查看和修改公司联系人、客户、客户联系人 B添加和删除公司联系人、客户、客户联系人 C退出系统通过联系人管理系统,可以查询和修改公司联系人、客户、客户联系人。
添加和删除公司联系人、客户、客户联系人,给企业或学校提供一个良好的人力资源管理环境。
也可以清晰地了解到三者的关系。
除了可以查看公司联系人名称,地址,出生日期,公司联系人类型还可以查看联系人的公司信息和家庭信息,如联系人的上级和下级信息,父母信息等等。
以及联系人的毕业信息和在学校、公司的突出表现。
方便企业对公司联系人更好的了解和统计。
通过客户信息可以查找与公司有业务来往的客户信息。
三、实验过程1. 系统分析(以公司联系人为例)ER图2.系统设计(以公司联系人为例)模块结构设计数据库设计表结构(以公司联系人为例)关系创建窗体3.系统运行登陆主窗体公司联系人信息查看公司人员信息详细公司信息突出表现个人信息和家庭信息删除和添加公司成员输入要删除或添加的公司成员客户信息输入要查找的客户标识客户联系人信息输入要查找的客户联系人标识补:代码设计#include<stdio.h>#include<stdlib.h> //链表#include<string.h>void menu() //主界面函数{printf(" 联系人信息系统\n"); printf(" 1.创建联系人信息链表\n");printf(" 2.添加联系人信息\n");printf(" 3.删除联系人信息\n");printf(" 4.查找联系人信息\n");printf(" 5.显示所有联系人信息\n");printf(" 6.保存链表数据到文件\n");printf(" 7.从文件读取信息\n");printf(" 输入你的选择(数字才有效)\n");}struct student //定义结构体student{int num;char name[10];char phone[20];char mail[20];struct student *next;};struct student *create(int n) //创建n个节点的联系人信息{ printf("请输入联系人号,姓名,电话,邮箱中间用空格分开\n");int i;struct student *head ,*pnew,*ptail;pnew = (struct student *)malloc(sizeof(struct student)); //根据结构体自动分配空间大小scanf("%d%s%s%s",&pnew->num,pnew->name,pnew->phone,pnew->mail); head = pnew;ptail = pnew;for( i=1;i<n;i++){pnew = (struct student *)malloc(sizeof(struct student));scanf("%d%s%s%s",&pnew->num,pnew->name,pnew->phone,pnew->mail );ptail->next=pnew;ptail=pnew;}printf("输入完成\n");ptail->next=NULL;return head;}struct student *insert(struct student *head) //添加联系人信息(形参){struct student *pnew;pnew = (struct student *)malloc(sizeof(struct student));printf("请输入添加的联系人信息:\n");scanf("%d%s%s%s",&pnew->num,pnew->name,pnew->phone,pnew->mail); //p=head;pnew->next=head;head=pnew;return head;}struct student *pdelete(struct student *head,char nname[10])//删除联系人信息{struct student *p,*pold;p=head;while(head!=NULL&&(!strcmp(head->name,nname)))head=head->next;free(p);p=head;}if(head==NULL)return head;p=head->next;pold=head;while(p!=NULL){if(!strcmp(p->name,nname)){pold->next=p->next;free(p);p=pold->next;}else{pold=p;p=p->next;}}return head;}struct student *search(struct student *head,char nname[10])//查找联系人信息struct student *p,*pold;p=head;while(head!=NULL&&(!strcmp(head->name,nname))) //比较2个字符串是否相等{ printf("联系人号:%d 姓名:%s 电话:%s 邮箱:%s\n",head->num,head->name,head->phone,head->mail);head=head->next;p=head;}if(head==NULL)return head;p=head->next;pold=head;while(p!=NULL){if(!strcmp(p->name,nname)){pold->next=p->next;printf("联系人号:%d 姓名:%s 电话:%s 邮箱:%s\n",p->num,p->name,p->phone,p->mail);p=pold->next;}else{pold=p;p=p->next;}return head;}void print(struct student *head) //显示联系人信息{struct student *p=head;while(p!=NULL){printf("联系人号:%d 姓名:%s 电话:%s 邮箱:%s\n",p->num,p->name,p->phone,p->mail);p=p->next;}}void write(struct student *head) //保存联系人信息{FILE *fp1;struct student *p=head;fp1=fopen("e:\\hxn\\aa.txt","w");while(p!=NULL){ fprintf(fp1," 联系人号:%d 姓名:%s 电话:%s 邮箱:%s\n",p->num,p->name,p->phone,p->mail);p=p->next;}fclose(fp1);}struct student *read() //读取联系人信息{FILE *fp1;struct student *head ,*pnew,*ptail;char t[10],o[20],h[20];int i=1;int j;//struct student *p=head;fp1=fopen("e:\\hxn\\aa.txt","r");while(!feof(fp1)){ fscanf(fp1," 联系人号:%d 姓名:%s 电话:%s 邮箱:%s\n",&j,&t,&o,&h); printf("学号:%d 姓名:%s 电话:%s 邮箱:%s\n",j,t,o,h);if(i==1){pnew = (struct student *)malloc(sizeof(struct student));pnew->num=j;strcpy(pnew->name,t);strcpy(pnew->phone,o);strcpy(pnew->mail,h);head = pnew;ptail=pnew;}else{pnew = (struct student *)malloc(sizeof(struct student));pnew->num=j;strcpy(pnew->name,t);strcpy(pnew->phone,o);strcpy(pnew->mail,h);ptail->next=pnew;ptail=pnew;}i++;}i=1;ptail->next=NULL;fclose(fp1);return head;}void main() //主函数{int choise,s;char nname[10];struct student *nhead;while(1){ //主界面循环 menu();scanf("%d",&choise);switch (choise){case 1:{printf("请输入需要建立的节点数\n");scanf("%d",&s);nhead=create(s);};break;case 2:nhead=insert(nhead);break;case 3:{printf("请输入需要删除人的姓名\n");scanf("%s",&nname);nhead=pdelete(nhead,nname);printf("删除成功!\n");};break;//删除case 4:{printf("请输入查找人的姓名\n");scanf("%s",&nname);nhead=search(nhead,nname);printf("查找成功,若无信息则该联系人不存在");};break;//查找case 5:print(nhead);break;case 6:{write(nhead);printf("写入完成\n");};break;case 7:{printf("开始读取请等待。