(简易手机通讯录管理系统)
学生手机通信录管理系统
学生手机通信录管理系统学生手机通信录管理系统文档一、系统说明学生手机通信录管理系统是一款方便学生进行联系人信息管理的应用程序,主要针对学生的使用需求,能够方便地添加、修改、删除联系人信息,同时提供了快速查找和导出通讯录的功能。
二、主要功能1.添加联系人:学生可通过学生手机通信录管理系统添加新的联系人,并可以输入联系人的姓名、电话、邮箱、地址等相关信息。
2.编辑联系人:编辑联系人时,可以修改联系人的信息,例如修改电话号码等。
3.删除联系人:学生可以在学生手机通信录管理系统中删除联系人信息,以避免产生重复的联系人信息。
4.快速查找:学生在需要查找联系人时,可以直接输入姓名或电话号码进行查找,以快速定位到相应的联系人。
5.导出通讯录:学生可以将通讯录导出为CSV文件,以便后续使用。
三、使用说明1.启动系统:学生首先需要下载学生手机通信录管理系统并安装,在安装完成后,启动系统。
2.添加联系人:点击“添加联系人”按钮,填写你需要添加的联系人的姓名、电话、邮箱、地址等相关信息即可。
3.编辑联系人:在学生手机通信录管理系统中选中需要编辑的联系人,然后点击“编辑联系人”按钮进行联系人信息的修改。
4.删除联系人:在学生手机通信录管理系统中选中需要删除的联系人,然后点击“删除联系人”按钮即可删除该联系人。
5.快速查找:在学生手机通信录管理系统中输入“姓名”或“电话”进行快速查找相应的联系人信息。
6.导出通讯录:在学生手机通信录管理系统中点击“导出通讯录”按钮即可将通讯录导出为CSV文件。
四、系统优势学生手机通信录管理系统能够让学生方便地管理联系人信息,避免了联系人重复或管理混乱的情况,以及提供了快速查找和导出通讯录的功能,这些都可以帮助学生高效地管理自己的联系人,成为学生生活中的一项便捷工具。
五、总结学生手机通信录管理系统是一项非常实用的工具,经过使用,它可以帮助学生方便地管理自己的联系人信息,节省时间和精力,成为学生生活中重要的一部分。
个人通信录管理系统..
个人通信录管理系统简介个人通信录管理系统是一款基于电子化的通信录管理软件,主要应用于个人通信录的维护、更新、查询和管理。
该系统具有简单易用、高效便捷、信息共享等特点,方便用户在日常生活和工作中使用。
该系统可应用于不同类型的用户,例如企业职工、教师、学生等。
功能登录模块用户在使用个人通信录管理系统前需要进行登录,输入用户名和密码即可登录。
用户信息模块用户可以在该模块中更新个人信息,包括姓名、性别、联系方式、地址等。
用户也可以进行修改和删除自己的个人信息。
通信录模块用户可以在该模块中添加、修改、删除通信录联系人信息,包括姓名、性别、联系方式、地址等。
用户也可以通过查询功能,查找特定联系人信息。
系统还支持导入和导出通信录。
统计模块用户可以在该模块中查看通信录中的联系人数量、性别比例、地域分布等统计信息,方便用户对通信录信息的管理和筛选。
设置模块用户可以在该模块中修改个人账户设置、安全设置等信息,包括修改密码、设置密保等。
使用说明安装个人通信录管理系统支持不同的操作系统,例如Windows、Linux、Mac OS等,用户可以根据自己的系统选择对应的安装包下载。
登录用户需要输入自己的用户名和密码,若忘记密码可通过找回密码功能或联系管理员重置。
使用用户可以按照系统提供的功能,对个人信息和通信录进行维护、更新、查询和管理。
导入和导出用户可以从本地文件导入通信录信息,也可以将通信录信息导出到本地文件。
个人通信录管理系统极大地方便了用户在通讯录的维护和查找,增加了日常工作和生活的便捷性。
该系统具有简单易用、高效便捷、信息无纸化等特点,对提高工作效率和保障信息安全具有积极的促进作用。
(简易手机通讯录管理系统)
(简易手机通讯录管理系统)一、课题名称简易手机通讯录管理系统(线性表、查找、排序)二、主要内容简易手机通讯录管理系统的设计主要是实现对手机通讯录的管理和相关操作。
基本功能如下:三、课题设计的基本思想,原理和算法描述(1)本次课程设计题目为简易手机通讯录管理系统,主要运用到线性表中顺序表的相关知识,以及顺序查找的思想和冒泡排序算法。
(2)界面设计//菜单函数intmenu(){intc;printf(\☆☆☆☆☆☆☆手机通讯录信息管理系统☆☆☆☆☆☆☆☆\\n\\n\printf(\某某某\\n\printf(\printf(\printf(\printf(\printf(\printf(\printf(\ printf(\某某某\\n\\n\printf(\★请输入您的选择(0-6):\while(1){}returnc;}//主函数voidmain(){SqLit某L;InitLit(L);ytem(\while(1){witch(menu()){cae1:ytem(\信息的增加\\n\cae2:ytem(\信息的查询\\n\canf(\if(c<0||c>6)printf(\▲输入错误!请重新选择:\ elebreak;cae3:ytem(\对信息进行排序\\n\cae4:ytem(\信息的修改\\n\cae5:ytem(\信息的删除\\n\6:ytem(\统计联系人个数cae\\n\}}(3)功能模块的实现初始化顺序表voidInitLit(SqLit某&L)cae0:printf(\再见!\\n\default:printf(\▲输入错误!请重新选择:\}{L=(SqLit某)malloc(izeof(SqLit));L->length=0;}增加信息函数。
定义变量a起标记作用,用于判断输入信息是否与已有信息重复voidLitAdd(SqLit某&L)//增加函数{inta=0;//标记printf(\号码(五位数字!):\printf(\姓名:\printf(\性别:\printf(\家庭住址:\for(inti=0;ilength;i++)//判断是否重号{}if(a==0)L->length++;}查找符合条件的信息的下标并返回到需要调用的函数体中intFindNum(SqLit某&L){printf(\★输入需要进行操作的号码:\charnum[10];canf(\inti=0;while(ilength&&trcmp(L->data[i].num,num)!=0)i++;if(i>=L->length){}returni;if(trcmp(L->data[i].num,L->data[L->length].num)==0){}printf(\该号码已经存在\\n\a=1;break;}④查询信息函数分两种情况:按号码查找与按姓名查找。
通讯录管理系统设计报告
通讯录管理系统设计报告一、引言通讯录在日常生活中扮演着重要的角色,用来存储和管理各种联系人信息,方便人们随时找到需要联系的人或组织。
随着移动互联网的普及,通讯录的管理变得更加便捷和高效。
为了提高通讯录的管理效率,我们设计并开发了一款通讯录管理系统。
二、系统概述通讯录管理系统是一个基于Web的应用程序,用户可以通过浏览器访问系统,进行通讯录的管理操作。
系统主要包括以下功能:•用户登录与注册:用户可以注册新账号,并通过账号密码登录系统。
•联系人管理:用户可以添加、编辑、删除联系人信息,包括姓名、电话号码、邮箱等。
•分组管理:用户可以创建分组并将联系人归类到不同分组。
•搜索功能:用户可以通过关键词搜索联系人信息。
•导出和导入功能:用户可以将联系人信息导出为Excel表格,并可以通过Excel文件导入联系人到系统中。
三、系统架构通讯录管理系统采用了前后端分离的架构,前端使用Vue.js框架开发,提供友好的用户界面;后端使用Node.js和Express框架搭建RESTful API,负责数据的存储和管理。
系统中的数据存储在MySQL数据库中,用户的密码使用bcrypt进行加密存储,确保用户信息的安全性。
同时,系统对用户权限进行了细致管理,保障用户在系统中的数据安全。
四、系统界面系统的界面设计简洁直观,用户可以轻松进行操作。
主要包括登录页面、通讯录首页、联系人管理页面、分组管理页面等。
用户登录页面:[登录页面截图]通讯录首页:[通讯录首页截图]联系人管理页面:[联系人管理页面截图]五、系统特色•简洁高效:系统操作简单直观,提供了快速的联系人管理功能。
•个性化定制:用户可以根据自己的需求创建分组,快速查找联系人。
•数据安全:采用了加密技术和权限管理,确保用户数据的安全性。
•导入导出功能:支持Excel文件导入导出,方便用户管理大批量联系人信息。
六、未来展望通讯录管理系统将继续进行优化和迭代,引入更多智能化功能,如联系人推荐、消息提醒等,提升用户体验。
Android手机通讯录(源码)
Android⼿机通讯录(源码) 简易⼿机通讯录⼀:功能模块 1.主界⾯,通过listview 展⽰所有联系⼈信息,并在没有联系⼈时给出友好提⽰ 2.主界⾯.显⽰最近查看的某个联系⼈信息 3.主界⾯,可以长按某联系⼈项,弹出菜单,删除该联系⼈;删除联系⼈后,在⼿机通知栏弹出信息给⽤户提⽰ 4.主界⾯选择分组,可以查看所有联系⼈,也可以只查看某⼀分组的联系⼈ 5.点击主界⾯的某联系⼈,可以进⼊联系⼈详情界⾯,查看联系⼈各详细信息,并可修改联系⼈各信息; 联系⼈的性别和所在分组可通过下拉菜单选择;长按电话号码,可以进⼊拨打电话功能; 修改联系⼈信息后,跳转回到主界⾯,并使⽤Toast给予⽤户提⽰ 6.主界⾯菜单栏可以添加新联系⼈,关于等功能 7.能在联系⼈详情界⾯,动态增加多个联系电话,并储存到数据库中效果图展⽰:源码下载地址:项⽬回顾: 1.scrollview嵌套listview产⽣的滑动冲突(recyclerview) 解决⽅案:listView.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {if(event.getAction() == MotionEvent.ACTION_UP){//点击listview⾥⾯滚动停⽌时,scrollview拦截listview的触屏事件,就是scrollview该滚动了scrollView.requestDisallowInterceptTouchEvent(false);}else{//当listview在滚动时,不拦截listview的滚动事件;就是listview可以滚动,scrollView.requestDisallowInterceptTouchEvent(true);}return false;}}); 2.关于listview 中 EditText 监听//1.在设置text前,先移除监听if (viewHodler.number.getTag() instanceof TextWatcher) {viewHodler.number.removeTextChangedListener((TextWatcher) viewHodler.number.getTag());}if (TextUtils.isEmpty(phoneNumber.getNumber())){viewHodler.number.setText("");}else {viewHodler.number.setText(phoneNumber.getNumber());}//2.新建监听类TextWatcher watcher = new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic void afterTextChanged(Editable s) {if (TextUtils.isEmpty(s)) {phoneNumber.setNumber(null);finalViewHodler.imageView.setVisibility(View.GONE);} else {phoneNumber.setNumber(s.toString());finalViewHodler.imageView.setVisibility(View.VISIBLE);}Log.e("tag", "afterTextChanged: " +s.toString() );}};//3.添加监听器viewHodler.number.addTextChangedListener(watcher);viewHodler.number.setTag(watcher); 3.获取listview 中所有 Editext 的值 思路:在适配器中创建HashMap 在getview()⽅法中保存所有的Editext key = position value = editext 然后在通过HashMap 获取就⾏了private HashMap<Integer,EditText> edMap;@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {PhoneAdapter.ViewHodler viewHodler = null;if (convertView == null) {viewHodler = new PhoneAdapter.ViewHodler();convertView = LayoutInflater.from(context).inflate(yout.phone_list_item, null, false);viewHodler.spinner = convertView.findViewById(R.id.pnone_spinner);viewHodler.number = convertView.findViewById(R.id.pnone_number);viewHodler.imageView = convertView.findViewById(R.id.imageView4);//put 保存edMap.put(position,viewHodler.number);spMap.put(position,viewHodler.spinner);convertView.setTag(viewHodler);} else {viewHodler = (PhoneAdapter.ViewHodler) convertView.getTag();edMap.put(position,viewHodler.number);spMap.put(position,viewHodler.spinner);} 4.拨打电话功能的坑public void call(String telPhone){if(checkReadPermission(Manifest.permission.CALL_PHONE,REQUEST_CALL_PERMISSION)){//要在telPhone前加上字符串tel:Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:" + telPhone));startActivity(intent);}} 不让你就会见到下图:。
数据结构 通讯录管理系统
数据结构通讯录管理系统数据结构通讯录管理系统1、引言1.1 目的和范围本文档旨在详细描述一个通讯录管理系统的设计和实现,以便帮助开发人员了解系统的功能和特性。
本系统可以用于存储和管理个人联系信息,实现添加、删除、修改和查询等功能。
1.2 定义、缩略语和缩写词- 通讯录:存储个人联系信息的系统。
- 系统:通讯录管理系统。
2、总体概述2.1 系统背景通讯录管理系统是为了方便用户管理个人联系信息而开发的软件。
它提供了一系列功能,包括添加联系人、删除联系人、修改联系人信息以及搜索联系人等。
该系统旨在提供一个高效、方便和可靠的通讯录管理解决方案。
2.2 产品功能- 添加联系人:用户可以添加新的联系人,并输入其姓名、方式号码、电子邮箱等信息。
- 删除联系人:用户可以删除已经存在的联系人。
- 修改联系人信息:用户可以修改已经存在的联系人的姓名、方式号码、电子邮箱等信息。
- 搜索联系人:用户可以根据姓名、方式号码等信息搜索联系人。
- 显示所有联系人:系统可以显示所有已经存在的联系人。
2.3 用户特点通讯录管理系统的主要用户群体为个人用户,他们需要管理自己的联系人信息。
这些用户对于系统的易用性、稳定性和功能性要求较高,因此系统需要提供简单直观的用户界面,并保证操作的正确性和数据的安全性。
3、系统需求3.1 功能需求3.1.1 添加联系人- 用户可以输入联系人的姓名、方式号码、电子邮箱等信息进行添加。
- 系统应该对输入进行合法性检查,确保输入的信息符合格式要求。
- 添加联系人后,系统应该将联系人信息保存到数据库中。
3.1.2 删除联系人- 用户可以删除已经存在的联系人。
- 删除联系人后,系统应该将联系人信息从数据库中删除。
3.1.3 修改联系人信息- 用户可以修改已经存在的联系人的姓名、方式号码、电子邮箱等信息。
- 系统应该对输入进行合法性检查,确保输入的信息符合格式要求。
- 修改联系人信息后,系统应该将修改后的联系人信息保存到数据库中。
Java实现简单通讯录管理系统
Java实现简单通讯录管理系统本⽂实例为⼤家分享了Java实现通讯录管理系统的具体代码,供⼤家参考,具体内容如下题⽬:1、完成⼀个通讯录,需求:(1)添加联系⼈(联系⼈:编号,姓名,⼿机号,QQ,邮箱地址)添加时需要检查⼿机号和邮箱地址格式是否正确,若不正确,不允许添加(2)联系⼈查询(输⼊姓名或电话查询)(3)显⽰联系⼈列表(4)根据编号删除指定编号的联系⼈代码分析:之前写过类似的管理系统,不过是使⽤数组进⾏数据存储,这次的通讯录管理系统通过动态数组ArrayList进⾏数据存储。
其中代码实现的原理和之前所写相似。
在此不再赘述。
判断⼿机号邮箱地址格式是否格式正确使⽤了正则表达式进⾏判断,如果输⼊错误则输出提⽰语句,并重新输⼊正确格式,递归实现。
其中修改⼿机号的⽅法和删除⽤户类似,顺带写了⼀下,没有进⾏实现,感兴趣的朋友可以⾃⼰进⾏实现测试⼀下。
代码实现:⽤户类:package com.softeem.j2106.work;/*** @author admin* 2021/7/26*/public class User {private int no;private String name;private String phone;private String QQ;private String email;public User() {}public User(int no, String name, String phone, String QQ, String email) {this.no = no; = name;this.phone = phone;this.QQ = QQ;this.email = email;}public int getNo() {return no;}public void setNo(int no) {this.no = no;}public String getName() {return name;}public void setName(String name) { = name;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getQQ() {return QQ;}public void setQQ(String QQ) {this.QQ = QQ;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Overridepublic String toString() {return "User{" +"no=" + no +", name='" + name + '\'' +", phone='" + phone + '\'' +", QQ='" + QQ + '\'' +", email='" + email + '\'' +'}';}}⽤户管理类:public class UserMange {static ArrayList<User> s = new ArrayList<>();public boolean addUser(User user){return s.add(user);}public ArrayList showInfo(){return s;}public User searchByName(String name){for (User user : s) {if (Objects.equals(name,user.getName()) ||Objects.equals(name,user.getPhone())){ return user;}}return null;}public boolean updatePhone(int no,String phone){User user = null;for(User u:s) {if(no == u.getNo()) {u.setPhone(phone);break;}}if(user == null) {System.out.println("该⽤户不存在");return false;}System.out.println("修改成功!");return true;}public boolean delUser(int no){User user = null;for(User u:s) {if(no == u.getNo()) {user = u;break;}}if(user == null) {System.out.println("该⽤户不存在");return false;}return s.remove(user);}}测试类:public class Test2 {static UserMange user = new UserMange();static Scanner sc = new Scanner(System.in);public static void start(){System.out.println("=======SOFTEEM通讯录管理系统=====");System.out.println("【1】添加联系⼈");System.out.println("【2】联系⼈查询");System.out.println("【3】显⽰联系⼈列表");System.out.println("【4】根据编号删除指定编号的联系⼈");System.out.println("=============================");int i = sc.nextInt();switch (i){case 1:add();start();break;case 2:System.out.println("【1】通过联系⼈姓名查询/【2】通过联系⼈电话查询"); int a = sc.nextInt();findbyName(a);start();break;case 3:show();start();break;case 4:del();start();break;case 0:System.out.println("谢谢使⽤,再见!");System.exit(0);break;default:System.out.println("请输⼊正确的指令!");start();break;}}public static void add(){System.out.println("请输⼊联系⼈编号:");int a = sc.nextInt();System.out.println("请输⼊联系⼈姓名:");String b = sc.next();System.out.println("请输⼊联系⼈⼿机号:");String c = sc.next();judgePhone(c);System.out.println("请输⼊联系⼈QQ:");String d = sc.next();System.out.println("请输⼊联系⼈邮箱地址:");String e = sc.next();judgeEmail(e);User x = new User(a,b,c,d,e);if(user.addUser(x)){System.out.println("添加成功!");}}public static void judgePhone(String phone){if (phone.matches("1[34589][0-9]{9}")){}else {System.out.println("⼿机号输⼊有误,请重新输⼊");String v = sc.next();judgePhone(v);}}public static void judgeEmail(String email){if (email.matches("[A-Za-z0-9]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)")){}else {System.out.println("邮箱格式输⼊有误,请重新输⼊");String v = sc.next();judgeEmail(v);}}public static void findbyName(int a){if (a==1){System.out.println("请输⼊联系⼈姓名");}else {System.out.println("请输⼊联系⼈电话");}String name = sc.next();User user = er.searchByName(name);System.out.println(user);}public static void show(){ArrayList list = user.showInfo();for (Object o : list) {System.out.println(o);}}public static void del(){System.out.println("请输⼊编号");int no = sc.nextInt();if(user.delUser(no)){System.out.println("删除成功");}}public static void main(String[] args) {start();}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
学生手机通信录管理系统
学生手机通信录管理系统一、背景如今, 手机已成为现代人生活中不可或缺的一部分。
尤其对于学生群体而言, 手机的重要性更加显著。
学生们常常使用手机来完成作业、和同学聊天、查阅信息等多种功能。
而通信录是其中一个不可或缺的功能,它方便了学生们管理自己的联系人信息。
但是,学生们经常添加的联系人数量巨大,管理起来需要花费大量的时间和精力。
另一方面,由于“小破派”与“牛高马大”的手机品牌数量众多,学生们从换机、重置手机到更换操作系统都是极其正常的现象。
因此,手机通信录的备份与恢复就成了备受关注的问题。
本文简要介绍了学生手机通信录管理系统,为学生们解决通信录备份和恢复、信息管理等问题,提高学生们的使用体验。
二、系统功能系统主要有以下几个功能:1. 添加联系人学生在使用过程中,可以通过系统添加联系人,方式灵活,可根据学生个人喜好选择输入方式。
2. 删除联系人学生在管理通信录时,可以通过本系统对其中的联系人进行删除操作。
3. 修改联系人信息通过系统,学生们可以随时对通信录中的联系人信息进行修改。
4. 实现通信录备份为了帮助学生更好地管理通信录,系统实现了通信录备份,方便学生在更改手机或者重置手机等情况下快速恢复通信录信息。
5. 实现通信录恢复同样地,当学生更改手机或者重置手机等情况下,可以通过本系统支持的恢复功能来恢复通信录信息。
6. 信息快速检索学生可以在本系统中通过输入联系人的名称或者电话号码等条件来快速地检索所需要的联系人信息。
7. 分类管理联系人为了使通信录能够更好地管理,本系统支持对联系人进行分类管理,方便用户查找、筛选所需联系人。
三、系统运行环境1. 系统运行平台本系统运行在Android系统平台。
2. 内存由于系统需要加载很多的联系人信息等内容,因此为了系统能够流畅地运行,建议手机内存大于2GB。
3. 存储空间通信录中包含了众多联系人的信息,因此系统需要占用一定的存储空间。
因此,建议手机的存储空间需大于0.5GB。
通讯录管理系统
通讯录管理系统一、引言随着科技的不断发展,电子设备的运用愈发广泛,通讯工具也从最早的电话、传真、邮件演变到如今的移动电话、微信等APP软件。
同时,人们通讯的宽带和速度也得到了很大的进步,这里提到的速度指的是通讯的速度和传输的速度。
在日常生活中,人们需要不断联系和交流,而一个完善的通讯管理系统能够辅助人们做到这一点。
二、通讯录管理系统的概述通讯录管理系统是一个集成化的系统,它包括通讯录的建立、搜索、编辑、删除等基本功能,同时也有通讯录的导入、导出、备份、恢复等高级功能。
对于个人而言,通讯录管理系统是一个非常有用的工具,可以让我们对日常生活中的联系人实现精细化管理。
对于企业和组织而言,通讯录管理系统则是一个不可或缺的管理工具,它可以让企业和组织对内外联系人进行统一管理,提高工作效率,实现快速响应与灵活沟通。
三、通讯录管理系统的需求分析1. 用户管理需求通讯录管理系统的用户一般包括个人、企业和组织等,他们的管理需求有所不同,例如个人通讯录管理系统需要支持用户自主导入、导出、备份、恢复,企业通讯录管理系统需要支持管理员进行用户管理和权限控制等。
2. 数据整合需求通讯录管理系统需要支持将人员信息从不同的来源整合到一个集中的库中,这可以通过数据导入、数据同步、数据抓取等方式实现。
3. 可扩展性和可定制化需求通讯录管理系统应该具有良好的可扩展性和可定制化的能力,以满足企业和组织不同的需求。
4. 安全性需求通讯录管理系统需要具有安全性,防止数据泄漏和恶意攻击等安全问题,同时还要实现数据备份、数据恢复等功能。
五、通讯录管理系统的设计1. 系统结构设计通讯录管理系统应该是一个分层结构的系统,分为表示层、业务层、数据访问层和数据存储层四个层级。
其中,表示层为用户提供了用户界面,业务层处理用户请求,数据访问层为业务层提供数据访问接口,数据存储层则负责数据存储管理。
2. 系统模块设计通讯录管理系统主要包括三个模块:用户管理模块、通讯录管理模块和数据备份恢复模块。
1构建手机通讯录系统
题目:手机通讯录系统要求:制作一个手机通讯录系统系统描述:手机中有一个简单的通讯录工具,用于管理联系人的基本信息,其基本功能包括对联系人信息的新建、修改、删除、查询等。
联系人的基本信息只包括姓名、年龄、联系电话,通讯录最多容纳50名联系人的信息。
功能:用户验证:根据用户输入的用户名和密码判断是否合法用户(合法用户可以不只一个),并进行相应处理。
提供系统操作菜单联系人的基本信息只包括姓名、年龄、联系电话等可以对联系人的基本信息进行输入、修改、删除、浏览等操作可以查询联系人的基本信息可以对联系人的基本信息进行排序处理用结构体表示联系人的基本信息,用文件存储信息提示:1、建立如下结构体struct friends_list{char name[10];int age;char telephone[13];};2、存储和显示信息表格形式3、姓名、年龄、联系电话4、系统功能结构图5、功能要求描述:(1)主函数:定义所需变量,显示主菜单,接受用户选择,根据用户选择执行相应的自定义函数。
(2)密码确认由于输入、修改、删除操作需要具有一定权限的人员进行操作,所以在这些功能模块中应该有密码确认功能,例如,一段检测用户密码的程序段:#include <stdio.h>#include <string.h>void main(){ char password[20];printf(“请输入密码:”);gets(password);while(strcmp(password,”administrators”)!=0){printf(“\n无效密码”);printf(“\n请重新输入密码:”);gets(password);}printf(“OK!”);}(3)输入新信息功能定义结构体变量,建立一个文件,从键盘输入一条信息,到变量中,再将其写入文件中,例如,(4)修改信息首先输入要修改的联系人的名、或其它关键信息,从文件逐条读出信息进行比对,查找是否有该信息,没有就直接输出信息;有则进行修改,修改后的信息继续存入文件。
学生手机通信录管理系统
学生手机通信录管理系统〔 2021 / 2021 学年第一学期〕题目:通讯录治理系统专业学生姓名班级学号指导教师指导单位日期通讯录治理系统一、课题内容和要求该课题要求设计一个简单、有用的通信录治理程序,要紧功能包括通信录数据的录入、查找、修改、删除、排序、显示等。
所有通信录数据都要利用文件系统储存,以备系统下次运行时使用。
通过此课题,全面熟悉、把握C语言差不多知识,把握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言差不多图形编程等方法,把编程和实际结合起来,熟练把握文件、数组、指针的各种操作,以及一些差不多算法思想的应用。
增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,把握分析结果的假设干有效方法,进一步提高上机动手能力,培养使用运算机解决实际问题的能力,养成提供文档资料的适应和规范编程的思想,为以后在专业课程中应用运算机系统解决运算、分析、实验和设计等学习环节打下较扎实的基础。
二、需求分析系统功能模块图:添加:能够添加通讯录记录,依次输入序号,姓名,简拼,性别,工作单位,地址,,手机,电子邮件,备注后,会提示是否连续添加。
查询:能够选择用序号、姓名、简拼、方式查询修改:先查找,再修改。
假设查找出多条记录,那么进一步提示用户选择记录的序号,再修改删除:输入欲删除的那个人的名字后,删除他〔她〕的记录内容排序:可按姓名、简拼等排序。
要求排序后,记录的序号也要重新编排显示:能够以表格形式输出所有通讯录里的记录储存:,输入文件名〔带后缀名〕后,即可将通讯录信息储存到文件读入:从文件中读入通信录数据。
界面功能要求:(1)采纳友好的字符界面,实现一个功能操纵菜单。
(2)每次操作都从该菜单项选择择,利用循环结构使得一次运行程序可进行多次操作。
三、概要设计〔1〕要紧结构体:typedef struct{char score; /*序号*/char name[10]; /*姓名*/char jianpin[50]; /*简拼*/char sex[3]; /*性别*/char company[20]; /*工作单位*/char adds[20]; /*地址*/char tel[15]; /* */char num[15]; /*手机*/char email[20]; /*电子邮件*/char remark[30]; /*备注*/}Person;(2).工作流程图:1.添加:添加通讯录记录先选择查询方式,以姓名查询方式为例3.修改:修改通讯录记录4.删除:删除通讯录记录5.显示:显示通讯录记录四、源程序代码#include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h>typedef struct { char score; /*序号*/ char name[10]; /*姓名*/ char jianpin[50]; /*简拼*/ char sex[3]; /*性别*/ char company[20]; /*工作单位*/ char adds[20]; /*地址*/ char tel[15]; /* */ char num[15]; /*手机*/char email[20]; /*电子邮件*/char remark[30]; /*备注*/ }Person;Person pe[80];int menu_select(){char c;do{system("cls");printf("\t\t *欢迎使用通讯录* \n");printf("\t\t┌───────┐\n");printf("\t\t│1. 添加记录│\n");printf("\t\t│2. 显示记录│\n");printf("\t\t│3. 删除记录│\n");printf("\t\t│4. 查询记录│\n");printf("\t\t│5. 排列顺序│\n");printf("\t\t│6. 修改记录│\n");printf("\t\t│7. 储存记录│\n");printf("\t\t│8. 文件读入│\n");printf("\t\t│0. 退出程序│\n");printf("\t\t└───────┘\n");printf("\t\t请您选择(0-8):");c=getchar();}while(c<'0'||c>'8');return(c-'0');}int Input(Person per[],int n){int i=0;char sign,x[10];while(sign!='n'&&sign!='N'){printf("\t序号:");scanf("\t%d",&per[n+i].score);printf("\t姓名:");scanf("\t%s",per[n+i].name);printf("\t简拼:");scanf("\t%s",per[n+i].jianpin);printf("\t性别:");scanf("\t%s",per[n+i].sex);printf("\t工作单位:");scanf("\t%s",per[n+i] pany);printf("\t地址:");scanf("\t%s",per[n+i].adds);printf("\t :");scanf("\t%s",per[n+i].tel);printf("\t手机:");scanf("\t%s",per[n+i].num);printf("\t电子邮件:");scanf("\t%s",per[n+i].email);printf("\t备注:");scanf("\t%s",per[n+i].remark);gets(x);printf("\n\t是否连续添加?(Y/N)");scanf("\t%c",&sign);i++;}return(n+i);}void Display(Person per[],int n){int i;printf("------------------------------------------------------------------------------------------------\n"); /*格式*/printf("序号姓名简拼性别工作单位地址手机电子邮件备注\n");printf("------------------------------------------------------------------------------------------------\n");for(i=1;i<n+1;i++){printf("%-3d%-10s%-10s%-5s%-10s%-10s%-13s%-13s%-10s%-10s\n",per[i-1].score,per[i-1 ].name,per[i-1].jianpin,per[i-1].sex,per[i-1]pany,per[i-1].adds,per[i-1].tel,per[i-1].num,per[i-1].email, per[i-1].remark);if(i>1&&i%10==0){printf("\t-----------------------------------\n");printf("\t");system("pause");printf("\t-----------------------------------\n");}}printf("----------------------------------------------------------------------\n");system("pause");}int Delete_a_record(Person per[],int n){char s[20];int i=0,j;printf("\t请输入想删除记录中的名字:");scanf("%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return(n);}for(j=i;j<n-1;j++){strcpy(per[j].name,per[j+1].name);strcpy(per[j].jianpin,per[j+1].jianpin);strcpy(per[j].sex,per[j+1].sex);strcpy(per[j] pany,per[j+1] pany);strcpy(per[j].adds,per[j+1].adds);strcpy(per[j].num,per[j+1].num);strcpy(per[j].tel,per[j+1].tel);strcpy(per[j].email,per[j+1].email);strcpy(per[j].remark,per[j+1].remark);per[j].score=per[j+1].score;}printf("\t\t\t删除成功\n");return(n-1);}void Query_a_record(Person per[],int n){int m;printf("\t\n请选择查询方式:\n");printf("\t┌──────┐\n");printf("\t│1------姓名│\n");printf("\t│2------简拼│\n");printf("\t│3------ │\n");printf("\t│4------返回│\n");printf("\t└──────┘\n");printf("请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){printf("输入错误,请重新选择:");scanf("%d",&m);}if(m==1){char s[20];int i=0;printf("\t请输入想查询的姓名:");scanf("\t%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t序号: %d\n",per[i].score);printf("\t简拼: %s\n",per[i].jianpin);printf("\t性别: %s\n",per[i].sex);printf("\t工作单位: %s\n",per[i] pany);printf("\t通讯地址: %s\n",per[i].adds);printf("\t 号码: %s\n",per[i].num);printf("\t电子邮箱: %s\n",per[i].email);printf("\t备注: %s\n",per[i].remark);} ;if(m==2){char s[20];int i=0;printf("\t请输入想查询的简拼:");scanf("\t%s",s);while(strcmp(per[i].jianpin,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t序号: %d\n",per[i].score);printf("\t姓名: %s\n",per[i].name);printf("\t性别: %s\n",per[i].sex);printf("\t工作单位: %s\n",per[i] pany);printf("\t通讯地址: %s\n",per[i].adds);printf("\t 号码: %s\n",per[i].num);printf("\t电子邮箱: %s\n",per[i].email);printf("\t备注: %s\n",per[i].remark);} ;if(m==3){char s[20];int i=0;printf("\t请输入想查询的:");scanf("\t%s",s);while(strcmp(per[i].num,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t序号: %d\n",per[i].score);printf("\t姓名: %s\n",per[i].name);printf("\t简拼: %s\n",per[i].jianpin);printf("\t性别: %s\n",per[i].sex);printf("\t工作单位: %s\n",per[i] pany);printf("\t通讯地址: %s\n",per[i].adds);printf("\t电子邮箱: %s\n",per[i].email);printf("\t备注: %s\n",per[i].remark);} ;}void SelectSort(Person per[],int n){int i,j,flag;Person temp; /*临时变量做交换数据用*/int m;printf("\t\n请选择排序方式:\n");printf("\t┌────────┐\n");printf("\t│1------姓名│\n");printf("\t│2------简拼│\n");printf("\t│3------ │\n");printf("\t│4------返回│\n");printf("\t└────────┘\n");printf("请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){printf("输入错误,请重新选择:");scanf("%d",&m);}if(m==1){for(i=0;i<n;i++){flag=0; /*设标志判定是否发生过交换*/for(j=0;j<n-1;j++)if((strcmp(per[j].name,per[j+1].name))>0) /*比较大小*/{flag=1;strcpy(,per[j].name); /*交换记录*/strcpy(temp. abbreviation,per[j].jianoin);strcpy(temp.sex,per[j].sex);strcpy(temp pany,per[j] pany);strcpy(temp.adds,per[j].adds);strcpy(temp.tel,per[j].tel);strcpy(temp.num,per[j].num);strcpy(temp.email,per[j].email);strcpy(temp.remarks,per[j].remark);strcpy(per[j].name,per[j+1].name);strcpy(per[j]. abbreviation,per[j+1]. jianpin);strcpy(per[j].sex,per[j+1].sex);strcpy(per[j] pany,per[j+1] pany);strcpy(per[j].adds,per[j+1].adds);strcpy(per[j].tel,per[j+1].tel);strcpy(per[j].num,per[j+1].num);strcpy(per[j].email,per[j+1].email);strcpy(per[j].remarks,per[j+1].remark);strcpy(per[j+1].name,);strcpy(per[j+1]. abbreviation,temp. jianpin);strcpy(per[j+1].sex,temp.sex);strcpy(per[j+1] pany,temp pany);strcpy(per[j+1].adds,temp.adds);strcpy(per[j+1].tel,temp.tel);strcpy(per[j+1].num,temp.num);strcpy(per[j+1].email,temp.email);strcpy(per[j+1].remarks,temp.remark);}if(flag==0)break; /*假如标志为0,说明没有发生过交换循环终止*/}}if(m==2){for(i=0;i<n;i++){flag=0; /*设标志判定是否发生过交换*/for(j=0;j<n-1;j++)if((strcmp(per[j]. jianpin,per[j+1]. jianpin))>0) /*比较大小*/{flag=1;strcpy(,per[j].name); /*交换记录*/strcpy(temp. jianpin,per[j]. jianpin);strcpy(temp.sex,per[j].sex);strcpy(temp pany,per[j] pany);strcpy(temp.adds,per[j].adds);strcpy(temp.tel,per[j].tel);strcpy(temp.num,per[j].num);strcpy(temp.email,per[j].email);strcpy(temp.remarks,per[j].remark);strcpy(per[j].name,per[j+1].name);strcpy(per[j]. abbreviation,per[j+1].jianpin);strcpy(per[j].sex,per[j+1].sex);strcpy(per[j] pany,per[j+1] pany);strcpy(per[j].adds,per[j+1].adds);strcpy(per[j].tel,per[j+1].tel);strcpy(per[j].num,per[j+1].num);strcpy(per[j].email,per[j+1].email);strcpy(per[j].remarks,per[j+1].remark);strcpy(per[j+1].name,);strcpy(per[j+1]. abbreviation,temp. jianpin);strcpy(per[j+1].sex,temp.sex);strcpy(per[j+1].adds,temp.adds);strcpy(per[j+1].tel,temp.tel);strcpy(per[j+1].num,temp.num);strcpy(per[j+1].email,temp.email);strcpy(per[j+1].remarks,temp.remark);}if(flag==0)break; /*假如标志为0,说明没有发生过交换循环终止*/}}if(m==3){for(i=0;i<n;i++){flag=0; /*设标志判定是否发生过交换*/for(j=0;j<n-1;j++)if((strcmp(per[j].tel,per[j+1].tel))>0) /*比较大小*/{flag=1;strcpy(,per[j].name); /*交换记录*/strcpy(temp. abbreviation,per[j]. jianpin);strcpy(temp.sex,per[j].sex);strcpy(temp pany,per[j] pany);strcpy(temp.adds,per[j].adds);strcpy(temp.tel,per[j].tel);strcpy(temp.num,per[j].num);strcpy(temp.email,per[j].email);strcpy(temp.remarks,per[j].remark);strcpy(per[j].name,per[j+1].name);strcpy(per[j]. abbreviation,per[j+1]. jianpin);strcpy(per[j].sex,per[j+1].sex);strcpy(per[j] pany,per[j+1] pany);strcpy(per[j].adds,per[j+1].adds);strcpy(per[j].tel,per[j+1].tel);strcpy(per[j].num,per[j+1].num);strcpy(per[j].email,per[j+1].email);strcpy(per[j].remarks,per[j+1].remark);strcpy(per[j+1].name,);strcpy(per[j+1]. abbreviation,temp. jianpin);strcpy(per[j+1].sex,temp.sex);strcpy(per[j+1].adds,temp.adds);strcpy(per[j+1].tel,temp.tel);strcpy(per[j+1].num,temp.num);strcpy(per[j+1].email,temp.email);strcpy(per[j+1].remarks,temp.remark);}if(flag==0)break; /*假如标志为0,说明没有发生过交换循环终止*/}}printf("排序成功\n"); /*显示排序成功*/}void Change(Person per[],int n){char s[20];int i=0;int m;printf("\t\n请选择修改内容:\n");printf("\t┌──────┐\n");printf("\t│1------姓名│\n");printf("\t│2------简拼│\n");printf("\t│3------ │\n");printf("\t│4------返回│\n");printf("\t└──────┘\n");printf("请选择编号:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){printf("输入错误,请重新选择:");scanf("%d",&m);}int count = 0;if(m==1){int i=0;printf("\t请输入想修改的记录中的姓名:");scanf("%s",s);printf("---------------------------------------------------------------------------------\n");/*格式*/printf("序号姓名简拼性别工作单位地址手机电子邮件备注\n");printf("---------------------------------------------------------------------------------\n");for (int t = 0; t < n; t++) {if (strcmp(per[t].name,s)==0) {count ++;printf("%-6d%-6s%-6s%-6s%-10s%-10s%-8s%-8s%-12s%-10s%\n",per[t].score,per[t].name ,per[t].jianpin,per[t].sex,per[t]pany,per[t].adds,per[t].tel,per[t].num,per[t].email,per[t].remark);}}printf("---------------------------------------------------------------------------------\n");if (count > 1){printf("查到多条数据,请输入序号:");m = 5;}else{while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}//printf("\t序号:");//scanf("\t%d",&per[i].score);printf("\t姓名:");scanf("\t%s",per[i].name);printf("\t简拼:");scanf("\t%s",per[i]. jianpin);printf("\t性别:");scanf("\t%s",per[i].sex);printf("\t工作单位:");scanf("\t%s",per[i] pany);printf("\t地址:");scanf("\t%s",per[i].adds);printf("\t :");scanf("\t%s",per[i].tel);printf("\t手机:");scanf("\t%s",per[i].num);printf("\t电子邮件:");scanf("\t%s",per[i].email);printf("\t备注:");scanf("\t%s",per[i].remark);printf("\t修改成功!");}}if(m==2){int i=0;printf("\t请输入想修改的记录中的姓名:");scanf("%s",s);printf("---------------------------------------------------------------------------------\n");/*格式*/printf("序号姓名简拼性别工作单位地址手机电子邮件备注\n");printf("---------------------------------------------------------------------------------\n");for (int t = 0; t < n; t++) {if (strcmp(per[t]. jianpin,s)==0) {count ++;printf("%-6d%-6s%-6s%-6s%-10s%-10s%-8s%-8s%-12s%-10s%\n",per[t].score,per[t].name ,per[t].jianpin,per[t].sex,per[t]pany,per[t].adds,per[t].tel,per[t].num,per[t].email,per[t].remark);}}printf("---------------------------------------------------------------------------------\n");if (count > 1) {printf("查到多条数据,请输入序号:");m = 5;} else {while(strcmp(per[i]. jianpin,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}//printf("\t序号:");//scanf("\t%d",&per[i].score);printf("\t姓名:");scanf("\t%s",per[i].name);printf("\t简拼:");scanf("\t%s",per[i]. jianpin);printf("\t性别:");scanf("\t%s",per[i].sex);printf("\t工作单位:");scanf("\t%s",per[i] pany);printf("\t地址:");scanf("\t%s",per[i].adds);printf("\t :");scanf("\t%s",per[i].tel);printf("\t手机:");scanf("\t%s",per[i].num);printf("\t电子邮件:");scanf("\t%s",per[i].email);printf("\t备注:");scanf("\t%s",per[i].remark);printf("\t修改成功!");}}if(m==3){int i=0;printf("\t请输入想修改的记录中的姓名:");scanf("%s",s);printf("---------------------------------------------------------------------------------\n");/*格式*/printf("序号姓名简拼性别工作单位地址手机电子邮件备注\n");printf("---------------------------------------------------------------------------------\n");for (int t = 0; t < n; t++) {if (strcmp(per[t].tel,s)==0) {count ++;printf("%-6d%-6s%-6s%-6s%-10s%-10s%-8s%-8s%-12s%-10s%\n",per[t].score,per[t].name ,per[t].jianpin,per[t].sex,per[t]pany,per[t].adds,per[t].tel,per[t].num,per[t].email,per[t].remark);}}printf("---------------------------------------------------------------------------------\n");if (count > 1) {printf("查到多条数据,请输入序号:");m = 5;} else {while(strcmp(per[i].tel,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}//printf("\t序号:");//scanf("\t%d",&per[i].score);printf("\t姓名:");scanf("\t%s",per[i].name);printf("\t简拼:");scanf("\t%s",per[i]. jianpin);printf("\t性别:");scanf("\t%s",per[i].sex);printf("\t工作单位:");scanf("\t%s",per[i] pany);printf("\t地址:");scanf("\t%s",per[i].adds);printf("\t :");scanf("\t%s",per[i].tel);printf("\t手机:");scanf("\t%s",per[i].num);printf("\t电子邮件:");scanf("\t%s",per[i].email);printf("\t备注:");scanf("\t%s",per[i].remark);printf("\t修改成功!");}}if(m==5){int i=0;scanf("%s",s);while(per[i].score != atoi(s)&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}//printf("\t序号:");//scanf("\t%d",&per[i].score);printf("\t姓名:");scanf("\t%s",per[i].name);printf("\t简拼:");scanf("\t%s",per[i]. jianpin);printf("\t性别:");scanf("\t%s",per[i].sex);printf("\t工作单位:");scanf("\t%s",per[i] pany);printf("\t地址:");scanf("\t%s",per[i].adds);printf("\t :");scanf("\t%s",per[i].tel);printf("\t手机:");scanf("\t%s",per[i].num);printf("\t电子邮件:");scanf("\t%s",per[i].email);printf("\t备注:");scanf("\t%s",per[i].remark);printf("\t修改成功!");}}void WritetoText(Person per[],int n){int i=0;FILE *fp; /*定义文件指针*/ char filename[20]; /*定义文件名*/printf("\t储存到文件\n"); /*输入文件名*/printf("\t请输入所储存的文件名:");scanf("\t%s",filename);if((fp=fopen(filename,"w"))==NULL){printf("\t无法打开文件\n");system("pause");return;}fprintf(fp,"******************************************通讯录******************************************\n");fprintf(fp,"序号姓名简拼性别工作单位地址手机电子邮件备注\n");fprintf(fp,"------------------------------------------------------------------------------------------\n");while(i<n){fprintf(fp,"%-3d\t%-6s\t%-3s\t%-13s\t%-20s\t%-20s\t%-20s\t%-20s\t%-20s\t%20s\n",per[i].s core,per[i].name, per[i-1].jianpin,per[i-1].sex,per[i-1] pany,per[i-1].adds,per[i-1].tel,per[i-1].num,per[i-1].email, per[i-1].remark);i++;}fprintf(fp,"------------------------------------------------------------------------------------------\n");fprintf(fp,"***************************************共有%d条记录****************************************\n",n);fclose(fp); /*关闭文件*/printf("储存成功\n");}int Load(Person per[],int n){int i;FILE *fp; /*指向文件的指针*/if((fp=fopen("record.txt","rb"))==NULL)/*打开文件*/{printf("无法打开文件\n"); /*不能打开*/exit(1); /*退出*/}fscanf(fp,"%d",&n); /*读入记录数*/for(i=0;i<n;i++)fscanf(fp,"%20s%30s%10s",per[i].name,per[i] pany,per[i].tel); /*按格式读入记录*/ fclose(fp); /*关闭文件*/printf("你差不多成功地从文件中读取数据\n"); /*显示储存成功*/return n; /*返回记录数*/}void main() /*主函数*/{int n=0;for(;;){switch(menu_select()){case 1:printf("\n\t添加记录到通讯录\n"); /*添加记录*/n=Input(pe,n);break;case 2:printf("\n\t\t\t 通讯录记录表\n"); /*显示记录*/Display(pe,n);break;case 3:printf("\n\t从通讯录中删除记录\n");n=Delete_a_record(pe,n); /*删除记录*/printf("\t");system("pause");break;case 4:printf("\n\t在通讯录中查找记录\n");Query_a_record(pe,n); /*查找记录*/printf("\t");system("pause");break;case 5:printf("\n\t排序通讯录中的记录\n");SelectSort (pe,n); /*排序记录*/printf("\t");system("pause");break;case 6:printf("\n\t修改通讯录中的记录\n");Change(pe,n); /*修改数据*/printf("\t");system("pause");break;case 7:printf("\n\t储存通讯录功能\n");WritetoText(pe,n); /*储存数据*/printf("\t");system("pause");break;case 8:printf("\n\t读入通讯录记录\n");Load (pe,n); /*读入记录*/printf("\t");system("pause");break;case 0:printf("\n\t\t感谢使用,再见!\n"); /*终止程序*/printf("\n\t\t");system("pause");exit(0);}}}五、测试数据及其结果分析界面:添加:依次输入序号,姓名,简拼,性别,工作单位,地址,,手机,电子邮件,备注,提示是否连续添加。
Python编程基础与应用 简易通讯录系统[5页]
简易通讯录系统【案例描述】现在各大手机都有自己的、各种通讯录程序,但是这些公司都有自己的版权,我们也不可能得到这些源代码,而且大型的通讯录程序也相当复杂。
现在我们通过Python开发一个简单易懂的电话号码查询系统程序,从中更深入了解一下面向对象编程的思想。
该简易通讯录系统,能够实现了查找联系人并输出其联系号码、添加新联系人及其号码、删除联系人、更新联系人号码、输出所有联系人及其号码功能。
【案例分析】1)首先使用列表存储联系人及其号码。
2)定义联系人这个类,定义联系人的行为,包括增加、修改、删除等行为。
3)在整个程序过程中,通过输入功能编号,执行不同的功能,在不同的功能代码中,生成具体的对象实例,调用其具体的行为。
4)使用的是二维列表,在第一列中存储的是联系人的姓名,第二列存储号码。
在查找联系人的行为中,可以针对第一列进行。
选择使用循环语句完成对数据的对比。
它主要用的技术要点:使用面向对象思维创建联系人类,通过二维列表存储数据,在使用功能上,可以使用数字进行选择,并对数字进行判断,然后实例化对象,调用对象行为,实现需求功能。
【实施步骤】新建Python文件“address.py”,代码如下:#定义一个列表,保存联系人信息frilist = [['张三','138****8888'],["李四",'139****9999'],["张五",'188****8888'],["李六", '188****9999']]#定义一个类class Person:name = ""telnum = ''def __init__(self,name): = name#查询显示def saysome(self):print("你朋友%s,的电话号码是:%s "%(, frilist[snu][1])) #增加def addperson(self,name,telnum): = nameself.telnum = telnumnewlist =[,self.telnum]frilist.append(newlist)print ('Succlessful!')#删除def delperson(self,name): = namedel frilist[snu]print('Success DEL')#修改def alterperson(self,sname,telnum):=snamefrilist[snu][1] = telnumprint ('Succlessful update!')print ('''本程序是一个简易的通讯录程序.请选择以下几项服务:[1] : 请输入你要查找的朋友姓名[2] : 添加新的朋友到通讯录[3] : 删除通讯录中的朋友[4] : 修改通讯录中朋友的联系电话[5] : 显示所有的通讯录列表[6] : 退出程序''')#下面开始实例化类并调用它,展示通讯录的功能snu = 0 #定义snu用于保存列表中的行号,初始化为0while True:flag = Falsenum = input('请选择号码[1,2,3,4,5] -->')if (num == '1'):sname = input('请输入姓名-->')namelist = [i[0] for i in frilist]for strname in namelist:if sname == strname:flag = Truebreakif (flag):snu = namelist.index(sname)p = Person(sname)p.saysome()else:print('Not in it')elif (num=='2'):sname = input('请输入姓名-->')telnum = input('请输入联系电话号码-->')p = Person(sname) #实例化p.addperson(sname,telnum) #调用“增加”addperson()print(frilist)elif (num=='3'):sname = input('请输入姓名-->')namelist = [i[0] for i in frilist]for strname in namelist:if sname == strname:flag = Truebreakif (flag):snu = namelist.index(sname)p = Person(sname)p.delperson(sname)print(frilist)else:print('Not in it')elif (num == '4'):sname = input('请输入姓名-->')namelist = [i[0] for i in frilist]for strname in namelist:if sname == strname:flag = Truebreakif (flag):snu = namelist.index(sname)telnum = input('请输入联系电话号码-->')p = Person(sname)p.alterperson(sname, telnum)print(frilist)else:print('Not in it')elif (num == '5'):print(frilist)input()elif (num == '6'):print("再见!")exit()else:print("请输入列表中的号码!")【调试结果】可以直接在文件夹路径中双击“address.py ”文件,即可调用。
通讯录管理系统需求分析
通讯录管理系统需求分析一、引言通讯录管理系统是一种用于管理个人或组织之间联系人信息的应用程序。
它通常包括存储联系人的基本信息,如姓名、电话号码、电子邮件地址等,并提供快速查找和编辑功能。
随着数字化时代的发展,通讯录管理系统在日常工作和生活中扮演着越来越重要的角色。
本文将对通讯录管理系统的需求进行详细分析。
二、功能需求1.添加联系人:用户应该能够通过系统向通讯录中添加新的联系人信息,包括姓名、电话号码、电子邮件地址等。
2.编辑联系人:用户可以对已有联系人信息进行编辑,修改或更新联系人的信息。
3.删除联系人:用户可以从通讯录中删除不再需要的联系人信息。
4.查找联系人:系统应该提供快速查找联系人的功能,用户可以通过姓名或其他关键词来查找特定联系人。
5.联系人分组:用户可以将联系人进行分组管理,方便对不同类别的联系人进行管理和查找。
6.导入导出联系人:系统应该支持从外部导入联系人信息,以及导出联系人信息到外部文件。
7.备份和恢复:系统应该具备备份和恢复通讯录数据的功能,以防止数据丢失或损坏。
三、性能需求1.安全性:通讯录管理系统应该保证用户联系人信息的隐私和安全性,防止未经授权的访问。
2.稳定性:系统应该具备良好的稳定性和可靠性,在高并发、大数据量的情况下也能够正常运行。
3.响应速度:系统应该具备较快的响应速度,用户在操作时能够获得即时的反馈。
4.易用性:系统应该具备良好的用户界面和友好的操作流程,方便用户快速上手并进行操作。
四、扩展性需求1.跨平台:通讯录管理系统应该具备跨平台的特性,支持在不同设备和操作系统上进行使用。
2.第三方应用集成:系统应该支持与第三方应用程序进行集成,例如与电子邮件客户端、日历应用等的数据互通。
3.自定义设置:用户可以根据自己的需求对系统进行定制设置,包括界面风格、提醒设置等。
五、总结通过对通讯录管理系统的功能、性能和扩展性需求进行分析,可以为系统的设计和开发提供指导。
在设计通讯录管理系统时,需要充分考虑用户的实际需求,保证系统的稳定性和易用性,满足用户对通讯录管理的各种需求。
个人通讯录管理系统..
{
for(int j=0;j<3;j++)
{
str=m_list.GetItemText(i,j);
str+=' ';
outfile<<str;
}
outfile<<endl;
}
outfile.close();
k=1;
【导入】按钮的成员函数为:void CMy1111Dlg::OnBUTTONload()
图13.1
图13.2
}
}
else
{
if(IDOK==MessageBox("确定删除?","Information",MB_OKCANCEL))
{
m_list.DeleteItem(index);
}
}
}
【修改记录】按钮的成员函数为:void CMy1111Dlg::OnBUTTONmodify()
相应代码:if(!m_list.GetItemCount())
int index=0;
index=m_list.GetNextItem(0,LVNI_SELECTED);
if(-1==index)
{
dlg.m_name=m_list.GetItemText(0,0);
dlg.m_phone=m_list.GetItemText(0,1);
dlg.m_email=m_list.GetItemText(0,2);
(3)输入信息对话框的设计:添加对话框,双击该对话框,创建一个新类,添加类名为Inputdlg,其设计如图7.1,整体效果设计图为7.2
手机通讯录管理系统
《面向对象技术大作业》报告书题目:手机通讯录管理系统姓名:韩劲松学号:090505110日期:2010年11月8日管理科学与工程学院2010-2011学年第1学期目录摘要 (I)第1章绪论 (2)第2章需求分析 (3)2.1编写目的 (3)2.2需求概述 (3)2.3需求说明 (3)第3章总体设计 (4)3.1编写目的 (4)3.2总体结构 (4)3.3数据结构 (4)第4章流程图 (5)第5章详细设计 (6)5.1编写目的 (6)5.2详细设计 (6)5.3程序运行 (12)参考文献 (14)结束语 (15)摘要本次C程序设计课程设计我选择手机通讯录管理系统,在菜单上显示各功能的选项。
在增加功能中可按照编号、姓名、电话号码和类型等输入每个人的通讯信息。
在查看时,可按三种类型如办公类、个人类和商务类等查询,并把各类型的通讯人信息列出。
修改功能中,可以先选中某个人的姓名在进行数据修改,删除功能同上。
在查询功能中可通过姓名和电话号码查询此人信息。
而且在此次设计过程中,我特别地增加了一项拨号功能,在拨号时,在屏幕上显示所拨的号码。
关键词:手机通讯录管理系统菜单输入功能修改功能删除功能查询查看1.设计的原始资料及依据通过课程设计使学生进一步加深对课程内容的理解,利用程序设计的基本思想进行程序的开发,进一步掌握C++编程的技巧,提高学生用程序的思想来解决实际问题的能力。
2.设计的主要内容及要求a设计题目:通讯录管理系统b需要完成的功能:⑴查看功能;⑵增加功能;⑶拨号功能;⑷修改功能;⑸删除功能;⑹菜单功能;⑺查询功能。
必须用到链表,能将生成的文件存储与外部存储器上,并且从外部存储器上可以编写该文件的功能。
第1章绪论在本次C++大作业中,我设计手机通讯录管理系统,在主函数中,主要用到了多分支语句(switch)。
在无限循环时也能用到了语句for,当每一个功能使用完毕或输入错误时就会返回,再次调用菜单函数进入菜单界面。
通讯录管理系统
通讯录管理系统随着社会的快速发展和信息化的进步,人们的沟通方式也在不断改变,电子通讯逐渐成为人们日常生活中不可或缺的一部分。
为了方便管理和利用联系人信息,通讯录管理系统应运而生。
通讯录管理系统是一种基于计算机技术的软件应用,其主要功能是帮助用户高效地存储、管理和检索联系人信息。
本文将就通讯录管理系统的构架、特点及应用领域进行详细介绍。
一、通讯录管理系统的构架通讯录管理系统由数据库、用户界面和核心功能模块组成。
1. 数据库:通讯录管理系统的核心是数据库,它用于存储用户的联系人信息。
数据库需要具备高效的存储和查询功能,并能保证数据的安全性。
同时,数据库还需要支持多用户的并发操作,以满足多人同时访问通讯录的需求。
2. 用户界面:用户界面是用户与通讯录管理系统进行交互的窗口,它需要提供简洁明了的操作界面,方便用户进行联系人的添加、编辑、删除和查询等操作。
用户界面还应该支持多种操作方式,如鼠标、键盘和触摸屏等,以适应不同用户的需求。
3. 核心功能模块:核心功能模块是通讯录管理系统的灵魂,它包括联系人信息的增删改查、联系人信息的导入导出、快速搜索、分组管理等功能。
核心功能模块还可以根据用户需求进行扩展,如通话记录、短信管理等附加功能。
二、通讯录管理系统的特点通讯录管理系统具有以下几个特点:1. 高效性:通讯录管理系统能够快速存储和查询大量的联系人信息,用户可以通过姓名、电话号码、公司名称等关键字进行快速搜索,并迅速找到所需的联系人信息。
2. 可扩展性:通讯录管理系统支持用户自定义字段,用户可以按照自己的需求添加额外的联系人信息,如生日、地址、邮箱等,以便更好地管理和利用联系人信息。
3. 多终端支持:通讯录管理系统可以在不同的终端设备上运行,如个人电脑、平板电脑、智能手机等。
用户可以随时随地访问和管理联系人信息,极大地提高了工作效率。
4. 数据安全性:通讯录管理系统通过多级权限控制和数据加密技术保证用户联系人信息的安全性。
个人通信录管理系统..
个人通信录管理系统个人通信录管理系统是一款方便用户管理个人通讯录的系统。
通过这个系统,用户可以将自己的通讯录信息集中录入,快速找到所需的通讯录信息,以及轻松备份和恢复通讯录信息。
功能概述添加/修改通讯录可以添加新联系人,每个联系人包括姓名、手机、邮箱、地址等基本信息,还可以在备注中添加额外信息,同时用户可以在添加或修改时对其进行分类,以便快速查找。
搜索通讯录根据相关信息(如姓名、手机号码、邮箱等)搜索通讯录中的联系人。
分组管理通讯录支持根据需要将相同类别的联系人进行分组管理,例如可以将家人、朋友、同事等分类。
备份/恢复数据可以方便地进行通讯录的备份和还原,以便在意外情况下保护通讯录信息。
删除通讯录可以根据需要对不再需要的联系人进行删除。
技术实现该系统使用了以下技术:前端•HTML:用于页面结构的编写•CSS:用于页面样式的设计•JavaScript:用于页面逻辑的编写后端•MySQL:用于存储通讯录信息•PHP:用于与前端交互以及操作MySQL框架•Bootstrap:用于在前端开发过程中提供一些组件和样式系统架构总体架构该系统采用了B/S模式,即浏览器/服务器模式,浏览器作为客户端,向后端服务器发起请求,该服务器负责处理请求,然后将处理结果返回给客户端。
前端架构前端主要分为三个部分:1.页面结构设计:根据需求,设计系统的各个页面结构,包括添加联系人页面、修改联系人页面、删除联系人页面、搜索联系人页面、备份/恢复联系人页面等。
2.页面样式设计:使用CSS样式为各个页面设计样式,以达到美观的效果。
3.页面逻辑设计:使用JavaScript编写各个页面的交互逻辑,例如添加联系人时需要进行输入检查,搜索联系人时需要根据输入内容进行模糊匹配等。
后端架构后端主要分为两个部分:1.处理请求:接收各个页面发送过来的请求,例如添加联系人请求、修改联系人请求、删除联系人请求、搜索联系人请求、备份/恢复联系人请求等。
手机通讯录管理系统
目录1.引言 (1)1.1编写目的 (1)1.2背景说明 (1)1.3参考资料 (1)2.系统功能需求分析 (2)2.1 功能分析 (2)2.2 安全性要求 (2)2.3完整性要求 (2)3.结构化分析与设计 (3)3.1手机通讯录系统H图及简介 (3)3.2手机通讯录系统ER图 (5)3.3数据流图 (6)4.面向对象的分析与设计 (7)4.1用例图 (7)4.2用例描述 (7)4.3 面向对象的类图 (9)4.4数据库表设计 (10)5.课程设计总结 (13)6.附录 (13)1.引言1.1编写目的本份分析设计说明书是分析与设计手机通讯录管理系统,使手机通讯录的功能更为强大和方便。
1.2背景说明随着科学技术的发展及人们生活水平的提高,手机已成为人们使用最为频繁的工具之一,其主要作用是为了让人们更为方便相互联系。
每个手机都具有一个或者多个通讯录。
一个好的通讯录能够提供方便,快捷的操作来帮助人们提高工作效率,节省时间。
本次课程设计是建立一个对手机联系人进行管理的通讯里系统。
在本手机通讯里中,可以将自己的亲朋好友的姓名、群组、手机、座机、E-mail、QQ、生日,家庭住址等信息保持到终极资料库中,并随时进行登录、退出、查看、添加、编辑、删除、查询、排序、个人设置等操作在满足人性化的时候也具备一定的安全性(用户需要进行登录),防止他人盗窃隐私。
1.3参考资料a.《软件工程》作者:张海潘出版社:人民邮电出版社b.《软件工程》作者:鄂大伟出版社:清华大学出版社c.《软件工程导论》作者:张海潘2.系统功能需求分析2.1 功能分析登陆管理:登陆或退出通信录。
通讯录管理:添加删除联系人,编辑备份联系人信息,将联系人分组。
通讯录查询:实现按姓名或者按手机号码进行快速查询,查看通信录所有成员,将联系人按一定属性排序。
设置管理:用户名及密码修改,个人隐私设置。
联系管理:对联系人进行语音或者短信联系。
2.2 安全性要求系统中设置访问用户的标识以鉴别该用户是否是合法用户(以正确的账号密码登陆的)并要求用户设置密码,以防信息被盗。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、课题名称简易手机通讯录管理系统(线性表、查找、排序)二、主要内容简易手机通讯录管理系统的设计主要是实现对手机通讯录的管理和相关操作。
基本功能如下:(1)联系人信息录入、添加功能:包括手机号(此处用短号,5位,不能重复)、姓名、家庭住址的录入和添加。
(2)联系人信息查询功能:能①按手机号进行查询。
②按联系人姓名进行查询。
(3)排序:①能按手机号升序进行排序;②能按姓名进行升序排序,姓名相同时按手机号从小到大进行排序(4)联系人信息的修改、删除功能:①按手机号进行联系人信息的修改和删除。
②按姓名进行联系人信息的修改和删除,多个姓名时,再指定具体的号码。
(5)统计功能:统计自己的联系人有多少个。
三、课题设计的基本思想,原理和算法描述(1)本次课程设计题目为简易手机通讯录管理系统,主要运用到线性表中顺序表的相关知识,以及顺序查找的思想和冒泡排序算法。
(2)界面设计//菜单函数int menu(){int c;printf("\n\n\t☆☆☆☆☆☆☆手机通讯录信息管理系统☆☆☆☆☆☆☆☆\n\n");printf("******************************************************************* ***\n");printf(" 1.添加联系人信息\n");printf(" 2.查询联系人信息\n");printf(" 3.对联系人信息进行排序\n");printf(" 4.修改联系人信息\n");printf(" 5.删除联系人信息\n");printf(" 6.统计联系人个数\n");printf(" 0.退出信息管理系统\n");printf("******************************************************************* ***\n\n");printf("★请输入您的选择(0-6):");while(1){scanf("%d",&c);if(c<0||c>6)printf("\n▲输入错误!请重新选择:");elsebreak;}return c;}//主函数void main(){SqList * L;InitList(L);system("color 3f");while(1){switch(menu()){case 1:system("cls");printf("\n\t\t\t信息的增加\n");ListAdd(L);break;case 2:system("cls");printf("\n\t\t\t信息的查询\n");Search(L);break;case 3:system("cls");printf("\n\t\t\t对信息进行排序\n");Paixu(L);break;case 4:system("cls");printf("\n\t\t\t信息的修改\n");ListModify(L);break;case 5:system("cls");printf("\n\t\t\t信息的删除\n");Delete(L);break;case 6:system("cls");printf("\n\t\t\t统计联系人个数\n");ListLength(L);break;case 0:printf("再见!\n");return;default:printf("\n▲输入错误!请重新选择:");break;}}}(3)功能模块的实现初始化顺序表void InitList(SqList *&L)L=(SqList *)malloc(sizeof(SqList));L->length=0;}②增加信息函数。
定义变量a起标记作用,用于判断输入信息是否与已有信息重复void ListAdd(SqList *&L) //增加函数{int a=0;//标记printf("1.号码(五位数字!):");scanf("%s",L->data[L->length].num); printf("2.姓名:");scanf("%s",L->data[L->length].name);printf("3.性别:");scanf("%s",L->data[L->length].sex);printf("4.家庭住址:");scanf("%s",L->data[L->length].add);for(int i=0;i<L->length;i++)//判断是否重号{if(strcmp(L->data[i].num,L->data[L->length].num)==0){printf("该号码已经存在\n");a=1;break;}}if(a==0)L->length++;}③查找符合条件的信息的下标并返回到需要调用的函数体中int FindNum(SqList *&L){printf("★输入需要进行操作的号码:");char num[10];scanf("%s",num);int i=0;while(i<L->length&&strcmp(L->data[i].num,num)!=0)i++;if(i>=L->length){printf("不存在该联系人!\n");}return i;④查询信息函数分两种情况:按号码查找与按姓名查找。
由于号码唯一所以可以直接调用之前的查找下标函数。
按姓名查找时则需要考虑到重名的情况,所以用一个for循环将所有符合条件的信息全部输出。
void Search(SqList *&L){if(L->length==0){printf("通讯录此时为空,无法进行查找!\n");}else{int m,i;printf("***************************************************************\n"); printf("\t\t1.按联系人号码进行查询\n");printf("\t\t2.按联系人姓名进行查询\n");printf("***************************************************************\n"); int a;printf("★请输入您的选择(1 or 2):");scanf("%d",&a);switch(a){case 1:m=FindNum(L);if(m<L->length){printf("您查询的信息如下\n");printf("号码姓名性别家庭住址\n");printf("%s %s %s%s\n",L->data[m].num,L->data[m].name,L->data [m].sex,L->data[m].add);}break;case 2:printf("★输入需要进行操作的姓名:");char name[20];scanf("%s",name);for( i=0;i<L->length;i++){if(strcmp(L->data[i].name,name)==0){printf("号码姓名性别家庭住址\n");printf("%s %s %s%s\n",L->data[i].num,L->data[i].name,L->data [i].sex,L->data[i].add);}else{printf("不存在该联系人\n");}}break;default:printf("输入错误!");break;}}}⑤修改函数按号码修改时先调用之前查找下标的函数,找到符合条件的信息后直接输入信息将原有信息覆盖。
按姓名修改时当只有一个信息符合条件时与按号码修改算法一样,当出现重名情况时提示用户选择相应的号码再调用按号码修改的算法。
每一次修改都进行一次判断,判断修改后的信息是否与表中已有信息重复。
void ListModify(SqList *&L){if(L->length==0){printf("通讯录此时为空,无法进行信息的修改!\n");}else{int m,n;int b=0;printf("***************************************************************\n") ;printf("\t\t1.按联系人号码进行修改\n");printf("\t\t2.按联系人姓名进行修改\n");printf("***************************************************************\n") ;i nt a;printf("★请输入您的选择(1 or 2):");scanf("%d",&a);switch(a){case 1:m=FindNum(L);if(m<L->length){Telphone p;printf("号码姓名性别家庭住址\n");printf("%s %s %s%s\n",L->data[m].num,L->data[m].name,L->data [m].sex,L->data[m].add);printf("输入修改后的联系人信息:\n");printf("号码姓名性别家庭住址\n");scanf("%s %s %s %s",p.num , ,p.sex,p.add);for(int j=0;j<L->length;j++)//判断是否重号{if(strcmp(L->data[j].num,p.num)==0){printf("修改失败!(该号码已经存在)\n");printf("重新输入修改后的联系人信息:\n");printf("号码姓名性别家庭住址\n");scanf("%s %s %s%s",L->data[m].num,L->data[m].name,L->data[m].sex,L->data[m].add);printf("\n");break;}else{L->data[m]=p;}}}break;case 2:printf("★输入需要进行操作的姓名:");char name[20];int i;scanf("%s",name);for( i=0;i<L->length;i++){if(strcmp(L->data[i].name,name)==0){b++;}}if(b==0){printf("不存在该联系人!\n");}if(b==1){for(int i=0;i<L->length;i++){if(strcmp(L->data[i].name,name)==0){Telphone q;printf("再次确认需要修改的信息:\n");printf("号码姓名性别家庭住址\n");printf("%s %s %s%s\n\n",L->data[i].num,L->data[i].name,L->data [i].sex,L->data[i].add);printf("★输入修改后的联系人信息:\n");printf("号码姓名性别家庭住址\n");scanf("%s %s %s %s",q.num , ,q.sex,q.add);for(int j=0;j<L->length;j++)//判断是否重号{if(strcmp(L->data[j].num,q.num)==0){printf("修改失败!(该号码已经存在)\n");printf("重新输入修改后的联系人信息:\n");printf("号码姓名性别家庭住址\n");scanf("%s %s %s%s",L->data[i].num,L->data[i].name,L->data[i].sex,L->data[i].add);printf("\n");break;}else{L->data[i]=q;}}}}}if(b>1){printf("符合条件的联系人有%d个!详细信息如下:\n",b);for(int i=0;i<L->length;i++){if(strcmp(L->data[i].name,name)==0){printf("号码姓名性别家庭住址\n");printf("%s %s %s%s\n",L->data[i].num,L->data[i].name,L->data [i].sex,L->data[i].add);}}printf("请根据以上显示出的信息选择对应的号码进行修改!\n");n=FindNum(L);if(n<L->length){Telphone t;printf("号码姓名性别家庭住址\n");printf("%s %s %s%s\n",L->data[n].num,L->data[n].name,L->data [n].sex,L->data[n].add);printf("输入修改后的联系人信息:\n");printf("号码姓名性别家庭住址\n");scanf("%s %s %s %s",t.num , ,t.sex,t.add);for(int i=0;i<L->length;i++)//判断是否重号{if(strcmp(L->data[i].num,t.num)==0){printf("修改失败!(该号码已经存在)\n");printf("重新输入修改后的联系人信息:\n");printf("号码姓名性别家庭住址\n");scanf("%s %s %s%s",L->data[n].num,L->data[n].name,L->data[n].sex,L->data[n].add);printf("\n");break;}else{L->data[n]=t;}}}}break;default:printf("输入错误!");break;}}}⑥删除函数按号码删除时先查找到符合条件的信息,再用for循环将该信息后面的信息依次向前覆盖达到删除功能。