c语言课程设计--同学录系统

合集下载

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++课程设计_同学录设计报告

面向对象程序设计课程设计报告题目同学录管理系统班级计算101姓名杨敬周学号青岛科技大学信息科学技术学院计算机软件教研室同学录管理系统详细设计说明书1.项目设计背景:2.项目设计目的:通过设计一个《同学录管理系统》,进一步熟悉C++中类的概念、基本知识和技能,类的封装、继承的实现方式。

掌握面向对象程序设计的基本思路和方法,并利用所学的基本知识和技能解决简单的面向对象的程序设计问题。

了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用:逐步熟悉程序设计的方法,并养成良好的编程习惯。

3.项目需求分析以本班的同学的具体数据为背景,设计一个本班同学同学录,要求如下:(1) 录入信息,必须包括:姓名,性别,电话,家庭地址,邮编,E-mail 等基本信息;(2)修改信息,包括插入一条或多条信息,修改或者删除某人的信息;(3)查询信息,可以按姓名,家庭住址,性别等多种方式查询; (4)显示所有信息 ;4. 概要设计同学录管理系统数据结构及各模块分析:1.设计类,对象及基本数据类型:创建一个Classmates 类,它有五个私有数据成员:添加同学删除信息显示所有同学修改信息 查询同学关闭通讯录string name; 姓名string address; 地址string number; 电话号码string post; 邮编string email E-mailstring qq; QQ号码包含七个公有成员函数:功能如下:char diaplay(); 首页void add_person(); 添加同学void del_person(); 删除同学void show_all(); 显示所有同学void alter(); 修改信息void inquiry(); 查询同学void save_new(); 保存新增加的同学在主函数main()之中,.Classmates obj; 创建名为obj的对象结构体:struct student{Classmates object; object对象作为结构体student的一个成员student *prior; 定义一个指向前驱的结构体指针student *next; 定义一个指向后继的结构体指针};该结构体是在alter()修改函数中用来处理相关信息的修改.字符串变量: str,record;字符变量: choose;布尔型变量: flag;数据保存方式以及格式:该同学录管理系统将把输入的人员信息保存为pClassmates.txt 文本文件,在文件读取时系统将会把该文件中相关信息读出,并在屏幕上显示出相关信息.2.实现各模块功能的相应程序:1.界面:display(){system("cls");cout<<endl;cout<<"\t\t------------------------------….. ……fflush(stdin);return choose;}添加同学:add_person(){cout<<endl<<"根据下面……. …….save_new(){ofstream outData("pClassmates.txt", ios::app); if(!outData)……outData.close();}cout<<endl<<"新同学信息已经保存好!!!"<<endl<<endl; system("pause");}删除同学信息del_person(){ofstream outData("temp.txt", ios::out);……cout<<endl<<"这个人的信息已经从你的同学录中删除!!!"<<endl<<endl;}system("pause");}显示所有同学信息:show_all(){ifstream inData("pClassmates.txt",ios::in);……cout<<"所有同学信息已经全部显示出来!!!"<<endl;}system("pause");}修改同学信息alter(){ifstream inData("pClassmates.txt", ios::in);……cout<<endl<<"信息已经修改完成!!!"<<endl<<endl;system("pause");}}查询同学信息select(){ifstream inData("pClassmates.txt",ios::in);……}system("pause");}5.详细设计详细功能如下:A,添加:系统将提示用户输入新添加人员信息,输入到文件中,人员信息数据包括姓名,电话号码,QQ号,邮箱,邮编,地址.B,删除:首先由用户输入要删除的人员的姓名或者电话号码,然后调用删除函数,删除该人员的所有相关资料.C,显示所有人员信息:该功能将显示已经保存的所有人员的姓名,电话,QQ号,邮编及地址.D,修改:首先由用户输入要修改的人员姓名或者电话号码,然后系统用修改函数查找,显示该名同学的资料,然后系统提示用户输入需要修改的人员的相关信息.并用双向链表来实现修改功能E,查询:可由用户输入要查找的人员姓名或电话号码,然后系统用查找函数查找,接着系统使用相关文件命令输出所查找的人员的全部信息. F,退出系统关闭同学录管理系统.菜单用于选择各项功能:其中包括:.a:添加新同学;.b:删除同学;.c:显示所有人员信息;.d:修改人员信息;.e: 查询同学;.f:关闭同学录.采用面向对象的程序设计方法,a,b,c,d,e,这五项菜单都调用一个函数来实void Classmates::alter(){ifstream inData("pClassmates.txt", ios::in);//打开文件pClassmates.txt,进行读操作if(!inData)//判断文件打开是否成功{cout<<endl<<"对不起不能打开文件!!!"<<endl<<endl;//如果打开失败,输出“对不起不能打开文件!!!”system("pause");//屏幕暂停return;}string sign;//定义字符串变量signcout<<endl<<"请输入你想要修改的同学的姓名或电话号码:";cin>>sign;//输入变量signfflush(stdin);//清空缓冲区record *H=new record;//新建结构体指针变量H,并为其分配空间record *p=H;//使p指针指向指针Hrecord *q=H;//使q指针也指向指针Hbool flag=true;//定义布尔型变量flag.while(inData>>p->>>p->object.number>>p->object.qq >>p->object.post>>p->object.address)//读取文件中一个人的信息{p->next=new record; //建立双向链表p=p->next;p->prior=q;q->next=p;q=p;}p->next=NULL;//使p的next成员指向NULL.inData.close();//关闭pClassmates.txt文件p=H;//使指针变量P指向结构指针H的头节点while(p)//当p不为空时{if((p->==sign)||(p->object.number==sign))//判断输入是否为空.{if(flag){cout<<endl<<"你想修改你同学的信息如下:"<<endl<<endl;cout<<setiosflags(ios::left)<<setw(17)<<p-><<""<<setw(16)<<p->object.number<<" "<<setw(18)<<p->object.qq <<" "<<setw(14)<<p->object.post<<""<<setw(20)<<p->object.address<<endl;//输出要修改的人的信息flag=false;}cout<<endl<<"请根据下面提示修改信息 : "<<endl;cout<<"姓名 :" ;cin>>p->;fflush(stdin);cout<<"电话号:";cin>>p->object.number;fflush(stdin);cout<<"QQ :";cin>>p->object.qq;fflush(stdin);cout<<"邮编 :";cin>>p->object.post;fflush(stdin);cout<<"地址 :";cin>>p->object.address;fflush(stdin);break;//根据提示进行修改}p=p->next;//使结构体指针p指向该指针的末尾 }if(flag){cout<<endl<<"你的同学录中没有你找的联人!!!";cout<<endl<<endl;system("pause");return;}else{ofstream out("pClassmates.txt",ios::out);//打开文件pClassmates.txt,进行写操作if (!out) //判断文件打开是否成功打开{cout <<endl <<"对不起!!!不能打开文件!!!!" <<endl; system("pause");return;}p=H; //使结构体指针p指向被修改的人的记录的首地址. while(p)//如果p不为空,则执行以下语句{out<<setiosflags(ios::left)<<setw(17)<<p-> <<" "<<setw(16)<<p->object.number<<" "<<setw(18)<<p->object.qq<<" "<<setw(14)<<p->object.post<<" "<<setw(20)<<p->object.address<<endl;将修改后的信息保存到原来位置p=p->next;//使用p指针指向其本身的末尾}out.close();//关闭pClassmates.txt文件cout<<endl<<"信息已经修改完成!!!"<<endl<<endl;system("pause");//屏幕暂停}}6.设计总结参考文献:《C++ 程序开发深入浅出》参考网站:Google , 百度,csdn 等等在开发当中,遇到问题是正常的,关键是怎样解决问题。

C语言程序设计学生通讯录管理系统

C语言程序设计学生通讯录管理系统

C语言程序设计学生通讯录管理系统文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256)#define null 0struct record{char name[20];char phone[20];char adress[40];char postcode[10];char e_mail[30];}student[500];struct LinkList{struct record US;struct LinkList *next;}a;struct LinkList *head=null; int num=0;FILE *fp;int menu_select();int adduser();int list();int search();int display();int add();int listbyname();int dele();int save();int exit();void main(){system("cls");for(;;){switch(menu_select()) {case 0:adduser();break; case 1:list();break; case 2:search();break; case 3:add();break; case 4:dele();break; case 5:save();break; case 6:exit(0);}}}menu_select(){char s[80];int a;printf("*_* press any key enter menu! *_* \n");getch();system("cls");printf("\t\t********************MENU*********************\n\n"); printf("\t\t 0. 输入记录\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. Quit\n");printf("\t\t***********************************************\n"); do{printf("\n Enter you choice(0~11):");scanf("%s",s);a=atoi(s);}while (a<0||a>11);return a;}adduser()printf("\n\t\t**************** 请输入用户信息 ****************\n"); printf("\n\t\t输入姓名:");scanf("%s",&student[num].name);printf("\n\t\t输入电话号码:");scanf("%s",&student[num].phone);printf("\n\t\t输入地址:");scanf("%s",&student[num].adress);printf("\n\t\t输入邮编:");scanf("%s",&student[num].postcode);printf("\n\t\t输入e-mail:");scanf("%s",&student[num].e_mail);num++;printf("\n\t\t是否继续添加?(Y/N):");if (getch()=='y')adduser();return(0);}list(){int i;system("cls");if(num!=0)printf("\n\t\t*************** 以下为通讯录所有信息************"); for (i=0;i<num;i++){printf("\n\t\t姓名: %s",student[i].name);printf("\n\t\t电话: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].adress);printf("\n\t\t邮编: %s",student[i].postcode);printf("\n\t\te-mail:%s",student[i].e_mail);printf("\t\t");if (i+1<num){printf("\n\t\t__________________________");system("pause");}}printf("\n\t\t************************************************"); }elseprintf("\n\t\t通讯录中无任何纪录");printf("\n\t\t按任意键返回主菜单:");getch();return(0);search(){int mark=0;int i;int a=0;printf("\n\t\t***************** 按姓名查找 *******************"); char name[20];printf("\n\t\t请输入姓名:");scanf("%s",name);for(i=a;i<num;i++){if (strcmp(student[i].name,name)==0){printf("\n\t\t************* 以下是您查找的用户信息 ***********"); printf("\n\t\t姓名: %s",student[i].name);printf("\n\t\t电话: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].adress);printf("\n\t\te-mail:%s",student[i].e_mail);printf("\n\t\t************************************************"); mark++;if ((i+1)<num){printf("\n\t\t是否继续查找相同名字的用户信息:(y/n)"); if (getch()=='y'){a=i;continue;}elsereturn(0);}else{printf("\n\t\t按任意键返回主菜单");getch();return(0);}}}if(mark!=0){printf("\n\t\t没有相同姓名的用户纪录");printf("\n\t\t按任意键返回主菜单");getch();return(0);}else{printf("\n\t\t没有相同姓名的用户纪录");printf("\n\t\t按任意键返回主菜单");getch();return(0);}}add(){int i;if ((fp=fopen("","wb"))==NULL){printf("\n\t\t文件打开失败");}for (i=0;i<num;i++){if (fwrite(&student[i],sizeof(struct record),1,fp)!=1){printf("\n\t\t写入文件错误!\n");}printf("\n\t\t**************** 请输入用户信息 ****************\n");printf("\n\t\t输入姓名:");scanf("%s",&student[num].name);printf("\n\t\t输入电话号码:");scanf("%s",&student[num].phone);printf("\n\t\t输入地址:");scanf("%s",&student[num].adress);printf("\n\t\t输入邮编:");scanf("%s",&student[num].postcode); printf("\n\t\t输入e-mail:");scanf("%s",&student[num].e_mail);num++;printf("\n\t\t是否继续添加?(Y/N):");if (getch()=='y')adduser();return(0);}fclose(fp);printf("\n\t\t通讯录文件已保存");printf("\n\t\t按任意键退出程序\n\t\t"); exit(0);return(0);}void deletebyphone(){int i,j;int deletemark=0;char phone[20];printf("\n\t\t请输入要删除用户电话号码:"); scanf("%s",phone);if(num==0){printf("\n\t\t对不起,文件中无任何纪录"); printf("\n\t\t按任意键返回主菜单");getch();return;}for (i=0;i<num;i++){if (strcmp(student[i].phone,phone)==NULL){printf("\n\t\t以下是您要删除的用户纪录:"); printf("\n\t\t姓名: %s",student[i].name); printf("\n\t\t电话: %s",student[i].phone); printf("\n\t\t地址: %s",student[i].adress); printf("\n\t\te-mail:%s",student[i].e_mail); printf("\n\t\t是否删除?(y/n)");if (getch()=='y'){for (j=i;j<num-1;j++)student[j]=student[j+1];num--;deletemark++;printf("\n\t\t删除成功");printf("\n\t\t是否继续删除?(y/n)"); if (getch()=='y')deletebyphone();return;}elsereturn;}continue;}if (deletemark==0){printf("\n\t\t没有该用户的纪录"); printf("\n\t\t是否继续删除?(y/n)"); if (getch()=='y')deletebyphone();return;}}void deletebyname(){int a=0;int findmark=0;int j;int deletemark=0;int i;char name[20];printf("\n\t\t请输入要删除用户姓名:");scanf("%s",name);for (i=a;i<num;i++){if (strcmp(student[i].name,name)==NULL){printf("\n\t\t以下是您要删除的用户纪录:"); findmark++;printf("\n\t\t________________________________"); printf("\n\t\t姓名: %s",student[i].name);printf("\n\t\t电话: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].adress);printf("\n\t\te-mail:%s",student[i].e_mail);printf("\n\t\t________________________________"); printf("\n\t\t是否删除?(y/n)");if (getch()=='y'){for (j=i;j<num-1;j++)student[j]=student[j+1];num--;deletemark++;printf("\n\t\t删除成功");if((i+1)<num){printf("\n\t\t是否继续删除相同姓名的用户信息?(y/n)"); if (getch()=='y'){a=i;continue;}}printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyname();return;}if((i+1)<num){printf("\n\t\t是否继续删除相同姓名的用户信息?(y/n)"); if (getch()=='y'){a=i;continue;}}}elsecontinue;}if ((deletemark==0)&&(findmark==0)){printf("\n\t\t没有该用户的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyphone();return;return;}else if (findmark!=0){printf("\n\t\t没有重名信息");printf("\n\t\t没有该用户的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyphone();return;return;}}dele(){char choic;printf("\n\t\t1-按电话号码删除 2-按姓名删除"); printf("\n\t\t请选择:");choic=getch();switch (choic){case '1':deletebyphone();break;case '2':deletebyname();break;}return(0);}save(){int j;FILE*fp;fp=fopen("","w");if (fp==NULL)printf("can't open the file.");if(num!=0){for(j=0;j<num;j++){fwrite(student,sizeof(student),1,fp); }}printf("保存成功!");fclose(fp);return(0);}。

