首页 > 文库大全 > 精品范文库 > 12号文库

C++语言学生宿舍管理系统(五篇范文)

C++语言学生宿舍管理系统(五篇范文)



第一篇:C++语言学生宿舍管理系统

#include #include #include using namespace std;

typedef struct

/*定义结构体数组*/ {

string roomnum;

/*房间号*/ string stunum;

/*学号*/ string name;

/*姓名*/ }Student;

Student stu[1000];

/*结构体数组变量*/ int menu_select()

/*菜单函数*/ { char c;

system(“cls”);

/*运行前清屏*/ cout<<“tt★★★★★★学生宿舍管理系统★★★★★★n”;cout<<“tt§1.输入记录

§n”;cout<<“tt§2.显示记录

§n”;

cout<<“tt§3.按房间号排序并显示

§n”;

cout<<“tt§4.按学号排序并显示

§n”;

cout<<“tt§5.插入一条记录按学号排序显示

§n”;

cout<<“tt§6.按姓名查找,删除一条记录

§n”;

cout<<“tt§7.查找并显示一条记录

§n”;

cout<<“tt§8.从文件中读入数据

§n”;

cout<<“tt§9.循环写入数据

§n”;

cout<<“tt§0.结束程序

§n”;

cout<<“tt★★★★★★★★★★★★★★★★★★★★n”;cout<<“tt请选择你要运行的选项按(0-9):”;c=getchar();

/*读入选择*/ return c;

/*返回选择*/ }

int Input()

/*输入若干条记录*/ { int i=0;

char flag,x[10];

/*x[10]为清除多余的数据所用*/

do{

cout<<“tt房间号:”;

/*交互输入*/

cin>>stu[i].roomnum;

cout<<“tt学号:”;

cin>>stu[i].stunum;

/*菜单选择*/

cout<<“tt姓名:”;

cin>>stu[i].name;

gets(x);

/*清除多余的输入*/

cout<<“tt是否继续输入?(Y/N)”;

cin>>flag;

/*输入判断*/

i++;

} while(flag=='y'||flag=='y');

/*判断*/

return i;}

void Display(int n)

