| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 426 人关注过本帖
标题:[求助]要保存该文件..如何改写
只看楼主 加入收藏
cool121
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-7-6
收藏
 问题点数:0 回复次数:1 
[求助]要保存该文件..如何改写

/*模拟学生信息查询系统*/

#define LIST_INIT_SIZE 10
//#define LIST_MORE 1O
#include <string.h>
#include <malloc.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

typedef struct student
{
char No[9];
char name[7];
float score;
}student;


typedef struct{
student *stu;
int length;
int listsize;
}sqlist;

int Initlist(sqlist &sl); //顺序表初始化
int creat(sqlist &sl);//顺序表的建立
int insertlist(sqlist &sl,student elem,int pos);//顺序表的插入操作
int search(sqlist sl,int pos);//按指定位置删除
int dele_elem1(sqlist &sl,int pos,student &elem);//顺序表的按位置删除操作
int dele_elem2(sqlist &sl,char *num,student &elem);//顺序表的按学号删除
int out_list(sqlist sl);//顺序表的输出操作


void main()
{

cout<<"\n\n欢迎使用学生信息查询系统,请按提示使用!\n\n\n";
sqlist sl;
Initlist(sl);
student s;
char number[9];
int pos;
while(1)
{
cout<<" \n ~~~~~~~~~~~~~~请选择您要执行的操作:~~~~~~~~~~~~~~\n";
cout<<endl<<endl;
cout<<" `````````````````````````````````````````````\n";
cout<<" ` 1、清空顺序表 `\n";
cout<<" ` 2、创建顺序表 `\n";
cout<<" ` 3、插入信息 `\n";
cout<<" ` 4、删除信息 `\n";
cout<<" ` 5、查找信息 `\n";
cout<<" ` 6、显示当前信息 `\n";
cout<<" ` 0、退出系统 `\n";
cout<<" `````````````````````````````````````````````\n";
cout<<"\n请从序号0--6中选择:";
int n;char c;
cin>>n;
if(n==0)//退出
{
cout<<"\n谢谢您的使用,该系统是~06电信01班梁~设计,再见!\n";
break;
}
else if(n==1)//清空
{
cout<<"此操作将清空顺序表,您是否继续?(n退出,其他任意键继续)\n";
cin>>c;
if(c==n)
break;
else
{ Initlist(sl);cout<<"顺序表已清空!您可以继续其他操作!\n\n";}
}
else if(n==2)//创建
{
cout<<"\n此操作将创建顺序表,您是否继续?(n退出,其他任意键继续)\n";
cin>>c;
if(c==n)
break;
else creat(sl);
}
else if(n==3)//插入
{
cout<<"输入插入学生信息:\n";
cout<<"学生学号:";
cin>>s.No;
cout<<"学生姓名:";
cin>>s.name;
cout<<"学生成绩:";
cin>>s.score;
insertlist(sl,s,pos);
}
else if(n==4)//删除
{
int m;
cout<<"1、我想按输入特定位置删除\n";
cout<<"2、我想按输入学生学号删除\n";
cout<<"请您选择:";
cin>>m;
cout<<endl;
if(m==1)
{
dele_elem1(sl,pos,s);

}
else if(m==2)
{
cout<<"输入您要删除的学生学号:";
cin>>number;
dele_elem2(sl,number,s);
cout<<endl;
}
}
else if(n==5)
{
int num;
cout<<"请输入您要查找的学生位置:";
cin>>num;
search(sl,num);
}
else if(n==6)//显示
out_list(sl);
else if(n!=0||n!=1||n!=2||n!=3||n!=4||n!=5||n!=6)
cout<<"您的输入有误,请重新输入!\n";

}//while

}


int Initlist(sqlist &sl)
{
sl.stu =(student *)malloc(LIST_INIT_SIZE*sizeof(student));
if(!sl.stu)
{
return 0;
cout<<"分配失败!\n";
}
sl.length=0;
sl.listsize=LIST_INIT_SIZE;
return 1;
}

int creat(sqlist &sl)
{
cout<<"下面创建学生信息查询系统,请按提示输入数据:\n";
sl.length=0;
int m; //用于记数
cout<<"您一共要输入多少组学生数据?\n";
cin>>m;cout<<"组\n";
for(int i=1;i<=m;i++)
{
cout<<"请输入第"<<i<<"个同学的学号:";
cin>>sl.stu[i-1].No;
cout<<endl;
cout<<"请输入第"<<i<<"个同学的姓名:";
cin>>sl.stu[i-1].name ;
cout<<endl;
cout<<"请输入第"<<i<<"个同学的成绩:";
cin>>sl.stu[i-1].score ;
cout<<endl;
sl.length++;
}
cout<<"\n本次操作您一共输入了"<<m<<"组数据\n";

return 1;
}

