C语言课程设计报告 西安邮电大学
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、实验中的心得体会
心得体会:通过这次课程设计,我对 C 语言有了更深刻的了解, 增强了程序的编写能力,巩固了专业知识,对程序的模块化观念也 又模糊逐渐变的清晰了。在程序的运行与调试过程中出现了很多错 误,通过反复地复习课本上的相关知识,不停地修改与调试,我终 于完成了这段程序,而且有个很大的收获,c 语言程序必须要精炼, 许多人代码写得很长,但是执行起来却很浪费时间和内存空间,尤 其在大型程序,软件的编写和测试中,所以我们要尽量做到简单, 精炼,多试试是否能用一种更简单和实用的程序来代替。在调试过 程中,我认识到了 C 语言的灵活性与严谨性,同一个功能可以由不 同的语句来实现,但编写程序时要特别注意细节方面的问题,因为 一个小小的疏忽就能导致整个程序不能运行。当然我也认识到了自 己的薄弱之处,如对链表相关知识的欠缺,文件运用的不熟练,在 以后的学习中我要集中精力、端正态度,争取把知识学得更扎实、 更全面。
1.方案设计
学生通讯录管理系统 密码登录
输
删
添
查
显
保
入
除
加
询
示
存
信
信
信
信
信
信
息
息
息
息
息
息
2.程序中数据主要是学生通讯信息,具体属于类型如下: struct stu
{ int num; char name[10]; int tel; int qq; int adr;
3、模块功能说明 第一密码模块:调用字符比较函数 strcmp(),进行管理者登录操作(密码事先设定为 04112012,可以在代码中直接修改)。 第二录入模块:利用建立的动态链表直接输入,对学生通讯信息进行录入。 第三删除模块:调用 Del (),对某一学生通讯信息进行删除操作 第四添加模块:调用 Add(),对新来学生通讯信息进行添加录入。 第五显示模块:调用 xianshi(),将录入的学生通讯信息显示在屏幕上 第六查询模块:调用 chaxun(),对学生通讯信息进行查询。 第六保存模块:调用 save(),保存输入的学生通讯信息。
}
// 显示学生信息 void xianshi(struct stu *head) {struct stu *p;
system("cls"); printf("学号\t 名字\t 电话\tqq\t 地址\t\n"); printf("-----------------------------------------\n"); p=head; while(p!=NULL) {printf(" %d\t%s\t%d\t%d\t%d\t\n",p->num,p->name,p->tel,p->qq,p->adr); p=p->next;} fflush(stdin); printf("按任意键返回主菜单...");getchar();}
p2->next=NULL;
//将表尾节点 next 域置空
free(p1);
//释放无效节点
printf("输入的学生数为:%d 个!\n",n);
printf("按任意键返回主菜单...");
getchar();
return(head);}
//保存文件函数
save(struct stu *p1) {FILE *fp; char dizhi[20]; system("cls");
printf("\t\t\t 作者:ltt
学号:04112012\n");
printf("%d 不存在!\n",num);
printf("现在数为:%d 个!\n",n);
fflush(stdin);
printf("按任意键返回主菜单...");
getchar();
return(0);
}
//添加学生信息函数 Add(struct stu *head) {
while(1) { struct stu *p, *q;
printf("请输入文件路径及文件名:");
scanf("%s",dizhi); if((fp=fopen(dizhi,"w+"))==NULL)
{printf("不能打开文件!\n");
return 0;} while(p1!=NULL)
//将输入项表中的变量值按照格式字符串指定的格式输入到文件指针 fp
{p2=p1;
//p2 为 p1 的前驱
p1=p1->next;}
if(num==p1->num)
{if(p1==head)
head=p1->next;
//删除 head 头结点,再次产生头结点
else
p2->next=p1->next;
printf("已删除:%d\n",num);
n=n-1;}
else
三、需求分析
这是一个是由 C 语言编写的一个学生通讯录管理软件,本程序在 Microsoft Visual C++ 6.0 下运行,其主要功能是实现对学生通讯信息的录入,添加,删除,保存等。这是个大众 化的软件,操作简单,占用资源少,方便了学生之间的交流和学校对学生通讯信息的管理。
四、实验的概要及部分截图
二、实验内容
我设计的是“学生通讯录管理系统”,主要是针对全校学生通讯信息的管理,适用对象 可以是学校,也可以是一个院,一个班,方便学校对学生的管理和学生之间的互相联系交 流。学生的信息主要包括学生的姓名、学号、电话号码、qq 号码、住宿地址(例如 01557, 代表在 01 号宿舍楼,557 宿舍)。在编写过程中主要运用 C 语言的基本知识有:结构体的构 建和使用,指针和链表的构建,链表的建立,插入,删除等,文件的建立,保存,关闭等和 一些系统清屏函数的使用。
p1=(struct stu *)malloc(N);
//p1 指向新申请的节点
printf("请输入学号:");
scanf("%d",&p1->num);
if(p1->num==0)
//学号为 0 时跳出循环
break;
printf("请输入名字:");
scanf("%s",&p1->name);
//删除学生信息函数
DEL(struct stu *head)
{struct stu *p1,*p2;
int num;
system("cls");
printf("输入要删除学生的学号:");
scanf("%d",&num);
p1=head;
while(num!=p1->num&&p1->next!=NULL)
printf("请输入学生 qq:\n"); scanf("%d",&p->qq); printf("请输入学生住址:\n"); scanf("%d",&p->adr);
while(q->next!=NULL) {
q = q->next; } q->next = p; p->next = NULL; p=head; p=p->next; n++; printf(",添加完成!现在学生数为:%d 个!\n",n); fflush(stdin); printf("按任意键返回菜单..."); getchar(); return(head); }
q = head; p=(struct stu *)malloc(N); printf("请输入添加学生的信息!"); printf("---------------------\n"); printf("请输入学生学号:\n"); scanf("%d",&p->num); printf("请输入学生姓名:\n"); scanf("%s",p->name); printf("请输入学生电话:\n"); scanf("%d",&p->tel);
西安郵電大學
C 语言课程设计报告书
学院名称
学生姓名
专业名称
班
级
学
号
指导教师
时
间
计算机学院
2013 年 06 月 03 日至 2013 年 06 月 12 日
实验题目:学生通讯录管理系统
一、实验目的 通过本次实习,进一步巩固了我们所学过的 c 语言,具备解决综合性 的问题的能力,通过系统分析、系统设计、编程调试、,写实验报告 等环节,初步掌握了软件系统设计的方法和步骤,训练灵活运用程序 设计语言进行软件开发的能力,提高分析问题和解决问题的能力,提 高程序设计水平,培养必要的工程实践动手能力。
struct stu
//定义结构体数组
{ int num;
//定义学生学号类型
char name[10]; //学生名字类型为字符型
int tel;
//学生电话类型为整形
int qq;
//qq 号也为整形
int adr;
//学生住宿地址也为整形
struct stu *next;};
//创建带头结点的动态链表 struct stu *creat(void) { struct stu *p1,*p2,*head;n=0;
参考文献:《C语言程序设计》(第二版) 王曙燕
科学出版社
:《C语言程序设计》高涛,陆丽娜 编 西安交通大学出版社
七、源程序清单
#include <stdio.h> #include <malloc.h> #include <stLeabharlann Baidulib.h> #define N sizeof(struct stu) #include <string.h> int n,k;
printf("输入要查询的学生的学号:"); scanf("%d",&num);} fflush(stdin); printf("按任意键返回主菜单..."); getchar();}
//通讯录管理系统菜单
int menu(k)
{int i;
system("cls");
printf("\t\t\t 西邮学生通讯录管理系统 \n");
printf("请输入电话:");
scanf("%d",&p1->tel);
printf("请输入 qq 号:");
scanf("%d",&p1->qq);
printf("请输入地址(前面的为楼,后三位是宿舍**#***形式) :");
scanf("%d",&p1->adr);
n++;}
//n 自加
// 查询学生信息 chaxun(struct stu *head) {int num; struct stu *p1; system("cls"); printf("输入要查询的学生的学号:"); scanf("%d",&num); while(num!=0)
{p1=head; while(num!=p1->num&&p1->next!=NULL) p1=p1->next; if(num==p1->num) {printf("学号\t 名字\t 电话\tqq\t 地址\t\n"); printf("-----------------------------------------\n"); printf(" %d\t%s\t%d\t%d\t%d\t\n",p1->num,p1->name,p1->tel,p1->qq,p1->adr);} else printf("%d 学生不存在!\n",num);
所指向的文件位置
{fprintf(fp,"%d\t%s\t%d\t%d\t%d\t\n",p1->num,p1->name,p1->tel,p1->qq,p1->adr);
p1=p1->next;} fclose(fp);
//保存下一个学生信息
printf("文件已经保存!\n"); fflush(stdin); printf("按任意键返回主菜单..."); getchar(); return (0);}
五、详细设计及运行结果
1.部分模块运行结果图示
登入界面 主页界面
录入界面(学号输入为零时退出) 查询界面(学号输入为零退出)
添加模块界面 显示/ 打印界面
保存界面
删除界面
六、说明情况 及心得体会
1、重要说明 (密码输入模块 : 密码初始为 04112012,当然密码可以在修改(因为是
补考,还要上本专业的课,所以做的有点仓促,密码模块并没有做那么复杂) 当输入正确密码,系统显示“登陆成功”,然后提示按任意键进入主界面,不 过当密码输入三次错误密码时,会提示你输入密码错误已达三次,再按任意键 会自动退出系统。。
head=p2=(struct stu *)malloc(N); //head,p2 指向头结点
system("cls");
printf("请输入资料,输 0 退出!\n");
while(1)
{if(n==1)
head=p1;
else
p2->next=p1;
//将新结点链接到表尾
p2=p1;
//p2 指向新的表尾