学生信息管理系统C++课程设计(14页).doc
-学生信息管理系统C+课程设计-第 14 页中 州 大 学课程设计 学 院: 信息工程学院 班 级: 14级软件技术(普招) 题 目: 学生信息管理系统 学生姓名: 熊建 学号: 201427050124 指导教师: 马 芳 学 期: 2014-2015学年第二学期 2015年 6 月 20 日课程设计一、 设计思路1. 程序名称为:学生信息管理系统。该程序能实现的功能:程序密码、录入学生信息、读取学生信息、删除学生信息、修改密码、查看作者信息。2. 初次打开程序,程序自动生成“默认密码”文件,储存在用户电脑D:stusystemkey文件夹中。并在程序目录下生成一个“old”文件夹,在下次进入程序时,系统自动检测“old”文件及是否存在,以判断是否是第一次使用。若已存在,则要求用户输入密码,以进入程序主菜单,并提示用户剩余密码输入次数,若用户连续五次密码输入错误,则程序自动关闭。3. 进入程序主菜单,用户输入通过数字选择菜单项。3.1信息录入系统:用户进入“信息录入系统”即开始输入第一个学生的姓名、性别、学号等信息,一个学生信息录入完毕,程序自动为该学生生成一个以该学生姓名命名,无扩展名的文件,将该学生的信息储存在程序根目录下,调用Windows系统的拷贝功能,将文件拷贝到用户电脑D:stusystemstudent文件夹中,并删除原文件。程序继续让用户录入第二个学生信息。在任意项目输入过程中输入“m”(无论大小写)即返回程序主菜单。3.2信息查询系统:用户进入“信息查询系统”即开始输入要查询的学生姓名,回车即可显示该学生的详细信息。输入“m”(无论大小写)即返回程序主菜单。3.3 .删除系统中储存的学生信息:进入之后用户可选择“清空全部学生信息”、“删除单个学生信息”。清空全部学生信息,则调用windows系统命令,清空用户电脑D:stusystemstudent文件夹中的所有文件,在真正清空之前,再次提醒用户是否确认删除。清空完成后,给用户一个“清空完成”的反馈,程序回到主菜单。删除单个学生信息,则要用户输入要删除的学生姓名,并提醒用户是否确认删除,删除完成继续在删除学生信息界面,至用户输入“m”,程序返回主菜单。3.4 修改密码:用户需两次输入相同密码后才能修改成功,系统会新建一个名为“”的文件储存在用户电脑D:stusystemkey文件夹中,以替换程序原密码。完成后提示用户密码修改成功。3.5 关于:此选项会打开一个文本文档来介绍程序及作者的相关信息,并根据用户的需要,可选择是否访问该程序及作者的相关网站。3.6 退出程序二、 设计过程设计程序中遇到的不常用的代码:1.判断文件是否存在,不存在则生成一个文件夹:以“old”文件为例char ifkey="old"/-自定义文件名 if( !CreateDirectory(ifkey, NULL) )/-如果文件存在2.判断输入的内容与预设的内容是否相符:char key50;cin>>key;if(!strcmp(oldkey,key)/-如果相同3.打开指定文件,并将其内容赋给一个形参key为例:ifstream inFile;inFile.open("D:stusystemkeykey.mle");/-打开原密码char oldkey50;inFile >>oldkey;/-赋给oldkey4.在电脑中新建文件夹system("mkdir D:stusystemkey");system("mkdir D:stusystemstudent");5.在电脑指定目录生成文件,并编辑内容:ofstream outfile("D:stusystemkeykey.mle");/-定义文件名及文件位置outfile<<"米灵尔"<<endl;/-设置文件内容为“米灵尔”outfile.close();6.以学生姓名给文件命名,并填写学生信息:char name50;cin>>name;ofstream outfile(stuname.c_str();outfile<<"姓名:"<<name<<"outfile.close();7.将文件拷贝到指定位置:system("copy *. D:stusystemstudent");/-将学生信息文件拷贝到D盘8.删除文件:system("del D:stusystemstudent");/-删除该目录下的所有文件9.自定义指定删除某个文件,利用批处理文件操作:cin>>delname;ofstream outfile("D:stusystemstudent1.bat");/新建批处理文件到指定位置outfile<<"del D:stusystemstudent"<<delname;/-编辑批处理文件内容outfile.close();/-生成批处理文件调用程序运行char *p="D:stusystemstudent1.bat"system(p);/-运行批处理文件运行结果:三、总结 编写一个程序最主要的,是始终要明确自己的思路。任何一个程序在编写的时候都会出现很多种问题,通常在几百行的代码里找问题很让人头疼,但是只要始终明确自己的思路,就不怕程序出现问题,程序的运行与否很大部分受逻辑限制,出现问题了,根据自己的思路来研究程序中的逻辑,很快就能找到问题所在。 编写一个复杂点的程序可能会遇到靠自己编写的代码不能实现的功能,这时候好好地利用下网络,可以从中学到很多东西。附程序代码附:#include<iostream>#include<climits>#include<string>#include<fstream>#include<stdlib.h>#include<windows.h>using namespace std;class stusystempublic:void get();void make(char name50,char sex50,char num20,string filename);char name50;char sex50;char num20;ofstream outfile;string stuname;void read(string stuname);void menu();void readxinxi();void keypanduan();char key50;void welcome();void about();void changekey();void maketxt();void del();void stusystem :get()system("cls");cout<<" =n"cout<<" | |n"cout<<" | 欢迎进入米灵尔学生信息录入系统 |n"cout<<" | |n"cout<<" =nn"cout<<" -输入“m”,可返回菜单-nnn"cout<<"n请输入学生姓名:"cin>>name;char back150="m"char back250="M"if(!strcmp(back1,name)|!strcmp(back2,name)system("cls");stusystem a;a.menu();cout<<"n请输入学生性别:"cin>>sex;if(!strcmp(back1,sex)|!strcmp(back2,sex)system("cls");stusystem a;a.menu();cout<<"n请输入学生学号:"cin>>num;if(!strcmp(back1,num)|!strcmp(back2,name)system("cls");stusystem a;a.menu();stusystem a;a.make(name,sex,num,name);/-以下是生成文件的程序-void stusystem :make(char name50,char sex50,char num20,string stuname)ofstream outfile(stuname.c_str();outfile<<"姓名:"<<name<<" n性别:"<<sex<<"n学号:"<<num;outfile.close();system("copy *. D:stusystemstudent");/将学生信息文件拷贝到D盘 system("del *.");stusystem b;b.get();/-以上是生成文件的程序-void stusystem :readxinxi()cout<<" -输入“m”,可返回菜单-nnn"cout<<"请输入学生姓名:"cin>>name;system("cls");cout<<" =n"cout<<" | |n"cout<<" | 欢迎进入米灵尔学生信息查询系统 |n"cout<<" | |n"cout<<" =nn"char back150="m"char back250="M"if(!strcmp(back1,name)|!strcmp(back2,name)stusystem a;a.menu();cout<<endl<<endl;stusystem a;a.read(name);void stusystem :read(string stuname)/-以下是读取文件的程序-ifstream in(stuname.c_str();string line;while(getline(in,line)cout<<line<<endl;stusystem a;a.readxinxi();/-以上是读取文件的程序-void stusystem :about()cout<<" =n"cout<<" | |n"cout<<" | 关于 About |n"cout<<" | |n"cout<<" =nnn"cout<<" 此程序完全由米灵尔_熊建编写,如与某同学的程序有相似之处纯属缘分!nn"cout<<" 编写时间:2015年6月22日,星期二nn 程序版本号:15.3.1n"/15年第3次功能改动,第1次修改cout<<"n是否简单了解一下米灵尔?Y/Nn"char yes;cin>>yes;if(yes='y'|yes='Y')stusystem a;a.maketxt();char *p="米灵尔.txt"system(p);char *b="mle.html"system(b);elseif(yes!='n'&&yes!='N')cout<<"输入有误,请重新输入nn"stusystem a;a.about();system("del 米灵尔.txt");system("cls");yes=0;cout<<"n是否访问米灵尔网站?Y/Nn"cin>>yes;if(yes='y'|yes='Y')ShellExecute(NULL,"open","",NULL,NULL,SW_SHOW); elseif(yes!='n'&&yes!='N')cout<<"n输入有误,请重新输入nn"stusystem a;a.about();system("del 米灵尔.txt");system("cls");system("del 米灵尔.txt");system("cls");stusystem a;a.menu();void stusystem :maketxt()ofstream outfile("米灵尔.txt");/-自定义目录生成文件,名为“key”outfile<<" 米灵尔是一个仍处于“幼年期”的团队。n 团队是2013年由两个高中生创立,一直持续到今天。团队没有多么n发达,强大,但有着不断学习进取的心态。我们不怕别人的嘲讽,与蔑视,n只为让加入我们的人掌握更多的本领;认识我们的人,从我们这里学到n有用的东西。 我们没有定向发展,是因为我们还在成长。我们会像当今的中国一样:n 走着“米灵尔特色,团队主义”道路。我们也处于初级发展阶段。n 要问米灵尔到底是做什么的?答:学习,服务。nn米灵尔网址:n邮箱:postmastern"<<endl;/-文件内容 outfile.close(); void stusystem :del()system("cls");cout<<" =n"cout<<" | |n"cout<<" | 删除学生信息 |n"cout<<" | |n"cout<<" =nnn"cout<<" 请选择:nt1.清空全部学生信息nt2.删除单个学生信息ntm.返回菜单"<<endl;char a10;cin>>a;char a110="1"char a210="2"if(!strcmp(a1,a)|!strcmp(a2,a)if(!strcmp(a1,a)cout<<" 确定清空系统中储存的所有学生信息?n 此操作不可恢复! 是否继续? 是Y/否Nn"char del;cin>>del;if(del='y'|del='Y')cout<<"正在清理"system("del D:stusystemstudent");system("del *.");cout<<"学生信息文件已全部清空"<<endl;_sleep(2000);stusystem a;a.menu();elsesystem("cls");stusystem a;a.del();elsechar delname50;cout<<"请输入要删除的学生姓名:"<<endl<<endl;cin>>delname;cout<<"n确定删除"<<delname<<"学生的信息? 是Y/否Nn"<<endl;char del;del=0;cin>>del;if(del='y'|del='Y')ofstream outfile("D:stusystemstudent1.bat");/利用批处理文件删除outfile<<"del D:stusystemstudent"<<delname;outfile.close();/-生成批处理文件char *p="D:stusystemstudent1.bat"system(p);system("del D:stusystemstudent1.bat");system("cls");cout<<"n学生:"<<delname<<"的信息已删除完成"_sleep(2000);system("cls");stusystem a;a.del();elsesystem("cls");stusystem a;a.del();elsestusystem a;a.menu();void stusystem :menu()system("del *.");/删除本地学生信息文件system("cls");cout<<" =n"cout<<" | |n"cout<<" | 米灵尔学生信息管理系统菜单 |n"cout<<" | |n"cout<<" =nn"char choose10;char c110="1"char c210="2"char c310="3"char c410="4"char c510="5"char c010="0"char cM10="M"char cm10="m"cout<<"n 系统菜单:nn 1.进入信息录入系统nn 2.进入信息查询系统nn 3.删除系统中储存的学生信息nn"cout<<" 4.修改密码nn 5.关于nn 0.退出系统nn"cout<<" 操作过程中输入m进入菜单nn"cout<<"选择:" cin>>choose;cout<<endl;if(!strcmp(c1,choose)|!strcmp(c2,choose)|!strcmp(c3,choose)|!strcmp(c4,choose)|!strcmp(c5,choose)|!strcmp(c0,choose)|!strcmp(cM,choose)|!strcmp(cm,choose)if(!strcmp(c1,choose)system("cls");cout<<" =n"cout<<" | |n"cout<<" | 欢迎进入米灵尔学生信息录入系统 |n"cout<<" | |n"cout<<" =nnn"stusystem a;a.get();if(!strcmp(c2,choose)system("copy D:stusystemstudent*." );/把文件拷贝回来system("cls");cout<<" =n"cout<<" | |n"cout<<" | 欢迎进入米灵尔学生信息查询系统 |n"cout<<" | |n"cout<<" =nn"stusystem a;a.readxinxi();if(!strcmp(c3,choose)stusystem a;a.del();if(!strcmp(c4,choose)stusystem a;a.changekey();if(!strcmp(c5,choose)system("cls");stusystem a;a.about();if(!strcmp(c0,choose)cout<<"系统正在关闭,再见!"_sleep(1000);exit(3);if(!strcmp(cM,choose)|!strcmp(cm,choose)stusystem a;a.menu();elsecout<<"n输入有误,请重新输入nn"_sleep(1000);stusystem a;a.menu();void stusystem :keypanduan() char ifkey="old"/-判断是否第一次使用(第一次生成文件)- if( !CreateDirectory(ifkey, NULL) )/-判断是否第一次使用- cout<<"请输入系统使用密码 (如忘记密码请与管理员联系:postmaster):n" cin>>key; ifstream inFile;/-打开原密码 inFile.open("D:stusystemkeykey.mle");/-打开原密码 char oldkey50; char off10="0" inFile >>oldkey;/-将原密码赋给“oldkey” int i=4,n=5; for(i=5;i!=0;i-) n-;/n=4 if(!strcmp(oldkey,key)|n=0|!strcmp(off,key) if(n=0) cout<<"=n" cout<<"| 密码输入错误,系统即将关闭! |n" cout<<"=nn" _sleep(3000); exit(3); if(!strcmp(oldkey,key) stusystem a; a.welcome(); if(!strcmp(off,key) cout<<"系统正在关闭,再见!" _sleep(1000); exit(3); else cout<<"n密码输入错误,您还有"<<n<<"次机会,"<<n<<"次之后管理系统将关闭,n您可以请重新输入!,或退出程序。n" cin>>key; cout<<endl; else cout<<"初次使用,正在生成系统密码:nn" _sleep(800); cout<<"初始密码为“米灵尔”,下次进入系统请先输入密码nn" system("mkdir D:stusystemkey"); system("mkdir D:stusystemstudent");/-生成文件夹- ofstream outfile("D:stusystemkeykey.mle");/-生成原密码,储存为名为“key”的文件里 outfile<<"米灵尔"<<endl;/-原密码为“米灵尔” outfile.close(); /-关闭生成文件程序 _sleep(8000); stusystem a; a.welcome();void stusystem :welcome()system("cls");cout<<" =n"cout<<" | |n"cout<<" | 欢迎使用米灵尔学生信息管理系统 |n"cout<<" | |n"cout<<" =nnn"_sleep(1000);stusystem a;a.menu();void stusystem :changekey()char newkey150;char newkey250;cout<<"请输入新密码:"cin>>newkey1;cout<<"n请再输入一次:"cin>>newkey2;if(!strcmp(newkey1,newkey2)ofstream outfile("D:stusystemkeykey.mle");outfile<<newkey1<<endl;outfile.close(); system("cls");cout<<"n 新密码设置成功,请牢记密码!n"stusystem a;a.menu();elsecout<<"两次输入不一样,请重新输入nn"stusystem a;a.changekey();void main()char key50;cout<<" =n"cout<<" | |n"cout<<" | 米灵尔学生信息管理系统 |n"cout<<" | |n"cout<<" =nnn"stusystem a;a.keypanduan();/-此程序由米灵尔_熊建于2015年5月14日编写,最后修改时间2015年6月22日3点48分-/-请尊重别人的劳动成果,谢谢!-