学生通讯录管理系统c语言编程

学生通讯录管理系统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语言课程设计学生通讯录管理系统

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(。

同学录管理系统 课程设计报告

同学录管理系统 课程设计报告

计算机系《软件工程》课程设计报告题目:同学录管理系统班级:学号:姓名:指导老师:年月日【实验一列车时刻查询系统注释】#include<iostream> //标准库函数#include<fstream>// 是包含输入输出流的头文件#include<string>//是对字符串操作的头文件#include<iomanip>// 是包含I/O流控制头文件#include<time.h> //是出时间和日期处理函数的头文件#include<windows.h> //它包含了其他Windows头文件using namespace std;//该指令涵盖了C++标准程序库的任何标识符class train_infor//定义了一个train类{private: //以下定义的为私有的函数static int train_No; // 静态数据成员char start[20]; //定义了起始站这个变量char end[20]; //定义了终点站这个变量int train_order; //定义车次这个函数int Hour_start,Minute_start; //开车的时间float GoHour; //行车时间public: // 以下为共有的函数train_infor();~train_infor();train_infor *next;void input(); // 输入函数void input(ifstream & is); // 将输入的信息放入到文件中void output(); // 输出函数void output(ofstream & os); // 将输出的信息放入到文件中void GetTime_start(); // 行车起始站函数bool GetTime(); // 判断当前车次状况函数,值为true时输出1,值为false 时输出0.int Get_train_order() { return train_order; } // 返回班次号string Get_end()const; // 返回行车的终点站的字符串};int train_infor::train_No=1;//车辆数变量train_infor::train_infor()//车辆数增加{train_No++; //车辆数自加1}train_infor::~train_infor() // 车辆数减少{train_No--; // 车辆数自减1}void train_infor::input() // 车次信息输入函数{cout<<"\t\t\t按提示输入:"<<endl;cout<<"请输入班次: ";//在界面上提示“请输入班次”while(1){cin>>train_order;//调用班次函数if (cin.fail()) // 判断输入的数据类型是否有错{cout << "\n班次输入错误,请重新输入:";//在界面上提示“班次输入错误,请重新输入”cin.clear(); // 消除输入流缓冲区cin.get(); // 输入字符串,并不从输入流中去掉终结符号}elsebreak;}GetTime_start();//行车时间函数cout<<"请输入行车时间:";while(1){cin>>GoHour;if (cin.fail()) // 如果输入失败时{cout << "\n行车时间输入错误,请重新输入:";cin.clear();// 消除输入流缓冲区cin.get(); // 输入字符串,并不从输入流中去掉终结符号}elsebreak;}cout<<"请输入起始站与终点站(始发站/终点站):";cin>>start;cin>>end;}void train_infor::input(ifstream & is) // 创建一个输入的文件类型的引用{is>>train_order>>Hour_start>>Minute_start>>start>>end>>GoHour;//将车次、发车时间写入到文件中这里的>>操作符是重载过的,是写入的功能。

同学录c课程设计

同学录c课程设计

同学录c课程设计一、课程目标知识目标:1. 让学生掌握同学录C学科的基本概念,如数据类型、变量、运算符等。

2. 使学生了解并掌握同学录C学科的基本语法结构,如顺序、选择和循环结构。

3. 帮助学生理解同学录C学科中的函数定义与调用,培养模块化编程思维。

技能目标:1. 培养学生运用同学录C学科知识解决实际问题的能力,如编写简单的计算器、小游戏等程序。

2. 提高学生的编程实践能力,能独立完成同学录C学科的编程任务,并具备调试和修改程序的能力。

3. 培养学生的团队协作能力,学会在项目中进行有效沟通与分工。

情感态度价值观目标:1. 培养学生对同学录C学科的兴趣,激发学习热情,树立自信心。

2. 培养学生具备良好的编程习惯,遵循编程规范,注重代码质量。

3. 培养学生的创新意识,敢于尝试新方法,勇于解决编程过程中遇到的问题。

4. 引导学生认识到编程对生活、学习的重要性,培养用科技改变生活的价值观。

本课程针对学生年级特点,注重理论与实践相结合,以学生为主体,教师为主导,培养学生的编程兴趣和动手能力。

课程目标具体、可衡量,为后续教学设计和评估提供明确方向。

二、教学内容1. 数据类型与变量:介绍同学录C学科中的基本数据类型,如整型、浮点型、字符型等;讲解变量的定义、赋值和作用域。

2. 运算符与表达式:讲解各类运算符的使用,如算术运算符、关系运算符、逻辑运算符等;介绍表达式的构成和计算方法。

3. 顺序结构程序设计:讲解顺序结构的概念,编写简单的顺序结构程序,如输入输出、变量计算等。

4. 选择结构程序设计:介绍选择结构的概念,如if语句、switch语句等;通过实例讲解选择结构的使用方法。

5. 循环结构程序设计:讲解循环结构的概念,如for循环、while循环等;通过实例演示循环结构在程序中的应用。

6. 函数定义与调用:介绍函数的定义方法,如返回值、参数等;讲解函数的调用方法,以及模块化编程的思维方式。

7. 数组与字符串:介绍数组的概念,如一维数组、二维数组等;讲解字符串的基本操作,如拼接、截取、查找等。

计算机C语言课程设计_学生通信录管理系统_实验报告

计算机C语言课程设计_学生通信录管理系统_实验报告

***大学*****学院综合设计报告设计名称:程序设计综合设计设计题目:学生通讯录管理系统的设计学生学号:******专业班级:****学生姓名:*****学生成绩:指导教师(职称):*****课题工作时间:11年12月26日至12年1月6日说明:1、报告中的第一、二、三项由指导教师在综合设计开始前填写并发给每个学生;四、五两项(中英文摘要)由学生在完成综合设计后填写。

2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。

3、指导教师评语一栏由指导教师就学生在整个设计期间的平时表现、设计完成情况、报告的质量及答辩情况,给出客观、全面的评价。

4、所有学生必须参加综合设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。

答辩小组成员应由2人及以上教师组成。

5、报告正文字数一般应不少于5000字,也可由指导教师根据本门综合设计的情况另行规定。

6、平时表现成绩低于6分的学生,其综合设计成绩按不及格处理。

7、此表格式为武汉工程大学计算机科学与工程学院提供的基本格式(适用于学院各类综合设计),各教研室可根据本门综合设计的特点及内容做适当的调整,并上报学院批准。

成绩评定表学生姓名:*** 学号:*** 班级:***答辩记录表指导教师评语五、综合设计(课程设计)Abstract(英文):In order to improve the students in the program of study already, the consolidation of the design, especially for school students arrange this course design. Course design of the subject is to make the students' independent design and a student communication record management system. The entire program design mainly through the c language to achieve. The purpose of this course is able to use the relevant knowledge and skills, and combining the practice teaching links, engineering and technical personnel with the necessary basic training program design, for the students to learn about the professional course and career in program design work to lay the foundation.The student directory management system "is to design a practical miniature address book program. Each record (friends information) including the name, phone number, QQ number, E-mail address, and other information. For all the operating function design a menu, the application after the operation, show the menu first, users through the menu option to choose the project operation. Program features include: input, search, insert, sorting, delete, show friends information and so on,, can input saved to the system of documents, also can be in to run the program of the time from the system files before the students read kept information, again through the program to complete the corresponding operation, realize communication record management intelligent high-speeding.I designed the program from the general idea for, first the program will run there is a hint of this program does a introduction, then, the user through tip can enter a design good the main menu. Main menu has 10 options available, the user through his work will choose corresponding options, then program executes operation.The entire program in users will have options available, the user need only through the procedures of the tip, it can complete the operation step by step, no matter you are the common user or program design staff, you can quickly through the program of the complete student communication record of the management, and give each user a very good experience.Keywords:C programming language;Communication record managementmain menu;shortcut.*/**大学计算机学院综合设计报告目录摘要 (II)Abstract (II)第一章课题背景(或2.1 XXXX (x)2.2 XXXX (x)2.3 XXXX (x)第三章详细设计 (x)3.1 XXXX (x)3.1 XXXX (x)第四章设计结果及分析 (x)4.1 XXXX (x)绪论、概述) (1)1.1 XXXX (1)1.2 XXXX (x)第二章设计简介及设计方案论述 (x)4.2 XXXX (x)4.3 XXXX (x)总结 (x)致谢 (x)参考文献 (x)附录主要程序代码 (x)摘要本着为了提高学生对已学习过的程序设计的巩固,学校特意为学生安排这次课程设计。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录1.摘要 (2)2.功能与数据分析 (3)2.1功能分析 (3)2.2数据分析 (3)3.总体设计 (4)3.1设计框图 (4)4.模块介绍 (5)4.1添加功能 (5)4.2显示功能 (6)5.编写与测试 (7)5.1程序问题及解法 (7)6.用法说明 (8)6.1程序用法 (8)7.总结 (12)8.附录 (13)摘要车站的票务管理系统的主要的目的在于便于掌握当天的车次运行情况,对运行信息进行添加和删除,也有利于旅客按各种不同的方式查询自己所需要的车次情况。

摆脱了繁琐的劳动,提高了工作的效率,大大提高了车站资源的利用率,便于旅客及时准确地获得需要的信息。

主要通过数组存放数据,应用循环和选择语句对数据实现录入和删除功能。

关键词:车次信息,结构体数组,选择结构,循环结构2 功能分析2.1功能分析这是一个同学录系统,便于同学信息的查询、修改、删除、添加。

数据以文件的形式保存在文件中。

显示时,数据从文件中输入到显示器。

接受数据的则应该是一个结构体数组,再显示;或一个结构体变量,读取一次数据,显示在显示器上,然后再接受数据,不停的循环,直到文件中的数据被读完为止。

查询时,只需要选定所要查询同学的编号,就会显示出改同学的全部信息。

删除功能的实现,需要首先打开文件,把文件里面的信息全部输入到结构体数组中。

然后根据程序选中的同学信息覆盖。

修改时,只需要选定该同学的编号,对他(她)的内容逐一进行修改。

添加,输入编号及其学生信息即可。

2.2数据分析由于显示的内容包括姓名、性别、生日、同学类型、籍贯、以及工作单位,所以必须一个结构体的数组来实现。

写入文件还需要对文件进行操作。

需要定义一个指向文件的指针。

文件名为“file1.txt”,生成在默认的TC的安装目录里边。

查询需要输入想要的一些内容,这些数据的类型和结构体的元素的类型一致,所以需要定义一个整型的number,一个整型的name,一个字符串sex,一个字符串birth,一个字符串type,一个字符串jiguan,一个字符串job。

此外,循环所需要的整型的数和一个计数器。

系统在接受你输入的字符,以判断程序的走向,还需要一个字符型的变量来接受输入的提示。

3 总体设计3.1 设计框图本程序涉及到几个方面功能:添加,删除,显示,查询,修改和退出。

我的任务主要是几个功能的实现。

所以这里只对各个功能做详细阐述,总体设计只简单描述。

先定义一个结构体的数组和一个结构体变量。

通过循环的方式,向变量赋值,采用追加的方式打开文件,然后在文件中输出,即把信息保存在文件中。

由此可以进行输入或添加的功能。

把信息从文件输入到结构体数组,每输入一遍,结构体数组b[i]中i自加,记数器自加1,可表示一共有几组信息。

然后i从0到计数器最后显示的大小,循环输出结构体数组的值到显示器。

以达到显示的目的。

运行程序,显示器上显示查询,修改,删除、添加和退出几项后,要求输入对应的编号。

输入标号n,进入查询项目,是按姓名查询。

显示的内容包括姓名、性别、生日、同学类型、籍贯、以及工作单位。

输入标号c,进入查询项目,是按类型查询。

显示的内容包括姓名、性别、生日、同学类型、籍贯、以及工作单位输入标号s,进入删除项目。

选中要删除的同学编号,程序会删除该同学的所有信息。

输入标号x,进入修改项目。

输入标号r,进入添加项目输入标号e,退出系统。

所显示的内容的进行图表示:(见图3-1)4 模块介绍我的主要任务是各个功能的实现,这里主要介绍这各个功能模块。

4.1 两个查询功能几个功能都是直接在主函数中进行的,外部主要定义了按几种方式查询的函数和屏幕提示内容显示的一些函数。

下面就几个重要的功能模块做详细介绍:查询:先定义一个变量stu.number,选择查询按扭后,在stu.number不为0的前提下,显示你如果输入大或小写的n,你可以根据姓名查询信息,显示信息后返回开始界面;如果输入大或小写的c,你可以根据类型查询信息查询信息,显示信息后返回开始界面。

输入一个字符赋给字符型变量char,如果为大或小写的Y,以追加的方式打开文件file.txt,用键盘输入的方式分别输入,赋给变量p,写入文件,关闭文件。

仍满足stu.number 不为0,再循环。

查询的流程图如(图4-1):图4-1“4.2 删除与修改功能全部显示:数据在文件中,要把他从里边拿出来,显示在屏幕上。

首先打开文件,在内容不为0结束标志时,把里边的内容输出到结构体数组中,(循环的方式)。

然后再通过循环,显示结构体叔祖的内容到显示器。

删除的流程图如(图4-2):图4-2“删除”流程图修改流程图:5 调试与测试5.1程序的编写和调试我们在进行程序的编写的时候,首先设想好运行是画面信息的显示,设计好这个框架。

然后在这个框架中对应的地方添加函数,最后在主函数中实现文件的调试是在TC中进行。

最常见的错误有:某个字符没有定义,结构不匹配,缺少分号等等。

但是,此次问题比较严重的是在利用链表的时候,其利用的灵活性不是很好。

所一把链表的内容去掉,改为了结构体。

再一个就是对文件的操作不是很顺利,文件的输入和输出一直是困扰此次程序的主要原因。

主要表现在:1、不能生成文件。

该部分的主要的目的是把信息输入到文件中保存起来。

或者一些大小写的不统一。

函数的错误。

基本上属于粗心大意造成的错误。

再一个,程序在计算机房运行,可以生成文件。

但是同样的程序,带回寝室,在自己的机器上运行,则不能显示。

这也是困扰我很长时间的问题。

因为在次之前,我的序程序一直在此机器上调试。

不能生成文件,可能和此原因有关系。

2、查询时显示无限循环的乱码。

现象就不多作解释。

主要原因是,在输入要查询的车次号码、发车时间或其他的信息时,没有写上“&”取地址符。

以至于要查询的信息不能输入到程序。

要使得相同后显示的条件永远不能实现。

3、还存在一个算法上的错误。

修改前是这样的:for(i=0;i<j;i++)if(b[i].number==number)m=i;if(m==1)这是判断文件里面是否只有一项信息的代码。

错在m为1上。

如果只有一行,当i 等于0是成立,为1时结束循环,所以m永远不能为1,那么条件永远成立。

事实上把所有的信息都清空了。

以上是这次程序设计主要的几处问题的展示。

6 用法说明6.1 程序的使用1、在Windows XP VC++6.0环境下运行次程序,显示为:(如图6-1)图6-1主显示其中n按姓名查询,c为按类别查询,s是信息删除,x是修改信息,e是退出程序r是添加功能2、我们首先按n,进入按姓名查询:(如图6-2)输入编号:图6-2管理显示3、按c为按类别查询:与上面类似就不做介绍了。

4、按s进入删除信息系统:输入编号:5、修改同学的信息:输入编号:修改:6、添加同学信息:添加:各种功能正常进行总结课程设计总结通过此次课程设计,我基本上对制作一个相对来说比较大的程序有了一定的认识和了解。

这一周多来的制作,不但对这一学期C语言的知识有了一定的巩固,还增加了我们的动手能力。

就这个体统而言,涉及到结构体,文件和循环的知识,所以尤其对这几个方面有所加深和巩固。

其中又包括结构体的赋值,写到文件中。

从文件中赋值给结构体。

此外,还接触到几个我们平时接触不是很多的函数:头文件:#include<stdio.h>#include<process.h>#include<string.h>#define p "%ld %s %s %s %s %s %s\n"返回值:输出成功时,返回输出的字节数;错误时,返回主函数。

此外还有goto函数,虽然用的很少,但是关键时候还是很好用的。

但是也的确在此次上机对他们有所了解。

这个系统也存在许多不足:1、没有建立文档。

2、由于上面的关系,程序显得繁琐,而且不能打印,和保存。

同时在这里,也希望我自己能够很好的利用眼前假期的时间,好好学习有关C语言变成的知识,为下学期的编程课程打下基础。

也是对以前学习过的知识是一种复习和巩固。

这就是我对这次课程设计的一点总结附录:源程序代码#include<stdio.h>#include<process.h>#include<string.h>#define p "%ld %s %s %s %s %s %s\n"struct student{long num;char name[100];char sex[100];har birth[100];char type[100];char jiguan[100];char job[100];}stu[100]={{1,"小陈","男","1989、3、18","大学同学","汉","学校"},{2,"小李","男","1989、3、28","大学同学","汉","银行"},{3,"小王","女","1990、7、14","大学同学","满","警察局"},{4,"小吴","男","1989、6、22","中学同学","汉","饭店"},{5,"小罗","女","1990、5、18","中学同学","苗","博物馆"},{6,"小文","女","1989、3、25","中学同学","苗","图书馆"},{7,"小肖","男","1989、6、6","小学同学","汉","旅馆"},{8,"小刘","男","1989、4、8 ","小学同学","汉","网吧"},{9,"小魏","女","1990、8、13 ","小学同学","汉","软件公司"}};void introduce(){int a,i,j;printf("您想查询哪个同学的详细信息?请输入姓名编号:");scanf("%d",&a);getchar();printf("\n");for(i=0;stu[i].num!=0;i++)if(stu[i].num==a)break;printf(p,stu[i].num,stu[i].name,stu[i].sex,stu[i].birth,stu[i].type,stu[i].jiguan,stu[ i].job);}void introduces(){char b[10];int i,j;printf("你想查询那类学生的信息?请输入类别:");scanf("%s",&b);getchar();printf("\n");for(i=0;stu[i].num!=0;i++)if (strcmp(stu[i].type,b)==0)printf(p,stu[i].num,stu[i].name,stu[i].sex,stu[i].birth,stu[i].type,stu[i].jiguan,stu[ i].job);}void del(){long d;int i,j;printf("你想删除那个学生的信息?请输入编号:");scanf("%ld",&d);getchar();for(i=0;stu[i].num!=0;i++)if(stu[i].num==d)/*找到了需要删除的学生,即stu[i]*/for(j=i;stu[j].num!=0;j++)stu[j]=stu[j+1];}void xg(){long f;int i;printf("你想修改那个学生的信息?请输入编号:");L: scanf("%ld",&f);getchar();for(i=0;stu[i].num!=0;i++)if(stu[i].num==f){printf("小陈男 1989、3、18 大学同学汉学校\n");printf("请严格按照上面格式输入:");scanf("%s%s%s%s%s%s",stu[i].name,stu[i].sex,stu[i].birth,stu[i].type,stu[i].jiguan,stu [i].job);getchar();break;}if(stu[i].num==0){ printf("无,请重新输入:\n");goto L;}}void rand(){int i;printf("1 小陈男 1989、3、18 大学同学汉学校\n");printf("请严格按照上面格式输入:");for(i=0;stu[i].num!=0;i++)if(stu[i-1].num!=0&&stu[i].num==0)break;scanf("%d%s%s%s%s%s%s",&stu[i].num,stu[i].name,stu[i].sex,stu[i].birth,stu[i].type,stu [i].jiguan,stu[i].job);getchar();}void main(){char k;int i;while(1){printf(" ___________________________________________________ \n");printf("| 欢迎使用同学信息查询系统! |\n");printf("| |\n");printf("| 1.同学信息查询(按姓名查询:n键、按类别查询:c键) |\n");printf("| 2.删改同学信息(删除信息按:s键、修改信息按:x键) |\n");printf("| 3.退出系统……请按 e 键. 4.添加信息请按:r键 |\n");printf(" ___________________________________________________ \n");printf("同学姓名:\n");for(i=0;stu[i].num!=0;i++)printf("%ld %s\t",stu[i].num,stu[i].name);if("(stu[i].num%9==0")printf("\n");printf("\n");printf("请选择服务:");scanf("%c",&k);printf("\n\n");switch(k){case 'n':case 'N':printf("进入同学信息查询...\n\n");introduce();break;case 'c':case 'C':printf("进入同学类别信息查询...\n\n");printf("\n");introduces();break;case 's':case 'S':printf("进入同学信息删除系统...\n\n");printf("\n");del();printf("删除成功!\n");break;case 'x':case 'X':printf("进入同学信息修改系统...\n\n");xg();printf("修改成功!\n");break;case'r':case'R':printf("进入同学信息添加系统...\n\n");rand();break;case 'e':case 'E':exit(0);default:printf("输入信息错误!\n请重新选择服务!\n"); getchar();break;}}}参考书籍:[1]郭立山、吴天等编著,C函数使用手册,冶金工业学院出版社,2003.8[2]谭浩强、张基温、唐永炎编著,C语言程序设计教程,高等教育出版社,2005 [3]李建学等.数据结构课程设计案例精编(用C/C++描述).清华大学出版.2007-2-1 [4]严蔚敏等.数据结构(C语言版).清华大学出版社.2003-1。

相关文档
最新文档