学生通讯录管理系统(C语言课程设计实验报告)1

时间:2024.3.31

C语言课程设计

姓名:刘显安

学号:09041131

班级:090411

专业:计算机科学与技术

学院:信息工程学院

设计题目:学生通讯录管理系统

指导教师:宋文琳

提交时间:20##年9月4日

课程题目:学生通讯录管理系统

要求:学生通讯录信息包括:学号、姓名、班机、联系电话、E-mail、宿舍等

主要功能:

1、  通讯录信息录入功能

2、  通讯录信息删除功能

3、  通讯录信息浏览功能

4、  通讯录信息查询功能

5、  按学号排序功能

一、总体设计

首先,整个系统必须有一个主函数,为了尽量提高程序的易修改性,且不至于相互干扰,将每一个功能分成不同的模块,用不同的函数来实现,例如在我写的这个程序中,一共用了11个函数,分别是:

主菜单函数menu()、关于函数gaunyu()、帮助函数help()、输出单个学生信息函数shuchu()、输入函数shuru()、输出所有学生信息函数findall()、按姓名查找函数findname()、按学号查找函数findnum()、删除函数shanchu()、排序函数paixu()、主函数main(),这样在整个程序的设计过程中也就一目了然,写起来也相对轻松了不少。

这个程序我只是总体上参考了一下网上程序的架构,具体的各个函数是参照课本上《链表》那一章的内容的,比如结构体的建立、查找和排序等功能,这些书上都有类似的,其中排序功能虽没有原版的,但是在第六章中有一个用冒泡法排序的例题,我就是仿照这个模式来对结构体进行排序的,总之整个程序中蕴含了我很多的汗水。

二、具体设计

关于这个程序的具体设计,也不是一两句话就能说完的,所以我也不想再在这里赘述了,因为程序里都可以看的到,几乎每个函数都倾注了我的大量汗水,我在这上面花了不少的时间,不过从中也收获了很多,因为不停地修改不停的调试,总之还是直接看源程序吧,因为也没必要在这里重复地说废话。

三、源代码

以下是整个程序的源代码,其中我的主菜单函数是很美观的,但由于这里字体和板式的限制,不能很好的显现,可以看我下面程序运行的截图就知道了。

——————————————————

#include<stdio.h>

#include<string.h>

#include<malloc.h>

#include<stdlib.h>

#include<conio.h>

#define NULL 0

struct 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("*******                                                              *******");

puts("******                                                    算          ******");

puts("*****     0                   1=录入学生通讯录信息                     *****");

puts("****      9     刘            2=列出所有学生通讯录        机            ****");

puts("***       0                   3=按姓名查询信息                           ***");

puts("**        4     显            4=按学号查询信息            科              **");

puts("*         1                   5=删除学生信息                               *");

puts("**        1     安            6=按学号将通讯录排序        学              **");

puts("***       3                   7=关于                                     ***");

puts("****      1                   8=帮助                      与            ****");

puts("*****                         0=退出                                   *****");

puts("******                                                    技          ******");

puts("*******                                                              *******");

puts("********                                                  术        ********");

puts("****************************************************************************");

}

void guanyu()    /*关于函数*/

{

system("cls");

puts("\n  ************************** ");

puts(" *** 版权所有,翻版必究! ***");

puts("****  copyright◎刘显安! ****");

puts(" ***      2009~2010       ***");

puts("  **************************");

puts("\n返回主菜单请按【9】");

if(getche()=='9') menu();

}

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);

//else

printf("\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("傻冒!没有任何学生信息,还删个屁啊,删删删!");

goto end;

}

puts("请输入你要删除的学生学号:");

scanf("%ld",&num);

s1=stu;

puts("警告:你确定要删除这个学生的信息吗(Y/N)?");

scanf("%s",&s);

if((s=='Y')||(s=='y'))

{

 while((num!=s1->num)&&(s1->next!=NULL))

 {s2=s1;s1=s1->next;}

 if(num==s1->num)

 {  puts("该学生的信息为:");

    puts("*  学号    姓名           班级    电话           电子邮件       宿舍   *");

    shuchu(s1);

     if(s1==stu)

      stu=s1->next;

    else

       s2->next=s1->next;

    puts("注意哟,该学生的信息已经删除了!剩下的学生通讯录信息如下:");

    n=n-1;

 }

}