/*显示所有记录*/ {

int i;

cout<<“tt-n”;

/*格式头*/

cout<<“tt房间号

学号

姓名

n”;

cout<<“tt-n”;

for(i=0;i

/*循环输入*/

{

cout<<“tt”<

if(i>1&&i%10==0)

/*每十个暂停*/

{

cout<<”tt-n“;

cout<<”tt“;

system(”pause“);

cout<<”tt-n“;

}

} cout<<”tt“;system(”pause“);}

void Sort_by_stunum(int n)

/*按学号排序*/ {

int i,j;

string t;

for(i=0;i

/*冒泡法排序*/

for(j=0;j

if(stu[j].stunum>stu[j+1].stunum)

{

t=stu[j].stunum;

stu[j].stunum=stu[j+1].stunum;

stu[j+1].stunum=t;

t=stu[j].roomnum;

”<

stu[j].roomnum=stu[j+1].roomnum;

stu[j+1].roomnum=t;

t=stu[j].name;

stu[j].name=stu[j+1].name;

stu[j+1].name=t;

} }

void Sort_by_roomnum(int n)

/*按房间号排序*/ {

int i,j;string t;

for(i=0;i

/*冒泡法排序*/

for(j=0;j

if(stu[j].stunum>stu[j+1].stunum)

{

t=stu[j].stunum;

stu[j].stunum=stu[j+1].stunum;

stu[j+1].stunum=t;

t=stu[j].roomnum;

stu[j].roomnum=stu[j+1].roomnum;

stu[j+1].roomnum=t;

t=stu[j].name;

stu[j].name=stu[j+1].name;

stu[j+1].name=t;

} }

int Insert_a_record(int n)

/*插入一条记录*/ {

cout<<“tt学生房间号:”;

/*交互输入*/

cin>>stu[n].roomnum;

cout<<“tt学生学号:”;

cin>>stu[n].stunum;

cout<<“tt学生姓名:”;

cin>>stu[n].name;

n++;

Sort_by_roomnum(n);

/*调用排序函数*/

cout<<“tt插入记录成功!n”;

/*返回成功信息*/

return n;} int Delete_a_record(int n)

/*按姓名查找,删除一条记录*/ {

string s;

int i=0,j;

cout<<“tt输入他(她)的名字:”;

/*交互式问寻*/ cin>>s;while(i

{

if(stu[i].name==s)

break;

else

i++;

}/*查找并判断*/ if(i==n){

cout<<“tt对不起,没找到该学生!n”;

/*返回失败信息*/

return n;} for(j=i;j

/*删除操作*/ {

stu[j].stunum=stu[j+1].stunum;

stu[j].roomnum=stu[j+1].roomnum;

stu[j].name=stu[j+1].name;}

cout<<“tt删除记录成功!n”;

/*返回成功信息*/

return n-1;}

void Query_a_record(int n)

/*查找并显示一条记录*/ {

string s;

int i=0;

cout<<“tt输入他(她)的名字:”;

/*交互式输入*/

cin>>s;

while(i

{

if(stu[i].name==s)

break;

else

i++;

}/*查找并判断*/

if(i==n)

{

cout<<“tt对不起,没找到该学生!n”;return;

}

cout<<“tt他(她)的房间号:n”<

/*输出该学生信息*/

cout<

int ReadfromText(int n)

/*从文件中读入数据*/ {

int i=0;ifstream in(“students.txt”);//ofstream out(“students.txt”);while(i

in>>stu[i].roomnum>>stu[i].stunum>>stu[i].name;

i++;}

} cout<<“读取成功!n”;

/*返回成功信息*/ return n;void WritetoText(int n)

/*将所有记录写入文件*/ {

int i=0;//ifstream in(“students.txt”);ofstream out(“students.txt”);while(i

out<

i++;} cout<<“写入成功!n”;

/*返回成功信息*/

}

int main(){ int n=0;

while(1)

{

switch(menu_select())

/*选择判断*/

{

case '1':

cout<<“tt输入记录n”;

/*输入若干条记录*/

n=Input();

break;

case '2':

cout<<“tt显示记录n”;

/*显示所有记录*/

Display(n);

break;

case '3':

cout<<“tt按房间号排序并显示n”;

Sort_by_roomnum(n);

/*按房间号排序*/

cout<<“tt排序成功!n”;

Display(n);

cout<<“tt”;

break;

case '4':

cout<<“tt按学号排序并显示n”;

Sort_by_stunum(n);

/*按学号排序*/

cout<<“tt排序成功!n”;

Display(n);

cout<<“tt”;

break;

case '5':

cout<<“tt插入一条记录按学号排序并显示n”;

n=Insert_a_record(n);

/*插入一条记录*/

Display(n);

cout<<“tt”;

break;

case '6':

cout<<“tt按姓名查找,删除一条记录n”;

n=Delete_a_record(n);

/*按姓名查找,删除一条记录*/

cout<<“tt”;

system(“pause”);

break;

case '7':

cout<<“tt查找并显示一条记录n”;

Query_a_record(n);

/*查找并显示一条记录*/

cout<<“tt”;

system(“pause”);

break;

case '8':

cout<<“tt从文件中读入数据n”;

n=ReadfromText(n);

/*从文件中读入数据*/

cout<<“tt”;

system(“pause”);

break;

case '9':

cout<<“tt循环写入数据n”;

WritetoText(n);

/*循环写入数据*/

cout<<“tt”;

system(“pause”);

break;

case '0':

cout<<“tt谢谢使用,祝您好运,再见!n”;

/*结束程序*/

cout<<“tt”;

system(“pause”);

exit(0);

}

} return 0;}

第二篇:C++通讯录管理系统

黑龙江工程学院

第一章 问题分析和任务定义

1.1 问题分析

问题: 编写一个通讯录管理系统。要求包括通讯录建立、增加号码、删除号码、查询号码(按姓名、按号码)、修改号码、号码分组、打印通讯录(全部或分组号码)等功能,并设计主控菜单和子菜单供用户选择要执行的操作。

分析:

实现以下功能:

1)通讯录编辑(添加、删除); 2)按不同的项进行查找;

3)对已存在的通讯录按不同的项排序; 4)将通讯录写入文件; 5)从文件读入通讯录。

1.2 任务定义

创建一个链表,每个节点有姓名和号码以及关系三个信息。增加号码操作为增加节点,删除号码操作为删除节点,查找号码为链表的遍历。每个功能以函数的形式出现,由主控菜单控制。并以文件的形式对号码信息进行保存。

第二章 详细设计

主函数(main()函数)是通过一个多分支语句(switch(i)语句)实现的。显示菜单函数(displaymenu()函数)显示与用户交互的界面。以下是各个模块实现程序各项功能的函数的详细设计:

1、插入新的记录:insert()函数

定义变量,设计loop模块,模块的功能是用来输入记录:输入姓名、性别、电话号码、地址的信息。用for语句查找是否输入了与原有记录相同的记录,用strcmp 函数比较,if 语句判断,如果输入了重复的记录,提示信息:“此记录已存在,请重新输入!”并且用 goto语句返回到loop,重新输入信息。设计一个a模块:键盘输入一个字符,必须是“Y”“y”“N”“n”,否则重新输入。最后if 语句判断变量的值是否重新输入信息,如果输入的是“Y”或“y”,返回到loop,黑龙江工程学院

用户可以输入下一条信息,直到用户输入“N”或“n”返回主界面。每插入一条记录n的值加1。功能的实现见源程序:

2、示好友的信息:display()函数

定义整型变量i用来循环输出记录。分别输出每条记录,并输出记录的个数。

3、查找好友的信息search()函数

定义字符型变量c,字符型数组a,定义loop模块,功能:通过键盘输入要查找的信息。首先显示提示信息:“输入你要查找的好友的姓名”然后从键盘输入姓名。For语句循环内嵌if语句,用strcmp 函数查找信息,并且显示该记录的所有信息,并跳出循环。再用for 语句内嵌if语句判断,如果没有查到显示提示信息:“如果没有查到相关语句,是否重新查找(Y/N)?定义abc模块的功能输入一个字符(“Y”或“y”“N”“n”)用来判断是否重新查找。如果输入“Y”或“y”,则用goto语句返回loop重新查找。否则令i的值为n跳出循环。最后返回主界面。

4、删除好友信息:del()函数

首先定义字符数组、变量和a、b两个goto标识符。在a模块中用scanf函数输入要删除的好友的姓名,用for循环和if 语来实现对好友的查找,如果找到记录末尾,提示查无此人。在b模块中,用来实现删除功能。先确认是否删除,如果键盘输入Y 或y来确认要删除再执行for循环,通过strcmpy函数把后一条记录复制到前一条记录。进行删除记录后,并把原末尾记录数据赋空字符,按任意键删除,按任意键返回主菜单。

5、修改记录:modify()函数

定义了a、b两个goto标识符。在a模块中,用scanf函数输入要修改人的姓名,用for 循环、if语句及strcmp函数找到该姓名的记录,若到记录末尾提示“查无此人”是否继续重新输入姓名,黑龙江工程学院

如果重新输入姓名再用goto语句再执行重新查找。在b模块中,用于修改记录,如果要修改记录则从键盘输入Y或y,用scanf函数来输入新的记录数据来实现修改记录。

6、排序:sort()函数

选择法排序的方法。定义变量i,j,用于循环,定义4个字符型数组,用于替换的中间变量;用两个for循环语句,用strcmp函数比较。按姓名升序排序。比较前一条记录和后一条记录的姓名,如果strcmp函数值大于0,则将这两条记录的所有信息替换,4个字符型数组用作替换的中间变量。最后调用display()(显示结果)显示排序后的结果。

第三章 程序编码

#include #include #include struct student //结构体 { char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];};class inter { private: student st[35];public: void add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]);void del(char name[20]);void find1(char no[13]);void find2(char name[20]);void list1();void list2();int correct(char name[20]);void read();void write();

黑龙江工程学院

void format();int back(){

cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”;

char back;

cin>>back;

if(back=='R'||back=='r')

return 1;

else

return 0;} void print(int i){

cout<<“学号:”<

cout<<“姓名:”<

cout<<“地址:”<

cout<<“电话号码:”<

cout<<“邮编:”<

cout<<“E_MAIL:”<

<<“tt★★★★★★★★★★★★★★★★★★★★★★★★★★” <

<<“tt※ ※” <

<<“tt※ 通 迅 录 ※” <

<<“tt※ ※” <

<<“tt※ 1.通讯录编辑.4.按序排列.※” <

<<“tt※ ※” <

<<“tt※ 2.查询联系人.5.将文件读入程序.※” <

<<“tt※ ※” <

<<“tt※ 3.将资料写入文件.6.格式化(慎用).※” <

<<“tt※ ※” <

<<“tt★★★★★★★★★★★★★★★★★★★★★★★★★★” <

<<“tt ”<

<<“ttt选择 :”;cin>>select1;switch(select1)

黑龙江工程学院

{ case '1':cout<<“(1)添加:”<

cout<<“(2)删除:”<

cout<<“(3)修改:”<

char select2;

cout<<“ 请选择:”<

cin>>select2;

switch(select2)

{

case '1':cout<<“ 输入添加的资料:”<

char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];

cout<<“ 输入学号:”<

cin>>no;

cout<<“ 输入姓名:”<

cin>>name;

cout<<“ 输入地址:”<

cin>>address;

cout<<“ 输入电话号码:”<

cin>>tel_no;

cout<<“ 输入邮编:”<

cin>>post_code;cout<<“ 输入E_mail:”<

cin>>e_mail;

a.add(no,name,address,tel_no,post_code,e_mail);

cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”;

char back_add;

cin>>back_add;

if(back_add=='R'||back_add=='r')

goto top;

else

goto bottom;

break;

case '2':cout<<“ 输入要删除人的姓名:”<

char name2[20];

cin>>name2;

a.del(name2);

cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”;

黑龙江工程学院

“;

”;

char back_del;

cin>>back_del;

if(back_del=='R'||back_del=='r')

goto top;

else

goto bottom;

break;case '3':cout<<“ 输入需要修改人的姓名:”<

char name3[20];

cin>>name3;

if(a.correct(name3))

goto top;

else goto bottom;

break;} break;case '2':cout<<“(1)根据姓名查找”<>select3;switch(select3){ case '1':char name4[20];

cout<<“ 输入姓名: ”;

cin>>name4;

a.find2(name4);

cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写):

char back_f1;cin>>back_f1;if(back_f1=='R'||back_f1=='r')

goto top;else

goto bottom;break;case '2':char no4[13];cout<<” 输入学号: “;cin>>no4;a.find1(no4);

cout<<” 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): char back_f2;cin>>back_f2;

黑龙江工程学院

“;

”;

if(back_f2=='R'||back_f2=='r')

goto top;

else

goto bottom;

break;} break;case '3':a.write();cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”;char back_w;cin>>back_w;if(back_w=='R'||back_w=='r')

goto top;else

goto bottom;break;case '4':cout<<“(1)按学号排序:”<>select4;switch(select4){ case '1':a.list1();

cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写):

char back;cin>>back;if(back=='R'||back=='r')

goto top;else

goto bottom;break;case '2':a.list2();cout<<” 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写):

} char back1;cin>>back1;if(back1=='R'||back1=='r')goto top;else goto bottom;break;