int insertlist(sqlist &sl,student elem,int pos)
{
cout<<"请输入您要插入信息的位置:\n";
cin>>pos;
if(pos<1||pos>sl.length+1)
{
cout<<"您要插入的位置不存在,请检查!\n";
return 0;
}
struct student *p;
for(p=sl.stu;p<sl.stu+sl.length;p++)
if(strcmp(p->No,elem.No )==0)
{
cout<<"输入的学号已存在!\n";
cout<<"该学号在系统中代表的信息为:\n";
cout<<"学号:"<<p->No<<endl;
cout<<"姓名:"<<p->name<<endl;
cout<<"成绩:"<<p->score<<endl;
return 0;
}
struct student *q;
q=&(sl.stu[pos-1]);

for(p=&(sl.stu[sl.length-1]);p>=q;--p)
*(p+1)=*p;
*q=elem;
++sl.length;
cout<<"\n插入已成功,要检查请看输出!\n";
return 1;
}

int search(sqlist sl,int pos)
{

cout<<"查找中...\n";
if(pos<1||pos>sl.length)
{
cout<<"对不起,您要查找的学生不存在,请检查!\n";
return 0;
}
cout<<"以下是您要找的学生信息:\n\n";
cout<<"学生姓名:"<<sl.stu[pos-1].name<<endl;
cout<<"学生学号:"<<sl.stu[pos-1].No <<endl;
cout<<"学生成绩:"<<sl.stu[pos-1].score<<endl<<endl;
return 1;
}


int dele_elem1(sqlist &sl,int pos,student &elem)
{
cout<<"请输入您要删除元素的位置:";
cin>>pos;
if(pos<1||pos>sl.length)
{

cout<<"您要删除的元素不存在,请检查!\n";
return 0;
}
struct student *p,*q;
p=&(sl.stu[pos-1]);
elem=*p;
q=sl.stu+sl.length-1;
for(++p;p<=q;++p)
*(p-1)=*p;
--sl.length;
cout<<"已删除,请检查输出!\n\n";
return 1;
}


int dele_elem2(sqlist &sl,char *num,student &elem)
{
student *q,*p;
p=sl.stu;
q=sl.stu+sl.length-1;

int flag=0;
for(p;p<=q;p++)
{
if(strcmp(num,p->No)==0)
{
elem=*p;
flag=1;
}
if(flag)break;
}
if(flag)
{
for(++p;p<=q;++p)
*(p-1)=*p;
--sl.length;
cout<<"已删除!检查输出看是否符合您的要求!\n\n";
return 1;
}
else
{
cout<<"不存在该学号代表的学生信息!\n";
return 0;
}
}
////输出///
int out_list(sqlist sl)
{
if(sl.length==0)
{
cout<<"\n\n~现在还没有任何信息或信息被删除!您可以先建立顺序表!~\n\n";
return 0;
}
else

{
cout<<"\n这是您要求的信息显示:\n";
struct student *q;
q=sl.stu;
int count=0;
for(q;q<sl.stu+sl.length;q++)
{
count++;
cout<<endl;
cout<<"第"<<count<<"条:"<<endl;
cout<<"学号:"<<q->No<<endl;
cout<<"姓名:"<<q->name<<endl;
cout<<"成绩:"<<q->score<<endl;
cout<<"||||||||||||||||||||||||\n";
}
cout<<"~~~共有信息"<<sl.length<<"条~~~\n\n";
}//else
return 1;
}

搜索更多相关主题的帖子: 文件 保存 
2007-07-06 09:56
天空の城
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-7-1
收藏
得分:0 
voidOnExit(sqlist&sl,const char* file); //此函数用来保存链表数据到指定文件。

...

if(n==0)//退出
{
cout<<"\n谢谢您的使用,该系统是~06电信01班梁~设计,再见!\n";
OnExit(sl,"C:\\stu.data"); //在退出的时候调用OnExit
break;
}

2007-07-06 11:19
快速回复:[求助]要保存该文件..如何改写
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027127 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved