简单学生管理系统设计.doc

上传人:rrsccc 文档编号:9820714 上传时间:2021-03-28 格式:DOC 页数:20 大小:149KB
返回 下载 相关 举报
简单学生管理系统设计.doc_第1页
第1页 / 共20页
简单学生管理系统设计.doc_第2页
第2页 / 共20页
简单学生管理系统设计.doc_第3页
第3页 / 共20页
简单学生管理系统设计.doc_第4页
第4页 / 共20页
简单学生管理系统设计.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《简单学生管理系统设计.doc》由会员分享,可在线阅读,更多相关《简单学生管理系统设计.doc(20页珍藏版)》请在三一文库上搜索。

1、广州大学学生实验报告开课学院及实验室:计算机科学与工程实验室 2011 年12月28日学院计算机科学于教育软件学院年级/专业/班计算机02姓名杨华奇学号1006100096实验课程名称程序设计课程设计成绩实验项目名称简单学生管理系统设计指导老师田际平王建雄(*报告只能为文字和图片,老师评语将添加到此处,学生请勿作答*)一、实验目的 通过本课程的教学实践,使学生达到加深对计算机高级语言程序设计特点、结构化程 序设计方法和面向对象程序设计的理解、提高学生对可视化编程的动手能力之目的2、 实验内容 “简单学生管理系统设计”1 系统功能简介:本系统有包括7个主要功能供给用户,用于管理学生信息。输入和储

2、存学生信息用户可以使用系统储存学生信息,包括学生姓名,学号,性别,成绩(物理,英语,数学,计算机导论,C程序)2 查看学生信息通过使用系统可以查看已统计好的学生信息3 学生成绩统计:使用系统可以浏览学生已排好的成绩统计,包括名次,总分,平均分,最高和最低分。4 查找学生信息:使用系统可以浏览单个学生的信息,分为按学号和姓名查找。5 修改学生信息:当学生信息有误时就可以通过系统来修改。6 删除学生信息:使用系统可以要删除某个学生信息。7 增加学生信息:不能在第一个功能上增加学生信息,只能在这个功能上实现。8. 退出。系统主程序退 出输入和储存学生信息查 看 学 生 信 息学 生 成 绩 统 计查

3、 找 学 生 信 息修 改 学 生 信 息删 除 学 生 信 息 增 加 学 生 信 息按学生学号查找按学生姓名查找三、实验原理 本设计内容可用程序设计基础方法完成,参考程序设计课程设计实验指导书四、实验设备 软件Visual Studio 2010五、实验要求 必修 6、 实验程序#include StdAfx.h#include #include #include using namespace std;/全局量int n=0;int nk=0;char *filename;long num1000;int work_l=0;int level = 1;int build = 0;fstr

4、eam f;/成绩类struct studentpublic:/个人信息char name20;char sex10;long number;/各科成绩变量float m_english;float m_math;float m_computer;float m_programming;float m_phisic;float m_total; float m_reverage;float m_highest;float m_lowest;s;/ 1.11 求平均分void reverage(student &st)st.m_reverage = st.m_total/5;/1.12 求总分v

5、oid total(student &st)st.m_total = st.m_math + st.m_english + st.m_computer + st.m_programming + st.m_phisic;reverage(st);/1.13 显示各科成绩void s_show(student &st)cout t英语t数学t物理t导论t程序t 总分t 平均分n;cout t st.m_english t st.m_math t st.m_phisic t st.m_computer t st.m_programming t;cout st.m_total t st.m_rever

6、age endlendlendl;/1.2 显示数据函数void show(student &st)if(work_l=1&level=n)cout 名次: level endl;+level;cout t姓名t性别t学号n;cout t st.name t st.sex t st.numberendl =0&grade=150)cout grade;return grade;/判断学号是否重复long judge1(long s_num)if(nk)int work01 = 1;int l = 0;for(;lnk;+l)if(s_num=numl)cout s_num;numnk = s_