黑龙江工程学院

break;case '5':a.read();

cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”;

char back_r;

cin>>back_r;

if(back_r=='R'||back_r=='r')

goto top;

else

goto bottom;

break;case '6':cout<<“ 请确认删除所有资料!(Y/N)”;

char select5;

cin>>select5;

if(select5=='Y'||select5=='y')

a.format();

cout<<“ 返回还是回到主菜单(T为退出,R为回到主菜单,不计大小写): ”;

char back_f;

cin>>back_f;

if(back_f=='R'||back_f=='r')

goto top;

else

goto bottom;

break;} bottom:cout<<“ ★★★★★★★★★★★★★★★★★★★★★★★ ”<

void inter::add(char no[13],char name[20],char address[100],char tel_no[12],char post_code[7],char e_mail[40]){ int x=1;for(int i=0;i<35;i++){

if(!strcmp(st[i].no,“0”))

{

strcpy(st[i].address,address);

strcpy(st[i].e_mail,e_mail);

strcpy(st[i].name,name);

strcpy(st[i].no,no);

strcpy(st[i].post_code,post_code);

strcpy(st[i].tel_no,tel_no);

x=0;

}

黑龙江工程学院

if(x==0)

break;} } //删除联系人

void inter::del(char name[20]){ int x=1;for(int i=0;i<35;i++){

if(!strcmp(st[i].name,name))

{ strcpy(st[i].address,“0”);

strcpy(st[i].e_mail,“0”);

strcpy(st[i].name,“0”);

strcpy(st[i].no,“0”);

strcpy(st[i].post_code,“0”);

strcpy(st[i].tel_no,“0”);

}

else x=0;} if(x==0)

cout<<“ error:输入姓名错误!”<

int inter::correct(char name[30]){ int x;for(int i=0;i<35;i++){

if(!strcmp(st[i].name,name))

x=i;} char select;cout<<“(1)修改姓名:”<>select;switch(select){ case '1':cout<<“ 输入要修改的姓名:”;

黑龙江工程学院

char name1[30];

cin>>name1;

strcpy(st[x].name,name1);

cout<<“ 修改成功!”<

return back();

break;case '2':cout<<“ 输入要修改的学号:”;

char no1[13];

cin>>no1;

strcpy(st[i].no,no1);

cout<<“ 修改成功!”<

return back();

break;case '3':cout<<“ 输入要修改的地址:”;

char address1[100];

cin>>address1;

strcpy(st[x].address,address1);

cout<<“ 修改成功!”<

return back();

break;case '4':cout<<“ 输入要修改的邮编:”;

char post_code1[7];

cin>>post_code1;

strcpy(st[x].post_code,post_code1);

cout<<“ 修改成功!”<

return back();

break;case '5':cout<<“ 输入要修改的电话号码:”;

char tel_no1[12];

cin>>tel_no1;

strcpy(st[x].tel_no,tel_no1);

cout<<“ 修改成功!”<

return back();

break;case '6':cout<<“ 输入要修改的E_MAIL:”;

char e_mail1[40];

cin>>e_mail1;

strcpy(st[x].e_mail,e_mail1);

cout<<“ 修改成功!”<

return back();

break;} } //按学号查询联系人

黑龙江工程学院

void inter::find1(char no[13]){ int x,y=1,z=1;for(int i=0;i<35;i++){

if(!strcmp(st[i].no,no))

{

x=i;

z=0;

}

else y=0;

if(z==0)

break;}

if(y==0)

cout<<“ 输入的学号查找不到!!”<

} //按姓名查询联系人

void inter::find2(char name[20]){ int x,y=1,z=1;for(int i=0;i<35;i++){

if(!strcmp(st[i].name,name))

{

x=i;

z=0;

}

else y=0;

if(z==0)

break;} if(y==0)

cout<<“ 输入的姓名查找不到!!”<

void inter::read(){

char name1[20];cout<<“ 输入你要导入的文件名: ”;cin>>name1;

黑龙江工程学院

strcat(name1,“.txt”);ifstream file(name1);char line[120];char no[120];char name[120];char address[120];char post_code[120];char tel_no[120];char e_mail[120];int time=0;file.getline(line,120);while(!file.eof()){ for(int k=0;k<35;k++){

if(time==0)

{

strcpy(no,line);

time=1;

for(int i=0;i<120;i++)

{

if(no[i]==':')

{

i++;

for(int j=0;j<13;j++)

{

st[k].no[j]=no[i];

i++;

}

}

}

file.getline(line,120,'n');

} if(time==1){

strcpy(name,line);

time=2;

for(int i=0;i<120;i++)

{

if(name[i]==':')

{

i++;

for(int j=0;j<20;j++)

{

黑龙江工程学院

st[k].name[j]=name[i];

i++;

}

} } file.getline(line,120,'n');} if(time== 2){ strcpy(address,line);time=3;for(int i=0;i<120;i++){

if(address[i]==':')

{

i++;

for(int j=0;j<100;j++)

{

st[k].address[j]=address[i];

i++;

}

} } file.getline(line,120,'n');}

if(time==3){ strcpy(tel_no,line);time=4;for(int i=0;i<120;i++){

if(tel_no[i]==':')

{

i++;

for(int j=0;j<12;j++)

{

st[k].tel_no[j]=tel_no[i];

i++;

}

} } file.getline(line,120,'n');}

黑龙江工程学院

if(time==4)

{

strcpy(post_code,line);

time=5;

for(int i=0;i<120;i++)

{

if(post_code[i]==':')

{

i++;

for(int j=0;j<7;j++)

{

st[k].post_code[j]=post_code[i];

i++;

}

}

}

file.getline(line,120,'n');

}

if(time==5)

{

strcpy(e_mail,line);

time=0;

for(int i=0;i<120;i++)

{

if(e_mail[i]==':')

{

i++;

for(int j=0;j<40;j++)

{

st[k].e_mail[j]=e_mail[i];

i++;

}

}

}

file.getline(line,120,'n');

}

}

} file.close();} //写入文件

void inter::write(){ char name[20];

黑龙江工程学院

cout<<“ 输入要保存的文件名 ”;cin>>name;strcat(name,“.txt”);ofstream savefile(name);for(int i=0;i<35;i++){

savefile << “学号:”<

savefile << “姓名:”<

savefile << “地址:”<

savefile << “电话号码:”<

savefile << “邮编:”<

savefile << “E_MAIL:”<

void inter::list1(){ for(int i=0;i<34;i++){

for(int j=0;j<35-i;j++)

{

if(strcmp(st[j].no,st[j+1].no)>0)

{

char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];char e_mail[40];

strcpy(no,st[j].no);

strcpy(st[j].no,st[j+1].no);

strcpy(st[j+1].no,no);

strcpy(name,st[j].name);

strcpy(st[j].name,st[j+1].name);

strcpy(st[j+1].name,name);

strcpy(address,st[j].address);

strcpy(st[j].address,st[j+1].address);

strcpy(st[j+1].address,address);

strcpy(tel_no,st[j].tel_no);

黑龙江工程学院

strcpy(st[j].tel_no,st[j+1].tel_no);

strcpy(st[j+1].tel_no,tel_no);

strcpy(post_code,st[j].post_code);

strcpy(st[j].post_code,st[j+1].post_code);

strcpy(st[j+1].post_code,post_code);

strcpy(e_mail,st[j].e_mail);

strcpy(st[j].e_mail,st[j+1].e_mail);

strcpy(st[j+1].e_mail,e_mail);

}

} } for(int k=0;k<35;k++){

int x=0;

if(strcmp(st[k].no,“0”))

{

print(k);

x=1;

}

if(x==1)

{

cout<

cout<<“---------------”<

} } } //按姓名排序

void inter::list2(){ for(int i=0;i<34;i++){

for(int j=0;j<35-i;j++)

{

if(strcmp(st[j].name,st[j+1].name)>0)

{

char no[13];char name[20];char address[100];char tel_no[12];char post_code[7];

黑龙江工程学院

char e_mail[40];

strcpy(no,st[j].no);

strcpy(st[j].no,st[j+1].no);

strcpy(st[j+1].no,no);

strcpy(name,st[j].name);

strcpy(st[j].name,st[j+1].name);

strcpy(st[j+1].name,name);

strcpy(address,st[j].address);

strcpy(st[j].address,st[j+1].address);

strcpy(st[j+1].address,address);

strcpy(tel_no,st[j].tel_no);

strcpy(st[j].tel_no,st[j+1].tel_no);

strcpy(st[j+1].tel_no,tel_no);

strcpy(post_code,st[j].post_code);

strcpy(st[j].post_code,st[j+1].post_code);

strcpy(st[j+1].post_code,post_code);

strcpy(e_mail,st[j].e_mail);

strcpy(st[j].e_mail,st[j+1].e_mail);

strcpy(st[j+1].e_mail,e_mail);

}

} } for(int k=0;k<35;k++){

int x=0;

if(strcmp(st[k].no,“0”))

{

print(k);

x=1;

}

if(x==1)

{

cout<

cout<<“-------”<

} }

黑龙江工程学院

} //格式化

void inter::format(){ for(int i=0;i<35;i++){

strcpy(st[i].address,“0”);

strcpy(st[i].e_mail,“0”);

strcpy(st[i].name,“0”);

strcpy(st[i].no,“0”);

strcpy(st[i].post_code,“0”);

strcpy(st[i].tel_no,“0”);} }

第四章 程序调试与测试

运行程序,首页显示如下:

按1选择通讯录编辑,编辑通讯录,显示(1)添加,(2)删除,(3)修改,运行后结果如下:

黑龙江工程学院

第一次使用,按1添加联系人,填入相关信息,运行图如下:

返回首页,按2可以查找联系人,可以根据姓名查找和学号查找,本次运用学号查找,运行如下:

返回首页,按4可以进行排序,可以根据姓名和学号排序,按姓名排序需要自己编辑的姓氏排序规则才能使用,本次使用学号排序,运行如下:

将资料写入文件功能是将编辑好的通讯录写入文本文件,文本文件的名字可以自己输入。将文件读入程序,是将文本文件中的信息读入程序,进行添加,修改,删除,排序等功能。

第五章 结果分析

总体上可以满足一般的应用需求,但是还有一定的不足,程序运行流畅,没有未知错误。

第六章 设计创新及心得

黑龙江工程学院

程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C++语言又是最常见,功能最强大的一种高级语言,因此做好C++语言课程设计是十分必要的。

通过几天的课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次真真的做程序设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针„„通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。

我做的是班级通讯录的课程设计,虽然是很简单的一个小的程序,但对我来说却是一个很大的困难。更加是第一次做课程设计,所以在机房做了一个下午却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。

开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。又经过几天的努力,终于把程序完成了,尽管程序还是有很多功能上的欠缺和漏洞,可我还是很高兴的。无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C++语言的一次实践作业,自己进步的证明。

在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前!

第三篇:学生宿舍管理系统-小结

C#项目开发实训

总结报告

宿舍信息管理系统的设计

(项目名称)

Information Management System for Dormitory design

班 级 : 软件092 学生姓名: 唐 坤 学号: 930505037 指导教师: 葛红美 职称: 讲 师 所属院(系): 信息管理技术学院 信息工程系 EMAI: 1196301423@qq.com

第四篇:软件工程 学生宿舍管理系统

一、需求分析

软件需求是软件开发的基础,每个软件开发过程都是以获取需求为目的的活动:理解客户的基本需求和目标。准确获取用户的需求是项目开发成功的开端。然而,软件工程所需要解决的问题十分复杂,尤其当软件系统是全新的时,了解问题的本质是十分困难的过程。因此,对软件需求的完全理解和系统描述,是保证软件成功开发至关重要的前提。

软件需求包括四个不同的层次:业务需求、用户需求、功能需求和非功能需求。需求分析主要包括以下内容:理解客户需要什么,分析要求,评价可行性,协商合理的方案,无歧义的说明方案,确认规格说明,管理需求以至将这些需求转化为可行系统。

本系统的最终使用者是宿舍楼管理员和住宿学生,根据日常生活的经验,结合对宿舍管理员和住宿学生的调查,得出用户的下列需求:

(一)宿舍楼的基本情况

学生住在宿舍楼中,每栋宿舍楼都会有若干名管理员负责本宿舍楼的日常管理。

1、学生的基本信息

入校时,每位学生都有唯一的学号,并被分配到指定的宿舍楼和指定的宿舍,会有一个固定的宿舍号,其入校时间就是入住时间。另外,为了管理上的方便,同一院系的学生的宿舍一般在一起,相应地会有其所在的院系名称。

2、宿舍的基本信息

每个宿舍都有唯一的宿舍号,床号。每个宿舍的财产属于学校,灯,床铺,柜子,桌椅等,为了对不同的财产进行区分,为每种财产分配不同的财产号。这样有利于财产的报修和管理。

3、报修的基本信息

宿舍楼中经常出现财产的损坏,比如灯泡坏了,这时,同学们需要将财产损坏情况报告,以便进行维修。这时,需要上报报修的宿舍号和损坏的财产编号,同时记录报修的时间和损坏的原因。当损坏的财产维修完毕后,维修人员应记录解决时间,表示该报修成功解决。

4、夜归的基本信息

宿舍楼在指定的时间关门(晚上23:00),若有同学晚于关门时间会宿舍,需通知宿舍楼管理员,同时应登记晚归学生姓名,宿舍号,时间和晚归原因,以利于学校的管理和查证。

5、离校的基本信息

寒假或暑假时,同学们大部分都会回家,“元旦”、“五一”、“端午”等小长假时,同学们也有很多不会留在宿舍。这时,为加强学校对同学假期安全的管理,离校的同学应登记离校时间,返校后记录返校时间,以便学校查证和管理。

6、卫生的基本信息

学生入住后,每个宿舍安排好卫生值日表,宿舍管理员每天对宿舍卫生进行检查并及时上传卫生情况,针对卫生不合格的宿舍,提出整改意见。学生可以查看卫生评分,针对宿舍卫生出现问题的,根据管理员的意见,及时打扫。出现多次卫生不合格的现象,宿舍管理员及时通知辅导员。

(二)用户对系统的要求

1、宿舍楼管理员(1)信息要求

宿舍楼管理员能查询到所管理宿舍楼的所有相关信息,包括某一学号的学生在宿舍楼中住宿的详细信息,报修的所有信息,夜归的详细信息、学生离返校的信息和宿舍卫生信息。以利于对整个宿舍楼的全面管理。(2)处理要求

当学生基本信息发生变化时,宿舍楼管理员能对其进行修改。比如,某些同学搬到其他的宿舍中去,他们在本宿舍楼中相应的记录就应该删去;或者学生转换专业,他们记录中院系的信息也要作相应的修改;学生毕业后办理离宿手续等等。

当宿舍楼的电话号码发生变更时,宿舍楼管理员能根据有关证明做出修改。

当宿舍财产报修及时解决后,管理员应登记解决时间,表明该报修问题已成功解决。每天检查宿舍卫生,并及时上传检查卫生情况。

2、宿舍楼的学生

(1)信息要求

本宿舍楼的学生能查询其所在的宿舍的所有信息,能查询本楼的指定宿舍的电话号码以利于同楼宿舍间的通信,能查询自己的夜归记录,离返校记录和宿舍卫生情况。

(2)处理要求

本宿舍楼的学生能在报修信息表中插入报修信息,表示本宿舍的财产发生了损毁需要派人维修。

学生离校时,能在离返校记录表中插入离校时间;学生返校后,能在离返校记录表中插入返校时间,表示已经回校。

3、安全性要求

(1)系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用。

(2)系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容。

(3)系统应对不同用户设置不同的权限,区分不同的用户,如区分普通用户(学生),管理员。

4、完整性要求

(1)各种信息记录的完整性,信息记录内容不能为空。(2)各种数据间相互的联系的正确性。(3)相同的数据在不同记录中的一致性。

二、系统功能设计和划分 根据以上的需求分析,将本系统划分为两个部分:学生管理部分和管理员部分。

(一)学生管理部分

1、处理学生注册。

2、处理学生登录。

3、学生可以查询自己的信息。

4、学生用户可以提交与查询报修信息。

5、学生可以插入与删除自己的离返校信息。

6、学生可以修改自己的密码。

(二)管理员管理部分

1、处理管理员登录。

2、管理员可以查询学生信息。

3、管理员可以插入、修改与查询报修信息。

4、管理员可以插入与查询学生夜归信息。

5、管理员可以查询在校与离校学生信息。

6、管理员可以修改管理员密码。

三、结构化分析与建模

结构化分析方法是一种传统的系统建模技术,其过程是创建描述信息内容和数据流的模型,依据功能和行为对系统进行划分,并描述必须建立的系统要素。

(一)数据流图

用数据流图描述系统处理过程是一种很直观的方式,在需求分中用它来建立现存目标系统的数据处理模型,描述数据流被(人工/计算机)处理或者转换的加工过程。当数据流图用于软件设计时,这些处理或者转换在最终生成的程序中将是若干个程序功能模块。

1、宿舍管理系统顶层数据流图

2、一层数据流图

3、报修管理数据流图

4、卫生管理数据流图

5、离校管理数据流图

6、夜归管理数据流图

四、用例图

五、系统活动图

1、学生登录活动图

2、添加学生信息活动图

3、修改学生信息活动图

4、删除学生信息活动图

六、系统顺序图

1、添加学生信息顺序图

2、删除学生信息顺序图

3、管理员修改密码顺序图

4、学生查询信息顺序图

5、添加管理员顺序图

6、删除管理员顺序图

7、管理员登陆顺序图

8、管理员给学生分配宿舍顺序图

七、心得体会

两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。

课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.

第五篇:C++课程设计(教务管理系统)

#include using namespace std;#include #include #include #include #include #include“01.h” class University;

void menu(University uni);//菜单函数声明

class Student//学生类 { public: string name;int age;string sex;int number;string major;

public: void disp_stu();

friend void file_in(University &uni);

friend void file_out(University uni);};void Student::disp_stu(){

}

class Institute//学院类 { public: string name;cout<<“学生姓名:”<

public: void add_stu();

//添加学生

bool delete_stu(int i);

// 删除学生

bool modefy_stu(int i);

//修改学生信息

void disp_ins_1();

// 显示本院学生信息

friend void file_in(University &uni);

friend void file_out(University uni);};void Institute::add_stu(){

} Student *p=new Student;cout<<“学生名字:”;cin>>(*p).name;cout<<“学生年龄:”;cin>>(*p).age;cout<<“学生性别:”;cin>>(*p).sex;cout<<“学生学号:”;cin>>(*p).number;cout<<“学生专业:”;cin>>(*p).major;head.Add(p);//在链表末尾增加一个节点

bool Institute::delete_stu(int i){

} head.Remove(i);//删除链表指定位置节点 return true;bool Institute::modefy_stu(int i){

Student *p=new Student;cout<<“学生名字:”;cin>>(*p).name;cout<<“学生年龄:”;cin>>(*p).age;cout<<“学生性别:”;cin>>(*p).sex;cout<<“学生学号:”;cin>>(*p).number;cout<<“学生专业:”;cin>>(*p).major;head.Remove(i);//删除链表指定位置节点 head.Insert(i,p);//在链表指定位置插入一个新节点

return true;} void Institute::disp_ins_1(){

}

class University//学校类 { public: string name;int age;string addr;List head;//封装学院信息 public:

void design_stu();//学生信息设置 int i;Node *q;q=head.pHead;//q指向学生节点双向链表头指针

cout<<“学院名字:”<

} cout<<“-------”<pData->disp_stu();q=q->pNext;

void add_ins();

//添加学院

bool delete_ins(int n);

// 删除学院

void design_cqut();

//设置学校信息 bool modefy_cqut();

//修改学校信息 void disp_cqut();

//显示学校信息 void design_ins();

//学院信息设置 bool modefy_ins(int n);

//修改学院 void disp_ins();

//显示学院信息

void search_menu();void search_name(string n);//姓名

void search(string n);//性别//函数重载

void search(int n);//学号

bool search_age(int n);//年龄

friend void file_in(University &uni);};friend void file_out(University uni);

void University::design_stu(){

int i,m,j;int n;cout<<“

★★★★★★学生信息设置★★★★★★

”<>i;system(“cls”);//清屏 switch(i){ case 1:

{

disp_ins();

cout<

cout<<“输入学生所在学院序号:”<

cin>>m;system(“cls”);//清屏

head.pCurrent=head.pHead;//当前指针指向双向链表头指针

for(j=1;j

{

}

} head.pCurrent=head.pCurrent->pNext;//当前指针指后移

cout<<“输入要添加的学生信息:”;head.pCurrent->pData->add_stu();cout<<“按任意键返回上一级菜单:”<

disp_ins();

cout<

cout<<“输入学生所在学院序号:”<

cin>>m;system(“cls”);//清屏

head.pCurrent=head.pHead;//当前指针指向双向链表头指针

for(j=1;j

{

head.pCurrent=head.pCurrent->pNext;//当前指针指后移

} } head.pCurrent->pData->disp_ins_1();cout<>n;head.pCurrent->pData->delete_stu(n);cout<<“按任意键返回上一级菜单:”<

{

disp_ins();

cout<

cout<<“输入学生所在学院序号:”<

cin>>m;system(“cls”);//清屏

head.pCurrent=head.pHead;//当前指针指向双向链表头指针

for(j=1;j

{

}

}

head.pCurrent=head.pCurrent->pNext;//当前指针指后移

head.pCurrent->pData->disp_ins_1();cout<

} cin>>n;head.pCurrent->pData->modefy_stu(n);cout<<“按任意键返回上一级菜单:”<

void University::add_ins(){

}

bool University::delete_ins(int n){

}

bool University::modefy_ins(int n){

Institute *p=new Institute;cout<<“学院名字:”;cin>>(*p).name;head.Remove(n);//删除链表指定位置节点 head.Insert(n,p);//在指定位置插入节点信息 return true;head.Remove(n);//删除链表指定位置节点 return true;Institute *p=new Institute;cout<<“学院名字:”;cin>>(*p).name;head.Add(p);//在链表末尾增加一个节点

}

void University::disp_ins(){

int i;Node *q;q=head.pHead;//q指向学院节点双向链表头指针

for(i=1;i<=head.size;i++){

cout<pData->name<pData->head.size<

}

void University::design_ins(){

int i;int j;cout<<“

★★★★★★学院信息设置★★★★★★

”<pNext;

cout<>i;system(“cls”);//清屏 switch(i){ case 1:

{

} disp_ins();cout<<“按任意键返回上一级菜单:”<

disp_ins();

add_ins();

cout<<“按任意键返回上一级菜单:”<

getch();system(“cls”);//清屏 design_ins();

break;} case 3: {

} disp_ins();cout<<“输入删除学院序号:”;cin>>j;delete_ins(j);cout<<“按任意键返回上一级菜单:”<

disp_ins();cout<<“输入修改学院序号:”;cin>>j;modefy_ins(j);cout<<“按任意键返回上一级菜单:”<

} case 5:menu(*this);break;} }

