大学生c语言程序设计任务书(学生通讯录管理程序)
c语言学生通讯录管理系统设计
C语言学生通讯录管理系统设计1. 系统概述本文档描述了一个基于C语言的学生通讯录管理系统的设计。
该系统旨在提供一个简单而有效的方式来管理学校中学生的联系信息。
2. 功能需求学生通讯录管理系统需要满足以下功能需求:•添加学生信息:包括学生姓名、学号、年级、班级、电话号码等。
•删除学生信息:根据学号或姓名删除指定学生的信息。
•修改学生信息:根据学号或姓名修改指定学生的信息。
•查询学生信息:根据学号或姓名查询指定学生的信息。
•显示所有学生信息:展示学生通讯录中所有学生的信息。
3. 系统设计3.1 数据结构系统使用以下数据结构来表示学生通讯录:struct Student {char name[50];int studentID;int grade;int class;char phoneNumber[20];};struct StudentDirectory {struct Student students[100];int count;};学生通讯录使用一个结构体数组来存储学生信息,每个学生信息包含姓名、学号、年级、班级和电话号码。
StudentDirectory结构体用于存储整个学生通讯录,count表示当前学生通讯录中的学生数量。
3.2 模块设计系统的实现可以分为以下几个模块:•输入输出模块:负责从用户获取输入以及将结果输出给用户。
•添加学生信息模块:负责向学生通讯录中添加新的学生信息。
•删除学生信息模块:负责从学生通讯录中删除指定学生的信息。
•修改学生信息模块:负责修改学生通讯录中指定学生的信息。
•查询学生信息模块:负责查询学生通讯录中指定学生的信息。
•显示学生信息模块:负责展示学生通讯录中所有学生的信息。
3.3 系统流程下图展示了学生通讯录管理系统的基本流程:flowchart LRA[开始]B[用户输入选项]C{选项是添加学生信息?}D[执行添加学生信息模块]E{选项是删除学生信息?}F[执行删除学生信息模块]G{选项是修改学生信息?}H[执行修改学生信息模块]I{选项是查询学生信息?}J[执行查询学生信息模块]K{选项是显示所有学生信息?}L[执行显示学生信息模块]M[结束]A --> BB -- Yes --> CB -- No --> EC -- Yes --> DC -- No --> ED --> ME -- Yes --> FE -- No --> GF --> MG -- Yes --> HG -- No --> IH --> MI -- Yes --> JI -- No --> KJ --> MK -- Yes --> LK -- No --> ML --> M4. 系统实现系统的具体实现可以参考下面的示例代码:```c #include <stdio.h>struct Student { char name[50]; int studentID; int grade; int class; char phoneNumber[20]; };struct StudentDirectory { struct Student students[100]; int count; };void addStudent(struct StudentDirectory* directory) { // 从用户获取学生信息并添加到学生通讯录中 }void deleteStudent(struct StudentDirectory* directory) { // 从用户获取学生信息并从学生通讯录中删除 }void modifyStudent(struct StudentDirectory* directory) { // 从用户获取学生信息并修改学生通讯录中指定学生的信息 }void queryStudent(struct StudentDirectory* directory) { // 从用户获取学生信息并查询学生通讯录中指定学生的信息 }void showAllStudents(struct StudentDirectory* directory) { // 显示学生通讯录中所有学生的信息 }int main() { struct StudentDirectory directory; directory.count = 0;int option;while (1) {printf(\。
C语言程序设计课程设计---通讯录管理系统
C语言程序设计实习报告题目:通讯录管理系统院系名称电子与信息工程院专业名称电子信息工程班级电子0902班内序号学生姓名指导教师时间2010年6月21日至2010年 7月2日一、课程设计目的.(1)加深对《C语言程序设计》课程所学知识的理解,进一步巩固C语言语法规则。
从实际问题出发,学会自己动手设计,编制结构清晰、风格良好、数据结构适当的C语言程序,从而提高自己根据实际问题设计编写程序的能级,进而能具备解决综合性实际问题的能力。
(2)通过课程设计了解并掌握C语言程序设计的方法,熟悉C程序设计的开发环境及C程序的调试过程。
二、课程设计内容用所学过的C语言知识(文件,结构体,函数,指针)编程一个通讯录管理系统的程序。
三、需求分析对所设计的通讯录管理系统的程序,要求具有以下这些功能:(1)通过键盘输入某位学生的信息。
信息包含,姓名,性别,年龄,班级,QQ,电话,学号,地址。
(2)给定学号,显示某位学生的信息;(3)给定某个班级的班号,显示该班所有学生的通讯录信息;(4)显示全部通讯录信息;(5)给定某位学生的学号,修改该学生的通讯录信息;(6)给定某位学生的学号,删除该学生的通讯录信息;(7)能够对学号进行升序排序;(8)用文件的形式将录入的数据进行存储,并从其中读取数据。
四、概要设计1.系统结构图根据设计要求,进行分析,给出系统结构图,即各功能的模块图,结构图如下2.功能模块说明对各个模块进行功能的描述。
(1)输入模块:实现学生基本信息的基本输入如姓名,性别,年龄,班级,QQ,电话,学号,地址。
(2)插入模块:实现对一个学生信息的插入。
(3)查询模块:根据需要,输出某一个学生的信息。
(4)浏览模块:输入班级号查询该班级中所有学生的信息,或浏览全部学生信息。
(5)修改模块:根据需要,修改指定学生的指定信息。
(6)删除模块:删除某个学生的全部信息。
(7)排序模块:①按学号排序,②按班级排序。
五、详细设计及运行结果六、调试情况,设计技巧及体会1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。
C语言课程设计报告(学生通讯录管理系统设计)资料
回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温顾。
删除后:
按6将通讯录信息排序:
按0退出:
程序已实现对学生信息的录入、按姓名查询、按学号查询和删减,唯一的不足之处是没能实现对学生信息的修改。
设计体会与建议:
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在是生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术十分重要的。
stu=shuru();
system("cls");
menu();
puts("\n学生信息录入完毕,请输入你的选择(0~6):\n");
break;
case '2':findall();puts("\n请输入你的选择(0~6):"); break;
学生通讯录管理系统c语言编程
学生通讯录管理系统C语言编程简介学生通讯录管理系统是一个帮助学生管理通讯录信息的应用程序。
通过该系统,学生可以添加、删除、查询和修改通讯录中的联系人信息,从而更好地组织和管理自己的通讯录信息。
功能需求1. 添加联系人学生可以通过输入联系人的姓名、电话号码、邮箱等信息,将联系人添加到通讯录中。
2. 删除联系人学生可以根据联系人的姓名或电话号码,从通讯录中删除指定的联系人信息。
3. 查询联系人学生可以通过姓名或电话号码查询通讯录中的联系人信息,并将查询结果显示出来。
4. 修改联系人学生可以修改通讯录中指定联系人的信息,如电话号码、邮箱等。
技术实现通讯录管理系统将使用C语言进行编程实现。
以下是系统的基本设计思路:1. 数据结构设计通讯录信息可以用结构体来表示,包含联系人的姓名、电话号码、邮箱等字段。
struct Contact {char name[50];char phone[20];char email[50];};2. 功能模块划分•添加联系人模块:用于添加新的联系人信息。
•删除联系人模块:用于删除指定联系人信息。
•查询联系人模块:用于根据姓名或电话号码查询联系人信息。
•修改联系人模块:用于修改指定联系人的信息。
3. 用户界面设计系统将使用控制台界面,通过菜单来实现各个功能模块的调用。
开发步骤1. 定义数据结构首先定义联系人结构体,包含姓名、电话号码、邮箱等字段。
2. 实现功能模块分别实现添加联系人、删除联系人、查询联系人、修改联系人等功能模块的具体代码。
3. 编写主程序编写主程序,通过调用功能模块来实现整体通讯录管理系统的运行。
总结学生通讯录管理系统C语言编程是一个实用的项目,通过这个项目,学生可以熟练掌握C语言编程的基本知识,并且实践项目开发的流程。
通过不断调试和完善,学生可以提升自己的编程能力和项目实现能力。
希望学生能够在这个项目中学到更多的知识,提升自己的编程技能。
C语言程序设计报告书 通讯录
}
}
}
void Menu_Select()
/*显示菜单界面*/
{
printf(" \n");
printf(" \n");
printf(" \n");
printf(" Address Book Management System \n");
printf(" \n");
printf(" ======================\n");
printf("
************************************************************************\n");
}
for(;i<50;i++)
{
do
{
switch(yes_no)
{
case '1':
/*如果输入为'1',则进行数据输入*/
printf(" ****** No.(4) Name(10) Sex(M/F) Phone(11) Address(25)
/*数据输出*/
{
printf("%4s %10s %4s %11s %20s
%10s\n",friends[j].num,friends[j].name,friends[j].sex,friends[j].phone,friends[
j].address,friends[j].post_num);
if(strcmp(a,b)==0) t=0;
}
return t;
(完整word版)c语言程序设计通讯录管理系统
1.需求分析根据题目要求,通讯录保存在文件中,要提供文件的输入和输出功能;还有就是要提供通讯录添加(个人信息包括姓名、学号、年龄、住址、电子邮件等)、删除、显示、修改等基本功能。
2。
概要设计系统总体设计是信息的输入、信息的编辑和退出.系统功能模块如下:1.添加通讯录;2.输出通讯录;3.查找通讯录;4.修改通讯录;5.删除通讯录;6.退出通讯录;3.详细设计1.通讯录里无信息,所以要添加信息.用键盘逐个输入通讯录里联系人的信息.2.输出通讯录用于让使用者观看通讯录里所有的信息.3。
查找通讯录是让使用者可以通过电话或姓名来查找通讯录里的联系人.4。
修改通讯录是让使用者通过姓名查找到通讯录里的联系人,然后其作出修改。
5.删除通讯录是用来按照联系人的姓名或电话来单独删除通讯录中一些不想要的联系人。
还可以集体删除通讯录中的联系人.6.退出通讯录系统。
4.主要源程序代码#include 〈stdio。
h>#include 〈stdlib.h〉#include 〈string.h>#include 〈conio。
h〉struct record{char name[20];char age[20];char phone[20];char adress[40];char number[30];char e_mail[20];}contact[500];int NO=0;FILE *fp;void mainmenu();void newrecord();void browsemenu();void searchmenu();void searchname();void searchphone();void modifymenu();void deletemenu();void deleteall();void deletesingle();void deletename();void deletephone();int loadfile();void savefile();void main(){printf(”\n\t\t :)欢迎使用通讯录管理系统beta”);printf(”\n\t\t文件导入中……请稍后……\n\n\n\n\n");system(”cls”);loadfile();while (1){mainmenu();}}void mainmenu(){char choice;system(”cls");printf("\n\t\t******************** 主菜单********************");printf("\n\t\t****************** 1-新建菜单******************”);printf(”\n\t\t******************2—浏览菜单******************”);printf(”\n\t\t****************** 3—查找菜单******************”);printf("\n\t\t******************4—修改菜单******************”);printf(”\n\t\t******************5-删除菜单******************”);printf(”\n\t\t****************** 6-退出******************");printf("\n\t\t************************************************”); printf(”\n\t\t请选择:");choice=getch();switch (choice){case '1':newrecord();break;case ’2’:browsemenu();break;case ’3’:searchmenu();;break;case '4’:modifymenu();break;case ’5’:deletemenu();break;case '6’:exit(0);default:mainmenu();}}void newrecord(){printf(”\n\t\t****************请输入联系人信息****************\n”);printf(”\n\t\t输入姓名:”);scanf(”%s”,&contact[NO]。
学生通讯录管理系统c语言编程
学生通讯录管理系统c语言编程以下是一个简单的C语言程序,用于管理学生通讯录。
该程序可以添加、显示、查找和删除学生信息。
c复制代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_STUDENTS 100#define MAX_NAME_LENGTH 50// 学生结构体struct Student {char name[MAX_NAME_LENGTH];int age;char gender;char phone[15];char email[50];};// 学生数组struct Student students[MAX_STUDENTS];int num_students = 0;// 添加学生信息void add_student() {if (num_students >= MAX_STUDENTS) {printf("Error: Reached maximum number of students\n");return;}struct Student new_student;printf("Enter name: ");scanf("%s", new_);printf("Enter age: ");scanf("%d", &new_student.age);printf("Enter gender (M/F): ");scanf(" %c", &new_student.gender);printf("Enter phone number: ");scanf("%s", new_student.phone);printf("Enter email: ");scanf("%s", new_student.email);students[num_students] = new_student;num_students++;}// 显示所有学生信息void display_students() {printf("Name\tAge\tGender\tPhone\tEmail\n");for (int i = 0; i < num_students; i++) {printf("%s\t%d\t%c\t%s\t%s\n", students[i].name, students[i].age, students[i].gender, students[i].phone, students[i].email);}}// 查找学生信息void find_student() {char name[MAX_NAME_LENGTH];printf("Enter student name: ");scanf("%s", name);for (int i = 0; i < num_students; i++) {if (strcmp(students[i].name, name) == 0) {printf("Name: %s\n", students[i].name);printf("Age: %d\n", students[i].age);printf("Gender: %c\n", students[i].gender); printf("Phone: %s\n", students[i].phone); printf("Email: %s\n", students[i].email); return;}}printf("Error: Student not found\n");}// 删除学生信息void delete_student() {char name[MAX_NAME_LENGTH];printf("Enter student name: ");scanf("%s", name);int found = 0;for (int i = 0; i < num_students; i++) {if (strcmp(students[i].name, name) == 0) { found = 1;for (int j = i; j < num_students - 1; j++) { students[j] = students[j+1];}num_students--;break;}}if (!found) {printf("Error: Student not found\n");} else {printf("Student deleted successfully\n"); }}int main() {int choice;do {printf("\nMenu:\n");printf("1. Add student\n");printf("2. Display students\n");printf("3. Find student\n");printf("4. Delete student\n");printf("5. Exit\n");printf("Enter choice: ");scanf("%d", &choice);switch (choice) {case 1: add_student(); break;case 2: display_students(); break;case 3: find_student(); break;case 4: delete_student(); break;case 5: printf("Exiting...\n"); break; default: printf("Invalid choice\n"); break; }} while (choice != 5);return 0。
c语言课程设计学生通讯录管理系统
C语言课程设计 - 学生通讯录管理系统1. 引言学生通讯录管理系统,简称STMS(Student Telephone Management System),是一款基于 C 语言开发的学生通讯信息管理系统。
该系统旨在帮助学校或其他机构方便地管理学生通讯录信息,包括学生的基本信息、联系方式等。
本文档将介绍该系统的设计要求、功能模块、数据结构、算法以及使用方法。
2. 设计要求学生通讯录管理系统应满足以下设计要求:•能够实现学生信息的添加、删除、修改和查询等基本操作;•提供用户友好的界面,方便用户进行操作;•数据存储应使用文件方式进行,确保数据可以持久保存;•提供合理的错误处理机制,提示用户操作引起的错误并给予相应的错误提示。
3. 功能模块学生通讯录管理系统包含以下功能模块:3.1 用户管理模块该模块用于管理系统注册的用户信息,包括用户的登录名、密码等。
•用户登录:用户输入用户名和密码,系统验证登录信息并提供相应权限;•用户注册:新用户可以通过该功能注册账号,并设置登录密码;•用户权限管理:系统根据用户不同的角色分配相应的权限。
3.2 学生信息管理模块该模块用于管理学生的基本信息和通讯录信息。
•添加学生信息:用户可以添加学生的基本信息和联系方式;•删除学生信息:用户可以根据学生的ID删除特定学生的信息;•修改学生信息:用户可以修改指定学生的信息;•查询学生信息:用户可以根据学生的姓名或其他关键词进行学生信息的查询。
3.3 通讯录管理模块该模块用于管理学生的通讯录信息,包括通讯录的名称、联系方式等。
•添加通讯录:用户可以添加新的通讯录,并指定通讯录的名称;•删除通讯录:用户可以根据通讯录的名称删除指定的通讯录;•修改通讯录:用户可以修改已存在的通讯录的名称;•查询通讯录:用户可以根据通讯录的名称查询对应的联系方式。
4. 数据结构学生通讯录管理系统采用以下数据结构:4.1 学生结构体typedef struct {int id; // 学生IDchar name[20]; // 学生姓名char gender; // 学生性别char phone[11]; // 学生电话号码char email[50]; // 学生电子邮箱} Student;4.2 通讯录结构体typedef struct {char name[50]; // 通讯录名称char phone[11]; // 通讯录联系方式} Directory;5. 算法学生通讯录管理系统采用以下算法实现部分功能:5.1 添加学生信息```c void addStudent() { Student student; // 用户输入学生信息 printf(。
(完整版)C语言毕业课程设计及任务书-学生信息管理系统
内蒙古科技大学本科生课程设计说明书题目:C语言课程设计——学生信息管理系统学生姓名:王佳星学号:专业:2011-计算机班级:3班指导教师:余金林内蒙古科技大学课程设计任务书目录内蒙古科技大学课程设计任务书 (I)第一章需求分析 (3)1.1引言 (3)1.2任务概述 (3)1.3数据描述 (3)1.4功能需求 (3)1.5性能需求 (3)第二章概要设计 (4)2.1总体设计 (4)2.2数据类型设计(或数据结构设计) (6)2.3接口设计函数声明 (6)2.4运行界面设计 (6)第三章详细设计 (8)3.1输入模块设计 (8)3.2输出模块设计 (8)3.3查找模块设计 (9)3.4保存及读取模块设计 (10)第四章测试分析 (11)4.1测试程序执行情况 (11)第五章课程设计总结 (14)附录:程序代码 (15)参考文献 (26)致谢 (26)第一章需求分析1.1引言学生基本信息管理系统1.2任务概述1.建立学生信息,信息至少包含学生姓名,学号,性别,年龄,出生日期,家庭地址,e-mail,电话地址等;2.能够提供新建、浏览、查找、修改和删除通讯录信息的功能;3.能够提供安不同方式查询的功能;如按姓名或电话等查询;1.3数据描述struct student{char NO[20];char name[20];int age;char sex[3]; *'F'表示性别男,'M'表示性别女*char birthday[10];char address[30];char phone[20];char e_mail[20];struct student *next; 下个结点};1.4功能需求1、输入功能:一次可以完成自定义学生人数的学生信息记录的输入。
2、删除功能:对指定学生的信息进行删除。
3、修改功能:对指定学生的信息进行修改。
4、查询功能:选择某种方式并输入该信息查询符合条件的学生信息。
C语言课程设计报告(学生通讯录管理系统设计)
课程设计报告(本科)课程:高级语言程序设计学号:姓名:秦钱军班级:2013级计算机科学与技术教师:冯凤时间:2014年1月计算机科学与技术系1结果与分析(可以加页):主界面:按1录入学生通讯录信息:2按2查看所有学生信息:3按3按姓名查找学生信息:按4按学号查找学生信息:4按5删除学生信息:删除后:5按6将通讯录信息排序:按0退出:6程序已实现对学生信息的录入、按姓名查询、按学号查询和删减,唯一的不足之处是没能实现对学生信息的修改。
设计体会与建议:课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在是生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握计算机开发技术十分重要的。
具体的各个函数是参照课本上《链表》那一章的内容的,比如结构体的建立、78#include<stdio.h>#include<string.h>#include<malloc.h>#include<stdlib.h>#include<conio.h>#define NULL 0struct student{long num;char name[20];int banji;char tel[11];char Email[20];int sushe;struct student *next;};struct student *stu;int n;void menu(void){ /*主菜单函数*/system("cls");puts("************************************************************************** **");puts("** ^_^学生通讯录管理系统^_^ **");puts("************************************************************************** **");puts("************");puts("***** 1=录入学生通讯录信息*****");puts("**** 2=列出所有学生通讯录****");puts("*** 3=按姓名查询信息***");puts("** 4=按学号查询信息**");puts("* 5=删除学生信息*");puts("** 6=按学号将通讯录排序**");puts("***** 0=退出puts("**********");puts("************");puts("**************");puts("************************************************************************** **");}struct student *shuru(void) /*输入函数*/{system("cls");struct student *s1,*s2;n=1;int num;puts("请输入学生个数(提示:个数不能输入0!):");scanf("%d",&num);s1=s2=(struct student *)malloc(sizeof(struct student));puts("*************************************************");puts("请输入学号:");scanf("%ld",&s1->num);puts("请输入学生姓名:");scanf("%s",s1->name);puts("请输入班级:");scanf("%d",&s1->banji);puts("请输入电话号码:");scanf("%s",s1->tel);puts("请输入电子邮件:");scanf("%s",s1->Email);puts("请输入学生宿舍号:");scanf("%d",&s1->sushe);stu=s1;while(n<num){s2->next=s1;s2=s1;s1=(struct student *)malloc(sizeof(struct student));puts("*************************************************");puts("请输入学号:");scanf("%ld",&s1->num);puts("请输入学生姓名:");scanf("%s",s1->name);puts("请输入班级:");scanf("%d",&s1->banji);puts("请输入电话号码:");scanf("%s",s1->tel);puts("请输入电子邮件:");scanf("%s",s1->Email);puts("请输入学生宿舍号:");scanf("%d",&s1->sushe);n=n+1;}puts("*************************************************");s2->next=s1;s2=s1;s2->next=NULL;return(stu);//system("cls");}void shuchu(struct student *s){ /*输出单个学生信息*/printf("* %-8ld",s->num);printf("%-15s",s->name);printf("%-8d",s->banji);printf("%-15s",s->tel);printf("%-15s",s->Email);printf("%-5d *\n",s->sushe);}void findall() /*输出所有学生信息*/{system("cls");struct student *s;//if(n=2)//printf("\n现在有%d个学生信息,分别是:\n",n);//elseprintf("\n现在有%d个学生信息,分别是:\n",n);puts("________________________________________________________________________"); puts("* 学号姓名班级电话电子邮件宿舍*"); s=stu;while(s!=NULL){shuchu(s);s=s->next;}puts("________________________________________________________________________");puts("返回主菜单请按【9】");if(getche()=='9') menu();}void findname(){ /*按姓名查找函数*/system("cls");struct student *s;char name[20];printf("\n请输入你要查询的学生姓名:\n");scanf("%s",name);s=stu;while(strcmp(s->name,name)!=0){s=s->next;}if(s==NULL){puts("查无此学生姓名!");goto end;}else{puts("该学生的信息为:");puts("* 学号姓名班级电话电子邮件宿舍*");shuchu(s);}end:;puts("返回主菜单请按【9】");if(getche()=='9') menu();}void findnum() /*按学号查找函数*/{system("cls");struct student *s;puts("请输入你要查询的学生学号:");long i;scanf("%ld",&i);s=stu;while(s->num!=i){s=s->next;}if(s==NULL){puts("查无此学生学号!");goto end;}else{puts("该学生的信息为:");puts("* 学号姓名班级电话电子邮件宿舍*"); shuchu(s);}end:;puts("返回主菜单请按【9】");if(getche()=='9') menu();}struct student *shanchu(struct student*stu) /*删除函数*/{system("cls");long num;char s;struct student *s1,*s2;if(stu==NULL){puts("没有任何学生信息。
(完整word版)c语言课程设计学生通讯录管理系统
题目:学生通讯录管理系统任务说明:主要利用c语言的文件操作能力设计开发一个小型的通讯录管理系统,至少具有如下功能:①记录通讯录内的人员的学号、姓名、地址、电话号码。
②显示所有人员的信息。
③通过输入姓名查找人员信息。
④通过输入姓名查找到要删除的人员信息,然后可以进行删除。
⑤通过输入姓名查找到要修改的人员信息,然后可以进行修改。
⑥添加人员信息。
系统功能描述:本程序的功能是为用户提供简单的通讯录进行管理,通过该程序存储联系人信息,提供关键字(只能是英文关键字进行查找)查找功能,可以对数据进行修改、删除、添加等操作。
各按钮的功能如下:查找记录:以姓名为关键字,查找并显示该记录。
若查找不到,则显示“好象没有”;添加记录:将当前记录按姓名序加入通讯录,然后显示第一条记录;修改记录:修改当前记录,显示当前记录。
姓名为关键字,不允许修改;删除记录:删除当前记录,然后显示第一条记录;第一条记录:将当前记录指针移动至首节点,若已为首节点,则不移动;前一条记录:将当前记录指针向前移动一个节点,若已为首节点,则不移动;后一条记录:将当前记录指针向后移动一个节点,若已为尾节点,则不移动;最后一条记录:将当前记录指针移动至尾节点,若已为尾节点,则不移动;加载:从文件中掉入已保存的通讯录数据;保存:保存通讯录数据;退出:退出系统;设计思路:根据要求,电话录数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。
图1 系统功能模块图软件中使用的结构体和结构体数组,如:struct callmember{char name[20];char address[20];char code[20];char callnumber[20];};对用户的信息进行保存,他们都以二进制的形式读写。
其中:char name[20];char address[20];char code[20];char callnumber[20]分别对姓名、地址、邮编、电话号码进行储存在子函数中还使用了结构体数组:struct callmember one[100];还使用了exit()、 fclose()等库函数。
C语言程序设计 通讯录程序
目录:课程设计任务书 (2)目录: (3)一、目的 (4)二、基本情况 (5)三、时间安排 (5)四、设计和调试过程规范化要求 (5)五、设计内容和设计要求 (6)六、考核方式 (7)一通讯录的主要功能: (8)一、问题描述: (8)二、功能要求: (8)三、算法提示: (8)四、测试数据: (9)二、课题的主要功能模块划分: (9)三、主要功能的实现 (10)一、按名字查找显示函数void search( ) (17)二、快速查找函数:void qseek( ) (17)四、程序调试: (18)五、总结 (20)六、源程序 (21)机械工程学院课程设计评分表 (30)前言《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。
是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,课程设计的课题比平时的习题复杂得多,也更接近实际。
课程设计着眼于理论与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养程序设计工作所需要的知识综合能力和动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。
为了达到上述目的,本课程设计安排了15个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。
学生选其中一题进行设计,设计完毕写出课程设计报告,用A4纸打印成册;并将课程设计报告与源程序存盘。
学习委员将课程设计报告与磁盘(缺一不可)收齐后交指导老师。
一、目的全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
原创c语言学生通讯录管理系统设计
原创 C 语言学生通讯录管理系统设计简介本文将介绍一个基于 C 语言的学生通讯录管理系统的设计。
该系统旨在提供一个方便管理学生通讯录信息的工具,包括学生的基本信息、联系方式以及其他相关信息。
功能需求学生通讯录管理系统应具备以下功能:1.添加学生信息:包括学生姓名、年龄、性别、学号、联系方式等。
2.删除学生信息:根据学生姓名或学号进行删除。
3.修改学生信息:根据学生姓名或学号进行修改。
4.查询学生信息:根据学生姓名或学号进行查询。
5.显示所有学生信息:以表格形式展示所有学生的基本信息。
数据结构设计为了实现上述功能需求,我们需要设计适当的数据结构来存储学生信息。
本系统采用单链表作为主要数据结构,每个节点表示一个学生的信息。
每个节点包括以下字段:•char name[50]:学生姓名•int age:学生年龄•char gender[10]:学生性别•int studentID:学生学号•char contact[50]:学生联系方式其中,name、gender和contact字段使用字符数组来存储字符串信息,age和studentID字段使用整数来存储相应的信息。
为了方便管理学生信息,我们还需要定义一个指针变量head来表示链表的头节点。
以下是相关数据结构的定义:typedef struct ListNode {char name[50];int age;char gender[10];int studentID;char contact[50];struct ListNode* next;} ListNode;ListNode* head = NULL;功能实现添加学生信息添加学生信息的功能通过以下步骤实现:1.创建一个新的节点newNode2.提示用户输入学生的基本信息,并将信息保存到newNode的相应字段中3.将newNode插入到链表中的合适位置以下是添加学生信息的代码实现:```c ListNode* newNode = (ListNode*)malloc(sizeof(ListNode)); printf(。
C语言程序设计课程设计_通讯录管理系统
山东交通学院课程设计报告实习名称:通讯录设计教学院部:山东专业班级:学生姓名:学生学号:指导教师:完成时间:2011 年09月09日报告成绩:通讯录管理系统一、设计需求设计课题及要求1、建立通讯录系统,包含编号、姓名、年龄、号码、地址、电子邮箱等2、能够实现添加、删除和修改通讯录信息的功能3、能偶实现按不同方式查询的功能;如按姓名或年龄、电话等查询4、能够将通讯录保存在文件中系统功能1、添加:添加通讯录记录2、显示:显示通讯录记录3、删除:删除通讯录记录4、查询:查询通讯录记录5、修改:修改通讯录记录6、保存:将信息保存到文件二、总体设计及分析1、添加:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、、2、电子邮箱后,会提示是否继续添加。
3、显示:可以以表格形式输出所有通讯录里的记录4、删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容5、查询:可以选择用姓名、电话、地址三种方式查询6、修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、7、通讯地址、电子邮箱即可完成修改8、保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件三、具体设计工作流程图1、添加通讯录2、显示通讯录3、删除通讯记录4、查询通讯记录(查询姓名)5、修改通讯记录四、源程序代码#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct{char score;char name[10];char num[15];char email[20];char age[8];char adds[20];}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│0. 退出程序│\n");printf("\t\t└───────┘\n");printf("\t\t请您选择(0-6):");c=getchar();}while(c<'0'||c>'6');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].age);printf("\t电话号码:");scanf("\t%s",per[n+i].num);printf("\t通讯住址:");scanf("\t%s",per[n+i].adds);printf("\t电子邮箱:");scanf("\t%s",per[n+i].email);gets(x);printf("\n\t输入n或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("| %-5d | %-8s| %-6s| %-13s| %-15s | %-15s |\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email);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].num,per[j+1].num);strcpy(per[j].name,per[j+1].name);strcpy(per[j].age,per[j+1].age);strcpy(per[j].adds,per[j+1].adds);strcpy(per[j].email,per[j+1].email);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("|-------|---------|-------|--------------|-----------------|-----------------|\n");printf("|编号|姓名|年龄|电话号码|通讯地址| 电子邮箱|\n");printf("|-------|---------|-------|--------------|-----------------|-----------------|\n");printf("| %-5d | %-8s| %-6s| %-13s| %-15s | %-15s |\n",per[i].score,per[i].name,per[i].age,per[i].num,per[i].adds,per[i].email);printf("|-------|---------|-------|--------------|-----------------|-----------------|\n"); } ;if(m==2){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("|-------|---------|-------|--------------|-----------------|-----------------|\n");printf("|编号|姓名|年龄|电话号码|通讯地址| 电子邮箱|\n");printf("|-------|---------|-------|--------------|-----------------|-----------------|\n");printf("| %-5d | %-8s| %-6s| %-13s| %-15s | %-15s |\n",per[i].score,per[i].name,per[i].age,per[i].num,per[i].adds,per[i].email);printf("|-------|---------|-------|--------------|-----------------|-----------------|\n");} ;if(m==3){char s[20];int i=0;printf("\t请输入想查询的地址:");scanf("\t%s",s);while(strcmp(per[i].adds,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("|-------|---------|-------|--------------|-----------------|-----------------|\n");printf("|编号|姓名|年龄|电话号码|通讯地址| 电子邮箱|\n");printf("|-------|---------|-------|--------------|-----------------|-----------------|\n");printf("| %-5d | %-8s| %-6s| %-13s| %-15s | %-15s |\n",per[i].score,per[i].name,per[i].age,per[i].num,per[i].adds,per[i].email);printf("|-------|---------|-------|--------------|-----------------|-----------------|\n");} ;}void Change(Person per[],int n){char s[20];int i=0;printf("\t请输入想修改的记录中的名字:");scanf("%s",s);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].age);printf("\t电话号码:");scanf("\t%s",per[i].num);printf("\t通讯住址:");scanf("\t%s",per[i].adds);printf("\t电子邮箱:");scanf("\t%s",per[i].email);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\n",per[i].score,per[i].name,per[i].age,per[i].num,per[ i].adds,per[i].email);i++;}fprintf(fp,"------------------------------------------------------------------------------------------\n");fprintf(fp,"***************************************共有%d条记录****************************************\n",n);fclose(fp);printf("保存成功!\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");Change(pe,n);printf("\t");system("pause");break;case 6:printf("\n\t保存功能\n");WritetoText(pe,n);printf("\t");system("pause");break;case 0:printf("\n\t\t谢谢使用,再见!\n");printf("\n\t\t");system("pause");exit(0);}}}五、运行结果1.显示主菜单界面2.添加界面3.显示界面4.删除界面删除后,通讯录里的显示记录:5.查询界面以姓名查询方式为例:6.修改界面修改后,通讯记录的显示记录:7.保存界面六、心得体会因为C语言是大一开的课程,所以当拿到课程设计的课题时,完全不知道该从何下手。
C语言程序设计任务书
《C语言程序设计》实训任务书一、实训目的1、巩固和强化学生的程序设计基本知识和基本技能,尤其是C语言的基本数据类型、构造类型、函数、文件和图形编程等方面的基本知识和技能。
2、培养和训练学生综合利用所学基本知识和基本技能进行小型应用程序开发的技能。
3、培养学生适应岗位需要,独立分析问题、解决问题的基本能力,以及团队合作精神。
二、实训对象计算机信息管理专业学生。
要求参加实训的学生具有以下几方面的知识与技能:1、Turbo C2.0 集成开发环境的使用。
2 、熟练掌握C语言的基本语法、结构。
3 、对C语言的重要语法成分和常用数据结构如函数、数组、指针、结构体和文件的使用有一定认识。
4 较熟练地使用结构化程序设计的方法和常用的算法。
三、实训内容本程序应按照功能要求分为几个模块:1、程序的主界面部分:参考界面如下:其中每个模块的内容主要是:1. Mathematics common sense (数学常识“即:最基本的C程序设计”),2. Interest mathematics(趣味数学“即;有趣的C程序设计”),3. Basic sketch(基本图形的实现),4. Calendar(万年历“即日期查询的实现”),5. Emulation:The machine( ATM)(模拟ATM(自动柜员机)的实现),6. quit the system(退出系统),通过键盘输入操作选项,调用相应模块进行执行,一般应先导入数据再进行操作。
相关提示:主界面可以直接通过使用输入函数实现;也可以使用一独立函数来实现,使用主菜单以便从子函数返回之后还可以再调用,即:实现程序中的“返回”这一功能。
程序中根据用户输入,转入相应模块,也是通过函数实现。
2、具体模块的功能与实现⑴、最基本C程序设计(Mathematics common sense。
)主要功能包括:1、起泡法排序(The compositor of a data row);2求前N个质数(The prime number of Ex-N);3、九九乘法表(The 9*9 multiplication table);4、数列求和(The sum of a squence (1+1+2+1+2+3...+n));5、求字母系数方程的根(The root of a equation (a*x^2+b*x+c=0));6、退出功能模块一(即:返回主界面return)。
C语言课程设计---学生通讯录管理系统
C语言课程设计---学生通讯录管理系统。
一、系统背景学生通讯录管理系统是一个收集、管理完善学生信息的设计方案,用于关注学生个人详细信息,包括学生姓名,性别,年龄,家庭住址等,旨在为学校、家长提供全面、及时的信息管理服务,使用简单、实用性强,并可以根据实际需求,调整系统功能内容及操作流程的学生通讯录管理系统。
二、系统功能1、信息录入:管理员可以对学生信息进行录入,包括学生的学号、姓名、性别、年龄、家庭住址、父母电话号码等。
3、信息查询:管理员可以根据学生学号、姓名等搜索学生信息,可以快速找到所需的学生节点信息。
4、信息统计:系统可以依据信息的个性化特点,自动生成学生通讯录,便于管理人员查阅。
5、用户管理:管理员可以管理系统用户的用户名、密码、权限等,并可以根据需求增加、修改、删除用户账号信息。
三、系统流程1、系统开发:从需求分析、详细设计、界面设计到程序编码完成,包括系统功能模块开发,业务流程分析,数据库设计,数据交互,压力测试,过程控制,系统安全,系统维护与更新等,以确保系统可靠性。
2、部署与安装:系统部署完毕后,需要完成服务器端基本信息采集,如确定服务器IP地址,运行环境,程序配置,操作系统配置,备份配置,文件安全配置,权限设置等安装步骤,以确保系统安全性。
3、运行维护:根据系统实际应用情况,工程师应对系统及数据库进行定期检查,完善系统运行日志,以及故障分析,体系数据库定期备份,完善系统的安全及性能,以确保系统正常运行。
四、系统实施1、硬件及软件:学生通讯录管理系统的实施需要运行在较新的计算机硬件系统上,需要使用Windows操作系统,是采用C语言作为开发语言,开发工具可以采用Visual Studio C++、Embarcadero C++ 11或以上,数据库系统采用Oracle 9i或者MySQL。
2、系统测试:针对系统实际功能,专业测试工程师应当进行系统测试, 并对测试结果进行分析,能够及时发现和修正系统中可能存在的严重错误和不确定性缺陷, 从而获得系统良好的可靠性。
学生通讯录管理c语言课程设计
学生通讯录管理c语言课程设计一、课程目标知识目标:1. 理解并掌握C语言中结构体的定义和使用方法;2. 学会使用数组存储和管理结构体数据,实现对通讯录信息的增删查改功能;3. 掌握文件操作在C语言中的应用,实现对通讯录数据的持久化存储。
技能目标:1. 能够运用C语言编写简单的通讯录管理系统,实现基本的信息管理功能;2. 培养学生分析问题、设计程序结构、编写代码和调试程序的能力;3. 提高学生运用所学知识解决实际问题的能力,培养编程思维。
情感态度价值观目标:1. 培养学生对C语言编程的兴趣,激发学习积极性;2. 培养学生的团队协作意识,提高沟通与协作能力;3. 培养学生严谨、细致的学习态度,养成良好的编程习惯。
课程性质:本课程为C语言程序设计实践课程,结合实际应用场景,锻炼学生的编程能力和解决问题的能力。
学生特点:学生已具备基本的C语言语法知识,有一定的编程基础,但实践经验不足。
教学要求:结合课本知识,注重实践操作,引导学生通过实际项目开发,掌握C语言编程技巧,提高编程能力。
将课程目标分解为具体的学习成果,以便在教学设计和评估中达到预期效果。
二、教学内容1. 结构体的定义与应用- 结构体概念及其使用场景- 结构体成员的定义与访问- 结构体数组的创建与使用2. 通讯录管理系统功能设计- 功能需求分析- 系统模块划分- 数据存储结构设计3. C语言核心编程技术- 控制语句(循环、分支)- 函数的定义与调用- 指针的使用4. 文件操作与数据存储- 文件打开、关闭、读写操作- 结构体数据与文件的序列化与反序列化- 数据持久化存储的实现5. 系统测试与优化- 功能测试与性能测试- 代码优化与调试技巧- 用户体验改进教学内容安排与进度:第一周:结构体定义与应用,结构体数组的使用第二周:通讯录管理系统功能设计,模块划分第三周:C语言核心编程技术,实现通讯录基本功能第四周:文件操作与数据存储,系统测试与优化教材章节关联:《C语言程序设计》第四章:结构体与共同体《C语言程序设计》第六章:文件《C语言程序设计》附录:常见错误及其调试方法教学内容依据课程目标制定,注重科学性和系统性,结合教材章节,使学生能够循序渐进地掌握通讯录管理系统的设计与实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
青岛理工大学《C语言程序设计》题目指导教师:姓名:学号:班级:专业:地点:时间:一、内容学生通讯管理程序本程序主要实现了学生通讯录的管理,具有1、新建联系人,2、添加联系人,3、修改,4.、删除、5、浏览,6查找等功能。
本程序操作简单,主界面通俗易懂,简洁大方。
是在熟练掌握C语言的基础知识:数据类型(整型.实型.字符型.指针.数组.结构等);运算类型(算术运算.逻辑运算.自增自减运算.赋值运算等);程序结构(顺序结构.判断选择结构.循环结构);大程序的功能分解方法(即函数的使用)等的基础上制作出来的。
.二、上机环境操作系统:windows xp开发工具:VC6.0三、函数调用关系图四、各函数功能说明1、main()主函数2、menu()输出菜单函数3、void enter() 新建联系人4、void add() 添加联系人5、void modify() 修改通讯录6、void deleter() 删除联系人7、void browse() 浏览通讯录8、void search() 查找联系人9、void printf_face() 打印通讯录格式10、void printf_one(int i) 输出一个联系人11、void printf_n(int n) 输出n个联系人12、int load() 载入函数13、int modify_data(int i,int n) 修改联系人的一项基础信息14、void input(int i) 输入联系人基础信息15、void save(int n) 保存输入16、void printf_back() 打印结束语五、算法描述或流程图算法描述:#include<stdio.h>#include <stdlib.h>#include<string.h>#define N 50struct people /*电子通讯录结构定义*/{char name[20]; /*名字*/char class[50]; /*所在班级*/char num[15]; /*电话号码*/char mail[20]; /*电子邮件*/}peop[N];void printf_face() /*输出函数*/{ printf("\n\t姓名\班级\t\t电话号码\t邮箱\n"); }void printf_one(int i) /*输出第i个数据函数*/ {printf("\t%s\t%s\t%s\t%s\n",peop[i].name,peop[i].class,peop[i].num,peop[i].mail);}void printf_n(int n) /*打印n个数据函数*/ {int j;for(j=0;j<n;j++){if((j!=0)&&(j%10==0)){printf("\n\n按任意键继续....:");getchar();puts("\n\n");}printf_one(j);}getchar();}int load() /*数据载入函数*/{ FILE *fp;int i;if((fp=fopen("file","rb"))==NULL) /*判断是否能够打开文件*/ { printf("\n打开文件失败\n");exit(0); /*退出*/}for(i=0;!feof(fp);i++)fread(&peop[i],sizeof(struct people),1,fp); /*从peop[i]中读取数据*/ fclose(fp);return(i-1); /*返回已存在联系人个数*/ }int modify_data(int i,int n) /*modify函数声明*/{ int c,w1;void input(int i); /*input函数声明*/void menu(); /*menu函数声明*/do{ puts("\n修改选项=>\n\n (1).姓名(2).班级(3).电话号码(4).邮箱(5).所有数据(6).取消并返回");printf("请选择?: [ ]\b\b");scanf("%d",&c);if(c>6||c<1) {puts("\n选择错误请重新输入!"); getchar();}}while(c>6||c<1);do{ switch(c){ case 1: printf("姓名:"); scanf("%s",peop[i].name); break;case 2: printf("班级:"); scanf("%s",peop[i].class); break;case 3: printf("电话号码:"); scanf("%s",peop[i].num); break;case 4: printf("e-mail:"); scanf("%s",peop[i].mail); break;case 5: input(i); break;case 6: menu();}puts("\n修改后:\n");printf_face(); printf_one(i);printf("\n确定?\n\n\t1).是2).否,重新修改3).返回不保存[ ]\b\b");scanf("%d",&w1);}while(w1==2);return(w1);}void input(int i){ printf_face(); printf("\t");scanf("%s\t%s\t%s\t%s",peop[i].name,peop[i].class,peop[i].num,peop[i].mail); }void save(int n) /*save函数声明*/{ FILE *fp; int i;if((fp=fopen("file","wb"))==NULL) /*判断file文件是否能打开*/ { printf("\n不能打开文件\n");exit(0);}for(i=0;i<n;i++)if(peop[i].name[0]!='\0')if(fwrite(&peop[i],sizeof(struct people),1,fp)!=1) /*判断文件写入是否正确*/printf("文件写入失败\n");fclose(fp);}void printf_back(){int w; void browse(); void menu();printf("\n\n\t^_^.恭喜,操作成功. ^_^\n\n");printf("下面想要做什么?\n\n\t(1).浏览所有\t(2).返回: [ ]\b\b");scanf("%d",&w);if(w==1) browse();else menu();}void main()void menu();menu();}void menu(){int n, w1;void enter(); /*enter函数声明*/void add(); /*add函数声明*/void modify(); /*modify函数声明*/ void deleter(); /*deleter函数声明*/void browse(); /*browse函数声明*/ void search(); /*search函数声明*/do{puts("\t\t************************菜单**********************");puts("\t\t*******************1.新建联系人*******************");puts("\t\t*******************2.添加联系人*******************");puts("\t\t*******************3.修改*******************");puts("\t\t*******************4.删除*******************");puts("\t\t*******************5.浏览*******************");puts("\t\t*******************6.查找*******************");puts("\t\t*******************7.退出*******************");puts("\n\n\t\t***********************通讯录*********************");printf("请选择服务种类(1-7) : [ ]\b\b");scanf("%d",&n); /*输入服务种类*/if(n<1||n>7) /*判断输入的n是否合法*/ {w1=1;getchar();}elsew1=0;}while(w1==1);switch(n){case 1: enter(); break; /*调用enter函数*/case 2: add(); break; /*调用add函数*/case 3: modify(); break; /*调用modify函数*/case 4: deleter(); break; /*调用deleter函数*/case 5: browse(); break; /*调用browse函数*/case 6: search(); break; /*调用search函数*/case 7: exit(0); /*结束*/}void enter() /*enter函数*/{int i,n;printf("要新建的联系人个数(0-%d)?:",N-1);scanf("%d",&n);printf("请输入数据:\n");for(i=0;i<n;i++){printf("\n输入第%d个记录.\n",i+1);input(i);}if(i!=0)save(n); /*调用save函数*/ printf_back(); /*调用printf_back()函数*/ }void add() /*add函数*/{int i,n,k,t;n=load(); /*调用load函数*/ printf("要添加的联系人个数(0-%d)?:",N-n-1);scanf("%d",&t);k=n+t;for(i=n;i<k;i++){printf("\n输入第%d个记录.\n",i-n+1); input(i);}save(k); /*调用save函数*/ printf_back(); /*调用printf_back()函数*/ }void modify() /*modify函数*/{struct people s; /*结构体声明*/int i,n,k,w0=1,w1,w2=0;n=load(); /*调用load函数*/do{k=-1;printf_face(); /*调用printf_face函数*/printf_n(n);do{ printf("\n\n请输入您要修改的姓名!\n姓名:");scanf("%s",);for(i=0;i<n;i++)if(strcmp(,peop[i].name)==0) {k=i; s=peop[i];} if(k==-1) printf("\n\n没有记录请重新输入!");}while(k==-1);printf_face(); /*调用printf_face()函数*/printf_one(k); /*调用printf_one(k)函数*/w1=modify_data(k,n); /*调用modify_data(k,n)函数*/ if(w1==1) {printf("\n\t^_^.恭喜,操作成功!.^_^\n\n是否继续?\n\n\t(1).是(2).保存返回\t[ ]\b\b");scanf("%d",&w0); w2=1;}else{w0=0; if(w2==0) peop[k]=s;}if((w0!=1)&&(w2==1)) save(n);}while(w0==1); menu();}void browse() /*browse函数*/{ int n;n=load();printf_face();printf_n(n);printf("\t共有%d 记录.\n",n);printf("\n按任意键返回");getchar();menu(); /*调用menu函数*/}void search() /*search函数*/{ int w0,k,i,n,w1,w2; struct people s; n=load();do{printf("请选择查找类别: 1).姓名2).电话号码[ ]\b\b");scanf("%d",&w1); if(w1<1||w1>2) {printf("输入错误!请重新输入!\n"); w2=1;}}while(w2==1);if(w1==1){do{ k=-1;do{ printf("\n\n请输入要要查找的联系人的姓名!\n姓名:");scanf("%s",);for(i=0;i<n;i++)if(strcmp(,peop[i].name)==0) /*判断所输入姓名是否有记录*/ {k=i; s=peop[i];}if(k==-1) printf("\n\n没有记录请重新输入!");}while(k==-1);printf_face();printf_one(k);printf("\n下面想要做什么?\n\t1).继续2).返回菜单[ ]\b\b");scanf("%d",&w0);}while(w0==1);menu();}else{ do{ k=-1;do{ printf("\n\n请输入要查询的号码!\n号码:");scanf("%s",s.num);for(i=0;i<n;i++)if(strcmp(s.num,peop[i].num)==0) {k=i; s=peop[i];}if(k==-1) printf("\n\n没有记录请重新输入!");}while(k==-1);printf_face();printf_one(k);printf("\n下面想要做什么?\n\t(1).继续(2).返回菜单[ ]\b\b");scanf("%d",&w0);}while(w0==1);menu();}}void deleter() /*deleter函数*/{struct people s; int i,n,k,w0,w1;n=load();do{ k=-1;printf_face();printf_n(n);do{ printf("\n\n请输入要删除的联系人姓名!\n姓名:");scanf("%s",);for(i=0;i<n;i++)if(strcmp(,peop[i].name)==0) {k=i; s=peop[i];}if(k==-1) printf("\n\n没有记录请重新输入!");}while(k==-1);printf_face(); printf_one(k);printf("\n确定?\n\t1).是2).返回[ ]\b\b");scanf("%d",&w0);if(w0==1){peop[k].name[0]='\0'; save(n);}else break;printf("\n\t^_^.恭喜,操作成功!.^_^\n");printf("下面想要做什么?\n\t(1).继续(2).返回[ ]\b\b"); scanf("%d",&w1);}while(w1==1);menu();}五、程序运行效果图1、运行程序2、新建联系人3、添加联系人4、修改5、删除6、浏览7、查找8、退出七、体会通过为期一周的课程设计,我们对《C语言》这门课程有了更深一步的了解。