⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 学生系统
💻 TXT
📖 第 1 页 / 共 2 页
字号:
int LinkList::GetLength() {
return m_listLength;
}

//将链表清空,释放当前所有节点。
bool LinkList::ClearList() {
if (m_pList == NULL) {
  return false;
}

LNode *pTemp = NULL;
while (m_pList->next != NULL) {
  pTemp = m_pList->next;
  m_pList->next = pTemp->next;
  delete pTemp;
}
m_listLength = 0;

return true;
}

//将position指定的节点内的数据设置为newData。
//第一个有效节点的position为1。
bool LinkList::SetNodeData(int position, int newData) {
LNode *pTemp = NULL;

if (!(GetNode(position, &pTemp))) {
  return false;
}

pTemp->data = newData;

return true;
}

//得到指定位置节点的数据。
//节点索引从1到listLength。
bool LinkList::GetNodeData(int position, int &data) {
LNode *pTemp = NULL;

if (!(GetNode(position, &pTemp))) {
  return false;
}

data = pTemp->data;

return true;
}

//在链表中插入一个节点。
//插入的位置由beforeWhich指定,新节点插入在beforeWhich之前。
//beforeWhich的取值在1到ListLength+1之间。
bool LinkList::InsertNode(int beforeWhich) {
LNode *pTemp = NULL;

if (beforeWhich < 1 || beforeWhich > (m_listLength + 1)) {
  return false;
}

if (!(GetNode(beforeWhich - 1, &pTemp))) {
  return false;
}

LNode *newNode = new LNode;
        newNode->Dat=m_listLength;
             
        cout<<"请输入第"<< m_listLength<<"天员工情况:"<<endl;
        cout<<"请输入员工编号(六位):"<<endl;
        cin>>c;
        strcat(c,"\n");
        strcpy( newNode->num,c);

        cout<<"请输入日期:"<<endl;
        cin>>c;
        strcat(c,"\n");
        strcpy( newNode->date_t,c);
       
        cout<<"请输入员工部门:"<<endl;
        cin>>c;
        strcat(c,"\n");
        strcpy( newNode->depart,c);
        
        cout<<"请输入员工职务:"<<endl;
        cin>>c;
        strcat(c,"\n");
        strcpy( newNode->duty,c);

        cout<<"备注:"<<endl;
        cin>>c;
        strcat(c,"\n");
        strcpy( newNode->notice,c);
 
        cout<<"员工迟到与否(请选择Y/N):"<<endl;
        cin>> newNode->leave_er;
        
        cout<<"员工早退与否(请选择Y/N):"<<endl;
        cin>> newNode->come_la;
 
        cout<<"员工病假与否(请选择Y/N):"<<endl;
        cin>> newNode->sick_le;

        cout<<"员工事假与否(请选择Y/N):"<<endl;
        cin>> newNode->affair_le;
          
        cout<<"员工加班与否(请选择Y/N):"<<endl;
        cin>> newNode->over_time;
 
        cout<<"员工离场与否(请选择Y/N):"<<endl;
        cin>> newNode->out;

        cout<<"员工放假与否(请选择Y/N):"<<endl;
        cin>> newNode->holiday;

newNode->next = pTemp->next;
pTemp->next = newNode;

m_listLength++;

return true;
}

//删除一个指定的节点。
//节点位置由position指定。
//positon的值从1到listLength。
//若链表为空或指定的节点不存在则返回false。
bool LinkList::DeleteNode(int position) {
if (position < 1 || position > m_listLength) {
  return false;
}

LNode *pTemp = NULL;
if (!(GetNode(position - 1, &pTemp))) {
  return false;
}

LNode *pDel = NULL;
pDel = pTemp->next;
pTemp->next = pDel->next;
delete pDel;

m_listLength--;

return true;
}

//得到指定位置节点的指针。
bool LinkList::GetNode(int position, LNode **node) {
LNode *pTemp = NULL;
int curPos = -1;

pTemp = m_pList;
while (pTemp != NULL) {
  curPos++;
  if (curPos == position) 
   break;
  pTemp = pTemp->next;
}

if (curPos != position) {
  return false;
}

*node = pTemp;

return true;
}

//定位与指定数据相等的数据节点。
//如果在当前链表中已经存在该数据则返回该数据节点的索引号。
//若不存在这样的节点则返回0。
//节点索引从0开始到listLength。
int LinkList::LocateElem(int elem) {
LNode *pTemp = NULL;
int curIndex = 1;

pTemp = m_pList->next;
while ((pTemp != NULL) && (pTemp->data != elem)) {
  pTemp = pTemp->next;
  curIndex++;
}

if (pTemp == NULL) {
  return 0;
}

return curIndex;
}