bool University::modefy_cqut(){ cout<<“学校名字:”;cin>>name;cout<<“创建年代:”;cin>>age;cout<<“学校地址:”;cin>>addr;return true;}

void University::design_cqut(){ int i;

University uni;cout<<“

★★★★★★学校信息设置★★★★★★ cout<>i;system(”cls“);//清屏

switch(i){

case 1:

{

disp_cqut();

cout<<”按任意键返回上一级菜单:“<

getch();system(”cls“);//清屏

design_cqut();

break;

}

case 2:

{

modefy_cqut();

cout<<”按任意键返回上一级菜单:“<

getch();system(”cls“);//清屏

design_cqut();break;”<

}

} } case 3:menu(uni);break;

void University::disp_cqut(){

cout<<“学校有关信息为:”<

}

void University::search_name(string n){

int i,j,m=0;head.pCurrent=head.pHead;//当前指针指向学院节点头指针 for(i=0;ipData->head.pCurrent=head.pCurrent->pData->head.pHead;//当前指cout<<“学校名字:”<for(j=0;jpData->head.size;j++)

{

if(n==head.pCurrent->pData->head.pCurrent->pData->name)

{

} head.pCurrent->pData->head.pCurrent->pData->disp_stu();m++;head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;//学生当前指针后移

}

bool University::search_age(int n){

int i,j,m=0;head.pCurrent=head.pHead;for(i=0;ipNext;//学院当前指针后移

} cout<<“有”<

}

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pHead;for(j=0;jpData->head.size;j++){ if(n==(head.pCurrent->pData->head.pCurrent->pData->age)){

} head.pCurrent->pData->head.pCurrent->pData->disp_stu();m++;head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;} head.pCurrent=head.pCurrent->pNext;} cout<<“有”<