findall();

return(stu);

end:;

puts("返回主菜单请按【9】");

if(getche()=='9') menu();

}

void paixu(){               /*排序函数*/

struct student *p, *p1,*p2;

int i,j;

int temp;

 char b[20];

 if(stu==NULL)

 {printf("\n学生信息不存在\n");

 goto end;

 }

 for(i=0;i<n-1;i++)

 {p1=stu;

   for(j=0;j<n-1;j++)

   {

        p2=p1->next;

          if(p1->num>p2->num)

           {temp=p1->num;p1->num=p2->num;p2->num=temp;

           strcpy(b,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,b);

           temp=p1->banji;p1->banji=p2->banji;p2->banji=temp;

           strcpy(b,p1->tel);strcpy(p1->tel,p2->tel);strcpy(p2->tel,b);

         strcpy(b,p1->Email);strcpy(p1->Email,p2->Email);strcpy(p2->Email,b);

         temp=p1->sushe;p1->sushe=p2->sushe;p2->sushe=temp;

           }

        p1=p1->next;  

      }

 }

 p=stu;

 puts("已按学生学号顺序排序完毕!重新排序如下:");

 puts("****************************************************************************");

 puts("*  学号    姓名           班级    电话           电子邮件       宿舍   *");

while(p!=NULL)

{

printf("*  %-8ld",p->num);

printf("%-15s",p->name);

printf("%-8d",p->banji);

printf("%-15s",p->tel);

printf("%-15s",p->Email);

printf("%-5d  *\n",p->sushe);

p=p->next;

}

end:;

puts("返回主菜单请按【9】");

 if(getche()=='9')

 menu();

}

void help()      /*帮助函数*/

{

system("cls");

puts("\n1、请按提示操作,第一次进入本系统时请按“1”录入学生信息,");

puts("   否则有可能造成程序运行错误!");

puts("2、添加、修改功能本系统暂不提供,还有待以后完善,谢谢合作!");

puts("3、请注意查看“Num Lock”是否打开,如果没有打开,则按数字\n   键可能导致程序错误!");

puts("4、版权所有,翻版必究!请按“7”键查看关于。");

puts("\n返回主菜单请按【9】");

if(getche()=='9') menu();

}

void main()      /*主函数*/

{

char a;

menu();

puts("\n您为首次使用本系统,强烈建议您按1开始录入学生信息,");

puts("否则有可能导致程序运行错误!您可以按8查看帮助.");

a=getche();

while(a){

 puts("");

  switch(a)

  {case'0':goto end;break;

  case '1':

       puts("\n好了,您可以开始向本系统录入学生通讯录信息了:");

       stu=shuru();

       system("cls");

       menu();

       puts("\n学生信息录入完毕,请输入你的选择(0~6):\n");

       break;

  case '2':findall();puts("\n请输入你的选择(0~6):"); break;

  case '3':findname();puts("\n请输入你的选择(0~6):"); break;

  case '4':findnum();puts("\n请输入你的选择(0~6):"); break;

  case '5':stu=shanchu(stu);puts("\n请输入你的选择(0~6):"); break;

  case '6':paixu();puts("\n请输入你的选择(0~6):"); break;

  case '7':guanyu();puts("\n请输入你的选择(0~6):"); break;

  case '8':help();puts("\n请输入你的选择(0~6):"); break;

  default:puts("输错了!笨蛋!快点按数字1键录入学生信息吧!"); break;

 }

a=getche();

 }

end:;

puts("谢谢您使用本系统,欢迎再次使用!");

}

—————————————————————————

四、调试

主要是通过截图来显示运行过程

以下是程序运行的主界面:

按1后,开始录入信息,程序会提示你输入学生个数(例如本例中输入4个),当输完4个学生的信息时,程序会提示你已输入完毕:

学生信息录入完毕,提示输入(0到6)进行选择:

这时我选择按2输出所有学生信息,按9返回:

按3按姓名查询信息:

按4按学号查询信息:

按5删除学生信息,这是按学号删除学生信息,本例中,删除学号为41212的学生信息:

删除成功后,系统自动将剩下的学生信息列出:

按6按学号从小到大进行排序,可以发现,排序成功:

按8查看帮助函数:

