struct
Student
*create()
/*create函数定义,此函数实现创建单向动态链表*/
{
struct
Student
*head=NULL,*p1,*p2
/*head,链表的头指针;*p1,*p2,中间指针变量*/
puts("\n现在请输入学院名:")
scanf("%s",college)
puts("\n年级:")
scanf("%s",grade)
puts("\n专业和班级:")
scanf("%s",classname)
puts("\n下面请按提示依次输入数据:\n(如果要结束输入,请输入学号0)")
p1=p2=(struct
Student
*)malloc(LEN)
puts("输入第一个学生的学号:")
scanf("%ld",&p1->num)
puts("输入此学生成绩:\n英语:")
scanf("%f",&p1->score.english)
puts("数学:")
scanf("%f",&p1->score.math)
puts("计算机:")
scanf("%f",&p1->score.computer)
total_and_aver(p1)/*计算总分和平均分*/
p1->grade=mark_grade(p1)
for(p1->num!=0)
{
len++
if(len==1)
head=p1
else
p2->next=p1
p2=p1
p1=(struct
Student
*)malloc(LEN)
puts("输入下一个学生的学号:")
scanf("%ld",&p1->num)
puts("输入此学生成绩:\n英语:")
scanf("%f",&p1->score.english)
puts("数学:")
scanf("%f",&p1->score.math)
puts("计算机:")
scanf("%f",&p1->score.computer)
total_and_aver(p1)/*计算总分和平均分*/
p1->grade=mark_grade(p1)
}
p2->next=NULL
return
(head)
}
struct
Student
*del(struct
Student
*head,long
del_num)
/*del函数定义,此函数实现从现有链表中删除一个结点*/
{
struct
Student
*p1,*p2
if(head==NULL)
puts("空表,没有任何数据记录。\n")
else
{
for(p1=head!(del_num==p1->num||p1->next==NULL)p2=p1,p1=p1->next)
if(del_num==p1->num)
{
if(p1==head)head=p1->next
else
p2->next=p1->next
printf("学号为%ld学生的数据删除成功。\n",del_num)
--len
}
else
printf("未找到学号为%ld学生的记录。\n",del_num)
}
return
(head)
}
struct
Student
*insert(struct
Student
*head,struct
Student
*new_student)
/*insert函数定义,此函数实现向现有链表中插入一个结点或覆盖相同学号的数据*/
{
struct
Student
*p0=new_student,*p1=head,*p2
char
control
if(head==NULL)
{
head=p0
p0->next=NULL
puts("数据插入成功。\n")
}
else
{
for(((*p0).num>(*p1).num)&&(p1->next!=NULL)p2=p1,p1=p1->next)
if((*p0).num==(*p1).num)
{
printf("已经存在一个学号为%ld的学生的数据,要覆盖原有数据吗?\n输入
Y
=覆盖原有数据\n输入其它=保留原有数据\n",p0->num)
FFLUSH
scanf("%c",&control)
FFLUSH
switch
(control)
{
case
'Y':
case
'y':if(p1==head){head=p0p0->next=p1->next}
else
{p2->next=p0p0->next=p1->next}
puts("数据已经更新\n")break
default:break
}
len--
}
else
if((*p0).num<(*p1).num)
{
if(p1==head)head=p0
else
p2->next=p0
p0->next=p1
puts("数据插入成功。\n")
}
else
{
p1->next=p0
p0->next=NULL
puts("数据插入成功。\n")
}
}
++len
return
(head)
}
struct
Student
*sort(struct
Student
*head)
/*sort函数定义,此函数实现对链表中的数据按照平均分高低排序*/
{
struct
Student
*p1,*p2
for(p1=headp1->next!=NULLp1=p1->next)
for(p2=p1->nextp2!=NULLp2=p2->next)
{
if(p1->score.average<p2->score.average)
{
SWAP(p1->num,p2->num)
SWAP(p1->grade,p2->grade)
SWAP(p1->score.english,p2->score.english)
SWAP(p1->score.math,p2->score.math)
SWAP(p1->score.computer,p2->score.computer)
SWAP(p1->score.total,p2->score.total)
SWAP(p1->score.average,p2->score.average)
}
}
return
head
}
/*接下一楼*/
没有分啊给个思路
你需要一个小型的数据库来支撑你的需求,access就可以了。你用VC++或者C++
Builder来开发界面,建立一个小数据库,里面放一张图书的数据表就可以了,字段包括图书的编号(这对每一本图书来说都是唯一的),图书名称,图书的作者啊等等其他信息。添加图书其实就是对数据库的insert *** 作,只是在insert之前你要先查询下图书名称是否已经包含在数据库里。查询图书就是简单的对数据库select *** 作。修改图书就是对数据库进行Update *** 作,删除就是Delete了,只要你熟悉SQL,理解这些就很简单。最后的access文件就是你的图书信息表,你可以将它拷贝到任何支持office的电脑上打开查看。
//学生个人信息类#include<iostream.h>
#include<string.h>
#include<fstream.h>
#include<iomanip.h>//kjljjj
class student
{private:int maxnum//学生学号最大值
int sno//学号char name[5]
char sex[2]
int agechar birth[10]//出生日期
char folk[2]//民族
char mianmao[10]//政治面貌
char department[10]//系别
long banji//班级
char speciality[10]//专业
char address[30]//学生详细家庭住址
public:
student()~
student()
void enter()//学生信息录入函数
void display()//学生信息输出函数
void setsno(int temp)
int getsno()
char *getname()
long getbanji()
char *getspeciality()
void read()
void write()
}
student::student()
{}
student::~student()
{}
int student::getsno()
{return sno}
char *student::getspeciality()
{return speciality}
long student::getbanji()
{return banji}
void student::setsno(int temp)
{sno=temp}
char *student::getname()
{return name}
void student::display()
{cout<<setw(4)<<sno<<setw(4)<<name<<setw(4)<<sex<<setw(4)<<age<<setw(4)<<folk<<setw(8)<<birth<<setw(8)<<mianmao<<setw(8)<<department<<setw(8)<<banji<<setw(8)<<speciality<<setw(8)<<address<<endl}
void student::enter()
{ ifstream tfile("max.txt",ios::binary|ios::nocreate)
if(tfile)
{ tfile.read((char *)&maxnum,sizeof maxnum)}
else
{ maxnum=1000//学生学号初始化 } tfile.close()
sno=maxnum++
ofstream ofile("max.txt")
ofile.write((char*)&maxnum,sizeof maxnum) tfile.close()
cout<<"请输入学生信息"<<endl
cout<<"学生姓名:"<<endl
cin>>name
cout<<"性别(男(n),女(m)):"<<endl
cin>>sex while(strcmp(sex,"n")!=0&&strcmp(sex,"m")!=0)
{ cout<<"错误请重新输入!"<<endl cin>>sex }
cout<<"出生日期:"<<endl
cin>>birth
cout<<"年龄:"<<endl
cin>>age
while(age<=15||age>=50)
{ cout<<"错误请重新输入!"<<endl cin>>age}
cout<<"政治面貌(团员(a),预备党员(b),党员(c)):"<<endl
cin>>mianmao
while(strcmp(mianmao,"a")!=0&&strcmp(mianmao,"b")!=0&&strcmp(mianmao,"c")!=0)
{cout<<"错误请重新输入!"<<endl cin>>mianmao}
cout<<"民族:"<<endl cin>>folk
cout<<"系别:"<<endl cin>>department
cout<<"班级:"<<endl cin>>banji
cout<<"专业:"<<endl cin>>speciality
cout<<"家庭住址:"<<endl cin>>address}//主程序部分:#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<iomanip.h>
#include<stdlib.h>
//#include"student.h"
student stu//student 类的全局变量
void read()
{ ifstream afile("student.txt",ios::nocreate) afile.read((char*)&stu,sizeof stu)
}
void write()
{ ofstream bfile("student.txt",ios::app) bfile.write((char*)&stu,sizeof stu)}
void input(void)
{ char ch stu.enter()
write()
cout<<"你还要输入下一位学生的信息吗(Y/N)!"<<endl cin>>ch
if(ch=='Y'||ch=='y')
{ input() }}
void search()
{ int j,k,i,m=0 char ch1[5],ch2[10] cout<<"请输入你的查找类型:(1.学号 2.姓名 3.专业 4.班级)"<<endl
cin>>j
while(j<=0||j>=5)
{ cout<<"错误请重新选择!"<<endlcin>>j }
if(j==1)
{ cout<<"请输入你要查找的学生的学号:"<<endl
cin>>i
}
if(j==2)
{ cout<<"请输入你要查找的学生的姓名:"<<endl
cin>>ch1
}
if(j==3)
{
cout<<"请输入你要查找的学生所在的专业:"<<endl
cin>>ch2 }
if(j==4)
{
cout<<"请输入你要查找的学生所在的班级:"<<endl cin>>k
}
ifstream dfile("student.txt",ios::nocreate) while (dfile.good())
{
dfile.read((char *) &stu,sizeof stu)
if(i==stu.getsno()||strcmp(stu.getname(),ch1)==0||
strcmp(stu.getspeciality(),ch2)==0||k==stu.getbanji())
{
cout<<"你要查找的学生信息如下:"<<endl
cout<<setw(4)<<"学号"<<setw(4)<<"姓名"<<setw(4)<<"性别"<<setw(4)<< "年龄"<<setw(4)<<"民族"<<setw(8)<<"出生日期"<<setw(8)<<"政治面貌"<< setw(8)<<"系别"<<setw(8)<<"班级"<<setw(8)<<"专业"<<setw(8)<<"联系电话"<<setw(8)<<"家庭住址"<<endl stu.display()
i=0
k=0
m=1
return
}
}
if(m!=1)
cout<<"没有找到这名学生的信息!"<<endl
}
void output()
{
int i=0
ifstream cfile("student.txt",ios::nocreate)
while(cfile)
{
if( cfile.read((char *)&stu,sizeof stu)){stu.display() i++ } }cout<<"一共有"<<i<<"个学生信息"<<endl}void menu(){ cout<<"学号:2005132040 姓名:孟琳琳班级:通信053"<<endl
cout<<" * 学籍管理系统 *"<<endl
cout<<"*******************************************************"<<endl
cout<<" 0.退出系统 "<<endl
cout<<" 1.学生信息录入 "<<endl
cout<<" 2.学生信息查询 "<<endl
cout<<" 3.学生信息输出 "<<endl
cout<<"*******************************************************"<<endl
cout<<" 请选择以上 *** 作(0=======3) "<<endl
}
void select()//选择菜单函数
{
int ch
while(1)
{
cin>>ch
switch(ch)
{
case 0:exit(0)menu()break
case 1:input()menu()break
case 2:search()menu()break
case 3:output()menu()break
default:menu()cout<<"输入无效请重新输入(0======== 3)"<<endlbreak
}
}
}void main()
{
menu()
select()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)