通用学生信息管理系统_第1页
通用学生信息管理系统_第2页
通用学生信息管理系统_第3页
通用学生信息管理系统_第4页
通用学生信息管理系统_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c#程序设计期末作业通用学生信息管理系统计算机科学与工程学院班级:123456姓名:张三儿学号:123456782014年5月一、题目分析1、基本功能要求:(1)创建相应的成员变量保存学生基本信息;(2)创建相应属性和索引以实现对成员变量访问的封装;(3)创建相应的方法以实现对学生基本信息的管理;(4)创建相应的方法以实现对学生成绩的管理;(5)构造函数和析构函数;(6)由学生类派生出小学生、中学生以及大学生;(7)尽量用上继承、多态、重载、覆盖、接口、抽象类、代理、事件等知识。2、设计思路:本题目要求学生设计一个通用学生信息管理系统,能够分别实现对小学生、中学生以及大学生信息及成绩的管理。定

2、义学生类student,在学生类中定义学生的公共属性,比如学号、姓名以及平均分等。由学生类student派生出三个子类,即小学生类xiaoxue、中学生类zhongxue和大学生类daxue。再分别在各个子类中定义其独有属性,编写函数进行各种操作, 主要包括对学生信息的增、删、改、查及显示全部等操作,以及对学生的成绩进行管理,主要是求平均分操作并按从高到低降序排列输出。本系统采用文件存储数据,代码中有对应的文件操作,能够实现对输入的数据的保存。二、系统设计小学生管理界面大学生管理界面中学生管理界面登录主界面增加信息修改信息 删除信息 查找信息 增加信息 修改信息 删除信息 查找信息 增加信息