呵呵,这是我设置的关于函数,满足一下敝人的虚荣心嘛^_^,版权所有,翻版必究哦!

最后按0退出系统:

呵呵,怎么样?我写的程序还行吧。

嘿嘿……

三、总结

这个程序我只是总体上参考了一下网上程序的架构,具体的各个函数是参照课本上《链表》那一章的内容的,比如结构体的建立、查找和排序等功能,这些书上都有类似的,其中排序功能虽没有原版的,但是在第六章中有一个用冒泡法排序的例题,我就是仿照这个模式来对结构体进行排序的,总之整个程序中蕴含了我很多的汗水。

更多相关推荐:
c课程设计报告书——通讯录管理系统

C语言课程设计课程设计报告题目学号姓名年级专业指导教师完成日期安徽师范大学物理与电子信息学院CollegeofPhysicsandElectronicInformationAnhuiNormalUniversi...

c++课程设计总结报告 通讯录管理系统

源代码includeltiostreamgtincludeltstringgtincludeltiomanipgtincludeltfstreamgtincludeltconiohgtincludeltcstd...

手机通讯录管理系统课程设计报告模板

山东工商学院信电学院高级语言程序设计课程设计报告高级语言程序设计课程设计报告题目手机通讯录管理系统专业电子信息工程班级电子112学号姓名指导教师日期20xx年7月9日至20xx年7月14日山东工商学院信电学院山...

通讯录管理系统课程设计报告

设计课题题目一课程设计目的与要求1课程设计目的1综合运用之前所学知识选择控制循环控制数组函数指针结构体和文件等来完成一个简单的信息管理程序的设计2充分体现和体会函数在程序设计中的必要性和实用性并反映主函数mai...

C语言课程设计报告—手机通讯录管理系统

目录摘要2第一章绪论311课程设计目的和内容概述312题目手机通讯录管理系统3第二章程序分析421总体设计422详细设计423总流程图4第三章模块介绍和总体实现731构建结构体写入文件732构造函数与模块833...

个人通讯录管理系统课程设计报告示例

重庆科技学院课程设计报告院系电子信息工程学院专业班级学生姓名学号设计地点单位设计题目完成日期20xx年3月5日指导教师评语成绩五级记分制指导教师签字重庆科技学院课程设计报告重庆科技学院课程设计任务书设计题目个人...

c语言个人通信录管理系统课程设计报告

高级语言程序设计报告个人通信录管理系统院系班级成员时间通信与信息工程学院杨文刚1107020xx020xx年7月2日基于链表的个人通信录管理系统课程设计任务书目录1设计目的12总体设计23详细设计34程序调试与...

C语言课程设计—通讯录管理系统的设计

武汉理工大学华夏学院课程设计课程名称C语言课程设计题目通讯录管程序设计专业班级软件1121姓名成绩指导教师年月日至年月日课程设计任务书学生姓名专业班级指导教师工作单位设计题目通讯录管理程序设计要求完成的主要任务...

C语言课程设计报告 通讯录

C语言课程设计通讯录管理系统C语言课程设计C语言课程设计通讯录管理系统目录摘要3一课程设计目的4二课程设计内容4三总体设计4四详细设计51数据结构设计52模块接口设计63流程图7五调试与测试91调试过程中的主要...

通讯录管理系统课程设计报告书(C语言)[1]

课程设计报告书课程名称班级学号姓名指导老师通讯录管理系统一需求分析设计题目及要求建立通讯录信息信息至少包含编号姓名年龄电话通讯地址电子邮箱等能够提供添加删除和修改通讯录信息的功能能够提供安不同方式查询的功能如按...

通信录管理系统C语言程序设计

C语言程序设计通讯录管理系统实习报告组长姚士平B10050927组员胡恒山B10050926芮青荣B10050925南京邮电大学电气信息工程B100509班20xx年9月14日实习报告C语言程序设计之通讯录管理...

c语言课程设计报告书_通讯录管理系统[1]

题目通讯录管理系统一需求分析任务要求自学C语言中有关链表及外部文件的内容设计出通讯录管理系统具体要求如下建立通讯录信息信息至少包括编号姓名年龄电话通讯地址电子邮箱等内容能够提供添加删除和修改通讯录信息等功能能够...

通讯录管理系统课程设计报告(29篇)