bool LinkList::load_file( )
{          
            FILE *fp;
            LNode *pTemp = NULL;

	  if((fp=fopen("b.txt","r"))==NULL)
		{  cout<<"打开失败"<<endl;
                   return 0;
                }
                  LNode *newNode = new LNode;
                  GetNode(m_listLength , &pTemp);
	  while((fscanf(fp,"%d%s%s%s%s%s%d%d%d%d%d%d%d",&newNode->Dat,newNode->num,newNode->date_t,newNode->depart,newNode->duty,newNode->notice,&newNode->leave_er,&newNode->come_la,&newNode->sick_le,&newNode->affair_le,&newNode->over_time,&newNode->out,&newNode->holiday))!=EOF)
                  {    newNode->next=pTemp->next=NULL;
                       pTemp->next = newNode;
                       pTemp=newNode;
                       m_listLength++;
                       LNode *newNode = new LNode;
                       return true;
                
                  }
}

int LinkList::leaveer(int a,int b)
{    int m,n; 
     int k;
      LNode *pT = NULL;
      LNode *pTe = NULL; 
      m=LocateElem(a); 
       GetNode(m, &pT);
      n=LocateElem(b);
      GetNode(n, &pTe);
      while(pT!=pTe)
       { k=pT->leaver_er+pT->next->leaver_er;
         pT=pT->next;
       
        }

}




class date_time
{  
public:
      int add_date(int,int,int);
      void printdate();
      date_time(int ,int,int);
      int today(int days);
private:
      int YEA,MON,DAT;
     
};
      

void date_time::printdate()
{
   cout<<"今天的日期是:"<<endl;
   cout<<YEA<<MON<<DAT<<endl;
   
}


 date_time::date_time(int a,int b,int c)
{      
   FILE *fp;
   fp=fopen("a.txt","r");
   if(fp==NULL)
   cout<<"文件无法打开"<<endl;
   while(feof(fp)==0)
   fscanf(fp,"%d %d %d",&a,&b,&c);
   YEA=a;
   MON=b;
   DAT=c;
   fclose(fp); 
   

}

int date_time::add_date(int w,int k,int l)
{
  int sum,leap;
   switch(k)                               
   {
 case 1:sum=0;break;
 case 2:sum=31;break;
 case 3:sum=59;break;
 case 4:sum=90;break;
 case 5:sum=120;break;
 case 6:sum=151;break;
 case 7:sum=181;break;
 case 8:sum=212;break;
 case 9:sum=243;break;
 case 10:sum=273;break;
 case 11:sum=304;break;
 case 12:sum=334;break;
 default:cout<<"不正确的日期";break;
   }
  sum=sum+l;                                         
 if(w%400==0||(w%4==0&&w%100!=0))             
  leap=1;
 else
  leap=0;
  if(leap==1&&k>2)                                    
   sum++;
   return(sum);
}

int date_time::today(int days)
{
time_t nowtime; 
struct tm *tm; 
nowtime = time(0); 
tm = localtime(&nowtime); 
cout<<"今天是:"<<endl; 
cout<<tm->tm_year + 1900<<"年"<<tm->tm_mon + 1<<"月"<<tm->tm_mday<<"日"<<endl;
nowtime = nowtime - (days * 24 * 60 * 60); 
tm = localtime(&nowtime); 
cout<<days<<"天前的日期是:"<<tm->tm_year + 1900<<"年"<<tm->tm_mon + 1<<"月"<<tm->tm_mday<<"日"<<endl;
	return 0;	
}




------------------------------------------------------------------------------------------------------------------------------------------- 
#include <iostream.h>  // cin 及 cout
#include <string.h>	   // strcpy():	字符串复制
#include <stdlib.h>	   // system("cls")
#include <stdio.h>	   // 文件操作(写文件)
#include "list.h"      // 我们要创建类 List 的对象和节点指针,所以要把类的头文件包含进来

class Operater
{
	List L1;
public:				
	void Loop();							//主循环			
	void display();							//显示菜单	
};
--------------------------------------------------------------------------------------------------------------------------------------------


#include "operater.h"

void Operater::display()
{
	cout<<endl<<endl;
	cout<<"--------------------------职工考勤管理-----------------------------"<<endl;
	cout<<"1:			添加一个职工信息"<<endl;
	cout<<"2:			删除一个职工信息"<<endl;
	cout<<"3:			显示所有职工的姓名"<<endl;
	cout<<"4:			根据姓名显示单个职工所有信息"<<endl;
	cout<<"5:			根据姓名对单个职工进行编辑"<<endl;
	cout<<"6:			帮助菜单"<<endl;
	cout<<"7:			保存数据"<<endl;
	cout<<"0:			退出系统"<<endl;
	cout<<"-------------------------------------------------------------------"<<endl;
}