void University::search(string n){

} int i,j,m=0;head.pCurrent=head.pHead;for(i=0;ipData->head.pCurrent=head.pCurrent->pData->head.pHead;

for(j=0;jpData->head.size;j++){

if(n==head.pCurrent->pData->head.pCurrent->pData->sex){ head.pCurrent->pData->head.pCurrent->pData->disp_stu();} m++;

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;

} cout<<“有”<pNext;void University::search(int n){

int i,j,m=0;head.pCurrent=head.pHead;for(i=0;i

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pHead;

for(j=0;jpData->head.size;j++)

{

if(n==head.pCurrent->pData->head.pCurrent->pData->number)

{

head.pCurrent->pData->head.pCurrent->pData->disp_stu();

m++;

}

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;

}

head.pCurrent=head.pCurrent->pNext;} cout<<“有”<

/****************************************信息查询菜***********************************************/

void University::search_menu(){ int i;cout<<“

★★★★★信息查询显示★★★★★”<>i;system(“cls”);//清屏

switch(i){ case 1: {

disp_ins();

cout<<“按任意键返回上一级菜单:”<design_ins();break;} case 2:

{

} head.pCurrent=head.pHead;//当前指针指向学院节点头指针 for(i=0;i

} head.pCurrent->pData->disp_ins_1();head.pCurrent=head.pCurrent->pNext;cout<<“按任意键返回上一级菜单:”<search_menu();break;case 3: {

} int j;disp_ins();cout<<“请输入学生所在学院序号:”;cin>>i;system(“cls”);//清屏 head.pCurrent=head.pHead;for(j=1;jpNext;head.pCurrent->pData->disp_ins_1();cout<<“按任意键返回上一级菜单:”<search_menu();break;

case 4:

{

string n;cout<<“输入要查询的姓名:”;cin>>n;system(“cls”);//清屏 search_name(n);

} cout<<“按任意键返回上一级菜单:”<search_menu();break;case 5:

{

} int n1;cout<<“输入要查询的年龄:”;cin>>n1;search_age(n1);cout<<“按任意键返回上一级菜单:”<search_menu();break;

system(“cls”);//清屏

case 6: {

} string n;cout<<“输入要查询的性别:”;cin>>n;system(“cls”);//清屏 search(n);cout<<“按任意键返回上一级菜单:”<search_menu();break;case 7: {

} int n;cout<<“输入要查询的学号:”;cin>>n;system(“cls”);//清屏 search(n);cout<<“按任意键返回上一级菜单:”<search_menu();break;case 8: {

menu(*this);

}

} } break;/**********************************************************************/ {

int i,j;ifstream inf(“cqutData.txt”,ios::in);inf>>uni.name;inf>>uni.age;inf>>uni.addr;inf>>uni.head.size;//学院个数 for(i=0;i>p->name;

导出文件数据void file_in(University &uni)

Node *m=new Node;//建立学院信息节点 m->pData=p;//把输入的学院信息节点赋给建立的学院信息节点 m->pNext=0;if(i==0)uni.head.pHead=m;//把节点m赋给学院信息节点

else uni.head.pEnd->pNext=m;//把节点m赋给下一个学院信息节点 m->pPrev=uni.head.pEnd;//节点m指向学院信息的尾节点

uni.head.pCurrent=uni.head.pEnd=m;//学院信息的尾节点始终指向m节点 inf>>uni.head.pCurrent->pData->head.size;//学生个数 for(j=0;jpData->head.size;j++){

Student *q=new Student;inf>>q->name;inf>>q->age;inf>>q->sex;inf>>q->number;inf>>q->major;

Node *n=new Node;n->pData=q;n->pNext=0;if(j==0)uni.head.pCurrent->pData->head.pHead=n;else uni.head.pCurrent->pData->head.pEnd->pNext=n;

n->pPrev=uni.head.pCurrent->pData->head.pEnd;

uni.head.pCurrent->pData->head.pCurrent=uni.head.pCurrent->pData->head.pEnd=n;//学生信息的尾节点始终指向n节点

} } }

