资源描述
C语言和程序设计课程设计
学生籍贯信息统计簿设计
学 院 信息工程
班 级 物联1301班
学 号
姓 名 滕玲
一.设计目标
该软件关键是编辑一个学生籍贯信息统计簿统计每个学生信息,包含:学号、姓名、籍贯。具体功效:
1.创建信息链表并以磁盘文件保留;
2.读取磁盘文件并显示输出全部学生籍贯信息;
3.按学号或姓名查询其籍贯;
4.按籍贯查询并输出该籍贯全部学生;
5.能添加、删除和修改学生籍贯信息;
二.总体设计
1.设置输入输出流及将程序由磁盘文件保留,构件类stu,其关键包含:学号,姓名,籍贯;
2.构建无返回值main函数,输出由和程序相关操作组成信息链表;
3.依据链表设置利用switch函数和循环函数将链表中内容一一实现;
三.具体设计
1.学生基础信息录入
这部分功效关键包含信息录入,首先按程序提醒输入学生学号,姓名,籍贯等。在录入数据同时,系统将对信息正当性进行检验。若用户输入不正当信息,则被系统要求重新输入;若正当性成立则录入完成后系统将返回主页面。主页面还有显示学生全部信息,而且这些信息全部会写到你所指定文本文件中。
2.显示学生信息
此功效是将原录入学生信息读出,并在屏幕上显示出来,而且录入到你所指定文本文件中。
3.学生信息读取
进入该项功效界面后,用户能够对学生个人信息进行查看,而且录入到你所指定文本文件中。
4.按学号或姓名查找学生信息
此项功效能够依据用户输入选择查处该学生全部信息,而且录入到你所指定文本文件中。
5.删除和修改个人信息
选择此项功效后,系统将会自动在屏幕上显示按学号录入原来同学个人信息,输入后进行修改,而且录入到你所指定文本文件中。
6.退出系统,结束任务
【注:
main()主函数
每一C 程序全部必需有一main()函数, 能够依据自己爱好把它放在程序某个地方。程序之前输入学生信息,main()申明主函数,输出对应功效函数。
#include<>头文件
iostream意为输入输出流,包含了对输入输出流进行操作所需基础信息;string意为字符串,用于定义程序中字符串;fstream用于用户管理文件I/O操作。
using namespace 命名空间名
using namespace一次只能申明一个命名空间组员,using
namespace std申明了在本作用域中要用命名空间std中组员。
break语言
break语句能够使步骤跳出switch结构,继续实施switch语句下面一个语句。其作用为使步骤从循环体内跳出循环体,即提前结束循环,接着实施循环体下面语句。break语句只能用于循环语句和switch语句 内,不能单独使用或用于其它语句中。
】
四.调试和测试
在Visual C++6.0环境下输入代码并进行调试和正确运行
五.源程序清单和实施结果
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
class CStudent
{
private:
int ID; //学号
string Province; //籍贯
string Name; //姓名
public:
void setID(int id) {ID=id;}
void setProvince(string province) {Province=province;}
void setName(string name) {Name=name;}
int getID() {return ID;}
string getProvince() {return Province;}
string getName() {return Name;}
};
CStudent student[1000];
int n = 0; //数组学生总数
string fileName="students.txt";
int AddStudent(); //添加一个学生到数组
int Loop(); //显示数组中全部学生
int AddToFile(); //加数组学生到文件
int SaveFile(); //数组到文件
int ShowFile(); //显示文件全部学生
int FindID(); //按学号查询学生
int Findname(); //按姓名查询学生
int FindProvince(); //按籍贯查询学生
int Delete (); //删除一个学生
int ReadFile(); //文件输入数组
int Remove (); //修改一个学生
int Rediscovername(); //重新输入学生
int ReadFile(); //文件输入数组
void main()
{
int k=-1;
while(k!=0)
{
cout<<endl;
cout<<"1 添加一个学生到数组" <<endl;
cout<<"2 显示数组中全部学生" <<endl;
cout<<"3 加数组学生到文件" <<endl;
cout<<"4 显示文件中全部学生" <<endl;
cout<<"5 按学号查询学生" <<endl;
cout<<"6 按籍贯查询学生" <<endl;
cout<<"7 按姓名查询学生" <<endl;
cout<<"8 删除一个学生" <<endl;
cout<<"9 修改一个学生" <<endl;
cout<<"10 文件输入数组" <<endl;
cout<<"0 完成" <<endl;
cout<<"选择上面一个数字:"; cin>>k;
if (k==1) AddStudent();
else if(k==2) Loop();
else if(k==3) AddToFile();
else if(k==4) ShowFile();
else if(k==5) FindID();
else if(k==6) FindProvince();
else if(k==7) Delete();
else if(k==8) Remove();
else if(k==9) ReadFile();
else if(k==0) printf("完成!\n");
else printf("你输入了个错误数字!\n");
}
return;
}
int FindProvince()
{
int id;
string province1,province2;
cout<<"籍贯:"; cin>>province1;
ifstream iFile(fileName.c_str());
while(iFile>>id>>province2)
{
if(province1==province2)
cout<<id<<" "<<province2<<endl;
}
iFile.close();
return 0;
}
int FindID()
{
int id1,id2;
string province;
cout<<"学号:"; cin>>id1;
ifstream iFile(fileName.c_str());
while(iFile>>id2>>province)
{
if(id1==id2)
{
cout<<id2<<" "<<province<<endl;
break;
}
}
iFile.close();
return 0;
}
int FindProvince()
{
int name;
string province1,province2;
cout<<"籍贯:"; cin>>province1;
ifstream iFile(fileID.c_str());
while(iFile>>name>>province2)
{
if(province1==province2)
cout<<name<<" "<<province2<<endl;
}
iFile.close();
return 0;
}
int FindName()
{
int name1,name2;
string province;
cout<<"姓名:"; cin>>id1;
ifstream iFile(fileID.c_str());
while(iFile>>name2>>province)
{
if(name1==name2)
{
cout<<name2<<" "<<province<<endl;
break;
}
}
iFile.close();
return 0;
}
int Remove()
{
int id,i,j;
cout<<"学号:"; cin>>id;
ReadFile();
for(i=0;i<n;i++)
{
if(student[i].getID()==id)
{
n--;
for(j=i;j<n;j++)
student[j]=student[j+1];
}
}
SaveFile();
return 0;
}
int AddStudent()
{
int id;
string province;
cout<<"学号,籍贯: "; cin>>id>>province;
student[n].setID(id);
student[n].setProvince(province);
n++;
return 0;
}
int AddToFile()
{
ofstream oFile(fileName.c_str(),ios::app);
int i;
for(i=0;i<n;i++)
oFile<<student[i].getID()<<"
"<<student[i].getProvince()<<endl;
oFile.close();
return 0;
}
int SaveFile()
{
ofstream oFile(fileName.c_str());
int i;
for(i=0;i<n;i++)
oFile<<student[i].getID()<<" "<<student[i].getProvince()<<endl;
oFile.close();
return 0;
}
int ReadFile()
{
int id;
string province;
ifstream iFile(fileName.c_str());
n = 0;
while(iFile>>id>>province)
{
student[n].setID(id);
student[n].setProvince(province);
n++;
}
iFile.close();
return 0;
}
int Loop()
{
int i;
cout<<"显示全部学生:"<<endl;
for(i=0;i<n;i++)
cout<<"学号= "<<student[i].getID()<<"籍贯= "<<student[i].getProvince()<<endl;
return 0;
}
int ShowFile()
{
int id;
string province;
ifstream iFile(fileName.c_str());
while(iFile>>id>>province)
cout<<id<<" "<<province<<endl;
iFile.close();
return 0;
}
展开阅读全文