资源简介
1、从文本文件中导入班级学生信息:学号、姓名、性别、籍贯
2、将学号重复的删除
3、显示导入的学生信息(文件加后缀)
4、按学号、姓名、性别、籍贯相等和不相等查找
5、多次查找
6、查找结果写入文件
7、VC++6.0编译通过
代码片段和文件信息
/*
1、从文本文件中导入班级学生信息:学号、姓名、性别、籍贯
2、将学号重复的删除
3、显示导入的学生信息
4、按学号、姓名、性别、籍贯相等和不相等查找
5、多次查找
6、查找结果写入文件
7、VC++6.0编译通过
*/
#include
#include
#include
#include
#include
#include
#define CLRSCR system(“cls“)
#define PRINT_title “\n序号\t学号\t\t姓名\t性别 \t籍贯\n“
#define PRINT_FORMAT “%d\t%s\t%s\t%s\t%s\n“ip->stu.nump->stu.namep->stu.sexp->stu.hometown
#define WRITE_FORMAT “%s\t%s\t%s\t%s\n“p->stu.nump->stu.namep->stu.sexp->stu.hometown
#define READ_FORMAT “%s %s %s %s“&p->stu.num&p->stu.name&p->stu.sex&p->stu.hometown
//定义学生结构体
struct student
{
char num[9];
char name[7];//三个汉字长度为6个字节,如果不多定义一个字节来存放字符串结束符‘\0‘,当输出name时会把sex和hometown也输出
char sex[3];
char hometown[7];
};
//定义单链表结点
typedef struct listnode
{
struct student stu;
struct listnode *next;
}node;
int MySelect(node * headnode *temp) //返回查找到符合条件的项目数
{
int equalN;
char CHAR[10];
printf(“----------------------------------------------\n\n“);
printf(“查找模式:1是相等查找0是不相等查找\n“);
printf(“列名编号:1是学号2是姓名3是性别4是籍贯\n“);
printf(“\n--------------------------------------------\n“);
do
{
printf(“\n选择查找模式:“);//用scanf时输入字母会错误 改用getche,不用scanf
equal=getche();
if((equal!=‘1‘)&&(equal!=‘0‘))
printf(“\n\t输入错误\n“);
}
while((equal!=‘1‘)&&(equal!=‘0‘));
equal=equal-48;
do
{
printf(“\n输入列名编号:“);
N=getche();
if(N!=‘1‘&&N!=‘2‘&&N!=‘3‘&&N!=‘4‘)
printf(“\n\t输入错误\n“);
}
while(N!=‘1‘&&N!=‘2‘&&N!=‘3‘&&N!=‘4‘);
switch(N)
{
case ‘1‘: N=0;break;
case ‘2‘: N=9;break;
case ‘3‘: N=16;break;
case ‘4‘: N=19;break;
}
printf(“\n输入关键字:“);
scanf(“%s“CHAR);
int i=0flag;
node *p*tp=temp;
p=head->next;
while (NULL!=p)
{
flag=strcmp((char *)p+NCHAR);
if((abs(flag)+equal)==1)//当equal为1时是相等查找为0时是不相等查找
{
node *end;
end = (node *)malloc(sizeof(node));
tp->next=end;
tp=end;
tp->next=NULL;
tp->stu=p->stu;
if(i==0)
printf (PRINT_title);
i++;
printf(PRINT_FORMAT);
}
p=p->next;
}
if(i==0)
printf(“\n\t没有查找到符合条件的信息\n“);
return i;
}
void InsertSort(node *head)//学号从小到大排序
{
node *p*q*r*u;
p=head->next;
head->next=NULL;
while(p!=NULL)
{
r=head;
q=head->next;
while(q!=NULL&& strcmp(q->stu.nump->stu.num)<0) //成立则基点向后移
{
r=q;
q=q->next;
}
u=p->next;
p->next=r->next; //p->stu.num比q->stu.num小,放到q->stu.num前面
r->next=p;
p=u;//下一上节点与基点进行比较
}
}
void CheckNum(node *head)
{
/*删除学号重复的条目*/
node *release*p;
p=head->next;
int m=0;
while(NULL!=p->next)
{
node *p2=p;
while(NULL!=p2->next)
{
if(0==strcmp(p->stu.nump2->next->stu.num))
{ m++;
if(m==1)
printf(“\t\t以下条目因学号与前面的信息冲突而没有导入\n“);
printf (“%d\t%s\t%s\t%s\t%s\n“mp2->next->stu.nump2->next->stu.name\
p2->next->stu.sexp2->next->stu.hom
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1548 2011-04-17 08:54 class.txt
文件 8270 2011-04-17 09:10 class.cpp
----------- --------- ---------- ----- ----
9818 2
相关资源
- 从txt文件中读取数据并自动建立单链
- 学生信息管理系统c语言单链表实现
- 编写算法删除单链表L中所有值为e的数
- C++逐行读取数据数组
- C语言下用单链表实现一元多项式的四
- 费诺编码的C语言实现
- 已知head为单链表的表头指针,链表中
- c语言实现的单链表和循环链表
- 数据结构 通讯录管理 课程设计C++单链
- c++ 使用while读取不定量的输入数据方
- 滴水逆向 文件操作pe修改C语言源代码
- C++选课系统
- 数据结构c语言版-单链表的操作程序代
- 学生社团管理系统数据结构课程设计
- 若干城市的信息存入一个带头结点的
- c++实现的单链表
- 单链表的并集与交集C语言
- 单链表的C++实现。。
- c语言 利用学生信息栈实现学生信息单
- C语言读写文件操作pdf文档
- 数据结构单链表c语言源代码
- 数据结构头插法建立单链表
- 用于学习链表文件操作
- ADO 读取数据库操作
- 单链表的类模板定义与实现
- 数据结构单链表实现大数阶乘C++递归
- c++图书管理系统运用c++ 带文件操作有
- 设A和B是两个单链表,其表中元素递增
- 数据结构单链表的表示和基本操作学
- C语言实现带文件操作的通讯录
评论
共有 条评论