精华内容
下载资源
问答
  • 算法实验 学生管理系统 线性表实现

    千次阅读 2014-03-13 18:40:00
    简单学生信息管理系统 实现一个简单的学生信息管理系统学生的主要信息包括学号、姓名,其上能完成添加、删除、查找、显示等基本功能; 分别用顺序表、链表方式实现。 首先用线性表实现,及其类数组实现 首先定义...

    1 题目:

    简单学生信息管理系统
    实现一个简单的学生信息管理系统。
    学生的主要信息包括学号、姓名,其上能完成添加、删除、查找、显示等基本功能;
    分别用顺序表、链表方式实现。

    首先用线性表实现,及其类数组实现

    首先定义一下头文件和类库

    #include<iostream>
    #include<cstdio>
    #include<string>
    using namespace std;
    class Student
    {
    public :
    	string name;
    	int  id;
    };
    class StuList
    {
    private :
    	Student s[100];
    	int length;
    public :
    	StuList(){}
    	StuList(int len)
    	{
    		length=len;
    		for(int i=1;i<=len;i++)
    		{
    			s[i].id=i;
    			s[i].name="";
    		}
    	}
    	StuList(int len,Student *stu)
    	{
    		length=len;
    		for(int i=1;i<=length;i++)
    		{
    			s[i].id=stu[i-1].id;//注意数组的尾数 下标
    			s[i].name=stu[i-1].name;
    		}
    	}
    	//void SetId(int i){return s[i].id;} //id 不需要变更
    	int GetId(int i){return s[i].id;}
    	void SetName(int i,string str){s[i].name=str;}
    	string GetName(int i){return s[i].name;}
    	void SortStu()
    	{
    		for(int i=1;i<=length;i++)
    		{
    			for(int j=i;j<=length;j++)
    			{
    				if(s[i].id>s[j].id)
    				{
    					Student temp;
    					temp.id=s[i].id;
    					temp.name=s[i].name;
    					s[i].id=s[j].id;
    					s[i].name=s[j].name;
    					s[j].id=temp.id;
    					s[j].name=temp.name;
    				}
    			}
    		}
    	}
    	void AddStu(int,string);
    	void DeleteStu(int );//按学号删除
    	void DeleteStu(string);//按姓名删除
    	string SelectStu(int );//按学号查找
    	int SelectStu(string );//按姓名查找
    	void PrintStu();
    	void ChangeID(int ,string);
    };
    void StuList::AddStu(int _id,string _name)
    {
    	s[++length].id=_id;
    	s[length].name=_name;
    	SortStu();
    }
    void StuList::ChangeID(int _id,string _name)
    {
    	int temp=-1;
    	for(int i=1;i<=length;i++)
    	{
    		if(s[i].name==_name){temp=i;break;}
    	}
    	if(temp==-1){return;}	
    	else
    	{
    		s[temp].id=_id;
    	}
    }
    void StuList::DeleteStu(int _id)
    {
    	int temp=1;
    	for(int i=1;i<=length;i++)
    	{
    		if(s[i].id==_id){temp=i;}
    	}
    	for(int j=temp+1;j<=length;j++)
    	{
    		s[j-1].id=s[j].id;
    		s[j-1].name=s[j].name;
    	}
    	length--;
    }
    void StuList::DeleteStu(string _name)
    {
       int temp=-1;
       for(int i=1;i<=length;i++)
       {
    	   if(s[i].name==_name){temp=i;break;}
       }
       for(int j=temp+1;j<=length;j++)
    	{
    		s[j-1].id=s[j].id;
    		s[j-1].name=s[j].name;
    	}
    	length--;
    }
    string StuList::SelectStu(int _id)
    {
    	int temp=-1;
    	for(int i=1;i<=length;i++)
    	{
    		if(s[i].id==_id){temp=i;break;}
    	}
    	if(temp==-1){return "";}
    	else {return s[temp].name; } 
    }
    int StuList::SelectStu(string _name)
    {
    	int temp=-1;
    	for(int i=1;i<=length;i++)
    	{
    		if(s[i].name==_name){temp=i;break;}
    	}
    	if(temp==-1){return -1;}
    	else {return s[temp].id;}
    }
    void StuList::PrintStu()
    {
    	cout<<"length="<<length<<endl;
    	for(int i=1;i<=length;i++)
    	{
    		cout<<s[i].id<<'\t'<<s[i].name<<endl;
    	}
    }

    然后相对应的main函数Cpp文件如下所示

    /*2014-3-12 学生管理系统 顺序表*/
    
    #include<cstdio>
    #include"hTest1_1.h"
    #include<iostream>
    #include<string>
    using namespace std;
    //选择的人性化界面提示
    void Choice(StuList &sl)
    {
    	int flag=true;
    	while(flag)
    	{
    		cout<<"请选择您所需要的服务1-增加 2-删除(按ID) 3-删除(按姓名) 4-查询(按ID) "<<endl<<"5-查询(按姓名) 6-修改(按姓名) 7-排序(按ID 降序)  8-输出显示 9-退出"<<endl;
    		int choice=0,id=0;
    		string name="";
    		cin>>choice;
    		switch(choice)
    		{
    		  case 1:
    			  {
    				  cout<<"请输入需要的添加的 ID 和 Name"<<endl;
    				  cin>>id>>name;
    				  (sl).AddStu(id,name);break;
    			  }
    		  case 2:
    			  {
    				  cout<<"请输入需要删除的ID号"<<endl;
    				  cin>>id;
    				  sl.DeleteStu(id);
    				  break;
    			  }
    		  case 3:
    			  {
    				  cout<<"请输入需要删除的人的姓名"<<endl;
    				  cin>>name;
    				  sl.DeleteStu(name);
    				  break;
    			  }
              case 4:
    			  {
    				  cout<<"请输入需要查询的人的ID"<<endl;
    				  cin>>id;
    				  cout<<"ID:"<<id<<" 姓名:"<<sl.SelectStu(id)<<endl;
    				  break;
    			  }
    		  case 5:
    			  {
    				  cout<<"请输入需要查询的人的名字"<<endl;
    				  cin>>name;
    				  cout<<"姓名:"<<name<<" ID:"<<sl.SelectStu(name)<<endl;
    				  break;
    			  }
    		  case 6:
    			  {
    				  cout<<"请输入需要修改的人的姓名 和 修改后的ID号"<<endl;
    				  //Getline();
    				  cin>>name;
    				  cin>>id;//为什么会出问题 读取String类型需要注意的事项
    				  sl.ChangeID(id,name);
    				  sl.SortStu();
    				  sl.PrintStu();
    				  break;
    			  }
    		  case 7:
    			  {
    				  sl.SortStu();
    				  sl.PrintStu();
    				  break;
    			  }
    		  case 8:{sl.PrintStu();break;}
    		  case 9:{flag=0;break;}
    		}
    		cout<<endl;
    	}
    }//选择的人性化界面
    int main()
    {
    	Student s[3]={{"张三",12},{"李四",25},{"王五",8}};注意数组的尾数 下标
    	StuList sl(3,s);
    	//sl.PrintStu();
    	Choice(sl);
    	return 1;
    }
    
    


     


     

    展开全文
  • 对于前面的内容暂时概不罗嗦 直接进入正题 首先是类库和头文件 #include #include using namespace std; //直接定义一个Stuent类为一个结点 class Student { public:; string name; int id;...

    对于前面的内容暂时概不罗嗦

    直接进入正题

    首先是类库和头文件

    #include<iostream>
    #include<string>
    using namespace std;
    //直接定义一个Stuent类为一个结点
    class Student
    {
     public:;
    	string name;
    	int id;
    };
    class NodeStu
    {
    public :Student stu;
    		NodeStu *prior;
    		NodeStu *after;
    		NodeStu(int _id=0,string _name="")
    		{
    			stu.id=_id;
    			stu.name=_name;
    			prior=NULL;
    			after=NULL;
    		}
    
    };
    class LinkStu
    {
    private:
    	NodeStu *head;
    	int length;
    public :
    	LinkStu()
    	{
    		head=NULL;
    		length=0;
    	}
    	void CreateLink(int ,Student s[]);
    	string SelectLinkByID(int );
    	void AddLink(int ,string);
    	void DeleteLinkByID(int );
    	void ChangeLinkByID(int ,string);
    	void PrintLink();
    };
    void LinkStu::CreateLink(int _length,Student s[])
    {
    	NodeStu *p;
    	p=head=new NodeStu();
    	length=_length;
    	for(int i=1;i<=length;i++)
    	{
    		(*p).after=new NodeStu(s[i-1].id,s[i-1].name);
    		(*(*p).after).prior=p;
    		p=(*p).after;
    	}
    }
    void LinkStu::PrintLink()
    {
    	NodeStu *p=head;
    	p=(*p).after;
    	cout<<"length="<<length<<endl;
    	while(p)
    	{
    		cout<<(*p).stu.id<<"  "<<(*p).stu.name<<endl;
    		p=(*p).after;
    	}
    	cout<<endl;
    }
    void LinkStu::AddLink(int _id,string _name)
    {
    	NodeStu *p=head;
    	p=(*p).after;
    	//WRONG PRIOR 已改正 需要注意一下
    	if(_id<(*p).stu.id)
    	{
              
    		   NodeStu *temp=head,*temp2=(*head).after;
    		   (*head).after=new NodeStu(_id,_name);
    			(*(*head).after).prior=NULL;
    			(*(*head).after).after=(temp2);
    			//(*(*p).after).after=(*temp).after;
    			(*temp2).prior=(*head).after;
    			length++;
    			return ;
    	}
    	while(p)
    	{
    		if((*p).after==NULL)
    		{
    			(*p).after=new NodeStu(_id,_name);
    			(*(*p).after).prior=p;
    			p=(*p).after;
    			length++;
    			return;
    		}
    		if(((*p).stu.id<_id)&&((*(*p).after).stu.id>_id))
    		{
    			NodeStu *temp=p,*temp2=(*p).after;
    			(*p).after=new NodeStu(_id,_name);
    			(*(*p).after).prior=p;
    			(*(*p).after).after=(temp2);
    			//(*(*p).after).after=(*temp).after;
    			p=(*p).after;
    			(*(*temp).after).prior=p;
    			length++;
    			return ;
    		}
    		p=(*p).after;
    	}
    }
    void LinkStu::DeleteLinkByID(int _id)
    {
    	NodeStu *p=head;
    	p=(*p).after;
    	while(p)
    	{
    		if((*p).stu.id==_id)
    		{
    		    if((*p).after==NULL){(*(*p).prior).after=NULL;length--;return;}
    			else
    			{
    				NodeStu *tPrior,*tAfter;
    			    tPrior=(*p).prior;
    			    tAfter=(*p).after;
    				//cout<<(*p).stu.id<<endl;
    				//cout<<(*(*p).prior).stu.id<<endl;
    				//cout<<(*tPrior).stu.id<<endl;
    				//cout<<(*tAfter).stu.id<<endl;
    			    (*tPrior).after=tAfter;
    			    (*tAfter).prior=tPrior;
    				length--;
    			    //(*(*p).after).prior=(*p).prior;
    			    //(*(*p).prior).after=(*p).after;
    			    return;
    			}
    		}
    		p=(*p).after;
    	}
    }
    void LinkStu::ChangeLinkByID(int _id,string _name)
    {
    	NodeStu *p=head;
    	p=(*p).after;
    	while(p)
    	{
    		if((*p).stu.id==_id){(*p).stu.name=_name;break;}
    		p=(*p).after;
    	}
    }
    string LinkStu::SelectLinkByID(int _id)
    {
    	NodeStu *p=head;
    	string goalName="";
    	p=(*p).after;
    	while(p)
    	{
    		if((*p).stu.id==_id){goalName=(*p).stu.name;break;}
    		p=(*p).after;
    	}
    	if(goalName==""){return "";}
    	else {return goalName;}
    }


     

    然后是main函数

    #include<iostream>
    #include<string>
    #include"hTest1_2.h"
    using namespace std;
    void Choice(LinkStu &ls)
    {
    	int flag=true;
    	while(flag)
    	{
    		cout<<"请选择您所需要的服务1-增加 2-删除(按ID)  3-查询(按ID)  4-修改(按ID)  5-输出显示 6-退出"<<endl;
    		int choice=0,id=0;
    		string name="";
    		cin>>choice;
    		switch(choice)
    		{
    		  case 1:
    			  {
    				  cout<<"请输入需要的添加的 ID 和 Name"<<endl;
    				  cin>>id>>name;
    				  (ls).AddLink(id,name);break;
    			  }
    		  case 2:
    			  {
    				  cout<<"请输入需要删除的ID号"<<endl;
    				  cin>>id;
    				  ls.DeleteLinkByID(id);
    				  break;
    			  }
              case 3:
    			  {
    				  cout<<"请输入需要查询的人的ID"<<endl;
    				  cin>>id;
    				  cout<<"ID:"<<id<<" 姓名:"<<ls.SelectLinkByID(id)<<endl;
    				  break;
    			  }
    		  case 4:
    			  {
    				  try
    				{
    				  cout<<"请输入需要修改的人的ID 和 修改后的名字"<<endl;
    				  //Getline();
    				  cin>>id;
    				  cin>>name;//为什么会出问题 读取String类型需要注意的事项
    				  ls.ChangeLinkByID(id,name);
    				  //sl.SortStu();
    				  //ls.PrintLink();
    				  break;
    				 }
    				  catch(exception ex){}
    			  }
    		  case 5:
    			  {
    				  ls.PrintLink();
    				  break;
    			  }
    		  case 6:{flag=0;break;}
    		}
    		cout<<endl;
    	}
    }
    int  main()
    {
    	Student s[3]={{"张三",12},{"李四",25},{"王五",88}};
    	LinkStu ls;
    	ls.CreateLink(3,s);
    	Choice(ls);
    	//ls.PrintLink();
    	//ls.AddLink(7," adc");
    	//ls.PrintLink();
    	//ls.AddLink(14,"qunima");
    	//ls.PrintLink();
    	//ls.DeleteLinkByID(12);
    	//ls.PrintLink();
    	//ls.ChangeLinkByID(25,"sanba");
    	//ls.PrintLink();
    	//cout<<endl<<ls.SelectLinkByID(25)<<endl;
    	return 1;
    }

    PS:可能关于指针的部分有点混乱,大家将就看吧...

    展开全文
  • * 学生管理系统 * 实现类: * iD * 名字 * 年龄 * 性别 * 成绩 */ private int iD; private String name; private int age; private char gender; private int score; // 无参构造方法 ...

    实体类:

    package com.mhj.student.entity;
    
    public class Student {
    	/**
    	 * 学生管理系统
    	 *  实现类:
    	 *  iD
    	 *  名字
    	 *  年龄
    	 *  性别
    	 *  成绩
    	 */
    	private int iD;
    	private String name;
    	private int age;
    	private char gender;
    	private int score;
    	
    	// 无参构造方法
    	public Student() {}
    
    	// 成员变量初始化
    	public Student(int iD, String name, int age, char gender, int score) {
    		super();
    		this.iD = iD;
    		this.name = name;
    		this.age = age;
    		this.gender = gender;
    		this.score = score;
    	}
    
    	// get(查询)和set(修改)方法
    	public int getiD() {
    		return iD;
    	}
    
    	public void setiD(int iD) {
    		this.iD = iD;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public int getAge() {
    		return age;
    	}
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    	public char getGender() {
    		return gender;
    	}
    
    	public void setGender(char gender) {
    		this.gender = gender;
    	}
    
    	public int getScore() {
    		return score;
    	}
    
    	public void setScore(int score) {
    		this.score = score;
    	}
    	
    	/**
    	 * 使用System.out.println打印展示Student类对象时
    	 * 是直接自动调用toString方法,展示该方法返回String字符串内容
    	 */
    	@Override
    	public String toString() {
    		return "Student [id=" + iD + ", name=" + name + ", age=" + age + ", gender=" + gender + ", score=" + score
    				+ "]"; 
    	}
    	
    	// 展示对象属性
    	public void mprint() {
    		System.out.println(" id : " + iD + ", 名字  : " + name + ", 年龄 : " + age +", 性别 : " 
    		+ gender +", 成绩  : " + score);
    	}
    }
    

    管理类

    package com.mhj.student.manager;
    
    import java.util.Scanner;
    
    import com.mhj.student.entity.Student;
    
    public class StudentManager {
    	/**
    	 * 新建对象数组 初始化为null
    	 * 
    	 * 推荐使用private修饰 类内操作该数组
    	 */
    	private Student[] allStus = null;
    	
    	/**
    	 * 定义一个类内使用的静态常量,名字叫做DEFAULT_CAPACITY
    	 * 用来初始化数组容量
    	 */
    	private static final int DEFAULT_CAPACITY = 10;
    	
    	/*
    	 * int数组容量的最大值,
    	 */
    	private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
    	
    	// 无参构造方法
    	public StudentManager() {
    		// 用户如不初始化数组容量,则在创建对象时先给予数组一个容量
    		allStus = new Student[DEFAULT_CAPACITY];
    	}
    	
    	/**
    	 * 用户指定初始化对象数组的容量,但数组的容量不能小于0且不能大于MAX_ARRAY_SIZE
    	 * @param newCapacity 这是用户需要的数组容量个数
    	 */
    	// 公开的构造方法 ,参数是用户需要的数组容量
    	public StudentManager(int newCapacity) {
    		// 判断用户输入的是否合法
    		if(newCapacity < 0 || newCapacity > MAX_ARRAY_SIZE) {
    			System.out.println("越界!!!");
    			System.exit(0);
    		}
    		// 如果容量没有越界则将容量扩展至用户需要的容量
    		allStus = new Student[newCapacity];
    	}
    	
    	private int size = 0;
    	//添加加学生对象的方法
    	/**
    	 * 添加学生对象的方法size为保存对象的下标位置
    	 * 
    	 * @param stu 添加保存的对象
    	 * @return 添加成功返回true
    	 */
    	public boolean add(Student stu) {
    		
    		if(size == allStus.length) {
    			System.out.println("扩容");
    			grow(size + 1);
    		}
    		
    		allStus[size] = stu;
    		size += 1;
    		
    		return true;
    	}
    	
    	/*
    	 * 但是目前有一个问题, 如果用户不指定容量,初始容量对象只能储
    	 * 10个,这里需要一个扩容的方法,
    	 */
    	/**
    	 * 该方法是用来扩展allStus数组的方法,通过拷贝,更换首地址来完成扩容
    	 * 
    	 * @param minCapacity 需要至少要扩容到多少容量
    	 */
    	private void grow(int minCapacity) {
    		// 获取旧数组的容量
    		int oldCapacity = allStus.length;
    		
    		// 创建新数组,扩容百分之五十左右
    		int newCapacity = oldCapacity + oldCapacity / 2;
    		
    		// 判断新数组容量是否足够
    		if(newCapacity < minCapacity) {
    			newCapacity = minCapacity;
    		}
    		
    		// 判断当前数组容量是否超出了MAX_ARRAY_SIZE
    		if(newCapacity > MAX_ARRAY_SIZE) {
    			// 如果超出范围则退出程序,目前而言,后期可抛出异常
    			System.exit(0);
    		}
    		
    		// 新建数组作来拷贝旧数组的内容
    		Student[] temp = new Student[newCapacity];
    		
    		// 拷贝数组
    		for (int i = 0; i < oldCapacity; i++) {
    			temp[i] = allStus[i];
    		}
    		
    		// allStus保存新数组的首地址
    		allStus = temp;
    	}
    	
    	
    	// 根据对应的ID号删除指定学生
    	public boolean remove(int iD) {
    		
    		// 设定一个负数假设没有对应的id
    		// 遍历所有对象 如果找到对应id的对象,以index保存下标位置
    		int index = findIndexById(iD);
    		 
    		// 判断如果没找到则返回false
    		if (index < 0) {
    			System.out.println("未找到");
    			return false;
    		}
    		
    		// 删除操作:将要删除学生的对象被后面的覆盖,起始位置是index,以此类推,
    		/*
    		 * 
    		 */
    		for (int i = index; i < size; i++) {
    			allStus[i] = allStus[i + 1];
    		}
    		
    		// 原来最后一个对象赋值为null
    		allStus[size - 1] = null;
    		
    		size -= 1;
    		
    		return true;
    	}
    	
    	/**
    	 * 该方法是展示所有数组中对象保存属性的方法
    	 */
    	public void print() {
    		for (int i = 0; i < size; i++) {
    			allStus[i].mprint();
    		}
    	}
    	
    	/**
    	 * 该方法是通过用户给出的ID寻找对应的对象
    	 * 
    	 * @param id 需要寻找对象的id
    	 * @return 返回需要寻找的对象
    	 */
    	public Student get(int id) {
    		
    		/*
    		 * 调用类内私有化方法findIndexById
    		 * 以index接收下标位置
    		 */
    		int index = findIndexById(id);
    		
    		if (index < 0) {
    			System.out.println("未找到");
    			return null;
    		}
    		allStus[index].mprint();
    		return allStus[index];
    	}
    	
    	/**
    	 * 该方法是类内私有化方法,用于寻找ID所对应对象的下标位置然后作为返回值供
    	 * 其他方法使用
    	 * 
    	 * @param id 需要寻找的id
    	 * @return 返回寻找到的下标位置
    	 */
    	private int findIndexById(int id) {
    		// 初始化一个变量,假设要寻找的id不存在
    		int index = -1;
    		
    		// 以for循环遍历整个数组,寻找对应id的对象下标位置
    		for (int i = 0; i < size; i++) {
    			if (id == allStus[i].getiD()) {
    				index = i;
    				break;
    			}
    		}
    		return index;
    	}
    	
    	/**
    	 * 该方法是修改对应id的学生信息的方法
    	 * @param id 需要修改学生的id
    	 * @return 修改成功返回true,失败返回false
    	 */
    	public boolean modify(int id) {
    		// 调用类内get方法
    		Student stu = get(id);
    		
    		// 判断对象的值是否为null
    		if (null == stu) {
    			System.out.println("id信息有误");
    			return false;
    		}
    		
    		// 创建一个Scanner对象
    		Scanner sc = new Scanner(System.in);
    		
    		int choose = 0;
    		
    		// 以while循环完成修改信息
    		while (choose != 5) {
    			System.out.println("id" + stu.getiD());
    			System.out.println("名字" + stu.getName());
    			System.out.println("年龄" + stu.getAge());
    			System.out.println("性别" + stu.getGender());
    			System.out.println("成绩" + stu.getScore());
    			
    			// 功能提示
    			System.out.println("1 : 修改姓名 ");
    			System.out.println("2 :修改年龄 ");
    			System.out.println("3 : 修改性别" );
    			System.out.println("4 : 修改成绩 ");
    			System.out.println("5 : 退出程序");
    			
    			choose = sc.nextInt();
    			sc.nextLine();
    			
    			// 以switch选择要操作的内容
    			switch (choose) {
    			case 1:
    				System.out.println("请输入要修改的名字");
    				String name = sc.nextLine();
    				stu.setName(name);
    				
    				break;
    			case 2:
    				System.out.println("请输入要修改的年龄");
    				int age = sc.nextInt();
    				stu.setAge(age);
    				
    				break;
    			case 3:
    				System.out.println("请输入要修改的性别");
    				char gender = sc.nextLine().charAt(0);
    				stu.setGender(gender);
    				
    				break;
    			case 4:
    				System.out.println("请输入要修改的成绩");
    				int score = sc.nextInt();
    				stu.setScore(score);
    				
    				break;
    			case 5:
    				System.out.println("保存退出");
    				
    				break;
    
    			default:
    				System.out.println("输入有误");
    				break;
    			}
    		}
    		// 修改成功返回true
    		return true;
    	}
    	
    	/**
    	 * 该方法是降序排序学生成绩的方法
    	 * 通过学生成绩降序排序展示学生的信息
    	 */
    	public void scoreSortDesc() {
    		// 该方法不可随意操作对象数组的顺序,所以重新定义一个对象数组
    		Student[] sortTemp = new Student[size];
    		
    		// 拷贝数组内容
    		for (int i = 0; i < sortTemp.length; i++) {
    			sortTemp[i] = allStus[i];
    		}
    			
    		for (int i = 0; i < sortTemp.length; i++) {
    			// index用来保存下标用于交换
    			int index = i;
    				
    			for (int j = i + 1; j < sortTemp.length; j++) {
    				if (sortTemp[index].getScore() > sortTemp[j].getScore()) {
    					index = j;
    				}
    			}
    			// 定义一个临时对象来交换
    			if (index != i) {
    				Student stu = sortTemp[index];
    				sortTemp[index] = sortTemp[i];
    				sortTemp[i] = stu;
    			}
    		}
    		// 展示保存后的效果
    		for (int i = 0; i < sortTemp.length; i++) {
    			sortTemp[i].mprint();
    		}
    	}
    		
    }
    

    测试

    package com.mhj.student.system;
    
    import java.util.Scanner;
    
    import org.junit.Test;
    
    import com.mhj.student.entity.Student;
    import com.mhj.student.manager.StudentManager;
    
    public class TestGrow {
    	public static void main(String[] args) {
    		
    		StudentManager stu = new StudentManager();
    		
    		// 测试
    		for (int i = 0; i < 15; i++) {
    			Student stm = new Student();
    			
    			stm.setiD(i + 1);
    			stm.setName("吴彦祖" + i);
    			stm.setAge(10 + i * 2);
    			stm.setGender('男');
    			stm.setScore(60 + i * 2);
    			
    			stu.add(stm);
    		}
    		
    		Scanner sc = new Scanner(System.in);
    		int choose = 0;
    		int id = 0;
    		
    		while (choose != 7) {
    			System.out.println("1 : 添加新学生");
    			System.out.println("2 :删除指定id学生");
    			System.out.println("3 : 修改指定id学生");
    			System.out.println("4 :查询指定id学生");
    			System.out.println("5 : 查询所有学生");
    			System.out.println("6 : 按照程序降序排序");
    			System.out.println("7 : 退出程序");
    			
    			choose = sc.nextInt();
    			sc.nextLine();
    			
    			switch (choose) {
    			case 1:
    				stu.add (new Student( 0, " ", 0, ' ', 0));
    				break;
    			case 2:
    				System.out.println("请输入要删除学生的ID");
    				id = sc.nextInt();
    				
    				stu.remove(id);
    				break;
    			case 3:
    				System.out.println("请输入要修改学生的id");
    				id = sc.nextInt();
    				
    				stu.modify(id);
    				break;
    			case 4:
    				System.out.println("请输入要查询学生的id");
    				id = sc.nextInt();
    				
    				stu.get(id);
    				break;
    			case 5:
    				stu.print();
    				
    				break;
    			case 6:
    				stu.scoreSortDesc();
    				break;
    			case 7:
    				System.out.println("程序结束...");
    				break;
    
    			default:
    				System.out.println("输入有误,请重新输入");
    				break;
    			}
    		}
    	}
    }
    
    

    项目后期内容

    1. 数据持久化保存
      IO操作文件内容 String字符串解析
    2. Sout界面分离
      除了viewer层,其他任何代码中不能出现任何一个Sout
    3. 排序算法优化
      可以让排序方法能够根据用户指定条件进行排序操作
    4. 自定义异常添加
      优化代码中错误提示和处理过程
    5. 数据根据条件过滤展示
      根据用户指定条件,过滤展示对应的数据
    展开全文
  • ***********************************学生管理************************************\n\n " ); printf( " *******************************************************************************\n\n " ); printf( ...
    #include "stdio.h"
    #define MAX_SIZE 11
    #include "stdlib.h"
    #include "malloc.h" 
    #include "string.h" 
    typedef struct 
     {
         int id;
         char name[10];
         char sex;
         float math_score;
         float chinese_score;
         float other_score;
         char address[30];
         char contact[20];
     }Student;
     typedef struct
     {
         Student data[MAX_SIZE];
         int last;
     }SeqList; 
    
    int getNo(SeqList *SL)
     { 
         int i ,ch=1,j;    
          int no; 
          while(1) 
        { 
            
            printf("请输入学号1000-9999:");
               scanf("%d",&no); 
            for(i=1;i<=SL->last;i++)
            {      
                if(no==SL->data[i].id||no<1000||no>9999)
                    {
                     printf("输入错误或学号重复!\n");ch=0;break;
                    }
                    else
                    {
                        ch=1;
                    }
    
            }
            if(ch==1)return no;    
        } 
    
    }
    
    char getSex()
    
    {  
      char sex;
      while(1)
      {
        fflush(stdin);
        printf("请输入性别(M或F):");
        scanf("%c",&sex);  
        if(sex=='M'||sex=='F'||sex=='m'||sex=='f')
           break;
        else
          printf("输入错误,您只能输入字符M(男)或者F(女)!\n");       
      }
      return sex;
     } 
     float get_math(SeqList *SL)
     {
         float math;
        while(1)
        {
            printf("请输入数学成绩0-100:");
            scanf("%f",&math);
            if(math>=0.0&&math<=100)break;
            printf("输入错误,请重新输入!\n");
        }
        return math;
     }
     float get_chinese(SeqList *SL)
     {
         float math;
        while(1)
        {
            printf("请输入语文成绩0-100:");
            scanf("%f",&math);
            if(math>=0.0&&math<=100)break;
            printf("输入错误,请重新输入!\n");
        }
        return math;
     }
     float get_other(SeqList *SL)
     {
         float math;
        while(1)
        {
            printf("请输入其他成绩0-100:");
            scanf("%f",&math);
            if(math>=0.0&&math<=100)break;
            printf("输入错误,请重新输入!\n");
        }
        return math;
     }
    Student getStudent(SeqList *SL) // 顺序表的输入 
    {
        Student s1;
        s1.id = getNo(SL);
        printf("请输入姓名:");
        scanf("%s",s1.name);
        s1.math_score=get_math(SL);
        s1.chinese_score=get_chinese(SL); 
        s1.other_score=get_other(SL); 
        s1.sex = getSex();
        printf("请输入地址:");
        scanf("%s",s1.address);
        printf("请输入联系方式:");
        scanf("%s",s1.contact);
        return s1;
    } 
     menu()     //菜单 
     {
             system("cls");
             printf("*******************************************************************************\n\n");
             printf("***********************************学生管理************************************\n\n");
             printf("*******************************************************************************\n\n");
    
             printf("\t\t\t      1.输入学生信息\n");
             printf("\t\t\t      2.输出学生信息\n");
             printf("\t\t\t      3.删除学生信息\n");
             printf("\t\t\t      4.插入学生信息\n");
             printf("\t\t\t     5.查找学生信息\n");
             printf("\t\t\t     6.修改学生信息\n");
             printf("\t\t\t     7.保存学生信息\n");
             printf("\t\t\t     8.退出学生信息\n");
             
    
     }
     SeqList  * init_SeqList() //初始化 
    { 
        SeqList   *L;
       L = (SeqList  *) malloc (sizeof(SeqList));//申请空间 
       L ->last =0; 
       return  L; 
    }
    int  isFull(SeqList *SL)//是否为满 
     { 
        if(SL->last == MAX_SIZE)
        {  printf("满了,加不了啦!\n"); 
           return 1; 
        } 
        return 0;
    }
     add_SeqList(SeqList *SL)//输入学生信息 
     {
        if(isFull(SL)) 
        {
            printf("抱歉没有空间添加!");
            return ;
        }
        else
        { 
            SL->last++;
            SL->data[SL->last]=getStudent(SL);  
            printf("添加成功");
        }
     }
     show_SeqList(SeqList *SL)//输出学生信息 
     {
        int i;
        Student *L;
        char s[4],ch_[30];    
        if(SL->last==0)  //是否为空
        {
            printf("没有数据!");
            return;
        }  
        else
        for(i=1;i<=SL->last;i++)
        {   
            printf("\t\t\t学号:%d\n\t\t\t姓名:%s \n\t\t\t性别:%c  \n\t\t\t数学分数:%.2f\n\t\t\t语文分数:%.2f\n\t\t\t其他分数:%.2f \n\t\t\t地址:%s\n\t\t\t联系方式%s\n\n\n",SL->data[i].id,SL->data[i].name,SL->data[i].sex,SL->data[i].math_score,SL->data[i].chinese_score,SL->data[i].other_score,SL->data[i].address,SL->data[i].contact);
        }                                                                                                                                                                                  
        
     }
     delet_SeqList(SeqList *SL) // 删除学生信息 
     {
         int i,ch,id=0;
         char ch_;
         char ch_id[30];
             printf("\t\t\t请输入您要删除方式:\n");
             printf("\t\t1.学号删除:\n");
             printf("\t\t2.姓名删除:\n");
             printf("\t\t3.地址删除:\n");
             printf("\t\t4.手机号删除:\n");
             printf("\t\t5.返回\n");
             scanf("%d",&ch);
             if(ch==1)
            {
                printf("请输入您要删除信息的学号:");
                scanf("%d",&ch);
             for(i=1;i<=SL->last;i++)
                 {
                     if(ch==SL->data[i].id)
                     {
                         system("cls");
                         fflush(stdin);
                         printf("\t\t\t学号:%d\n\t\t\t姓名:%s \n\t\t\t性别:%c  \n\t\t\t数学分数:%.2f\n\t\t\t语文分数:%.2f\n\t\t\t其他分数:%.2f \n\t\t\t地址:%s\n\t\t\t联系方式%s\n\n\n",SL->data[i].id,SL->data[i].name,SL->data[i].sex,SL->data[i].math_score,SL->data[i].chinese_score,SL->data[i].other_score,SL->data[i].address,SL->data[i].contact);
                        printf("确定删除y/n?\n");
                        scanf("%c",&ch_);
                        if(ch_=='y'||ch_=='Y')
                        {
                            SL->data[i]=SL->data[i+1];
                            SL->last--;
                             printf("删除成功!");
                         }
                         id++;
                    }  
                }
                if(id==0)printf("没有该学生信息!");
            }
            else if(ch==2)
            {
                printf("请输入您要删除信息的姓名:");
                scanf("%s",ch_id);
                for(i=1;i<=SL->last;i++)
                {        
                    if(strcmp(ch_id,SL->data[i].name)==0)
                    {
                        system("cls");
                         fflush(stdin);
                         printf("\t\t\t学号:%d\n\t\t\t姓名:%s \n\t\t\t性别:%c  \n\t\t\t数学分数:%.2f\n\t\t\t语文分数:%.2f\n\t\t\t其他分数:%.2f \n\t\t\t地址:%s\n\t\t\t联系方式%s\n\n\n",SL->data[i].id,SL->data[i].name,SL->data[i].sex,SL->data[i].math_score,SL->data[i].chinese_score,SL->data[i].other_score,SL->data[i].address,SL->data[i].contact);
                        printf("确定删除y/n?\n");
                        scanf("%c",&ch_);
                        if(ch_=='y'||ch_=='Y')
                        {
                            SL->data[i]=SL->data[i+1];
                            SL->last--;
                             printf("删除成功!");
                         }
                         id++;
                     }
                         
                } 
                    if(id==0)printf("没有该学生信息!"); 
            }
            else if(ch==3)
            {
                printf("请输入您要删除信息的地址:");
                scanf("%s",ch_id);
             for(i=1;i<=SL->last;i++)
                 {
                     if(strcmp(ch_id,SL->data[i].address)==0)
                     {
                         system("cls");
                         fflush(stdin);
                         printf("\t\t\t学号:%d\n\t\t\t姓名:%s \n\t\t\t性别:%c  \n\t\t\t数学分数:%.2f\n\t\t\t语文分数:%.2f\n\t\t\t其他分数:%.2f \n\t\t\t地址:%s\n\t\t\t联系方式%s\n\n\n",SL->data[i].id,SL->data[i].name,SL->data[i].sex,SL->data[i].math_score,SL->data[i].chinese_score,SL->data[i].other_score,SL->data[i].address,SL->data[i].contact);
                        printf("确定删除y/n?\n");
                        scanf("%c",&ch_);
                        if(ch_=='y'||ch_=='Y')
                        {
                            SL->data[i]=SL->data[i+1];
                            SL->last--;
                             printf("删除成功!");
                         }
                         id++;
                    }  
                }
                if(id==0)printf("没有该学生信息!");
            }
            else if(ch==4)
            {
                printf("请输入您要删除信息的手机号:");
                scanf("%s",ch_id);
             for(i=1;i<=SL->last;i++)
                 {
                 if(strcmp(ch_id,SL->data[i].contact)==0)
                     {
                         system("cls");
                         fflush(stdin);
                         printf("\t\t\t学号:%d\n\t\t\t姓名:%s \n\t\t\t性别:%c  \n\t\t\t数学分数:%.2f\n\t\t\t语文分数:%.2f\n\t\t\t其他分数:%.2f \n\t\t\t地址:%s\n\t\t\t联系方式%s\n\n\n",SL->data[i].id,SL->data[i].name,SL->data[i].sex,SL->data[i].math_score,SL->data[i].chinese_score,SL->data[i].other_score,SL->data[i].address,SL->data[i].contact);
                        printf("确定删除y/n?\n");
                        scanf("%c",&ch_);
                        if(ch_=='y'||ch_=='Y')
                        {
                            SL->data[i]=SL->data[i+1];
                            SL->last--;
                             printf("删除成功!");
                         }
                         id++;
                    }  
                }
                if(id==0)printf("没有该学生信息!");
            }
                else
        {
            printf("按任意键返回");return; 
        } 
        
    
             return 1;
     } 
     insert_SeqList(SeqList *SL,int i )//插入学生信息 
     {
            printf("输入你要插入的位置:");
            scanf("%d",&i);
            int j;
            if(i<1||i>SL->last)
            {
                printf("插入的序号有错");
                return 0;}
            for(j=i;j<SL->last;j++)
                SL->data[j+1]=SL->data[j];
            SL->data[i]=getStudent(SL);
            printf("插入成功");
            SL->last++;  
            return 1;
     }
     find_SeqList(SeqList *SL) //查找学生信息 
     {
         int i,ch ,id=0;
         char ch_[10]; 
         if(SL->last==0) 
        {
            printf("没有数据!查找不了!");
            return;
        }  
         printf("\t\t\t请输入您要查找的学生的方式:\n");
         printf("\t\t1.学号查找:\n");
         printf("\t\t2.姓名查找:\n");
         printf("\t\t3.地址查找:\n");
         printf("\t\t4.手机号查找:\n");
         printf("\t\t5.返回\n");
        scanf("%d",&ch);
        if(ch==1)
        {
            
            printf("请输入学号:\n");
            scanf("%d",&ch);
             for(i=1;i<=SL->last;i++)
                if(ch==SL->data[i].id)
                    {
                        printf("\t\t\t学号:%d\n\t\t\t姓名:%s \n\t\t\t性别:%c  \n\t\t\t数学分数:%.2f\n\t\t\t语文分数:%.2f\n\t\t\t其他分数:%.2f \n\t\t\t地址:%s\n\t\t\t联系方式%s\n\n\n",SL->data[i].id,SL->data[i].name,SL->data[i].sex,SL->data[i].math_score,SL->data[i].chinese_score,SL->data[i].other_score,SL->data[i].address,SL->data[i].contact);
                         id++;
                    }
                if(id==0)printf("无法查到!"); 
                    
            
            
        }
        else if(ch==2)
        {
            printf("请输入姓名:\n");
            scanf("%s",ch_);
            for(i=1;i<=SL->last;i++)
                if(strcmp(SL->data[i].name,ch_)==0)
                    {
                        printf("\t\t\t学号:%d\n\t\t\t姓名:%s \n\t\t\t性别:%c  \n\t\t\t数学分数:%.2f\n\t\t\t语文分数:%.2f\n\t\t\t其他分数:%.2f \n\t\t\t地址:%s\n\t\t\t联系方式%s\n\n\n",SL->data[i].id,SL->data[i].name,SL->data[i].sex,SL->data[i].math_score,SL->data[i].chinese_score,SL->data[i].other_score,SL->data[i].address,SL->data[i].contact);
                         id++;
                }
            if(id==0)printf("无法查到!"); 
        
        }
        else if(ch==3)
        {
            printf("请输入地址:\n");
            scanf("%s",ch_);
            for(i=1;i<=SL->last;i++)
                if(strcmp(SL->data[i].address,ch_)==0)
                    {
                        printf("\t\t\t学号:%d\n\t\t\t姓名:%s \n\t\t\t性别:%c  \n\t\t\t数学分数:%.2f\n\t\t\t语文分数:%.2f\n\t\t\t其他分数:%.2f \n\t\t\t地址:%s\n\t\t\t联系方式%s\n\n\n",SL->data[i].id,SL->data[i].name,SL->data[i].sex,SL->data[i].math_score,SL->data[i].chinese_score,SL->data[i].other_score,SL->data[i].address,SL->data[i].contact);
                         id++;
                    }
            if(id==0)printf("无法查到!"); 
        }
        else if(ch==4)
        {
            printf("请输入手机号:\n");
            scanf("%s",ch_);
            for(i=1;i<=SL->last;i++)
                if(strcmp(SL->data[i].contact,ch_)==0)
                    {
                        printf("\t\t\t学号:%d\n\t\t\t姓名:%s \n\t\t\t性别:%c  \n\t\t\t数学分数:%.2f\n\t\t\t语文分数:%.2f\n\t\t\t其他分数:%.2f \n\t\t\t地址:%s\n\t\t\t联系方式%s\n\n\n",SL->data[i].id,SL->data[i].name,SL->data[i].sex,SL->data[i].math_score,SL->data[i].chinese_score,SL->data[i].other_score,SL->data[i].address,SL->data[i].contact);
                         id++; 
                    }
            if(id==0)printf("无法查到!");                                                                                                                                                                                                                                                                   
            
        }
        else
        {
            printf("按任意键返回");return; 
        } 
        
        
    
     }
    isEmpty(SeqList *SL)
    {
        if(SL->last == 0)
        {
            printf("没有数据!");
            return 1;
        }
        else return 0;
    }
    int opan_file(SeqList *SL)   //读取学生信息 
    {
        FILE *fp;
        if((fp=fopen("student.txt","rb"))==NULL)
        {
            printf("打开文件失败!\n");
            system("pause");
            exit(1);
        }
        do
        {
            SL->last++;
        }while(fread(&SL->data[SL->last],sizeof(Student),1,fp)==1);
        SL->last--;
        fclose(fp);    
    }
    int save_file(SeqList *SL)         //保存学生信息 
    {
           FILE *fp;
           int i;
           if((fp=fopen("student.txt","wb"))==NULL)
           {
               printf("打开文件失败\n");
               exit(1);
           }
           for(i=1;i<=SL->last;i++)
           {
               if(fwrite(&SL->data[i],sizeof(Student),1,fp))
                    printf("第%d组信息保存成功\n",i);    
           }
           fclose(fp);
    }
    
    amend(SeqList *SL)               //修改学生信息 
    {
            Student s1;
             int no,i,d=0,flag,ch;
             char name[10],address[10],contact[10]; 
             printf("请输入您要修改的学生信息学号:");
             scanf("%d",&no) ;
             for(i=1;i<=SL->last;i++)
                    if(no==SL->data[i].id)
                        {   
                            system("cls");
                            printf("\t\t\t学号:%d\n\t\t\t姓名:%s \n\t\t\t性别:%c  \n\t\t\t数学分数:%.2f\n\t\t\t语文分数:%.2f\n\t\t\t其他分数:%.2f \n\t\t\t地址:%s\n\t\t\t联系方式%s\n\n\n",SL->data[i].id,SL->data[i].name,SL->data[i].sex,SL->data[i].math_score,SL->data[i].chinese_score,SL->data[i].other_score,SL->data[i].address,SL->data[i].contact);
                             d++; 
                             flag=i;
                             
                        }
            if(d==0)
            {
                printf("没有该学生信息!");
                return 0; 
            }   
            printf("\t\t1.学号修改:\n");
            printf("\t\t2.姓名修改:\n");
            printf("\t\t3.地址修改:\n");
            printf("\t\t4.手机号修改:\n");
            printf("\t\t5.性别修改:\n");
            printf("\t\t6.语文分数修改:\n");
            printf("\t\t7.数学分数修改:\n");
            printf("\t\t8.其他分数修改:\n");
            printf("\t\t9.返回\n"); 
            printf("\t\t\t请输入您要修改的内容:\n");
            scanf("%d",&ch);
            fflush(stdin);
            if(ch==1)
            {
                 SL->data[flag].id=getNo(SL);
                 printf("修改成功 ") ;
            }
            else if(ch==2)
            {
                printf("请输入姓名:");
                scanf("%s",name);
                strcpy(SL->data[flag].name,name);
                printf("修改成功 ") ;
            }
            else if(ch==3)
            {
                  printf("请输入地址:");
                    scanf("%s",address);
                  strcpy(SL->data[flag].address,address);
                  printf("修改成功 ") ;
            }
            else if(ch==4)
            {
                printf("请输入联系方式:");
                scanf("%s",contact);
                strcpy(SL->data[flag].contact,contact);
                printf("修改成功 ") ;
            }
            else if(ch==5)
            {
                SL->data[flag].sex=getSex();
                printf("修改成功 ") ;
                
            }
            else if(ch==6)
            {
                 SL->data[flag].chinese_score=get_chinese(SL); 
                 printf("修改成功 ") ;
            }
            else if(ch==7)
            {
                 SL->data[flag].math_score=get_math(SL); 
                 printf("修改成功 ") ;
            }
            else if(ch==8)
            {
                 SL->data[flag].other_score=get_other(SL); 
                 printf("修改成功 ") ;
            }
            else
            {
                return 0;
                
            } 
            
    }
     
     main()
     {      
         SeqList *SL;
         int a,i;
         int id;
         SL=init_SeqList();
         opan_file(SL);
         while(1)
         {
             menu();
             scanf("%d",&a);
             
             if(a==1)
             {
                  add_SeqList(SL);
             } 
             else if(a==2)
             {
                   show_SeqList(SL);
                    
             }
             else if(a==3)
             {    
                  system("cls");
                 delet_SeqList(SL);
             }
             else if(a==4)
             {
                 insert_SeqList(SL, i);
             }
             else if(a==5)
             {
                  system("cls") ;
                find_SeqList(SL);
             }
             else if(a==6)
             {
                    amend(SL); 
             }
              else if(a==7)
             {
                  
                 save_file(SL);
             }  
             else return 0;
             getch();  
         }
         
         
     }

     

    转载于:https://www.cnblogs.com/doublekai/p/6555847.html

    展开全文
  • 算法与数据结构的课程设计,也可以作为C语言的课程设计使用,这个是我本科阶段自己写的课程设计。若有不足希望大家多多包涵
  • 【题目】学生宿舍管理系统 考查点:线性结构、文件操作 注意:必须使用文件存储数据,不得使用数据库管理系统。 任务:通过此系统可以实现如下功能: 录入: 可以录入宿舍情况,包括宿舍号、可容纳学生数、已容纳...
  • 学生管理系统

    2019-04-11 17:25:50
    1. 题目分析 对学生信息管理系统,要求完成以下基本任务: 1.改写程序为良好程序风格(文档注释,函数注释,语句注释)。 2.将功能补充完全(基于文件处理,完成刷新和保存...学生管理系统有九大功能,分别是帮助、...
  • 这个算法主要用在关键数字(key number)小的时候,按照关键数字排序的效率是非常高的。 比如我们有6个教室的学生需要按教室号排序,如下是学生的信息数据结构: struct StudentData { string name; int class...
  • 基于Java零基础练习排序算法实现《学生成绩管理系统》的简单小项目 声明:由于本人基础薄弱,最近在恶补Java语言能力,继上篇文章要求,发这篇练习排序算法的《学生成绩管理系统》,故利用这些小项目练习Java基础...
  • 实用文案 目 录 引言 1 系统概述 1.1 系统功能 1.2 系统作用和特点 2 需求分析 2.1 功能要求 2.2 性能要求 2.3 数据需求 2.4 开发环境 3 详细设计 3.1 登陆界面与主界面的实现 3.2 详细设计思想 3.3 系统结构体的...
  • 后续文章的排序均采用速度较快的选择排序算法。 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> enum { READ_ONLY, HIDE, SYSTEM = 55, ...
  • 学生信息管理系统——C语言版

    万次阅读 多人点赞 2019-04-06 18:07:13
    一.题目分析: 1.功能概述: 1)查询学生信息 2)添加学生信息 3)修改学生信息 4)删除学生信息 ...算法构造 1.难点解析----对文件的操作 1.1文件读取 FILE * fp; if ((fp = fopen(filename, "...
  • } printf("\n\t总共有%d条学生信息\n\n", i); } int Check(int nNumb) // 查找 { int i = 0; while (g_user[i].nNumb) { if (nNumb == g_user[i].nNumb) return 1; ++i; } return 0; } void Add() //...
  • } 学生管理系统_单向链表内操作 只实现了按学号排序SortByNumb函数,按姓名、数学成绩排序实现类似,可参考前序文章,不做赘述。 单向链表内操作,意思是排序时对链表内部数据直接进行排序,会改变链表内容。 #...
  • cout | 学生信息管理系统 |"; cout | |"; cout | ^^^^^^^^^^^^^^^^ |"; cout ------------------------------"; cout | 1.输入学生信息 |"; cout | 2.插入学生信息 |"; cout | 3.修改学生信息 |...
  • 接上篇博客【终极完美高效】C语言实用算法系列之学生管理系统_单向链表外排序_堆内数组存储链表节点指针_函数指针数组 C++中定义CStudent类 文件名:Student.h typedef struct SUser { int nNumb; char sName[20]...
  • 学生管理系统C语言

    2019-04-05 16:24:39
    第三章上机我选择的是学生信息管理系统,这个系统除了要实现增删改查四个基本功能以外还要实现文件处理,完成刷新和保存功能。 二、关键算法构造 算法流程图如图2.1所示。 三、代码构造 ...
  • 二路归并算法(2PMM)--学生管理系统

    千次阅读 2012-06-12 12:35:16
    = NULL) //如果学生数据文件存在 x = 0; else { printf("Try to open file 'student.dat',but can't find it!n"); printf("파일'student.dat'새로 만들래"); getchar(); while(1) { printf("[Y]/[N]?"); ...
  • 学生管理系统Java实现

    2020-12-18 16:39:16
    学生管理系统 文章目录学生管理系统一、项目概述二、项目初步设计1.项目总体框架2.模块划分图及描述3.类关系图4.程序流程图三、实验准备1.安装MySQL2.学习Java结构体3.排序算法4.增、查、改、删功能的实现四、可能...
  • 4、学生信息管理系统: a)录入数据时实现检查前面已经输入了该学号,阻止重复的学号被输入; b)二级子菜单的开发: a)浏览时可以按学号、姓名或成绩排序; b)查找时可以按学号、姓名或成绩分数段查找; c)将每次...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 643
精华内容 257
关键字:

学生管理系统算法