/************************************************************************************/ void file_out(University uni){

ofstream ouf(“cqutData.txt”,ios::out);int i,j;ouf<

导入文件数据ouf<

uni.head.pCurrent=uni.head.pHead;//当前指针指向学院节点头指针 for(i=0;i

ouf<pData->name<

ouf<pData->head.size<

uni.head.pCurrent->pData->head.pCurrent=uni.head.pCurrent->pData->head.pHead;//当前指针指向学生节点头指针

for(j=0;jpData->head.size;j++){

ouf<pData->head.pCurrent->pData->name<pData->head.pCurrent->pData->age<pData->head.pCurrent->pData->sex<pData->head.pCurrent->pData->number<pData->head.pCurrent->pData->major<

uni.head.pCurrent->pData->head.pCurrent=uni.head.pCurrent->pData->head.pCurrent->pNext;//学生当前指针后移

}

} } uni.head.pCurrent=uni.head.pCurrent->pNext;//学院当前指针后移

/************************退出系统菜单****************************/

void exit(University uni){

} int i;cout<<“是否保存修改内容:”<>i;system(“cls”);//清屏 switch(i){ case 1:

{

} file_out(uni);exit(0);break;case 2:{exit(0);break;} case 3:

{ menu(uni);break;} case 4:

{

file_out(uni);

}

} menu(uni);break;

/***************************************************************************************/ void menu(University uni){

system(“cls”);/*清屏*/ int i;cout<

主菜单 cout<<“★★★★★★★★★★★★★主菜单★★★★★★★★★★★★★”<

cout<

cout<

cout<>i;system(“cls”);//清屏

}

int main(){ University u;

} file_in(u);menu(u);return 0;switch(i){

case 1:uni.design_cqut();break;case 2:uni.design_ins();break;case 3:uni.design_stu();break;

case 4:uni.search_menu();break;

case 5:exit(uni);break;}

相关内容

热门阅读

最新更新

随机推荐