7、num;s_num = judge1(s_num); work01 = 0;else work01 = 1;if(work01=1)return s_num;return s_num;/1.4 输入void input(student &st)int sex;char *ss;/输入各项信息cout st.name;cout st.number;numnk = st.number;st.number = judge1(st.number);cout sex;if(sex=1)ss = 男;else if(sex=0)ss = 女;else ss =未知;strcpy_s(st.sex,ss);

8、cout st.m_english;st.m_english = judge(st.m_english);cout st.m_math;st.m_math = judge(st.m_math);cout st.m_phisic;st.m_phisic = judge(st.m_phisic);cout st.m_computer;st.m_computer = judge(st.m_computer);cout st.m_programming;st.m_programming = judge(st.m_programming);cout endl endl;total(st);f.write

9、(char*)&st,sizeof(student);/1.5 判断是否已经创建操作员输入的文件名的文件int judge()if(!build)cout 还未创建文件!请重新选择操作! endl;return 0;else return 1;/1.5 写入信息void set()cout n;/打开文件f.open(filename,ios:out); for(int i = 0;in;+i)nk = i;input(s);/表明已经创建了文件build = 1;/关闭文件f.close(); /2 浏览 void skim(student &st) int work0 = 1;work0

10、= judge();if(work0=0)return;f.open(filename,ios:in); if(!f) cerr 打不开文件。n; abort(); /移动流指针到文件头f.seekg( 0,ios:beg ); for(int i = 0;in;+i)f.read(char*)&st,sizeof(student);cout 第 i+1 个人n;show(st);f.close();/3 统计void manage() int work0 = 1;work0 = judge();if(work0 = 0) return;f.open(filename,ios:in|ios:o

11、ut); if(!f) cerr 打不开文件。n; abort(); /将真值赋给名次工作机制判断变量work_l = 1;/移动流指针到文件头f.seekg( 0,ios:beg ); student *temp = new studentn;int work;for(int i = 0;in;+i)f.read(char*)&tempi,sizeof(student);/对数组排序for(int pass = 1;pass n;+pass)work = 0;int p =0;for(p;p n-pass;+p)if(tempp.m_totaltempp+1.m_total)student

12、st;/比较总分,进行相应操作st = tempp; tempp = tempp+1;tempp+1 = st;work = 0;/若没有重新排序则证明已排序好,退出当前操作if(work)break;f.seekp(0,ios:beg);for(int p = 0;pn;+p)f.write(char*)&tempp,sizeof(student);f.close();/浏览统计后的数据信息skim(s);if(n)cout 最高分为: endlendl;show(temp0);cout 最低分为: endlendl;show(tempn-1);delete (temp);/4 查找void

13、 find()/judge();int work0 = 1;work0 = judge();if(work0 = 0)return;f.open(filename,ios:in); if(!f) cerr 打不开文件。n; abort(); /声明本函数需要用到的变量int work = 0;char name20;unsigned long num;int choice;cout -按姓名查找:0- endl -按学号查找: 1- choice;/选择用户及其信息来操作if(choice=0)cout name;else if(choice=1)cout num;else cout 操作错误

