永发信息网

学生寝室管理系统设计与实现 数据结构

答案:2  悬赏:80  手机版
解决时间 2021-02-07 11:13
数据结构的课程设计:"学生寝室管理系统"的设计与实现.我要用C语言写出的源代码,高人来啊.如果连上交的文档也有那就更好了.HELP~~
最佳答案
宿舍管理,没什么好玩的,就是繁琐,很多东西需要你细化,而且一般要求为交互式平台,而且选项多,出错处较多,排错就是一个相当大的工程。我写的这个里面没有太多的排错功能,因为那东西就是烦而已,多几个if 判断下而已,因为烦的慌,觉得也没啥意思,就没细细的写,粗略的写了几个。 查询也是只写了按学号查询,是用的折半查找。排序是用的快速排序,因为时间消耗比较小,喏,那是上个排序综合里有的,所以写这个就用的那个里的快速排序,很简单,就是对copy下而已,改下结构体,complete!呵呵,程序如下:头文件里的:struct student
{
char name[10];
int num;
int dormin;
};cpp文件:// 宿舍管理.cpp : 定义控制台应用程序的入口点。
//
///////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include
#include
#include
using namespace std;
#define max 10
int _tmain(int argc, _TCHAR* argv[])
{void input(student *,int);void display(student *,int);void add(student *,int &,int);
void qsort(student *,int,int);void del(student *,char *,int &);void change(student *,char *,int );
void search(student *,int,int,int);

int stunum,choose;
ifstream infile("stunum.txt");
if(!infile) cout<<"文件中尚未创建信息!"< else infile>>stunum;
infile.close();

char name[10];
cout<<"****************************************************"< cout< cout<<" 欢迎进入学生宿舍管理系统!!"< cout< cout<<"****************************************************"< while(1){
cout<<"1.输入学生宿舍信息"< cout<<"2.显示已输入信息"< cout<<"3.信息修改"< cout<<"4.信息查询"< cout<<"5.信息排序"< cout<<"6.退出系统"< cout<<"请输入需要执行的任务:";
cin>>choose;
student *S;S=new student[max];
switch(choose){
case 1:{cout<<"输入数据将使原来数据丢失,确定这样做吗?(y/n)"< bool yn=0;char temp;
cin>>temp;
if(temp=='y') yn=1;
if(yn){cout<<"请输入学生数目:";
cin>>stunum;
input(S,stunum);
ofstream outfile("stunum.txt");
outfile< outfile.close();break;}}
case 2:display(S,stunum);break;
case 3:
{int cchoose;cout<<"1.修改信息"< cout<<"2.添加信息"< cin>>cchoose;
switch(cchoose)
{case 1:{cout<<"请输入修改的信息人名"<>name;change(S,name,stunum);break;}
case 2:{int ad;cout<<"请输入添加人数:";cin>>ad;add(S,stunum,ad);break;}
case 3:{cout<<"请输入删除信息的人名"<>name;del(S,name,stunum);break;}
break;}break;}
case 4:{cout<<"请输入学号:";
int cchoose;cin>>cchoose;search(S,0,stunum,cchoose);
break;}
case 5:{ifstream infile("stuinfor.txt",ios::in);
for(int i=0;i infile>>S[i].name>>S[i].num>>S[i].dormin;
qsort(S,0,stunum-1);
ofstream outfile("sorted_infor.txt");
for(int i=0;i cout< outfile.close();infile.close();break;}
case 6:cout<<" 谢谢使用!"< }
ofstream outfile("stunum.txt");
outfile< outfile.close();
return 0;
}
void input(student *stu,int all)
{ofstream outfile("stuinfor.txt");
for(int i=0;i>stu[i].name>>stu[i].num>>stu[i].dormin;
outfile< }
outfile.close();
}
void display(student *stu,int all)
{
ifstream infile("stuinfor.txt",ios::in);
if(!infile) cerr<<"文件打开失败!"< else{
for(int i=0;i>stu[i].name>>stu[i].num>>stu[i].dormin;
cout< }
infile.close();}
}
void add(student *stu,int &all,int add)
{
ofstream outfile("stuinfor.txt",ios::app);
for(int i=0;i>stu[all+i].name>>stu[all+i].num>>stu[all+i].dormin;
outfile< }
all+=add;
outfile.close();
}
//快速排序
int partition(student *a,int low,int high)
{
student tem;int piv=a[low].num;
while(high>low)
{
while(high>low&&a[high].num>=piv) high--;
tem=a[high];a[high]=a[low];a[low]=tem;
while(high>low&&a[low].num<=piv) low++;
tem=a[high];a[high]=a[low];a[low]=tem;
}
return low;
}
void qsort(student *a,int low,int high)
{int pivotloc;
if(low {
pivotloc=partition(a,low,high);
qsort(a,low,pivotloc-1);
qsort(a,pivotloc+1,high);
}
}
void del(student *stu,char *name,int &num)
{int delper;char check;
ifstream infile("stuinfor.txt");
for(int i=0;i {
infile>>stu[i].name>>stu[i].num>>stu[i].dormin;
if(strcmp(name,stu[i].name)==0) delper=i;}
cout<<"您要删除的信息如下:"< cout< cout<<"您确定要删除吗?(y/n)"< cin>>check;
ofstream outfile("stuinfor.txt");
if(check=='y'||'Y')
{

for(int i=delper;i num--;
for(int i=0;i cout<<"信息已删除!"< infile.close();
outfile.close();
}
void change(student *stu,char *name,int num)
{int change;char check,nam[10];
int cn,cd;
ifstream infile("stuinfor.txt");
for(int i=0;i {
infile>>stu[i].name>>stu[i].num>>stu[i].dormin;
if(strcmp(name,stu[i].name)==0) change=i;
}
cout<<"您要修改的信息如下:"< cout< cout<<"您确定要修改吗?(y/n)"< cin>>check;
ofstream outfile("stuinfor.txt");
if(check=='y'||'Y')
{
cout<<"请依次输入姓名 学号 宿舍号"< cin>>nam>>cn>>cd;
strcpy(stu[change].name,nam);stu[change].num=cn;stu[change].dormin=cd;
for(int i=0;i outfile< cout<<"信息已修改!"< infile.close();
outfile.close();}void search(student *stu,int low,int high,int check)
{int mid=(low+high)/2;
ifstream infile("sorted_infor.txt");
if(!infile) cerr<<"文件打开失败!"< else
{for(int i=0;i>stu[i].name>>stu[i].num>>stu[i].dormin;
while(stu[mid].num!=check&&high>=low) {mid=(low+high)/2;if(stu[mid].num>check) high=mid-1;
else low=mid+1;}//折半查找
}
if(stu[mid].num==check)
{cout<<"您要查询的信息如下:"< cout< else cout<<"未能查到您所要查询信息!"< }

全部回答
宿舍管理,没什么好玩的,就是繁琐,很多东西需要你细化,而且一般要求为交互式平台,而且选项多,出错处较多,排错就是一个相当大的工程。我写的这个里面没有太多的排错功能,因为那东西就是烦而已,多几个if 判断下而已,因为烦的慌,觉得也没啥意思,就没细细的写,粗略的写了几个。

查询也是只写了按学号查询,是用的折半查找。排序是用的快速排序,因为时间消耗比较小,喏,那是上个排序综合里有的,所以写这个就用的那个里的快速排序,很简单,就是对copy下而已,改下结构体,complete!呵呵,程序如下:

头文件里的:

struct student { char name[10]; int num; int dormin; };

cpp文件:

// 宿舍管理.cpp : 定义控制台应用程序的入口点。 // /////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// #include "stdafx.h" #include<fstream> #include<stdlib.h> #include<iostream> using namespace std; #define max 10 int _tmain(int argc, _tchar* argv[]) {void input(student *,int);void display(student *,int);void add(student *,int &,int); void qsort(student *,int,int);void del(student *,char *,int &);void change(student *,char *,int ); void search(student *,int,int,int);

int stunum,choose; ifstream infile("stunum.txt"); if(!infile) cout<<"文件中尚未创建信息!"<<endl; else infile>>stunum; infile.close();

char name[10]; cout<<"****************************************************"<<endl; cout<<endl<<endl; cout<<" 欢迎进入学生宿舍管理系统!!"<<endl; cout<<endl<<endl; cout<<"****************************************************"<<endl; while(1){ cout<<"1.输入学生宿舍信息"<<endl; cout<<"2.显示已输入信息"<<endl; cout<<"3.信息修改"<<endl; cout<<"4.信息查询"<<endl; cout<<"5.信息排序"<<endl; cout<<"6.退出系统"<<endl; cout<<"请输入需要执行的任务:"; cin>>choose; student *s;s=new student[max]; switch(choose){ case 1:{cout<<"输入数据将使原来数据丢失,确定这样做吗?(y/n)"<<endl; bool yn=0;char temp; cin>>temp; if(temp=='y') yn=1; if(yn){cout<<"请输入学生数目:"; cin>>stunum; input(s,stunum); ofstream outfile("stunum.txt"); outfile<<stunum; outfile.close();break;}} case 2:display(s,stunum);break; case 3: {int cchoose;cout<<"1.修改信息"<<endl; cout<<"2.添加信息"<<endl;cout<<"3.删除信息"<<endl;cout<<"请输入要执行的任务:"<<endl; cin>>cchoose; switch(cchoose) {case 1:{cout<<"请输入修改的信息人名"<<endl;cin>>name;change(s,name,stunum);break;} case 2:{int ad;cout<<"请输入添加人数:";cin>>ad;add(s,stunum,ad);break;} case 3:{cout<<"请输入删除信息的人名"<<endl;cin>>name;del(s,name,stunum);break;} break;}break;} case 4:{cout<<"请输入学号:"; int cchoose;cin>>cchoose;search(s,0,stunum,cchoose); break;} case 5:{ifstream infile("stuinfor.txt",ios::in); for(int i=0;i<stunum;i++) infile>>s[i].name>>s[i].num>>s[i].dormin; qsort(s,0,stunum-1); ofstream outfile("sorted_infor.txt"); for(int i=0;i<stunum;i++) {outfile<<s[i].name<<' '<<s[i].num<<' '<<s[i].dormin<<endl; cout<<s[i].name<<' '<<s[i].num<<' '<<s[i].dormin<<endl;} outfile.close();infile.close();break;} case 6:cout<<" 谢谢使用!"<<endl;exit(1);

} } ofstream outfile("stunum.txt"); outfile<<stunum; outfile.close(); return 0; } void input(student *stu,int all) {ofstream outfile("stuinfor.txt"); for(int i=0;i<all;i++) {cout<<"请输入第"<<i+1<<"个学生的姓名 学号 宿舍号:"; cin>>stu[i].name>>stu[i].num>>stu[i].dormin; outfile<<stu[i].name<<" "<<stu[i].num<<" "<<stu[i].dormin<<endl; } outfile.close(); } void display(student *stu,int all) { ifstream infile("stuinfor.txt",ios::in); if(!infile) cerr<<"文件打开失败!"<<endl; else{ for(int i=0;i<all;i++) {cout<<"输入的第"<<i+1<<"个学生的姓名 学号 宿舍号分别为:"; infile>>stu[i].name>>stu[i].num>>stu[i].dormin; cout<<stu[i].name<<" "<<stu[i].num<<" "<<stu[i].dormin<<endl; } infile.close();} } void add(student *stu,int &all,int add) { ofstream outfile("stuinfor.txt",ios::app); for(int i=0;i<add;i++) { cout<<"请输入第"<<all+i+1<<"个学生的姓名 学号 宿舍号:"; cin>>stu[all+i].name>>stu[all+i].num>>stu[all+i].dormin; outfile<<stu[all+i].name<<" "<<stu[all+i].num<<" "<<stu[all+i].dormin<<endl; } all+=add; outfile.close(); } //快速排序 int partition(student *a,int low,int high) { student tem;int piv=a[low].num; while(high>low) { while(high>low&&a[high].num>=piv) high--; tem=a[high];a[high]=a[low];a[low]=tem; while(high>low&&a[low].num<=piv) low++; tem=a[high];a[high]=a[low];a[low]=tem; } return low; } void qsort(student *a,int low,int high) {int pivotloc; if(low<high) { pivotloc=partition(a,low,high); qsort(a,low,pivotloc-1); qsort(a,pivotloc+1,high); } }

void del(student *stu,char *name,int &num) {int delper;char check; ifstream infile("stuinfor.txt"); for(int i=0;i<num;i++) { infile>>stu[i].name>>stu[i].num>>stu[i].dormin; if(strcmp(name,stu[i].name)==0) delper=i;} cout<<"您要删除的信息如下:"<<endl; cout<<stu[delper].name<<" "<<stu[delper].num<<" "<<stu[delper].dormin<<endl; cout<<"您确定要删除吗?(y/n)"<<endl; cin>>check; ofstream outfile("stuinfor.txt"); if(check=='y'||'y') { for(int i=delper;i<num;i++) stu[i]=stu[i+1]; num--; for(int i=0;i<num;i++) outfile<<stu[i].name<<" "<<stu[i].num<<" "<<stu[i].dormin<<endl; cout<<"信息已删除!"<<endl;} infile.close(); outfile.close(); } void change(student *stu,char *name,int num) {int change;char check,nam[10]; int cn,cd; ifstream infile("stuinfor.txt"); for(int i=0;i<num;i++) { infile>>stu[i].name>>stu[i].num>>stu[i].dormin; if(strcmp(name,stu[i].name)==0) change=i; } cout<<"您要修改的信息如下:"<<endl; cout<<stu[change].name<<" "<<stu[change].num<<" "<<stu[change].dormin<<endl; cout<<"您确定要修改吗?(y/n)"<<endl; cin>>check; ofstream outfile("stuinfor.txt"); if(check=='y'||'y') { cout<<"请依次输入姓名 学号 宿舍号"<<endl; cin>>nam>>cn>>cd; strcpy(stu[change].name,nam);stu[change].num=cn;stu[change].dormin=cd; for(int i=0;i<num;i++) outfile<<stu[i].name<<" "<<stu[i].num<<" "<<stu[i].dormin<<endl; cout<<"信息已修改!"<<endl;} infile.close(); outfile.close();

}

void search(student *stu,int low,int high,int check) {int mid=(low+high)/2; ifstream infile("sorted_infor.txt"); if(!infile) cerr<<"文件打开失败!"<<endl; else {for(int i=0;i<high;i++) infile>>stu[i].name>>stu[i].num>>stu[i].dormin; while(stu[mid].num!=check&&high>=low) {mid=(low+high)/2;if(stu[mid].num>check) high=mid-1; else low=mid+1;}//折半查找 } if(stu[mid].num==check) {cout<<"您要查询的信息如下:"<<endl; cout<<stu[mid].name<<" "<<stu[mid].num<<" "<<stu[mid].dormin<<endl;} else cout<<"未能查到您所要查询信息!"<<endl; }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
依洁干洗(菲达壹品东北)地址好找么,我有些事
水城羊肉米线怎么去啊,有知道地址的么
南门干洗店(人民南路)地址在哪,我要去那里办
(18分)报春花的花色白色(只含白色素)和黄
中铁二十二局最新中标广州
卫店镇邮政支局地址在哪,我要去那里办事
蓝梦洁干洗店(春江路)地址好找么,我有些事要
福慧园西一门我想知道这个在什么地方
邦纳福干洗(苎萝店)地址在哪,我要去那里办事
我驾驶证有事故记录 找工作影响大吗
威特斯洗衣(诸暨店)地址在什么地方,我要处理
盐山玉祥万亩奇柳种苗培育有限公司东光分公司
背单词这个短语用英语怎么说?
进口SMC电动元器件跟国产smc的有什么区别
用太阳能电源给手机充电有害处吗
推荐资讯
英语翻译“Since the President announced th
付费的招标中标网站中,哪个网站比较好?
2019年一本初中英语八年级上册译林版答案
注册营养师考试具体时间什么时候?
小米之家(保定官方直营店)怎么去啊,我要去那
河北省邓小平理论三个代表重要思想和科学发展
黄羊派出所地址在什么地方,想过去办事
大众朗逸1.6ea111正时链条如何判断异常
北京工商大学东区西门我想知道这个在什么地方
霞浦县良信投资有限公司这个地址在什么地方,
慢性心功能不全的特征是A.低蛋白血症B.动脉血
摔跤了怎么办?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?