3、修改信息 删除信息 查找信息 排 序 排 序 排 序 退出系统2、界面设计:(1)用户选择界面:(2子类界面:(3)增加学生信息:(4)修改学生信息:(5)删除学生信息:(6)查找学生信息:(7)显示全部信息:(8)按平均分排序:三、知识清单1、定义了相应的成员变量来保存学生的基本信息,如学号、姓名、科目成绩等;2、定义了相应属性以来获取学生基本信息;3、定义了相应的方法实现了对学生基本信息的管理,如add()、order()、delete()等方法实现对学生信息的增删改查;4、定义了相应的方法order()对学生成绩信息进行管理;5、定义了构造函数进行初始化并且有默认的析构函数;6、定义学生

4、类student,由student类派生出三个子类分别对小学生、中学生、大学生信息进行管理;7、本实验程序没有连接数据库,所用数据都存在相应的文件操作中,有相应的方法实现文件相关操作;8、重载了操作符小于和大于号五、实验程序代码using system;using system.io;using consoleapplication1;public class student public string no; public string name; public int average; public static bool operator (student s1, student s2)

5、 /重载 if (s1.average s2.average) return true; else return false; public static bool operator (student s1, student s2) if (s1.average s2.average) return true; else return false; ;class studentmanagesystem static consoleapplication1.xiaoxue sd; public static void show() int cases = 0; bool flag = true;

6、 while (flag) console.clear(); console.writeline(tt* 欢迎进入学生信息管理系统!*); console.writeline(tt 1. 小学生界面); console.writeline(tt 2. 中学生界面); console.writeline(tt 3. 大学生界面); console.writeline(tt*); console.write(tt请输入选择(数字1-3):); cases = convert.toint32(console.readline(); if (cases = 1) flag = false; switc

7、h (cases) case 1: menu1(); break; case 2: menu2(); break; case 3: menu3(); break; public static void menu1() /小学主菜单 xiaoxue s = new xiaoxue(); bool flag = true; int selnumber = 0; while (flag) console.clear(); console.writeline(tt* 欢迎进入小学生信息管理系统!*); console.writeline(tt 1. 增加数据); console.writeline(t

8、t 2. 修改数据); console.writeline(tt 3. 删除数据); console.writeline(tt 4. 按姓名查找); console.writeline(tt 5. 显示全部); console.writeline(tt 6. 按平均分排序); console.writeline(tt 7. 退出系统); console.writeline(tt*); try console.write(tt请输入选择(数字1-7):); selnumber = convert.toint32(console.readline(); catch (formatexception

9、) console.writeline(你输入的数据格式有误!); if (selnumber = 1) flag = false; switch (selnumber) case 1: s.add(); break; case 2: s.modify(); break; case 3: s.deletedata(); break; case 4: s.search(); break; case 5: s.browse(); break; case 6: s.order(); break; case 7: environment.exit(0); break; public static vo

10、id menu2() /中学主菜单 zhongxue s = new zhongxue(); bool flag = true; int selnumber = 0; while (flag) console.clear(); console.writeline(tt* 欢迎进入中学生信息管理系统!*); console.writeline(tt 1. 增加数据); console.writeline(tt 2. 修改数据); console.writeline(tt 3. 删除数据); console.writeline(tt 4. 按姓名查找); console.writeline(tt

11、5. 显示全部); console.writeline(tt 6. 按平均分排序); console.writeline(tt 7. 退出系统); console.writeline(tt*); console.write(tt请输入选择(数字1-7):); selnumber = convert.toint32(console.readline(); console.writeline(你输入的数据格式有误!); if (selnumber = 1) flag = false; switch (selnumber) case 1: s.add2(); break; case 2: s.mod

12、ify2(); break; case 3: s.deletedata2(); break; case 4: s.search2(); break; case 5: s.browse2(); break; case 6: s.order2(); break; case 7: environment.exit(0); break; public static void menu3() /大学主菜单 daxue s = new daxue(); bool flag = true; int selnumber = 0; while (flag) console.clear(); console.wr

13、iteline(tt* 欢迎进入大学生信息管理系统!*); console.writeline(tt 1. 增加数据); console.writeline(tt 2. 修改数据); console.writeline(tt 3. 删除数据); console.writeline(tt 4. 按姓名查找); console.writeline(tt 5. 显示全部); console.writeline(tt 6. 按平均分排序); console.writeline(tt 7. 退出系统); console.writeline(tt*); console.write(tt请输入选择(数字1-

14、7):); selnumber = convert.toint32(console.readline(); console.writeline(你输入的数据格式有误!); if (selnumber = 1) flag = false; switch (selnumber) case 1: s.add3(); break; case 2: s.modify3(); break; case 3: s.deletedata3(); break; case 4: s.search3(); break; case 5: s.browse3(); break; case 6: s.order3(); b

15、reak; case 7: environment.exit(0); break; public static void save(int n) /保存n个学生信息 filestream fs = null; binarywriter bw = null; fileinfo fi = null; directoryinfo di = new directoryinfo(.); try string s = di.root.tostring(); /获取当前文件的根目录 s = s + 1.dat; fi = new fileinfo(s); if (fi.exists) /判断文件是否存在,存

16、在则追加,不存在则创建 fs = new filestream(s, filemode.append, fileaccess.write); bw = new binarywriter(fs); else fs = new filestream(s, filemode.create, fileaccess.write); bw = new binarywriter(fs); catch (ioexception) console.writeline(操作文件失败!); return; try for (int i = 0; i n; i+) bw.write(sdi.no); bw.write

17、(); bw.write(sdi.english); bw.write(sdi.chinese); bw.write(sdi.math); bw.write(sdi.average); catch (ioexception) console.writeline(写文件失败!); return; finally bw.close(); fs.close(); console.writeline(数据已保存!请按任意键继续); console.readkey(true); menu1(); public static void savetoarray(ref int len) /将

18、数据保存至数组中 sd = new xiaoxuelen; for (int j = 0; j len; j+) sdj = new xiaoxue(); try filestream fs = null; binaryreader br = null; directoryinfo di = new directoryinfo(.); string s = di.root.tostring(); /获取当前文件的根目录 s = s + 1.dat; fs = new filestream(s, filemode.open, fileaccess.read); br = new binaryre

19、ader(fs); int i = 0; try for (i = 0; i len; i+) sdi.no = br.readstring(); = br.readstring(); sdi.english = br.readint32(); sdi.chinese = br.readint32(); sdi.math = br.readint32(); sdi.average = br.readint32(); catch (endofstreamexception) len = i - 1; finally br.close(); fs.close(); catch r

20、eturn; public static void savetofile(int len) /将数据保存至文件中 filestream fs1 = null; binarywriter bw = null; directoryinfo di; string s; try di = new directoryinfo(.); s = di.root.tostring(); /获取当前文件的根目录 s = s + 1.dat; fs1 = new filestream(s, filemode.create, fileaccess.write); bw = new binarywriter(fs1)

21、; for (int i = 0; i len; i+) if (sdi.no != ) bw.write(sdi.no); bw.write(); bw.write(sdi.english); bw.write(sdi.chinese); bw.write(sdi.math); bw.write(sdi.average); catch (ioexception) console.writeline(写入数据错误!); console.readkey(true); return; finally bw.close(); fs1.close(); console.writelin

22、e(修改数据成功!); console.writeline(请按任意键继续!); console.readkey(true); menu1(); public static void main() /主函数 show(); menu1(); using system;using system.collections.generic;using system.linq;using system.io;using system.text;namespace consoleapplication1 class xiaoxue:student static consoleapplication1.xi

23、aoxue sd; public int chinese; public int english; public int math; public int getchinese get return chinese; set chinese = value; public int getenglish get return english; set english = value; public int getmath get return math; set math = value; public void input(int i) /输入某一学生信息 console.writeline(

24、n请输入第0学生的信息:, i + 1); while (true) /这个循环用来控制学号不能相同 console.write(n 学号); sdi.no = console.readline(); int j = 0; for (j = 0; j i; j+) if (sdi.no != sdj.no) break; if (i = 0 | j != i) break; console.writeline(您输入的学号重复,请重输!); console.write( 姓名); = console.readline(); try console.write( 语文成绩);

25、sdi.english = convert.toint32(console.readline(); console.write( 英语成绩); sdi.chinese = convert.toint32(console.readline(); console.write( 数学成绩); sdi.math = convert.toint32(console.readline(); sdi.average = (sdi.english + sdi.chinese + sdi.math) / 3; catch (formatexception e) console.writeline(您输入的数据有

26、误! + e.message); public static void savetoarray(ref int len) ./将数据保存至数组中 public static void save(int n) . /保存n个学生信息 public static void savetofile(int len) menu1(); /将数据保存至文件中 private static void menu1() public void add() /添加模块 int n = 0; try console.writeline(n请输入您需添加的学生记录的个数:); n = convert.toint32(

27、console.readline(); catch (formatexception) console.writeline(您输入的数据格式有误!); sd = new xiaoxuen; for (int i = 0; i n; i+) sdi = new xiaoxue(); for (int i = 0; i n; i+) input(i); if (n != 0) save(n); else menu1(); public void modify() /修改模块 int len = 0; browseall(ref len); savetoarray(ref len); xiaoxue

28、 temp = new xiaoxue(); try console.writeline(请输入要修改学生的学号(学号不可改):); temp.no = console.readline(); console.write(n姓名:); = console.readline(); console.write(n语文:); temp.english = convert.toint32(console.readline(); console.write(n英语:); temp.chinese = convert.toint32(console.readline(); consol

29、e.write(n数学:); temp.math = convert.toint32(console.readline(); temp.average = (temp.chinese + temp.math + temp.english) / 3; catch (formatexception) console.writeline(输入数据格式有误!); return; bool flag = false; for (int i = 0; i len; i+) if (sdi.no = temp.no) sdi = temp; flag = true; if (flag) savetofile

30、(len); else console.writeline(未能查到信息!请重试!); console.writeline(请按任意键继续!); console.readkey(true); menu1(); public void deletedata() /删除信息 int len = 0; browseall(ref len); savetoarray(ref len); console.write(请输入您要删除的学生的学号:); string s = console.readline(); bool flag = false; for (int i = 0; i len; i+) i

31、f (sdi.no = s) flag = true; sdi.no = ; = ; sdi.english = 0; sdi.chinese = 0; sdi.math = 0; sdi.average = 0; savetofile(len); if (!flag) console.writeline(没有此人信息!无法删除!); console.writeline(请按任意键继续!); console.readkey(true); menu1(); public void search() /查找模块 console.write(请输入您要查询的学生的姓名:); string s = console.readline(); int len = 80; savetoarray(ref len); console.writeline(n学号 姓名 语文 英语 数学 平均分); bool flag = fa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论