14、!n;f.close();return; /移动流指针到文件头f.seekg( 0,ios:beg ); for(int i = 0;in;+i)f.read(char*)&s,sizeof(student);switch(choice)case 0:if(!strcmp(name,s.name)cout 信息找到!n;show(s);work = 1;break;case 1:if(num=s.number)cout 信息找到!n;show(s);work = 1;break;default:;break;if(!work)cout 找不到该学生信息!n;f.close();/5 修改voi

15、d correct()int work0 = 1;work0 = judge();if(work0=0)return;f.open(filename,ios:in); if(!f) cerr 打不开文件。n; abort(); int work = 0;int work_correct = 0;int ch;int i = 0;unsigned long num1;student *temp = new studentn;/移动流指针到文件头f.seekg( 0,ios:beg ); for(i;in;+i)f.read(char*)&tempi,sizeof(student);f.close

16、();cout num1;/已删除现有内容的方式打开文本f.open(filename,ios:trunc|ios:out); if(!f) cerr 打不开文件。n; abort(); for(i=0;in;+i)if(tempi.number = num1)work_correct = 1;cout 信息找到!n;work = 1;cout *选择需要修改的数据* n * 1: 姓 名 * * n * 2: 学 号 * * n * 3: 性 别(男:1,女:0) n * 4: 英 语 * * n * 5: 数 学 * * n * 6: 物 理 * * n * 7: 导 论 * * n *

17、8: 程 序 * * n ch;int sex;char *s;/重新输入需要修改的数据switch(ch)case 1:cin tempi.name;break;case 2:for(int m = 0;m tempi.number;numn = tempi.number;tempi.number = judge1(tempi.number);break;case 3:cin sex;if(sex)s = 男;else s = 女;strcpy_s(tempi.sex,s);break;case 4:cin tempi.m_english;break;case 5:cin tempi.m_m

18、ath;break;case 6:cin tempi.m_phisic;break;case 7:cin tempi.m_computer;break;case 8:cin tempi.m_programming;break;default :cout 操作错误!n;break;total(tempi);f.write(char*)&tempi,sizeof(student);if(!work)cout 找不到该学生信息!n;delete(temp);f.close();/6 删除void del()int work0 = 1;work0 = judge();if(work0=0)return

19、;f.open(filename,ios:in); if(!f) cerr 打不开文件。n; abort(); /声明该函数需要的一些变量int work = 0;unsigned long num1;int i = 0;student *temp = new studentn;/移动流指针到文件头f.seekg( 0,ios:beg ); for(i;in;+i)/读出信息给一个结构数组中f.read(char*)&tempi,sizeof(student);f.close();cout num1;/已删除现有内容的方式打开文本f.open(filename,ios:trunc|ios:ou

20、t); if(!f) cerr 打不开文件。n; abort(); /重新写入int nn = n;for(i=0;inn;+i)if(tempi.number = num1)char ch2;cout 要删除的信息找到了,是否要删除?n;show(tempi);cout ch2;if(ch2=y|ch2=Y)numi = -1000;cout 信息已删除!n;-n;nk = n;else f.write(char*)&tempi,sizeof(student);work = 1;elsef.write(char*)&tempi,sizeof(student);if(!work)cout 找不

21、到该学生信息!n;/取消名次操作变量的真值状态work_l = 0;delete(temp);f.close();/7 增加void add()int work0 = 1;work0 = judge();if(work0=0)return;f.open(filename,ios:app); if(!f) cerr 打不开文件。n; abort(); student st;f.seekp(0,ios:end);/调用输入信息函数nk = n;input(st);+n;/取消名次操作变量的真值状态work_l = 0;f.close();int _tmain()cout ttt*n ttt* *n

22、 ttt* 学生管理系统 *n ttt* *n ttt*n endl;char choice;filename = E:student.txt;cout filename endl;/输入信息while(1)cout ttt*选择操作*nn ttt*i: 输入&储存学生信息*n ttt*s: 查 看 学 生 信 息*n ttt*m: 学 生 成 绩 统 计*n ttt*f: 查 找 学 生 信 息*n ttt*c: 修 改 学 生 信 息*n ttt*d: 删 除 学 生 信 息*n ttt*a: 增 加 学 生 信 息*n choice;if(choice=65&choice=90)choi

23、ce +=32;switch(choice)case i:set();break; case s:skim(s);break;case m:manage();break;case f:find();break;case c:correct();break;case d:del();break;case a:add();break;case q:exit(0);break;default:cout 操作错误! endl;break;return 0;截图:写入:void set();查看:void skim();统计:void manage();姓名查找:void find();学号查找:void find();修改:void correct();修改后再查看删除:void del();增加:void add();退出:七、总结心得1:对IO流的操作中,要时刻注意是否打开的文本在用完后是否关闭了,否则很容易出错。2:对IO流指针的赋值和流对象的引用要谨慎,否则会导致数据传输的乱码和错误。就比如这个程序中,刚开始时的查找信息函数由于流对象f的传输不仔细,把f引用到输出函数后不知道在哪里出错了,导致了查找并判断信息是否符合要求时,输出的数据并不是要查找的数据。3. 对输入相同数据的删除处理不好会出现乱码。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1