C语言及数据结构与算法课程设计报告
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void insert (struct student *stu) { struct student *p0, *p1, *p2;
p1 = head; p0 = stu;
if (head == NULL)
{ head = p0; p0->next = NULL; } else { while ((p0->num > p1->num)&&(p1->next != NULL)) { p2 = p1; p1 = p1->next; } if (p0->num <= p1->num) {
开发一个系统,耐心是必要的,认真也很重要,构思要明确。 认为是哪里错误的,有时用“/* */”注释起来进行,看看是否 还有错误。 常错有以下几种情况: 1.使用变量,但未有定义,则先定义。 2.不该用分号的,用到了,把它去掉。 3.行最后若有分号则删除,中间若有分号则改成逗号 4.若错误行中有 if、while、for 则要特别注意条件表达式的错误。 5.若条件表达式中只有一个等于号,则改成两个等于号。 6.for 中要用分号分隔表达式,而不是用逗号 7.缺少分号,若错误行中有语句没有用分号结束,则加上分号。 8.大小写不对,若错误行中有大写字母则一般都改成小写字母。 9.若有 return 语句则函数的类型必须与 return 后变量的类型一致。调
display(p); p = p->next; } while(p != NULL); } printf ("\n"); }
//按学号查询学生信息 void query_by_num () { int num; struct student *p1;
printf("请输入学生的学号:"); scanf("%ld", &num); if(head==NULL) { printf("无学生记录!\n"); return; } p1 = head; while (num!=p1->num && p1->next!=NULL) p1 = p1->next; if (num == p1->num) { printf ("姓名\t 学号\t 年龄\t 性别\t 地址\t\t 电话\t\tE-mail\n"); printf ("-------------------------------------------------------------------------------\n"); display (p1); } else printf ("没有该学生记录,请核对!");
scanf("%s", p->E_mail); break;
default: printf("\n 无效选项!"); break;
} } while(choice != 0);
}
模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等))
四、调试与测试
设计一个程序,错误是难免不了的。但我们可以根据编辑系统给出的 一些提示去查看程序错误。对不敢肯定正确的,翻翻书,看一下这一 知识。对难度大的就和同学们一起讨论,问一问老师。
insert (p0); printf ("该学生的信息为:\n"); printf ("-------------------------------------------------------------------------------\n"); printf ("姓名\t 学号\t 年龄\t 性别\t 地址\t\t 电话\t\tE-mail\n"); display (p0); }
}
//修改学生信息 void change () { struct student *p1, *p2; long int num; if (head == NULL) {
printf ("无学生记录!\n"); return; } printf ("请输入您要修改的学生的学号:"); scanf ("%ld", &num); p1 = head; while (num != p1->num && p1->next != NULL) { p2 = p1; p1 = p1->next; } if(num == p1->num)
if (head == p1) head = p0; else p2->next = p0; p0->next = p1; } else { p1->next = p0; p0->next = NULL; } } TOTAL_NUM++; }
void display (struct student *p) { printf ("%s\t%ld\t%d\t%s\t%s\t%.0f\t%s\n", p->name, p->num, p->age, p->sex, p->address, p->tele_num, p->E_mail);
devise (p1); else printf("没有该学生记录,请核对!\n"); }
void devise (struct student *p)
{
int choice;
choice = -1;
do
{
printf("请选择您要修改的学生的信息内容:\n");
printf("+----------------------+\n");
}
//删除学生信息 void del () { struct student *p1, *p2; long int num;
if (head == NULL) { printf("无学生记录!\n"); return; }
printf("请输入您要删除的学生的学号:"); scanf("%ld", &num); p1 = head;
scanf("%s", p->name); break;
case 2: printf("请输入新学号:");
scanf("%d", &p->num); break;
case 3: printf("请输入新性别:");
scanf("%s", p->sex); break;
case 4: printf("请输入新年龄:");
}
//浏览学生信息 void displayAll() { struct student *p;
printf("学生总数:%d\n", TOTAL_NUM); p = head; if (head != NULL) { printf("\n 姓名\t 学号\t 年龄\t 性别\t 地址\t\t 电话\t\tE-mail\n"); printf("-------------------------------------------------------------------------------\n"); do {
请按 7 |\n");
printf("| 取消
请按 0 |\n");
printf("+----------------------+\n");
printf("请输入您的选择:"); scanf("%d", &choice);
switch (choice) {
case 0: return;
case 1: printf("请输入新姓名:");
scanf("%s", &p->age); break;
case 5: printf("请输入新地址:");
scanf("%s", p->address); break;
case 6: printf("请输入新电话:");
scanf("%lf", &p->tele_num); break;
case 7: printf("请输入新 E-mail:");
一、需求分析
问题描述 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。试设计
一学生信息管理系统,使之能提供以下功能:
系统以菜单方式工作 学生信息录入功能---输入 学生信息浏览功能---输出 查询、排序功能---算法
按学号查询、按姓名查询、学生信息的删除与修改(可选项) (2)功能要求
while (num != p1->num && p1->next != NULL) { p2 = p1; p1 = p1->next; } if(num == p1->num) { if(p1 == head) head = p1->next; else p2->next = p1->next;
free(p1); TOTAL_NUM--; } else printf("没有该学生记录,请核对!\n");
选择是否继续输 入学生信息
Y
N
返回主菜单
浏览学生信息
2
输出之前保存的 所有学生信息
返回主菜单
查询学生信息
3
输入已保存的 学生学号
N
输入是否正确
Y
输出符合学号的 学生信息
提示输入有误
返回主菜单
删除学生信息
4
输入已保存的 学生学号
输入是否正确
Y
删除已保存的 学生信息
N
提示输入有误
返回主菜单
修改学生信息
printf("| 姓名
请按 1 |\n");
printf("| 学号
请按 2 |\n");
printf("| 性别
请按 3 |\n");
printf("| 年龄
请按 4 |\n");
printf("| 地址
请按 5 |\n");
printf("| 电话
请按 6 |\n");
printf("| E-mail
福建工程学院软件学院
c 语言及数据结构与算法课程设计
题 目 : 学生信息管理系统
专 业: 物联网工程 1401 班
姓 名:
黄志华
学 号:
3148120119
同组其他学生(学号): 26 56 57
2015 年 6 月 24 日
目录
一、需求分析................................................................................3 二、总体设计................................................................................3 三、详细设计................................................................................4 四、调试与测试......................................................................... 16 五、测试结果..............................................................................16 六、用户手册..............................................................................16 七、附录......................................................................................16
5
输入已保存的 学生学号
输入是否正确
Y
选择修改的内容
N
提示输入有误
修改的新内容 直至取消修改
返回主菜单
三、详细设计
各调用函数的设计与运行情况: (//录入学生信息 void record () { struct student *p0;
p0 = (struct student *)malloc(LEN); printf ("请输入学生的姓名:"); scanf ("%s",p0->name); printf ("请输入学生的学号:"); scanf ("%ld",&p0->num); printf ("请输入学生的性别:"); scanf ("%s",p0->sex); printf ("请输入学生的年龄:"); scanf ("%d",&p0->age); printf ("请输入学生的地址:"); scanf ("%s",p0->address); printf ("请输入学生的电话:"); scanf ("%lf",&p0->tele_num); printf ("请输入学生的 E-mail:"); scanf ("%s",p0->E_mail);
界面比较美观;有一定的容错能力,比如输入的成绩不在 0~100 之间,就提示不合法, 要求重新输入;最好用链表的方式实现。
二、总体设计
主菜单
开始
主菜单
选择语句 switch(a)
录入 学生 信息
浏览 学生 信息
查询 学生 信息
删除 学生 信息
修改 学生 信息
退出 系统
1Байду номын сангаас
2
3
4
5
0
录入信息
1
按提示,录 入学生信息
p1 = head; p0 = stu;
if (head == NULL)
{ head = p0; p0->next = NULL; } else { while ((p0->num > p1->num)&&(p1->next != NULL)) { p2 = p1; p1 = p1->next; } if (p0->num <= p1->num) {
开发一个系统,耐心是必要的,认真也很重要,构思要明确。 认为是哪里错误的,有时用“/* */”注释起来进行,看看是否 还有错误。 常错有以下几种情况: 1.使用变量,但未有定义,则先定义。 2.不该用分号的,用到了,把它去掉。 3.行最后若有分号则删除,中间若有分号则改成逗号 4.若错误行中有 if、while、for 则要特别注意条件表达式的错误。 5.若条件表达式中只有一个等于号,则改成两个等于号。 6.for 中要用分号分隔表达式,而不是用逗号 7.缺少分号,若错误行中有语句没有用分号结束,则加上分号。 8.大小写不对,若错误行中有大写字母则一般都改成小写字母。 9.若有 return 语句则函数的类型必须与 return 后变量的类型一致。调
display(p); p = p->next; } while(p != NULL); } printf ("\n"); }
//按学号查询学生信息 void query_by_num () { int num; struct student *p1;
printf("请输入学生的学号:"); scanf("%ld", &num); if(head==NULL) { printf("无学生记录!\n"); return; } p1 = head; while (num!=p1->num && p1->next!=NULL) p1 = p1->next; if (num == p1->num) { printf ("姓名\t 学号\t 年龄\t 性别\t 地址\t\t 电话\t\tE-mail\n"); printf ("-------------------------------------------------------------------------------\n"); display (p1); } else printf ("没有该学生记录,请核对!");
scanf("%s", p->E_mail); break;
default: printf("\n 无效选项!"); break;
} } while(choice != 0);
}
模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等))
四、调试与测试
设计一个程序,错误是难免不了的。但我们可以根据编辑系统给出的 一些提示去查看程序错误。对不敢肯定正确的,翻翻书,看一下这一 知识。对难度大的就和同学们一起讨论,问一问老师。
insert (p0); printf ("该学生的信息为:\n"); printf ("-------------------------------------------------------------------------------\n"); printf ("姓名\t 学号\t 年龄\t 性别\t 地址\t\t 电话\t\tE-mail\n"); display (p0); }
}
//修改学生信息 void change () { struct student *p1, *p2; long int num; if (head == NULL) {
printf ("无学生记录!\n"); return; } printf ("请输入您要修改的学生的学号:"); scanf ("%ld", &num); p1 = head; while (num != p1->num && p1->next != NULL) { p2 = p1; p1 = p1->next; } if(num == p1->num)
if (head == p1) head = p0; else p2->next = p0; p0->next = p1; } else { p1->next = p0; p0->next = NULL; } } TOTAL_NUM++; }
void display (struct student *p) { printf ("%s\t%ld\t%d\t%s\t%s\t%.0f\t%s\n", p->name, p->num, p->age, p->sex, p->address, p->tele_num, p->E_mail);
devise (p1); else printf("没有该学生记录,请核对!\n"); }
void devise (struct student *p)
{
int choice;
choice = -1;
do
{
printf("请选择您要修改的学生的信息内容:\n");
printf("+----------------------+\n");
}
//删除学生信息 void del () { struct student *p1, *p2; long int num;
if (head == NULL) { printf("无学生记录!\n"); return; }
printf("请输入您要删除的学生的学号:"); scanf("%ld", &num); p1 = head;
scanf("%s", p->name); break;
case 2: printf("请输入新学号:");
scanf("%d", &p->num); break;
case 3: printf("请输入新性别:");
scanf("%s", p->sex); break;
case 4: printf("请输入新年龄:");
}
//浏览学生信息 void displayAll() { struct student *p;
printf("学生总数:%d\n", TOTAL_NUM); p = head; if (head != NULL) { printf("\n 姓名\t 学号\t 年龄\t 性别\t 地址\t\t 电话\t\tE-mail\n"); printf("-------------------------------------------------------------------------------\n"); do {
请按 7 |\n");
printf("| 取消
请按 0 |\n");
printf("+----------------------+\n");
printf("请输入您的选择:"); scanf("%d", &choice);
switch (choice) {
case 0: return;
case 1: printf("请输入新姓名:");
scanf("%s", &p->age); break;
case 5: printf("请输入新地址:");
scanf("%s", p->address); break;
case 6: printf("请输入新电话:");
scanf("%lf", &p->tele_num); break;
case 7: printf("请输入新 E-mail:");
一、需求分析
问题描述 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。试设计
一学生信息管理系统,使之能提供以下功能:
系统以菜单方式工作 学生信息录入功能---输入 学生信息浏览功能---输出 查询、排序功能---算法
按学号查询、按姓名查询、学生信息的删除与修改(可选项) (2)功能要求
while (num != p1->num && p1->next != NULL) { p2 = p1; p1 = p1->next; } if(num == p1->num) { if(p1 == head) head = p1->next; else p2->next = p1->next;
free(p1); TOTAL_NUM--; } else printf("没有该学生记录,请核对!\n");
选择是否继续输 入学生信息
Y
N
返回主菜单
浏览学生信息
2
输出之前保存的 所有学生信息
返回主菜单
查询学生信息
3
输入已保存的 学生学号
N
输入是否正确
Y
输出符合学号的 学生信息
提示输入有误
返回主菜单
删除学生信息
4
输入已保存的 学生学号
输入是否正确
Y
删除已保存的 学生信息
N
提示输入有误
返回主菜单
修改学生信息
printf("| 姓名
请按 1 |\n");
printf("| 学号
请按 2 |\n");
printf("| 性别
请按 3 |\n");
printf("| 年龄
请按 4 |\n");
printf("| 地址
请按 5 |\n");
printf("| 电话
请按 6 |\n");
printf("| E-mail
福建工程学院软件学院
c 语言及数据结构与算法课程设计
题 目 : 学生信息管理系统
专 业: 物联网工程 1401 班
姓 名:
黄志华
学 号:
3148120119
同组其他学生(学号): 26 56 57
2015 年 6 月 24 日
目录
一、需求分析................................................................................3 二、总体设计................................................................................3 三、详细设计................................................................................4 四、调试与测试......................................................................... 16 五、测试结果..............................................................................16 六、用户手册..............................................................................16 七、附录......................................................................................16
5
输入已保存的 学生学号
输入是否正确
Y
选择修改的内容
N
提示输入有误
修改的新内容 直至取消修改
返回主菜单
三、详细设计
各调用函数的设计与运行情况: (//录入学生信息 void record () { struct student *p0;
p0 = (struct student *)malloc(LEN); printf ("请输入学生的姓名:"); scanf ("%s",p0->name); printf ("请输入学生的学号:"); scanf ("%ld",&p0->num); printf ("请输入学生的性别:"); scanf ("%s",p0->sex); printf ("请输入学生的年龄:"); scanf ("%d",&p0->age); printf ("请输入学生的地址:"); scanf ("%s",p0->address); printf ("请输入学生的电话:"); scanf ("%lf",&p0->tele_num); printf ("请输入学生的 E-mail:"); scanf ("%s",p0->E_mail);
界面比较美观;有一定的容错能力,比如输入的成绩不在 0~100 之间,就提示不合法, 要求重新输入;最好用链表的方式实现。
二、总体设计
主菜单
开始
主菜单
选择语句 switch(a)
录入 学生 信息
浏览 学生 信息
查询 学生 信息
删除 学生 信息
修改 学生 信息
退出 系统
1Байду номын сангаас
2
3
4
5
0
录入信息
1
按提示,录 入学生信息