程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
1
《程 序 设 计 基 础》课 程 设 计
题目: 1. 学生成绩管理程序
2. 链表信息管理
姓 名___ ____________ __
班 次_________________
学 号__ _ ____________
指导教师___________________
成 绩__________________
计算机与信息工程学院
2009 年 10 月 20 日
题目 1:学生成绩管理程序
[问题描述]
设计一个实用的小型学生成绩管理程序,它要求不用链表,而用数组来设计这个程序。
它有查询和检索等功能,并且能够对指定文件操作,也可将多个文件组成一个文件。
[基本要求]
1.功能要求(包括输入、输出、精度等方面的要求)
设计要求实现的功能较多,所以将它们分为几个部分叙述。
1.建立文件
(1)可以使用默认文件名或指定文件名将记录存储到文件;
(2)文件保存成功返回 0,失败返回-1;
(3)设置保存标志 savedTag 作为是否已对记录进行存储操作的信息;
(4)写同名文件将覆盖原来文件的内容;
2.增加学生记录
(1)可在已有记录后面追加新的记录;
(2)可以随时用它增加新的记录,它们仅保存在结构数组中;
(3)可以将一个文件读入,追加在已有记录之后;
(4)如果已经采取用文件追加的方式,在没有保存到文件之前,将继续保持文件追加
状态,以便实现连续文件追加操作方式;
(5)如果没有记录存在,给出提示信息。
3.新建学生信息文件
(1)用来重新建立学生信息记录;
(2)如果已经有记录存在,可以覆盖原记录或者在原记录后面追加,也可以将原有记
录信息保存到一个指定文件,然后重新建立记录;
(3)给出相应的提示信息。
4.显示记录
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
2
(1)如果没有记录可供显示,给出提示信息;
(2)可以随时显示内存中的记录;
(3)显示表头。
5.文件存储
(1)可以按默认名字或指定名字存储记录文件;
(2)存储成功返回 0,否则返回-1;
(3)更新存储标志。
6.读取文件
(1)可以按默认名字或指定名字将记录文件读入内存;
(2)读取成功返回 0,否则返回-1;
(3)可以将指定或默认文件追加到现有记录的尾部;
(4)可以将文件连续追加到现有记录并更新记录的名次。
(5)更新存储标志。
7.删除记录
(1)可以按“学号”、“姓名”或“名次”方式删除记录;
(2)给出将被删除记录的信息,经确认后再删除;
(3)如果已经是空表,删除时应给出提示信息并返回主菜单;
(4)如果没有要删除的信息,输出没有找到的信息;
(5)应该更新其他记录的名次;
(6)删除操作仅限于内存,只有执行存记录时,才能覆盖原记录;
(7)更新存储标志。
8.修改记录
(1)可以按“学号”、“姓名”或“名次”方式修改记录内容;
(2)给出将被修改记录的信息,经确认后进行修改;
(3)如果已经是空表,应给出提示信息并返回主菜单;
(4)如果没有找到需要修改的信息,输出提示信息;
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
3
(5)应该同时更新其他记录的名次;
(6)修改操作仅限于内存,只有进行存储操作时,才能覆盖原记录;
(7)更新存储标志。
9.查询记录
(1)可以按“学号”、“姓名”或“名次”方式查询记录;
(2)能给出查询记录的信息;
(3)如果查询的信息不存在,输出提示信息。
10.对记录进行排序
(1)可以按学号进行升序或降序排序;
(2)可以按名称进行升序和降序排序;
(3)可以按名次进行升序和降序排序;
(4)如果属于选择错误,可以立即退出排序;
(5)更新存储标志。
11.头文件
(1)使用条件编译定义头文件;
(2)函数原型声明;
(3)数据结构及包含文件;
12.测试程序
(1)应列出测试大纲对程序进行测试;
(2)应保证测试用例测试到程序的各种边缘情况是基本要求,希望通过对本章设计的
理解,重新考虑如何改进设计。
2.运行环境要求
dev c++
[系统分析]
1.程序系统结构分析
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
4
程序(系统)结构
主程序名称 子程序名称 调用关系说明
insert(Student s[],int n) 输入“1”时调用
show(Student s[],int n) 输入“2”时调用
sort(Student s[],int n) 输入“3”时调用
search(Student s[],int n) 输入“4”时调用
save(Student s[],int n) 输入“5”时调用
主函数(main)
del(Student s[],int n) 输入“6”时调用
2.子程序分析
程序描述
子程序名称 参数名称 类型 含义 子程序功能说明
s[] Student 学生信息表地址insert(Student
s[],int n)
n int 学生人数
添加学生信息
s[] Student 学生信息表地址show(Student
s[],int n)
n int 学生人数
显示学生信息
s[] Student 学生信息表地址sort(Student s[],int
n)
n int 学生人数
按要求对信息排序
s[] Student 学生信息表地址search(Student
s[],int n)
n int 学生人数
按需要查找信息
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
5
s[] Student 学生信息表地址save(Student s[],int
n)
n int 学生人数
保存信息
s[] Student 学生信息表地址del(Student s[],int
n)
n int 学生人数
按要求删除信息
3.算法分析
主函数流程:
Y
N
添加学生信息:
Y
N
开始
根据需求调用子函数
结束并返回
是否继续调用
开始
输入学生信息
返回
继续输入
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
6
对记录排序修改:
Y
N
查询记录流程:
Y
Y N
N
输入选择菜单:
1. 按学号排序
2. 按姓名排序
3. 按成绩排序
开始
返回
是否有重新排序
对应记录进行修改
相应排序方式
选择查询方式:
1.按学号 2.按姓名 3. 按成绩
开始
返回
是否有重新排序
相应显示记录
是否有记录
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
7
是否删除记录?
删除记录,修改相应信息
删除记录流程:
N
Y
N
Y
输出学生信息流程:
选择删除方式:
1. 按学号 2. 按姓名
3. 按成绩 4. 按名次
开始
结束返回
是否有对应记录
输出删除对应记录信息
输入删除记录的对应信息
开始
输出学生信息
返回
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
8
保存记录流程:
Y N
Y
Y
N
[测试数据]
1.功能测试数据及结果
2.正常值、边界值及异常值测试数据及结果
a) 在主菜单选择功能时,调用子函数,若输入的数不是 1-6 则程序忽略这次输入,
进入下一次调用,进行输入。
b) 选择功能数为 2 时,若输入成员代号不存在,则程序给出提示信息。
3.调试记录
调试记录
序号 程序名称 调试记录 解决方法
结束返回
i<n
关闭文件,并赋值 savedTag=0;
n++
文件是否打开
读取记录保存到文件中
开始
定义输出文件流
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
9
1 save() 学生信息最后一条记录显示不正确值
保存记录时,最后一条记录不
用保存换行符,不然读取记录
时,换行符独占一行,导致数
据显示错误
2 del() 出现二义性 修改错误
[课程设计小结]
通过对程序三的编写,进一步加深学习了 while 循环、for 循环等循环语句。学会了通过
函数间的返回值控制程序运行,使程序实现了菜单选择功能。在修改程序时通过对错误的修
改和完善,使思路更加谨慎和完善。锻炼了思路,完善了编程习惯。
[源代码]
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
struct Student //定义结构体
{ string num; //学号
string name; //姓名
float score;//成绩
short int mingci;//名次
};
Student s[100]; //结构体数组变量
int insert(Student s[],int n) //输入学生信息
{ bool sf;
int i=0;
string sr;
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
10
while(sr!="n"||sr!="N")
{ cout<<"请输入学生学号:"<<endl;
cin>>s[n+i].num;
cout<<"请输入学生的姓名:" <<endl;
cin>>s[n+i].name;
cout<<"请输入学生的成绩:"<<endl;
cin>>s[n+i].score;
cout<<"是否继续输入记录?(Y/N)"<<endl;
cin>>sr;
i++;
}
return(n+i);
}
int show(Student s[],int n) //显示
{ int i;
cout<<setw(7)<<"学号"<<setw(10)<<"姓名"<<setw(10)<<"成绩"<<setw(10)<<"名次"<<endl;
cout<<endl;
for(i=0;i<n;i++)
{cout<<setw(6)<<s[i].num<<setw(10)<<s[i].name<<setw(10)<<s[i].score<<setw(10)<<s[i].mingci
<<endl;}
}
void sort(Student s[],int n)//排序
{Student p;
int i,j;
int m,w,t;
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
11
cout<<"请选择排序方式:"<<endl;
cout<<"1.按学号排序:"<<endl;
cout<<"2.按姓名排序:"<<endl;
cout<<"3.按成绩排序:"<<endl;
cin>>m;
switch(m)
{ case 1:
for(i=0;i<n;i++)
for(j=i;j<n;j++)
if(s[i].num>s[j].num)
{p=s[i];s[i]=s[j];s[j]=p;}
goto px;
case 2:
for(i=0;i<n;i++)
for(j=i;j<n;j++)
if(s[i].name>s[j].name)
{p=s[i];s[i]=s[j];s[j]=p;}
goto px;
case 3:
for(i=0;i<n;i++)
for(j=i;j<n;j++)
if(s[i].score>s[j].score)
{p=s[i]; s[i]=s[j];s[j]=p;}
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
12
px: cout<<"请选择输出方式:1:升序,0:降序"<<endl;
cin>>t;
cout<<endl;
if(t==1)
{for(i=0;i<n;i++)
{s[i].mingci=i+1;
cout<<" 学号 姓名 成绩 名次 "<<endl;
cout<<s[i].num<<" "<<s[i].name<<" "<<s[i].score<<"
"<<s[i].mingci<<endl;
}
cout<<endl;
}
else
{for(i=n-1;i>-1;i--)
{s[i].mingci=n-i;
cout<<" 学号 姓名 成绩 名次 "<<endl;
cout<<s[i].num<<" "<<s[i].name<<" "<<s[i].score<<"
"<<s[i].mingci<<endl;
}
cout<<endl;
}
break;
}
}
int delnum(Student s[],int n)//按学号删除
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
13
{ int i,j;
string a;
char sr;
cout<<"请输入该学生学号:"<<endl;
cin>>a;
for(i=0;i<n;i++)
{if(s[i].num==a)
{ cout<<"是否保存删除记录?(Y/N)"<<endl;
cin>>sr;
if(sr=='y'||sr=='Y')
{for(j=i;j<n;j++)
{s[j]=s[j+1];}
cout<<"信息删除成功!"<<endl;
return n-1;}
else
{return n;}
}
}
cout<<"无法找到该信息!"<<endl;
return(n);
}
int delname(Student s[],int n)//按姓名删除
{ int i,j;
string a;
char sr;
cout<<"请输入该学生姓名:"<<endl;
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
14
cin>>a;
for(i=0;i<n;i++)
{if(s[i].name==a)
{ cout<<"是否保存删除记录?(Y/N)"<<endl;
cin>>sr;
if(sr=='y'||sr=='Y')
{for(j=i;j<n;j++)
{s[j]=s[j+1];}
cout<<"信息删除成功!"<<endl;
return n-1;}
else
{return n;}
}
}
cout<<"无法找到该信息!"<<endl;
return(n);
}
int delscore(Student s[],int n)//按成绩删除
{ int i,j;
float m;
char sr;
cout<<"请输入该学生成绩:"<<endl;
cin>>m;
for(i=0;i<n;i++)
{if(s[i].score==m)
{ cout<<"是否保存删除记录?(Y/N)"<<endl;
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
15
cin>>sr;
if(sr=='y'||sr=='Y')
{for(j=i;j<n;j++)
{s[j]=s[j+1];}
cout<<"信息删除成功!"<<endl;
return n-1;}
else
{return n;}
}
}
cout<<"无法找到该信息!"<<endl;
return n;
}
int delsort(Student s[],int n)//按名次删除
{ int i,j;
int m;
char sr;
cout<<"请输入该学生的名次:"<<endl;
cin>>m;
for(i=0;i<n;i++)
{if(s[i].mingci==m)
{ cout<<"是否保存删除记录?(Y/N)"<<endl;
cin>>sr;
if(sr=='y'||sr=='Y')
{for(j=i;j<n;j++)
{s[j]=s[j+1];}
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
16
cout<<"信息删除成功!"<<endl;
return n-1;}
else
{return n;}
}
}
cout<<"无法找到该信息!"<<endl;
return(n);
}
int del(Student s[],int n) //删除
{ int t;
cout<<"请选择删除方式:"<<endl;
cout<<"1.按学号删除:"<<endl;
cout<<"2.按姓名删除:"<<endl;
cout<<"3.按成绩删除:"<<endl;
cout<<"4.按名次删除:"<<endl;
cin>>t;
switch(t)
{case 1: n=delnum(s,n);break;
case 2: n=delname(s,n);break;
case 3: n=delscore(s,n);break;
case 4: n=delsort(s,n);break;
}
return n;
}
void search(Student s[],int n) //查询方式修改记录
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
17
{ string a;
Student q;
int i=0;
int b=0;
float p;
cout<<"请输入查询方式:"<<endl;
cout<<"1.按学生学号查找:"<<endl;
cout<<"2.按学生姓名查找:"<<endl;
cout<<"3.按学生成绩查找:"<<endl;
cout<<"4.按学生名次查找:"<<endl;
int m;
char sr;
cin>>m;
switch(m)
{ i=0;
case 1:
{ cout<<"请输入要查询的学生的学号:"<<endl;
cin>>a;
while(i<n)
if(s[i].num==a) goto loop;
}
case 2:
{ cout<<"请输入要查询的学生姓名:"<<endl;
cin>>a;
while(i<n)
if(s[i].name==a) goto loop;
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
18
}
case 3:
{ cout<<"请输入要查询的学生成绩:"<<endl;
cin>>p;
while(i<n)
if(s[i].score==p) goto loop;
}
case 4:
{ cout<<"请输入要查询的学生的名次:"<<endl;
cin>>b;
while(i<n)
if(s[i].mingci==b) goto loop;
}
loop:
{
cout<<"该学生的学号:"<<s[i].num<<endl;
cout<<"该学生的学号:"<<s[i].name<<endl;
cout<<"该学生的成绩:"<<s[i].score<<endl;
cout<<"是否要修改该学生的记录:(Y/N)"<<endl;
cin>>sr;
if(sr=='Y'||sr=='y')
{ cout<<"请输入新的学生学号:"<<endl;
cout<<"请输入新的学生姓名:"<<endl;
cout<<"请输入新的学生成绩:"<<endl;
cin>>;
cin>>;
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
19
cin>>;
s[i].num=;
s[i].name=;
s[i].score=;
cout<<"该学生的学号:"<<s[i].num<<endl;
cout<<"该学生的学号:"<<s[i].name<<endl;
cout<<"该学生的成绩:"<<s[i].score<<endl;
return;
}
i++;
if(sr=='n'||sr=='N')return;
if(i==n)
{cout<<"无法找到该信息!"<<endl; return;}
break;
}
return;
}
}
void save(Student s[],int n)//保存
{ int i=0;
ofstream fout("");
if(!fout)
{cout<<"打开文件失败"<<endl;
return ;}
fout<<"学生学号"<<";"<<"学生姓名"<<";"<<"学生成绩"<<";"<<"学生名次"<<endl;
while(i<n)
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
20
{fout<<s[i].num<<";"<<s[i].name<<";"<<s[i].score<<";"<<s[i].mingci<<endl;
i++;}
cout<<"文件保存成功!";
();
}
int main()
{ int n=0;
while(1)
{ int r;
cout<<"----------------------"<<endl;
cout<<" 对学生信息系统可执行的操作"<<endl;
cout<<"0.退出程序"<<endl;
cout<<"1.输入学生记录"<<endl;
cout<<"2.显示学生记录"<<endl;
cout<<"3.删除学生记录"<<endl;
cout<<"4.查询修改学生记录"<<endl;
cout<<"5.保存学生记录"<<endl;
cout<<"6.对记录排序"<<endl;
cout<<"----------------------"<<endl;
cout<<"请选择选项操作:(0-6):"<<endl;
cin>>r;
switch(r)
{ case 0: exit(0);break;
case 1: n=insert(s,n); break;
case 2: n=show(s,n); break;
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
21
case 3: sort(s,n);break;
case 4: search(s,n);break;
case 5: save(s,n);break;
case 6: n=del(s,n);break;
default : cout<<"请选择选项操作:(0-6):"<<endl;
}
}
system("pause");
return 0;
}
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
22
题目 4:链表信息管理
[问题描述]
设计的目的是学习建立链表,使用链表存储结构信息,增加链表节点及删除链表节点等基
本操作.实际设计时,可以增加数据信息及检索等功能.
[基本要求]
1.功能要求
(1).本课程设计时将重点放在整体设计上,直选成员代号和电话.
(2).如果已经有记录,只能在其后追加;
(3).显示整个记录的内容(含有新追加的记录);
(4).号可由 6 位字符和数字的混合编码组成,例如下面的形式:
A201
3405d
01001
(5).使电话号码可由 18 位支付和数字组成,例如下面形式:
(86)-551-36994698
0451-8822757-3456
13900110011
(6).以删除全部记录,可以随时增加新记录;
(7).使用菜单实现增加,删除,和显示等功能的选择;
(8).测试程序;
2.运行环境要求:dev c++
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
23
[系统分析]
1.程序系统结构分析
程序(系统)结构
主程序名称 子程序名称 调用关系说明
insert(worker *&head) 直接调用可添加成员信息
display(worker *head) 直接调用可输出成员信息
del(worker *&head) 直接调用可删除某个成员信息
主函数(main)
release(worker *&head) 删除所有成员信息释放空间
2.子程序分析
程序描述
子程序名称 参数名称 类型 含义 子程序功能说明
void
insert(worker
*&head)
head
worker
*
结构体类型的指
针
添加成员信息
void
display(worker
*head)
head
worker
*
结构体类型的指
针
输出成员信息
void del(worker
*&head) head
worker
*
结构体类型的指
针
删除某个成员信息
void
release(worker
*&head)
head
worker
*
结构体类型的指
针
删除所有成员信息释放空间
3.算法分析
说明本程序所选用的算法,计算公式和计算步骤和流程图。
在 main()中根据提示信息,按照需要可以选择不同的操作。程序中共有 5 个子程序,可
以增加数据信息及检索等功能。实际设计时,在 worker ()结构体中定义了两个数组 char num[7]
和 char telphone[19],还定义了一个指针 struct worker *next 用于指示下一个结点的位置便于操
作。对于子程序 insert ()、display()、del()、release()是通过参数的传递实现对链表的操作;而
exit()是对库内函数的调用。
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
24
主函数:
输入要选择
的功能
根据输入调用相
应子函数
结束
子函数返回值
开始
输出主菜单
1.增加记录
2.显示记录
3.删除某个记录
4.删除所有记录
5.退出
输入的功能号
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
25
void insert 添加成员信息如下:
void display 输出成员信息如下:
开始
表是否空
空
创建链表结点
准备输入信息
分别输入电话号码和代
号
是否继续输入
输入结束
开始
表是否空
空
输出表空输出表中内容
zhong
返回主页面
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
26
删除成员信息如下:
[测试数据]
1.功能测试数据及结果
2.正常值、边界值及异常值测试数据及结果
在原始数据文件内没有数据时,选择 2 会显式“链表为空,无记录!”信息,当原始数据
内容非空时,则显示成员信息。其余情况下,输入相应项都可执行相应功能。当输入 1 到 5
以外的数据则给出的是原始的数据内容。
3.调试记录
调试记录
序号 程序名称 调试记录 解决方法
1 insert(worker *&head) 编译不通过 引用的加入可解决
2 p->next 指针指向不明确 给指针指向合适位置
[课程设计小结]
通过对这次的题目研究,发现自己很多学习上的问题,如掌握问题不够扎实,运用中总
是得不到想要的结果,仔细检查源代码寻找问题所在,修改使其合乎正确思路。遇到问与人
多讨论交流有助于我们的学习和提高。扎扎实实学好理论基础,才能更好的编写出合乎逻辑
的代码。
开始
表是否空
空
输出表空删除表中内容
zhong
返回主页面
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
27
[源代码]
#include <iostream>
#include <>
using namespace std;
struct worker //定义结构体
{
char num[7];
char telphone[19];
struct worker *next;
};
void insert(worker *&head) //添加成员信息
{struct worker *p=NULL,*end=NULL;
char temple;
cout<<"添加成员信息如下:"<<endl;
if(head==NULL)
{ p=new struct worker;
head=p;
cout<<"输入成员代号:"<<endl;
cin>>p->num;
cout<<"输入成员电话:"<<endl;
cin>>p->telphone;
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
28
p->next=0;
cout<<"是否继续输入?(y/n)"<<endl;
cin>>temple;
while(temple=='y'||temple=='Y')
{ p->next=new struct worker;
p=p->next;
cout<<"输入成员代号:"<<endl;
cin>>p->num;
cout<<"输入成员电话:"<<endl;
cin>>p->telphone;
p->next=0;
cout<<"是否继续输入?(y/n)"<<endl;
cin>>temple;
p->next=0;
}
end=p;
}
else
{ do
{ p=end;
p->next=new struct worker;
p=p->next;
cout<<"输入成员代号:"<<endl;
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
29
cin>>p->num;
cout<<"输入成员电话:"<<endl;
cin>>p->telphone;
p->next=0;
cout<<"是否继续输入?(y/n)"<<endl;
cin>>temple;
p->next=0;
end=p;
}while(temple=='y'||temple=='Y');
}
}
void display(worker *head) //输出成员信息
{worker *p;
p=head;
cout<<"输出成员信息如下:"<<endl;
if(p==NULL)
cout<<" 链表为空,无记录!"<<endl;
else
{ while(p)
{cout<<"成员的代号:"<<p->num<<endl;
cout<<"成员的电话:"<<p->telphone<<endl;
p=p->next;
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
30
}
}
}
void del(worker *&head) //删除某个成员信息
{worker *p=NULL,*q=NULL;
char number[7],phone[19];
cout<<"删除某个成员信息如下:"<<endl;
if(head==NULL)
{ cout<<" 链表为空,无记录!"<<endl;
return;
}
p=head;
cout<<"删除的成员代号"<<endl;
cin>>number;
cout<<"删除的成员电话"<<endl;
cin>>phone;
if(p->num==number && p->telphone==phone)
{ head=p->next;
delete p;
return;
}
q=p->next;
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
31
while(q!=NULL)
{ if(q->num==number &&q->telphone==phone)
{ p->next=q->next;
delete q;
return;
}
else
{ cout<<"不存在要删除的成员信息!"<<endl;
return;
}
}
}
void release(worker *&head) //删除所有成员信息
{struct worker *p=NULL,*q=NULL;
p=head;
cout<<"删除成员信息释放空间!"<<endl;
while(p!=NULL)
{
q=p->next;
delete p;
p=q;
}
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
32
head=NULL;
cout<<"空间释放成功!"<<endl;
}
int main()
{
struct worker *head=NULL;//定义结构指针
int num;
cout<<"对信息可执行如下操作:"<<endl;
cout<<"1 添加新的成员信息"<<endl;
cout<<"2 显示链表成员信息"<<endl;
cout<<"3 删除某个成员信息"<<endl;
cout<<"4 删除所有成员信息"<<endl;
cout<<"5.退出 "<<endl;
cout<<"输入 1-5 选择操作"<<endl;
while(cin>>num)
{
switch(num)
{case 1:insert(*&head);break; //添加成员信息
case 2:display(head);break; //输出成员信息
case 3:del(*&head);break; //删除某个成员信息
case 4:release(*&head);break; //删除所有成员信息
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
33
case5:exit(1);break; //退出
}
cout<<endl <<"对信息可执行如下操作:"<<endl;
cout<<"1 添加新的成员信息"<<endl;
cout<<"2 显示链表成员信息"<<endl;
cout<<"3 删除某个成员信息"<<endl;
cout<<"4 删除所有成员信息"<<endl;
cout<<"5.退出 "<<endl;
cout<<"输入 1-5 选择操作:"<<endl;
}
system(“pause”);
return 0;
}
程序设计课程设计 [2009 级] [09 专升本汉班]内蒙古师范大学
34
《程序设计》课程设计文档书写格式要求
程序设计与算法语言文档格式要求如下:
1、页面设置为:上下边距为 2 厘米,左右边距为 2 厘米,纸张使用 A4 打印,其余设定采用
系统的默认值。
2、段落设置为:段前段后各空 行,行距采用固定行距,取 20 磅;
3、每个题的文档应包括下列标题:[问题描述],[基本要求],[系统分析],[测试数据],[流程图]。标题
部分使用四号宋体,其余部分采用小四号宋体,西文采用 Times New Roman;
4、页眉部分左对齐加上“程序设计课程设计”,采用宋体,右对齐加上“班级学号和姓名”,班
级学号采用 Times New Roman,姓名采用宋体;
5、页脚部分加上页码居中。