一、 设计任务描述
为了实现学籍管理的简单化,我们基于 Visual C++集成开发环境编写了“学 生信息管理系统”软件,该软件适用于所有 win dows操作系统,面向广大用户, 界面简洁,操作简单。此软件主要是实现对学生学籍信息进行系统化的管理, 可 以对学生基本信息进行添加、删除、查找、修改以及对学生成绩的管理,主要是 根据学生的学号及其姓名进行操作的。该软件可以更加方便管理者管理学生学籍 信息。
二、 功能需求说明
该系统所需要的功能有:1链表的建立;
2、 学生信息的插入; 3、 学生信息的查询; 4、 学生信息的输出; 5、 学生信息的修改; 6、 学生信息的删除; 7、 良好的欢迎选择界面。
三、 总体方案设计
一、实现任务的方法
1、 在欢迎选择界面中,使用Switch这一选择结构来连接程序的执行和用户的命 令;
2、 在从学生信息的建立直到删除,都是使用链表的相关知识; 3、 在定义学生信息时,建立一个Inform类;在定义学生课程成绩时,自定义了 一个achieve结构体;
三、模块划分 (1) 链表的建立。 (2) 对链表信息的插入。 (3) 对链表信息的查找。 (4) 对链表信息的输出。 (5) 对链表信息的删除。 (6) 对链表信息的修改。
课程成绩信息作为附加信息,穿插于各个模块中
三、数据结构说明
一、自定义的数据结构:
1、achieve (课程成绩)用于存放课程成绩信息包括课程数、课程名、
STrucr acnieve
成绩、学 分、总分和平均分。
{ int nunber :
〃课程容(最參课稈数为nn
float xuefen [10]: float 0 : \"成绩 float average ; achieve C): \"学专 float count average (); \"总分
\"平均分
\"默认枸隆雷教
\"计算该学生课程的加权平均分(总咸绩/总学分)
float achieveiaent [13]:
char nane [10] [10];
\"谍稈数
2、inform (学生基本信息)用于存放学生基本信息,包括姓名、学号、性别等。
struct Inform {chai name[10]: char
num[20]: string sex: string: id; string bir; string adr : string tel, achieve ach; void achinput 0 : void achprint 0 ; };
\"元素类型
\"姓名 〃学号 〃性别
\"身份证号 //出生年月曰 〃家庭地址 \"电话号码 \"课程咸绩 \"谍程成绩输入 \"遥程成缢输出
3、结点结构-Nodetype,定义了数据域inform和指针域next;
struct Nodetype {inform data; Nodetvpe };
二、类
//结点结构
\"数据域
〃指针域
Student用于存放处理学生信息的各个功能函数,private成员是链表的头指针
class Student {public:
Student (); ^Student (); //构造函数 void creat (); void insert 〃析构函数 (); void del 0 ; void 〃建立链表 search(), void modifyO , //插入学生信息 void Display 0 ; private:
Xodetype ^head;
//删除学生信息 //查找 //修改
〃输出信息 //声明头指针
四、各模块设计说明
'、建立:
首先:建立一个空链表:
Stude nt::Stude nt() {head=new Nodetype; head-> next=NULL; coutvv'请建立链表\\n\"; }
然后建立链表
gutfC\"吉粧h寿庭堆址:匹”: cin>>3:・;=dr
ccut'K\"ffi入电诸号码當\"T .
表明这是一个空链表
1 el.
oaufc ?-! (c=/ | [ c=r) [a azhiiiput [); HodrtTii\"? \"判斷是瓷桁入审晴 \"创益一今戲韦电三并将该韦电地址侔存在抱軒变誉b申 ■V牠丄湎换1T得至侶技作ZJb却歎掘加 b-^riesrt-nULL, a_>nBKl-b; p 口 ; \\匚 CDUT«削建宁右? ClIl i>ES ; 使结点戲合终在链表的最后面 、添加:按照学号从小到大的顺序插入: s=iiew Xodetvpe; s->daTa=s; q=head. p^q-'/nerXt; irhile(pl =NUHAj6strcnp (p->data, num, x. nuuO <0) ■q=p p=p->next;} 〃迪历琵表查找梵应插入的位匿亘到找的某书直的数据城比输入£学号 丄 s~ ^next^p: ” _______ __ q->next=s;〉I 插入新结点 £ cout«*添:山成功'是否维续奪加(Y/?4)*«en£ll; cin>>cs■ } 三、 输出:将链表的数据输出,由于上述操作,输出时会按照学号从小到大的顺 序输出。 四、 查找:利用学号和姓名两种方式进行查找, 查找时主要是遍历链表进行判断 while(p!=NULL&&(d==1 &&strcmp(i nput,p->data .n um)!=0)||(d==2&&strcmp(i np ut,p->data .n ame)!=0)) {p=p->n ext; } 〃遍历链表查找符合要求的节点 五、 删除:利用节点的删除操作,找到链表中第 针: i-1个结点,修改其指向后继的 指 q = p->n ext; p->n ext = q->n ext; delete(q); 六、 更改:利用查找的操作,查到后在进行重新输入的操作; 五、测试情况说明 测试一:学生信息的输入和输出都正常,但是查找、删除和修改时都只能对第一 个数据 进行操作,如下图所示: 两个对象 正常输出 E.cT] 地it;派匕 ^^3 = 657668?中的数据输岀如下; :朱方菠 '证号=3站£?6鲫强 日:19920924 庭芒止匕浙江幵此 话是■弓:百咋肚溯日 但是当要进行查找、删除、修改操作时,系统只能对第一个对象进行操作 查看程序时,发现查找函数、删除和修改函数都有个逻辑错误 Bviichld} luw It COUt \"1三年1亍月「eudl. cin>: inpui break, cue 2: CffUt \"•刖■■占•”加机: cln> input. bre^k; : 逻辑关丟弄错! 歹应该为 T ^cderype *p. p=q; hii LrIf'v:肚口rri* h;.-iT |)- -1ATa. - iin'!^' :r 12 ■冷=\"缶:rfjpi 加 Tp-计「SUP'=0)1 p=p- ~ 霓圧祥云誉疋存舎寻求曲节戸 2 f ((d=】iist j■眄J (i rput. p->dat 岳 iunZ=0) ( if p- da?a. Eih. nunbcr^B) p-/ca*E. achprint : } : *«p->4at8i n?»« \"■ n' < < \"身曲证号;*«p->dai;s. i4C<* \\p* 机\"性和:* bLr^' \\a'«家庭地址:妝p->dita ■dr«, W 农\"电话号码;Wp~>dag hW 诃; 71 耳匚拄訐\"If: H ■; < 全部修改后,程序的上述错误就没再出现了。 错误二:当提示是否输入课程成绩信息时,输入第一门课程名时,会出现无穷 循环 但当输入第一门课程后就会出现下图所示状况: (讣时諦人总團貓$咼毎和请输 对于这种状况,我百思不得其解,后来请教其他同学,他告诉我错误在于声明 课程成绩信息时出错了 struct achieve { __int numb雯i[: ^*7: hof f iQat^acIneveinem [10]. float xuefen[lD]: float siunO ; float average 0; achieve(); f lt>at count average1:'; \"课程数 \"踝程名(最多课程数为1(0 \"锻绩 \"学分 \"总分 //■平肉分 打默认构罐雨数 〃计算谏学主课程的加权平均分(总成绩/总学井) 应该为二维数组,修改之后,课程成绩输入输出便正常了 im Crt 扁 nd w序;邨花LI32XCHI<1exe 長中的魏捱布岀如下. 千':予方捏 付证耳;5弋创 列:fl SitWl :同汇 话耳码;J曲需“5 未按照学号大 寻地1「;河/ 话吕码:G5eP4EG 小输出! 错误三:输入 学生信息时不按照学号大小顺序,输出结果时也不按照从小到大的顺序输出。 如下图所示 ,是否押续添加(Y/N) \\ 后来查看程序,发 现插入函数 (insert)中判断新插入的数据的位置时出现问题 whi 1 e (p! =XULL&^p->data, 较! num _ _ ~7 p=p->next;) //矽於i表杏找x应插入的位置直到] cout«*S55 加成 cin^^cs; 应该为 strcmp(p->data.num,x.num)<0;之后输出正确了! 六、评价和改进意见 (1) 不足:①程序可能存在冗杂之处。②软件功能有限。③界面为Dos界面, (2) 特点:①运用链表的操作,可以方便地实现对学生信息的操作。 ②基于Visual C++平台工程的建立。 比较单调。 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务