void Operater::Loop()
{
	List L1;        //List 对象
	char ch[20];
	nodetype *p, *head;   
	int i;		    //存放节点序号

	p=L1.load();	//初始化:从外部读入数据创建链表

	head=p;
	display();

	while(1)
	{
		cout<<endl<<endl;
		cout<<"请输入选择(帮助选项--> 6 ): "<<endl;
		cin>>ch;

		system("cls");
		if(L1.check(ch, "1"))
		{
			p=L1.insnode(0);
			head=p;

			system("cls");
			cout<<endl;
			cout<<"------------------添加一个职工信息-------------"<<endl;
			cout<<"下面输入个人信息: "<<endl;
			L1.editworker(p);
			
		}

		if(L1.check(ch, "2"))
		{
			system("cls");
			cout<<endl;
			cout<<"------------------删除一个职工信息------------"<<endl;
			L1.dispname();
			cout<<"请输入职工姓名: "<<endl;
			cin>>ch;
			i=L1.find2(ch);
			L1.delnode(i);
		}

		if(L1.check(ch, "3"))
		{
			system("cls");
			cout<<endl;
			cout<<"---------------显示所有职工名字---------------"<<endl;
			L1.dispname();
		}

		if(L1.check(ch, "4"))
		{
			system("cls");
			cout<<endl;
			cout<<"--------------根据姓名显示单个职工所有信息 --------------"<<endl;
			L1.dispname();
			cout<<"请输入职工姓名: "<<endl;
			cin>>ch;
			p=L1.find(ch);
			L1.dispnode(p);
		}

		if(L1.check(ch, "6"))
		{
			display();
		}

		if(L1.check(ch, "7"))		//保存数据
		{
			FILE *fp;
			if((fp=fopen("student.txt", "w"))==NULL)          
			{
				cout<<"打开文件失败"<<endl;
				return;
			}

			int i;
			char t[255];

			//将 L1.listlen() 赋予字符串中的数字
                    sprintf(t, "The Length Of Link: %d\n", L1.listlen()) ;\\把整数L1.listlen() 打印成一个字符串保存在t 中。

			fputs(t, fp);                    \\打印“the length of link:L1.listlen”覆盖原来的
			strcpy(t, "\n");
			fputs(t, fp);                         \\打印空格行

			p=L1.findnode(1);				//将链表头指针赋予 p

			for(i=0; i<L1.listlen(); i++)
			{
				
		          fputs(p->someone.name, fp);
		          fputs(p->someone.sex, fp);
		          fputs(p->someone.num, fp);
		          fputs(p->someone.birthday, fp);
		          fputs(p->someone.partment, fp);
		          fputs(p->someone.workyear, fp);
		          fputs(p->someone.E-mail, fp);
		          fputs(p->someone.telphone, fp);
		          fputs(p->someone.graduate, fp);
		          fputs(p->someone.address, fp);
		          fputs(p->someone.duty, fp);
		          fputs(p->someone.notice, fp);
	                  fputs(p->someone.in_time, fp);
	
				fputs(t, fp);

				p=p->next;
			}
			p=head;
			fclose(fp);
		}

		if(L1.check(ch, "5"))
		{
			char c[20];
			system("cls");
			cout<<endl;
			cout<<"------------------根据姓名对单个员工进行编辑 --------------"<<endl;
			L1.dispname();
			cout<<"请输入员工姓名: "<<endl;
			cin>>c;
			p=L1.find(c);

			system("cls");
			cout<<endl<<endl;
			cout<<"------------------------------------------------------------"<<endl;
			cout<<"1:			编辑个人信息"<<endl;
	                cout<<"2:			显示个人信息"<<endl;
			cout<<"3:			显示该员工所有信息"<<endl;
			cout<<"4:			帮助菜单"<<endl;
			cout<<"5:			返回上一级菜单"<<endl;
			cout<<"------------------------------------------------------------"<<endl;

			while(1)
			{
				cout<<endl<<endl;
				cout<<"请输入选择(帮助选项--> 8 ): "<<endl;
				cin>>c;
				system("cls");

				if(L1.check(c, "1"))
				{
					system("cls");
					cout<<endl;
					cout<<"---------------------编辑个人信息 ----------------"<<endl;
					L1.editperson(p);
				}
			
		
			
				else if(L1.check(c, "2"))
				{
					system("cls");
					cout<<endl;
					cout<<"------------------显示个人信息 ------------------"<<endl;
					L1.dispworker(p);
				}


				else if(L1.check(c, "3"))
				{
					system("cls");
					L1.dispnode(p);
				}

				else if(L1.check(c, "4"))
				{
					system("cls");
					L1.help();
				}

				else if(L1.check(c, "5"))
				{
					display();
					break;	//用 break 跳出本循环,不要用 return ,return 是退出程序
				}
			}
		}

		else if(L1.check(ch, "0"))
			return;
	}
	return;
}


----------------------------------------------------------------------------------------------------------------------------------





     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -